Secure Remote Access For The Creality K1, K1C, Max

June 26, 2024 in guide2 minutes

Get unlimited free and secure remote access to your Creality K1, K1C, Max printer with this simple GuppyFLO guide

Overview

This guide uses GuppyFLO to enable unlimited, free and secure remote access for your Creality K1 printer. This include remote access to fluidd/mainsail, webcams, spoolman, and more. Other remote access solutions are overly complicated to install for these printers. With GuppyFLO, you will only need to

  1. Sign up for a free tailscale account.
  2. Run a one-liner GuppyFLO installer.
  3. Click a couple links and buttons.
  4. And you have free, unlimited, secure remote access to your Creality K1.

Install GuppyFLO

SSH into your K1, K1C, K1 Max and run

guppyflo installer
wget -O - https://raw.githubusercontent.com/ballaswag/guppyflo/main/installer.sh | sh -s -- tcpproxy

You should see the following outputs with a few links to follow.

GuppyFLO Post Install Instruction

  1. Follow your login.tailscale.com/a/<token> link to add the Creality K1 to your tailnet.
  2. Follow https://login.tailscale.com/admin/dns to enable MagicDNS.
  3. Download and Install tailscale client on your phone.
MagicDNS Button
Enable MagicDNS in tailscale

Remote Access on Your Phone

Connect to tailscale on your phone

  1. Open the tailscale app, login, and click Connect.
  2. Open your phone browser to http://guppyflo
  3. You’re Done!
  • fluidd is at http://guppyflo
  • mainsail is at http://guppyflo:81

If you have webcam setup within fluidd/mainsail, they should just work (free, secure, and unlimited).

You are done and can stop here

At this point, you have full secure access to klipper. Continue only if you want MORE.

Remote Spoolman Support

SSH into your K1, K1C, K1 Max and open /usr/data/guppyflo/proxies.json. It should look like this

/usr/data/guppyflo/proxies.json
[
    {
        "from": 7125,
        "to": "127.0.0.1:7125",
        "tls": false
    },
    {
        "from": 80,
        "to": "127.0.0.1:4408",
        "tls": false
    },
    {
        "from": 81,
        "to": "127.0.0.1:4409",
        "tls": false
    }
]

Add your spoolman info to this JSON. For example, if your spoolman instance runs on 192.168.1.123 and port 7912, add the following:

/usr/data/guppyflo/proxies.json
[
    {
        "from": 7125,
        "to": "127.0.0.1:7125",
        "tls": false
    },
    {
        "from": 80,
        "to": "127.0.0.1:4408",
        "tls": false
    },
    {
        "from": 81,
        "to": "127.0.0.1:4409",
        "tls": false
    },
    {
        "from": 7912,
        "to": "192.168.1.123:7912",
        "tls": false
    }
]

Save and restart GuppyFLO

GuppyFLO restart
/etc/init.d/S99guppyflo restart

proxies.json

With the above spoolman example, you should get the idea behind proxies.json. By adding bindings with

  1. from - remote port
  2. to - local service IP:port
  3. tls - TLS support

You can securely remote access any of your local services via your tailscale client.

HTTP Reverse Proxy Mode

You can also use GuppyFLO as a reverse proxy to all your (not just one) klipper printers. For technical detail, refer to the Building GuppyFLO or the code repository.