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.

Community gotchas index

These are the issues in the external guide that are worth checking first when a deployment behaves strangely:
AreaSymptom
Build toolchainRust or WASM steps fail during frontend build
Docker contextMissing locale, emoji, or build files
Frontend configApp tries to talk to chat.example.com
Asset loadingFonts or bundles still load from fluxerstatic.com
Static app servingHealth check shows app disabled
LiveKit webhookVoice service restart loop
NATSFatal startup connection errors
SQLite pathData disappears on recreate
Admin panel CSS/admin/static/app.css missing
SSOCallback loops or token exchange failures

SSO notes from the community guide

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.
  1. Self-hosting overview
  2. Self-hosting quickstart
  3. Self-hosting configuration
  4. Self-hosting architecture
  5. This deployment-notes page