Files
fluxer/NOTES.md
Kitty Cat 84ec7653d2 docs: document successful Docker build
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.
2026-03-01 12:55:08 -05:00

131 lines
4.4 KiB
Markdown

# uwu.lc Self-Hosting Notes
## Branch Setup
**Current branch**: `uwu` (based on `refactor`)
- **Tracks**: `origin/refactor` for rebasing upstream changes
- **Pushes to**: `i5/uwu` on your Gitea instance at git.i5.wtf
- **Current state**: 1 commit ahead (LFS config change)
## Workflow
### Pull upstream changes and rebase
```bash
git fetch origin
git rebase origin/refactor
```
### Push your changes to Gitea
```bash
git push i5 uwu
# If you've rebased, use: git push i5 uwu --force-with-lease
```
### View your changes
```bash
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
1. **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`
2. **CI Workflows**: Updated for Gitea compatibility
- Changed all runners from `blacksmith-8vcpu-ubuntu-2404` to `ubuntu-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`
## 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:
1. Go to Gitea Settings → Applications → Generate New Token
2. Name: `CI_Container_Registry`
3. Permissions: Select `package` (write access)
4. 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_USERNAME` with your Gitea username
- Create a secret `REGISTRY_PASSWORD` with 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:
1. ✅ Fixed package path (app → app_proxy)
2. ✅ Added Rust/WASM toolchain for frontend
3. ✅ Added ca-certificates
4. ✅ Fixed .dockerignore (locale files, emoji data, build scripts)
5. ✅ Set FLUXER_CONFIG environment variable
6. ✅ Updated ENTRYPOINT to target @fluxer/server
7. ✅ Removed redundant typecheck step
8. ✅ Generated locale files before build (lingui:compile)
9. ✅ Reinstalled dependencies after copying source
10. ✅ Allowed scripts/build directory in .dockerignore
**Built image tags:**
- `git.i5.wtf/fluxerapp/fluxer-server:nightly`
- `git.i5.wtf/fluxerapp/fluxer-server:nightly-20260301`
- `git.i5.wtf/fluxer-server:sha-2e9010d`
## TODO
- [x] Modify GitHub Actions workflows for Gitea compatibility
- [x] Fix container registry authentication
- [x] Apply patches from third-party guide
- [x] 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:
1. ✅ Fix package path (app → app_proxy)
2. ✅ Add Rust/WASM toolchain (frontend needs WebAssembly)
3. ✅ Add ca-certificates (for rustup HTTPS download)
4. ✅ Fix .dockerignore (unblock build scripts and locale files)
5. ✅ Set FLUXER_CONFIG env var (rspack needs this)
6. ✅ Copy config directory for build process
7. ✅ 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