Skip to main content
russel-ctrl only speaks plain HTTP on 127.0.0.1:7878. To reach it from elsewhere without an SSH tunnel, put a reverse proxy on the same server that handles HTTPS and forwards to it.
The control plane serves the dashboard at / and the API at both / and /api/, so the proxy forwards everything as-is. The only special setting: turn off response buffering, because deploys stream their progress line by line, and a buffering proxy holds it all back until the deploy ends.

What you’ll need

  • A working install (Installation).
  • A DNS name for the server, such as russel.example.com.
  • Ports 80 and 443 open. Keep 7878 closed.

Caddy

Caddy gets and renews the certificate on its own once DNS points at the server.
flush_interval -1 sends deploy progress through as it happens.

nginx

proxy_buffering off streams deploy progress, and the long proxy_read_timeout keeps slow first builds from being cut off.

Traefik

If you already run Traefik for your apps, add a router for the control plane to its dynamic config. Put it in its own file, outside the folder Russel writes to:
Traefik streams responses by default, so no extra setting is needed.

Log in

For the dashboard, open https://russel.example.com/, go to Settings, paste the token, and leave the API address at /api.

Checklist

  • russel-ctrl listens on 127.0.0.1:7878 only, and the firewall blocks 7878.
  • The token file stays private: the installer’s /etc/russel/env is root:russel, mode 0640.
  • The proxy doesn’t buffer responses.
  • russel origin shows the HTTPS address and says it’s reachable.