Guide
Using your own server (self-hosting)
Run the entire platform on your own infrastructure — your data never leaves your hardware. Ideal for data-residency, air-gapped/offline, or no-third-party-processing requirements, and it can run with no AI and a minimal footprint.
Want zero infrastructure instead? See Using our server. For device connection, see Enrollment.
What you need
- A Linux host reachable by your devices. Without the local AI, 2–4 vCPU / 4 GB RAM is enough for a small/medium fleet.
- Docker + Docker Compose.
- A domain (e.g.
silux.yourcompany.com) and TLS (Let's Encrypt). - Open inbound: 443 (console + API) and the relay WebSocket port.
The stack
docker compose brings up Postgres, Redis, the Silux Relay (connection broker), the backend API, the web console, and Nginx (TLS edge). The optional AI services listed in docker-compose.yml are only needed for the AI assistant.
Configure (.env)
DEPLOYMENT_MODE=self_hosted
# Public addresses (your domain):
PUBLIC_URL=https://silux.yourcompany.com
API_URL=https://silux.yourcompany.com
RELAY_WS_PUBLIC_URL=wss://silux.yourcompany.com/relay
# Secrets — generate strong random values:
RELAY_API_KEY=<random>
CRON_SECRET=<random>
# First admin (created on first boot):
ADMIN_BOOTSTRAP_EMAIL=admin@yourcompany.com
ADMIN_BOOTSTRAP_PASSWORD=<strong password>
# AI assistant — leave off for a lean, no-AI deployment:
ASSISTANT_ENABLED=falseDEPLOYMENT_MODE=self_hosted makes Stripe, Kafka and other hosted-only integrations degrade gracefully.
Deploy
docker compose up -d- The database schema is applied automatically on first boot.
- The bootstrap admin is created from your
.env. - Visit your domain and sign in. Put the stack behind TLS (bundled Nginx or your own proxy) and forward the relay port for WebSocket traffic.
Connect your devices
Point the agent at your server (it takes a configurable api_url):
# agent config.toml
api_url = "https://silux.yourcompany.com"
enroll_token = "<one-time token from console → Downloads>"Full steps in Enrollment.
Running with NO AI (recommended for small servers)
- Set
ASSISTANT_ENABLED=false. - Don't start the optional AI services — frees several GB of RAM and the CPU they use.
- Everything else works identically; the assistant UI is hidden.
You can run local AI models on a separate box you control and point the AI assistant at it, so this server does no inference.
Updates, backups, security
- Updates: pull new images and
docker compose up -d. - Backups: the Postgres volume (
silux-postgres-data). - Strong unique
RELAY_API_KEY/CRON_SECRET/admin password; TLS on the domain; restrict inbound to 443 + the relay port; rotate the admin password and add MFA.
