FossilRepo
| 2eca4eb… | ragelink | 1 | # Fossilrepo |
| 2eca4eb… | ragelink | 2 | |
| 2eca4eb… | ragelink | 3 | **Self-hosted Fossil forge. One command, full-stack code hosting.** |
| 4c57c6e… | ragelink | 4 | |
| 4c57c6e… | ragelink | 5 |  |
| 2eca4eb… | ragelink | 6 | |
| 2eca4eb… | ragelink | 7 | Fossilrepo is an omnibus-style installer for a production Fossil SCM server. It packages Fossil, Caddy (SSL/routing), Litestream (S3 backups), and a Django management layer into a single deployable unit. |
| 2eca4eb… | ragelink | 8 | |
| 2eca4eb… | ragelink | 9 | Think GitLab Omnibus, but for Fossil. |
| 2eca4eb… | ragelink | 10 | |
| 2eca4eb… | ragelink | 11 | ## Why Fossil? |
| 2eca4eb… | ragelink | 12 | |
| 2eca4eb… | ragelink | 13 | A Fossil repository is a single SQLite file containing the full VCS history, issue tracker, wiki, forum, and timeline. No external services. No rate limits. Portable -- hand the file to someone and they have everything. |
| 2eca4eb… | ragelink | 14 | |
| 2eca4eb… | ragelink | 15 | - **Single-file repos** -- each `.fossil` file is the entire project |
| 2eca4eb… | ragelink | 16 | - **Built-in everything** -- issues, wiki, forum, timeline, web UI |
| 2eca4eb… | ragelink | 17 | - **No API rate limits** -- ideal for CI agents and automation |
| 2eca4eb… | ragelink | 18 | - **Litestream replication** -- continuous backup to S3 for free |
| 2eca4eb… | ragelink | 19 | |
| 2eca4eb… | ragelink | 20 | ## What You Get |
| 2eca4eb… | ragelink | 21 | |
| 2eca4eb… | ragelink | 22 | | Component | Role | |
| 2eca4eb… | ragelink | 23 | |---|---| |
| 2eca4eb… | ragelink | 24 | | **Fossil server** | Serves all repos from a single process | |
| 2eca4eb… | ragelink | 25 | | **Caddy** | SSL termination, subdomain-per-repo routing | |
| 2eca4eb… | ragelink | 26 | | **Litestream** | Continuous SQLite replication to S3/MinIO | |
| 2eca4eb… | ragelink | 27 | | **Django management UI** | Repository lifecycle, user management, dashboards | |
| 2eca4eb… | ragelink | 28 | | **Sync bridge** | Mirror Fossil repos to GitHub/GitLab (read-only) | |
| 2eca4eb… | ragelink | 29 | | **Celery workers** | Background sync, scheduled tasks | |
| 2eca4eb… | ragelink | 30 | |
| 2eca4eb… | ragelink | 31 | ## Quick Start |
| 2eca4eb… | ragelink | 32 | |
| 2eca4eb… | ragelink | 33 | ```bash |
| 2eca4eb… | ragelink | 34 | # Clone the repo |
| 2eca4eb… | ragelink | 35 | git clone https://github.com/ConflictHQ/fossilrepo.git |
| 2eca4eb… | ragelink | 36 | cd fossilrepo |
| 2eca4eb… | ragelink | 37 | |
| 2eca4eb… | ragelink | 38 | # Start the full stack |
| 2eca4eb… | ragelink | 39 | make build |
| 2eca4eb… | ragelink | 40 | |
| 2eca4eb… | ragelink | 41 | # Seed development data |
| 2eca4eb… | ragelink | 42 | make seed |
| 2eca4eb… | ragelink | 43 | |
| 2eca4eb… | ragelink | 44 | # Open the dashboard |
| 2eca4eb… | ragelink | 45 | open http://localhost:8000 |
| 2eca4eb… | ragelink | 46 | ``` |
| 2eca4eb… | ragelink | 47 | |
| 2eca4eb… | ragelink | 48 | ## Architecture |
| 2eca4eb… | ragelink | 49 | |
| 2eca4eb… | ragelink | 50 | ``` |
| 2eca4eb… | ragelink | 51 | Caddy (SSL termination, routing, subdomain per repo) |
| 2eca4eb… | ragelink | 52 | +-- fossil server --repolist /data/repos/ |
| 2eca4eb… | ragelink | 53 | +-- /data/repos/ |
| 2eca4eb… | ragelink | 54 | |-- projecta.fossil |
| 2eca4eb… | ragelink | 55 | |-- projectb.fossil |
| 2eca4eb… | ragelink | 56 | +-- ... |
| 2eca4eb… | ragelink | 57 | |
| 2eca4eb… | ragelink | 58 | Litestream -> S3/MinIO (continuous replication, point-in-time recovery) |
| 2eca4eb… | ragelink | 59 | ``` |
| 2eca4eb… | ragelink | 60 | |
| 2eca4eb… | ragelink | 61 | New project = `fossil init`. No restart, no config change. Litestream picks it up automatically. |
| 2eca4eb… | ragelink | 62 | |
| 2eca4eb… | ragelink | 63 | ## License |
| 2eca4eb… | ragelink | 64 | |
| 2eca4eb… | ragelink | 65 | MIT License -- Copyright (c) 2026 CONFLICT LLC. |