Deployment
Operational notes, upgrade, and uninstall for portunus-standalone.
Operational notes
- No live config reload.
SIGHUPis a no-op and the shipped systemd unit refusessystemctl reload. To change rules, edit the TOML andsystemctl restart portunus-standalone(ordocker restart portunus-standalone). Established TCP connections drain on the way out (up toshutdown_drain_secs). - Privileged listen ports (
< 1024). The systemd unit grantsAmbientCapabilities=CAP_NET_BIND_SERVICE, so listening on ports like 22, 53, 80, 443 works without running as root. The Docker image declaresNET_BIND_SERVICEcapability; pass--cap-add NET_BIND_SERVICEif you constrain capabilities. - File-descriptor limit. The binary emits a
standalone.rlimit_nofilelog on startup. The systemd unit setsLimitNOFILE=65535. For Docker pass--ulimit nofile=65535:65535if your daemon defaults are lower. - TCP
splice(2)zero-copy is auto-selected on Linux when no PROXY-protocol prelude is configured. You'll see aproxy.splice_selectedevent on the first connection of the rule. - Port-range rules bind atomically. A rule that declares
listen_ports = "8000-8009"binds all 10 ports up-front; if any one is unavailable the rule's startup fails and the others are released.
Upgrade and uninstall
If you installed via the one-click installer:
# Upgrade to the latest release (in place, reusing recorded config):
sh install.sh upgrade standalone
# Status (binary version, service active, deploy form):
sh install.sh status standalone
# Service control passthrough:
sh install.sh service standalone restart
# Uninstall (keeps /etc/portunus by default):
sh install.sh uninstall standalone
# Purge: also wipe /etc/portunus and the portunus user:
sh install.sh uninstall standalone --purgeIf you installed via Docker:
docker pull ghcr.io/zingerlittlebee/portunus-standalone:latest
docker stop portunus-standalone && docker rm portunus-standalone
# then re-run the `docker run …` from Installation → Docker (/en/docs/standalone/installation)