From 7a1eed2b17aabbfed0f03d952f98b0d7df206693 Mon Sep 17 00:00:00 2001 From: maziggy Date: Thu, 19 Mar 2026 11:29:59 +0100 Subject: [PATCH] [Docs] Update VP proxy docs, ports, and diagram for #757 - Add ports 6000 (file transfer) and 322 (RTSP camera) to Dockerfile EXPOSE and docker-compose.yml bridge mode port mapping - Update migration doc with new proxy mode port requirements - Regenerate proxy-mode-diagram.png with all proxied ports --- Dockerfile | 4 +++- docker-compose.yml | 6 ++++-- docs/images/proxy-mode-diagram.png | Bin 37897 -> 44815 bytes docs/migration-vp-ftp-port.md | 18 +++++++++++++++--- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index feafe7717..ab4f26f7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -53,11 +53,13 @@ ENV DATA_DIR=/app/data ENV LOG_DIR=/app/logs ENV PORT=8000 +EXPOSE 322 +EXPOSE 990 EXPOSE 3000 EXPOSE 3002 +EXPOSE 6000 EXPOSE 8000 EXPOSE 8883 -EXPOSE 990 EXPOSE 50000-50100 # Health check (uses PORT env var via shell) diff --git a/docker-compose.yml b/docker-compose.yml index 3e6ad2c96..50b10bc2f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,8 +10,8 @@ services: # Override with: PUID=$(id -u) PGID=$(id -g) docker compose up -d user: "${PUID:-1000}:${PGID:-1000}" # - # Proxy mode: allow binding to port 990 (FTP) as non-root user. - # Without this, the FTP proxy silently fails and sending prints won't work. + # Proxy mode: allow binding to privileged ports (322, 990) as non-root user. + # Without this, the FTP and RTSP proxies silently fail. cap_add: - NET_BIND_SERVICE # @@ -27,6 +27,8 @@ services: # - "3002:3002" # Virtual printer bind/detect # - "8883:8883" # Virtual printer MQTT # - "990:990" # Virtual printer FTP control + # - "6000:6000" # Virtual printer file transfer tunnel + # - "322:322" # Virtual printer RTSP camera (X1/H2/P2) # - "50000-50100:50000-50100" # Virtual printer FTP passive data volumes: - bambuddy_data:/app/data diff --git a/docs/images/proxy-mode-diagram.png b/docs/images/proxy-mode-diagram.png index ceee454755c868417f790db478d5d2c11078fccd..f3549a59ecfc3ff6576d14baed5807814c774851 100644 GIT binary patch literal 44815 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 literal 37897 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 bT-zYdZ5*?EK%YRqOxg37rQ;?4c=SI2DMPED diff --git a/docs/migration-vp-ftp-port.md b/docs/migration-vp-ftp-port.md index 7f56b9aff..3404cdd03 100644 --- a/docs/migration-vp-ftp-port.md +++ b/docs/migration-vp-ftp-port.md @@ -1,11 +1,11 @@ -# Migration: Virtual Printer FTP Port Change (9990 -> 990) +# Migration: Virtual Printer Port Changes -## What Changed +## FTP Port Change (9990 → 990) The Virtual Printer FTP server now binds **directly to port 990** instead of port 9990. Previously, an iptables `REDIRECT` rule was required to forward port 990 to 9990. -## Why +### Why The iptables `REDIRECT` target rewrites the destination IP to the **primary address of the incoming network interface**. When running multiple virtual printers on @@ -16,6 +16,18 @@ when VPs have different access codes. By binding directly to port 990, iptables is no longer involved and each VP's FTP server correctly receives only its own traffic. +## New Proxy Mode Ports (6000, 322) + +Proxy mode now requires two additional ports: + +| Port | Protocol | Purpose | +|------|----------|---------| +| 6000 | TCP/TLS | File transfer tunnel (verify_job + print uploads) | +| 322 | TCP/TLS | RTSP camera streaming (X1/H2/P2 series) | + +These ports are proxied automatically — no iptables rules needed. If you have +a firewall, ensure these ports are open between the slicer and Bambuddy. + ## Migration Steps ### Linux (Native / systemd)