Firewall Rules
Device Requirements
For devices to connect to Thymis Controller, ensure outbound access to:
| Service | Port | Protocol | Purpose |
|---|---|---|---|
| Thymis Controller | 443 | TCP | Main communication endpoint over HTTPS |
| DNS Resolution | 53 | UDP/TCP | Domain name resolution (critical for certificate validation) |
| NTP | 123 | UDP | Time synchronization (required for TLS certificate validity checks) |
| DHCP (optional) | 67/68 | UDP | Dynamic IP assignment if not using static IPs |
Security Note: Devices don’t require any inbound ports. Thymis agents connect exclusively via outbound WebSockets.
graph LR
A[Device] -->|Outbound HTTPS:443| B(Controller)
A -->|Outbound DNS:53| C[DNS Server]
A -->|Outbound NTP:123| D[NTP Server]Controller Requirements
For self-hosted controllers, ensure outbound access to:
| Destination | Port | Protocol | Purpose |
|---|---|---|---|
| cache.nixos.org | 443 | TCP | Nix package cache |
| cache.thymis.io | 443 | TCP | Thymis package cache |
| github.com | 443 | TCP | Fetch external repositories |
| Git hosting services | 443 | TCP | Access project repositories (GitLab, etc.) |
graph LR
B[Controller] -->|Fetch packages| N[NixOS Cache]
B -->|Fetch packages| T[Thymis Cache]
B -->|Clone repos| G[Git Providers]
D1[Device] -->|WebSocket, for deployments, remote access| B
D2[Device] -->|WebSocket, for deployments, remote access| BEnsure the controller is reachable from devices via HTTPS on port 443.
Network Scenarios
Standard Deployment
graph TB
F -->|Allow out:443| C[Cloud Controller]
subgraph Corp Network
D[Devices] --> F[Firewall]
F -->|Allow out:53/123| I[Internal DNS/NTP]
endAir-Gapped Environment
- Configure internal mirrors for:
- DNS/NTP servers
- Nix package cache (mirror of
cache.nixos.org) - Thymis package cache (mirror of
cache.thymis.io)
- Update device configurations to use internal resources via Custom Nix Modules
Verification
Test connectivity from devices:
# Verify controller access
curl -vI https://YOUR_CONTROLLER_DOMAIN
# Confirm DNS resolution
nslookup YOUR_CONTROLLER_DOMAIN
# Check NTP sync
timedatectl show | grep NTPSynchronizedIf devices fail to connect:
- Check the Troubleshooting guide
- Verify the firewall allows outbound TLSv1.2+ connections
- Ensure DNS resolves to the correct controller IP
Security Recommendations
- Restrict controller access to organization IP ranges
- Consider certificate pinning for device‑controller communication
- Monitor traffic for
thymis-controlleruser agent patterns
For detailed network configuration: