Self-host FamilyHub
Run the whole thing on your own hardware. Free forever, MIT licensed, your data never leaves the house.
FamilyHub is genuinely open source — not a "community edition" with features removed. The self-hosted build is the same code we run for our hosted customers, just without the payment module wired up.
Why self-host
Your data, your hardware
Family photos, grocery lists, kids' schedules — it all stays on the machine you control. No third-party cloud, no analytics, no ads.
Free, forever
No subscription, no license key, no artificial limits. MIT license.
Hack on it
The whole codebase is on GitLab. Fork it, run your own fork, send merge requests, change the colors, replace Claude with your own LLM. It's yours.
Bring your own AI
Want the AI assistant? Drop in an Anthropic or OpenAI API key in the admin UI (or set an env var instance-wide). Voice-to-text? Point it at OpenAI Whisper or a self-hosted faster-whisper.
What you need
- A Linux server with Docker — a VPS, mini-PC, NAS or Raspberry Pi 4/5 (or a Kubernetes cluster, if you already run one)
- About 2 GB of RAM — FamilyHub itself is small; PostgreSQL is the heaviest component
- A domain pointing at the server, with ports 80 and 443 open — HTTPS is set up for you. No domain? It runs on your home network too, just without voice input
- Optional: an Anthropic or OpenAI API key for the AI assistant — or your own local model
Installed with a single command
The Docker Compose file in the repo starts everything in one go: the app, the API, PostgreSQL, Radicale (CalDAV) and Caddy, which gets your HTTPS certificate automatically. Copy .env.example to .env, fill in your domain and two secrets, run `docker compose up -d`, and open your domain to create the first super admin.
git clone https://gitlab.com/yvanpersonal/familyhub.git cd familyhub cp .env.example .env # then fill in your domain + two secrets docker compose up -dRead the install guide
Hosted vs self-hosted — what actually differs
The feature set is identical. These are the only operational differences:
| Hosted | Self-hosted | |
|---|---|---|
| Who runs it | We do | You do |
| Updates and backups | Automatic | You schedule them |
| AI assistant | Included on Full plan | Bring your own API key |
| Payment flows | Stripe-backed, trial included | Not present — no billing UI |
| Support | Priority email | Community (GitLab issues) |
| Cost | Monthly or yearly | Free, but your time |
Start self-hosted, switch later (or the reverse)
The database schema is the same in both modes. Setting FAMILYHUB_PAYMENT_ENABLED=true on a self-hosted instance wakes up the payment module — existing families show as FREE, new trials work normally. Going the other way, export your data from the hosted version anytime.