Files in the top-level directory from the latest check-in
- .cursor
- .fossil-settings
- docker
- priv
- skin
- src
- test
- compose.yml
- Dockerfile
- gleam.toml
- manifest.toml
- README.md
Trilobite
Self-hosted Fossil SCM manager and public repository portal. Gleam on BEAM. No Node.js.
Requirements
- Gleam 1.18+
- Erlang/OTP
- Fossil CLI
- Git CLI (only for optional Git mirrors)
- sqlite3 CLI
Run
gleam deps download
gleam test
gleam run
On first boot the process prints Open https://trilobite.1kt.dev/setup to initialize this instance. Any other URL redirects to that setup page until a platform administrator exists. After login, /admin/settings can change the public URL, storage paths, upload limit, and default skin injection without a process restart.
| Variable | Default | Purpose |
|---|---|---|
APP_HOST |
0.0.0.0 |
Bind address |
APP_PORT |
8801 |
Public HTTP port |
PUBLIC_BASE_URL |
https://trilobite.1kt.dev |
URLs shown to browsers and Fossil |
TRILOBITE_DB_PATH |
data/trilobite.db |
Platform SQLite file |
TRILOBITE_REPOS_DIR |
storage/repos |
*.fossil files |
TRILOBITE_RELEASES_DIR |
storage/releases |
Uploaded releases |
FOSSIL_INTERNAL_PORT |
8802 |
Local fossil server (localhost only) |
FOSSIL_BIN / GIT_BIN |
fossil / git |
CLI paths |
TRILOBITE_MAX_UPLOAD_BYTES |
524288000 |
Release upload limit |
TRILOBITE_SECRET |
development placeholder | Cookie signing secret |
Change TRILOBITE_SECRET before exposing the service.
Backup and restore
Copy these paths together:
data/trilobite.db(platform users, sessions, repo registry, releases)storage/repos/(independent Fossil repositories)storage/releases/(release blobs)storage/git-mirrors/(optional Git export working copies)
Restore the same layout and start gleam run. Migrations in priv/migrations/ apply on startup.
Security notes
- Port
8802must stay off the public network. - Each Fossil repository has its own setup user; it is not the platform admin.
- Private repositories are omitted from
/repositories,/timeline, and anonymous/:repo/*. docs/, local databases, and storage directories are ignored by this Fossil checkout.
Tests
gleam test