Skip to content

Ports and firewalls

Every network connection Shellius makes or receives, which direction it travels, and the firewall rules that follow.

Shellius needs very little opened. The only listener that must be reachable by people is HTTPS on the Shellius host. Everything else is either internal to the Compose stack or an outbound connection.

What to allow ​

FromToPortWhyWhen
PeopleShellius443/tcpPortal, API, browser terminals (WebSocket)Always
Managed hostsShellius443/tcpcheck-principals on every SSH login, and the heartbeatAlways, for bootstrapped hosts
ShelliusManaged hosts22/tcpBrowser terminals, Quick ConnectIf you use browser SSH
Shellius (guacd)Windows hosts3389/tcpBrowser RDPIf you use RDP
PeopleManaged hosts22/tcpThe shellius terminal client and downloaded keys connect directlyIf you use the terminal client
ShelliusYour identity provider443/tcpOIDC discovery and token exchangeIf you use SSO
ShelliusYour mail server587/tcp or as configuredNotifications, invites, emailed codesIf you use email
ShelliusAWS / Azure / GCP APIs443/tcpCloud connector syncIf you use cloud connectors

If a host uses a non-standard SSH port, substitute it for 22.

What stays closed ​

PostgreSQL (5432), Redis (6379) and guacd (4822) are for the stack's internal network only. Do not publish them on the host. Shellius never opens a listening port on a managed host: bootstrapping reconfigures the existing sshd and adds an outbound timer.

A host that cannot reach Shellius cannot validate logins

check-principals calls the API on every connection. If the host's outbound HTTPS to Shellius is blocked, certificate logins to that host fail. Keep a break-glass path to your hosts that does not depend on Shellius — see the hardening checklist.

TLS ​

Terminate TLS at your reverse proxy. The shipped docker-compose.prod.yml carries Traefik labels and expects TRAEFIK_HOST; any proxy works as long as it passes WebSocket upgrades through to the portal.

Next steps ​

Was this page helpful?No, tell us why