This page is a local snapshot of community deployment knowledge, not an official release guarantee. It is based on a public deployment guide gist by PaulMColeman last updated on April 8, 2026 and should be read alongside the official self-hosting docs in this site.
Source
Why keep a local copy
The gist is useful because it collects the real failure modes people hit while deploying the refactor branch in production. A self-hosted docs site should preserve the most important guidance even if the external gist changes or disappears.
High-value takeaways
Build from source
- The community guide notes that the public GHCR server image is not available for anonymous pulls, so self-hosted deployments should plan to build Fluxer from source.
- Treat the image build as part of the deployment workflow, not an optional extra.
Patch the current Docker build path
The gist highlights a cluster of build-time issues that are easy to miss:
- The
fluxer_server/Dockerfile package copy list must match the real monorepo.
- The frontend build needs Rust, the
wasm32-unknown-unknown target, and wasm-pack.
.dockerignore can accidentally exclude locale files, emoji data, and build scripts needed by the frontend build.
FLUXER_CONFIG must be set during the frontend build so the app can derive the correct API endpoints.
- Empty CDN configuration must be handled explicitly so self-hosted assets do not fall back to
fluxerstatic.com.
Set the right runtime config values
The community deployment guide calls out a few settings as especially important:
services.server.static_dir should be set in config.json, not only in environment variables.
database.sqlite_path should be absolute so the database lives on the mounted data volume.
instance.self_hosted and instance.deployment_mode should be set correctly for a monolith deployment.
Keep all required services
The deployment notes explicitly call out these dependencies as non-optional for the tested stack:
- Valkey for cache/session storage
- Meilisearch for search
- NATS core and JetStream for background jobs
- LiveKit for voice/video
Cloudflare and TLS
The gist argues that if your Traefik setup relies on Cloudflare TLS termination, Cloudflare proxy mode should stay enabled. It also distinguishes Cloudflare issues from CSP issues:
- Cloudflare proxying is not the root cause of CSP errors.
- Missing
fluxerstatic.com CSP allowances and wrong build-time domains are separate issues.
LiveKit details matter
The deployment notes call out a specific LiveKit requirement:
- The
webhook section in livekit.yaml needs an api_key as well as the target URL.
It also reminds operators that media transport still depends on direct UDP/TCP ports even when signaling is behind Cloudflare.
Domain and CDN correctness
Two easy ways to break a self-hosted deployment are:
- Building the frontend with the placeholder
chat.example.com domain still present
- Leaving asset URLs pointed at the public CDN instead of same-origin self-hosted assets
The community guide recommends passing the actual base domain at build time and explicitly setting the CDN endpoint behavior for self-hosting.
These are the issues in the external guide that are worth checking first when a deployment behaves strangely:
| Area | Symptom |
|---|
| Build toolchain | Rust or WASM steps fail during frontend build |
| Docker context | Missing locale, emoji, or build files |
| Frontend config | App tries to talk to chat.example.com |
| Asset loading | Fonts or bundles still load from fluxerstatic.com |
| Static app serving | Health check shows app disabled |
| LiveKit webhook | Voice service restart loop |
| NATS | Fatal startup connection errors |
| SQLite path | Data disappears on recreate |
| Admin panel CSS | /admin/static/app.css missing |
| SSO | Callback loops or token exchange failures |
The same deployment guide also documents several code-level SSO issues on the tested branch, including:
- callback route handling
- token exchange body encoding
- secret loading
- timeout cleanup
- SSO users being treated as unclaimed accounts
If you plan to enable OIDC immediately on a self-hosted instance, review the external guide first and validate those paths against your checked-out branch.
Recommended reading order
- Self-hosting overview
- Self-hosting quickstart
- Self-hosting configuration
- Self-hosting architecture
- This deployment-notes page