Self-hosting Bebe Moment
Bebe Moment is a self-hosted family baby photo journal. Instead of trusting a cloud with your child's photos, videos, and milestones, you run it on your own server (a Synology NAS, a home Linux box, a VPS) and keep everything within the family — no ads, no tracking, no subscription.
One instance = one family. The first user (the admin) sets up the family, and everyone after that joins by invite link only.
Deployment topology
A deployment is just three containers.
- app — runs web, media, and the notifications worker as three processes in a single image. Exposes only port 3000.
- postgres — the metadata DB (
pgvector/pgvector:pg17, includes vector search for face embeddings). - redis — the processing queue (
valkey/valkey:9-alpine, the service name staysredis).
No separate reverse-proxy container (Caddy, etc.) is needed. The browser reaches media via PUBLIC_URL/media/*, and inside the container Next proxies that to localhost:3001.
Image
A single image, pulled from GHCR.
ghcr.io/svrforum/bebe-moment/app:latest
The image is currently linux/amd64 only. ARM Synology models are unsupported until an arm64 image is added (x86 Synology and plain amd64 Linux only).
Where to start
- Plain Linux Docker install — bring it up with Docker Compose.
- Synology DSM install — bring it up with the Container Manager UI.
- Environment variables reference — all required and optional env.
- Troubleshooting — common issues and fixes.