Successfully built fluxer-server image for both amd64 and arm64. Image pushed to Gitea container registry with multiple tags. All critical patches from third-party guide applied.
4.4 KiB
uwu.lc Self-Hosting Notes
Branch Setup
Current branch: uwu (based on refactor)
- Tracks:
origin/refactorfor rebasing upstream changes - Pushes to:
i5/uwuon your Gitea instance at git.i5.wtf - Current state: 1 commit ahead (LFS config change)
Workflow
Pull upstream changes and rebase
git fetch origin
git rebase origin/refactor
Push your changes to Gitea
git push i5 uwu
# If you've rebased, use: git push i5 uwu --force-with-lease
View your changes
git log origin/refactor..uwu # Show commits you've added
Why track refactor branch?
The refactor branch is a complete rewrite that:
- Is simpler and lighter to self-host
- Uses SQLite instead of complex database setup
- Removes payment/Plutonium stuff for self-hosted deployments
- Is much better documented
- Is where active development happens
The old main/canary branches have the legacy stack that's harder to self-host.
Configuration Changes Made
-
LFS Config (
.lfsconfig): Updated to point to Gitea instance- Old:
https://github.com/fluxerapp-old/fluxer-private.git/info/lfs - New:
https://git.i5.wtf/fluxerapp/fluxer.git/info/lfs
- Old:
-
CI Workflows: Updated for Gitea compatibility
- Changed all runners from
blacksmith-8vcpu-ubuntu-2404toubuntu-latest ci.yaml: Main CI workflow (typecheck, test, gateway, knip, ci-scripts)release-server.yaml: Docker build workflow- Registry:
ghcr.io→git.i5.wtf - Image:
fluxerapp/fluxer-server - Trigger branch:
canary→uwu - Default source ref:
canary→uwu
- Registry:
- Changed all runners from
Gitea Setup Requirements
Container Registry Authentication
The workflow tries to use secrets.GITEA_TOKEN or github.token for registry auth.
Required: Create a Gitea Personal Access Token:
- Go to Gitea Settings → Applications → Generate New Token
- Name:
CI_Container_Registry - Permissions: Select
package(write access) - Add to repository secrets as
registry_token(Note: Can't use GITEA_ or GITHUB_ prefix)
Alternative: Update the workflow to use username/password:
- Create a secret
REGISTRY_USERNAMEwith your Gitea username - Create a secret
REGISTRY_PASSWORDwith a personal access token
Container Registry URL Format
Gitea registry format is typically:
git.i5.wtf/fluxerapp/fluxer-server:tag
If the registry requires a different format, check your Gitea container registry settings.
Docker Build Fixes Applied
Successfully built fluxer-server Docker image! Fixes applied:
- ✅ Fixed package path (app → app_proxy)
- ✅ Added Rust/WASM toolchain for frontend
- ✅ Added ca-certificates
- ✅ Fixed .dockerignore (locale files, emoji data, build scripts)
- ✅ Set FLUXER_CONFIG environment variable
- ✅ Updated ENTRYPOINT to target @fluxer/server
- ✅ Removed redundant typecheck step
- ✅ Generated locale files before build (lingui:compile)
- ✅ Reinstalled dependencies after copying source
- ✅ Allowed scripts/build directory in .dockerignore
Built image tags:
git.i5.wtf/fluxerapp/fluxer-server:nightlygit.i5.wtf/fluxerapp/fluxer-server:nightly-20260301git.i5.wtf/fluxer-server:sha-2e9010d
TODO
- Modify GitHub Actions workflows for Gitea compatibility
- Fix container registry authentication
- Apply patches from third-party guide
- Build Docker image
- Configure for uwu.lc domain
- Deploy to production
- Set up backing services (Valkey, NATS, Meilisearch, LiveKit)
Resources
- Third-party self-hosting guide: https://gist.github.com/PaulMColeman/e7ef82e05035b24300d2ea1954527f10
- Documents 20 gotchas and fixes for building/deploying Fluxer
- Critical for successful Docker build
- Domain: uwu.lc
- Gitea: git.i5.wtf
Known Build Issues from Third-Party Guide
The guide documents these critical Dockerfile fixes needed:
- ✅ Fix package path (app → app_proxy)
- ✅ Add Rust/WASM toolchain (frontend needs WebAssembly)
- ✅ Add ca-certificates (for rustup HTTPS download)
- ✅ Fix .dockerignore (unblock build scripts and locale files)
- ✅ Set FLUXER_CONFIG env var (rspack needs this)
- ✅ Copy config directory for build process
- ✅ Update ENTRYPOINT to target fluxer_server package
Additional fixes that may be needed (will address if they come up):
- Empty CDN endpoint handling (frontend code)
- Content Security Policy adjustments
- NATS configuration
- LiveKit webhook configuration