Git Product home page Git Product logo

guppyflo's Introduction

GuppyFLO

GuppyFLO is a self-hosted service that enables local/remote management of multiple Klipper printers using Moonraker.


Buy Me a Coffee at ko-fi.com
Guppy Platform Discord

Install

HTTP Reverse Proxy Mode

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

TCP Proxy Mode

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

Docker

docker compose up -d

Features

  1. Global view of all your Klipper/Moonraker printers.
  2. Fluidd/Mainsail opens directly to desired printer (no need to mock with switching printers in the UI).
  3. Unlimited go2rtc WebRTC cameras.
  4. Mpjeg-streamer webcams over tailscale. Don't use ngrok for these streams, they'll use all your free ngrok bandwidth.
  5. Integrated tailscale.
  6. Auto camera detection (mjpeg stream).
  7. Free and secure remote access with ngrok (paid ngrok subscription availiable via their terms).
  8. Unlimited local access.
  9. Multiplatform support (runs on Linux/Windows x86_64, buildroot mipsle, PI ARMv6).
  10. Mobileraker via tailscale.
  11. Runs as a HTTP Reverse Proxy or TCP Proxy.

Roadmap

  1. More camera service support (e.g. ustreamer/camera-streamer).
  2. Automatic camera detection and configuration*.
  3. More printer metrics at a glance (e.g. heater states)

Screenshot

Auto camera detection GuppyFLO UI

TCP Proxy Mode

Start GuppyFLO with argument -tcpproxy to use it in TCP Proxy Mode. In this mode, all proxied connections are defined in proxies.json. If proxies.json does not exists, create it in the same directory as guppyflo or the path specified by -c.

proxy.json

It's a array JSON containing binding definitions as follow:

  • from - remote port used to access the proxied service
  • to - proxied service defined in ip:port format
  • tls - boolean to indicate if the proxied service supports TLS

Example proxies.json

Proxies moonraker using port 7125 to localhost on port 7125, and proxies remote port 80 to localhost on port 4408.

[
    {
        "from": 7125,
        "to": "127.0.0.1:7125",
        "tls": false
    },
    {
        "from": 80,
        "to": "127.0.0.1:4408",
        "tls": false
    }
]

HTTP Reverse Proxy Mode

Local Access

GuppyFLO starts locally on port 9873. Open a browser and go to <guppyflo-host-ip>:9873 for local accces.

Remote Access via Tailscale

GuppyFlo support secure remote access via Tailscale. You can sign up a free accout here.

  1. Once you have a tailscale account, open browser to http://<guppyflo-host-ip>:9873.
  2. Click the tailscale authentication link to add GuppyFLO as a tailscale device.
  3. Done! Now you can access GuppyFLO and all your guppy managed printers via your tailnet.
  4. On any device running tailscale, open your browser to http://guppyflo (Need MagicDNS for shortnames).

Remote Access via ngrok

GuppyFLO supports secure and authenticated remote access using ngrok. You can sign up for a free account here.

  1. Sign up for a free/paid ngrok account.
  2. Copy your ngrok auth token from here.
  3. Open in browse http://<guppyflo-host-ip>:9873/settings and paste your ngrok auth token in Ngrok Auth Token.
  4. In the GuppyFLO settings page, select an OAuth provider (e.g. google).
  5. Add your OAuth Email.
  6. Click Save and restart guppyflo from your server.
  7. The ngrok remote URL is found in GuppyFLO logs, or in your ngrok dashboard

GuppyFLO Settings

Mobileraker via Tailscale

GuppyFLO Mobileraker Camera Setup gif

If you enable tailscale, you can view/manage your guppy printers with cameras remote in Mobileraker.

  1. In the GuppyFLO dashboard, click the Network button to find printer links, e.g. http://guppyflo/printers/390877414/
  2. The Network modal shows all configured printer/camera links.
  3. Click the Copy icon next to each link to copy it.
  4. In Mobileraker, click Advanced
  5. Printer - Address is guppyflo/printers/390877414/
  6. Websocket - Address is guppyflo/printers/390877414/websocket
  7. Click Test Connection, Continue

Camera Setup

GuppyFLO supports mjpeg and go2rtc webrtc streams. Refer to go2rtc for setting up webcams and WebRTC. To add a go2rtc WebRTC camera:

  1. Open GuppyFLO Dashboard in a browser.
  2. Click Add Printer and fill in printer detail.
  3. Click Auto Detect to discover camera streams hosted on the printer.
  4. You can also click Add Camera to manually fill in camera details.
  5. Camera Endpoint is the endpoint to a go2rtc source, e.g. /api/ws?src=mycamera1.
  6. Camera IP is the host IP where go2rtc is running.
  7. Camera Port is the API port used by go2rtc
  8. Camera Service is the stream type.
  9. Repeat step 4 to 9 to add more cameras.


Disclaimers

  • GuppyFLO is not associate with ngrok/tailscale. It uses these for remote access because they offer a free, secure, and programmable solution.
  • GuppyFLO uses a fork of fluidd/mainsail that enable path base access to moonraker websocket. The changes are tracked in this fluid and mainsail fork.

Credit

Moonraker
Fluidd
Mainsail
go2rtc
ngrok-go

guppyflo's People

Contributors

ballaswag avatar waynemanion avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.