Deploying Fluxer - An Open Source Instant Messaging and VoIP Platform
Description and use
Fluxer is deployed and operational, providing secure messaging, voice, and video channels over HTTPS.
Problem
Deploy a secure, self‑hosted Fluxer instance with messaging, voice, and video capabilities on a Linux server.
Outcome
Fluxer is deployed and operational, providing secure messaging, voice, and video channels over HTTPS.
Workflow
- Create a working directory and download Docker Compose, Caddyfile, livekit.yaml, and .env.example
- Edit .env to set FLUXER_DOMAIN, FLUXER_CADDY_SITE_ADDRESS, FLUXER_VAPID_EMAIL
- Generate random secrets for PostgreSQL, Meilisearch, S3, RPC, dashboard, media, LiveKit using openssl and sed
- Generate VAPID key pair with a temporary Node.js container and insert into .env
- Set .env permissions to 600
- Validate docker compose config with docker compose config --quiet
- Pull images with docker compose pull
- Start containers with docker compose up -d
- Verify all containers are Up and healthy with docker compose ps -a
- Check API logs to confirm services initialized correctly
Evidence
Fluxer ships an official Docker Compose stack that runs the web application, API, gateway, administration dashboard, messaging services, media services, PostgreSQL, Valkey, NATS, Meilisearch, SeaweedFS, LiveKit, and Caddy.
Generate the media upload relay secret in Base64 format and insert it into the .env file: sed -i "s|^FLUXER_MEDIA_PROXY_UPLOAD_RELAY_SECRET_BASE64=.*|FLUXER_MEDIA_PROXY_UPLOAD_RELAY_SECRET_BASE64=$(openssl rand -base64 32)|" .env
docker run --rm node:24-alpine npx --yes web-push generate-vapid-keys --json
- Record date: 2026-10-01T20:55:54.133Z