HomeHub
Private, self-hosted hub for a family's shared notes, lists, chores, and calendar
Alternative to: Cozi, OurHome, AnyList
HomeHub is a lightweight, self-hosted web app that turns any computer, even a Raspberry Pi, into a private central hub for a household. It brings together shared notes, a shopping list with history-based suggestions, a chore tracker, a shared calendar with reminders, and a family expense tracker with recurring bills, alongside smaller utilities like a recipe book, expiry tracker, and QR code generator. Everything runs on the family's own network with no cloud accounts, tracking, or subscriptions required.
HomeHub Docker Compose example
Self-host HomeHub on your own server, homelab, or VPS starting from this Docker Compose example.
It runs HomeHub in Docker containers using the official ghcr.io/surajverma/homehub:latest image, with persistent volumes and automatic restarts preconfigured.
Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.
services:
homehub:
image: ghcr.io/surajverma/homehub:latest
volumes:
- ./config.yml:/app/config.yml:ro
- uploads:/app/uploads
- media:/app/media
- pdfs:/app/pdfs
- data:/app/data
restart: unless-stopped
environment:
# Flask runtime environment
FLASK_ENV: "production"
# Secret key used to sign sessions. Set a long random string to keep sessions valid
# across restarts; leave blank to auto-generate a new one on every restart.
SECRET_KEY: ""
volumes:
uploads:
media:
pdfs:
data: Extra files
The Docker Compose configuration above bind-mounts the following file. Save it next to your compose.yml,
keeping the same relative path.
config.yml
instance_name: "My Home Hub"
password: "" #leave blank for password less access
admin_name: "Administrator"
feature_toggles:
shopping_list: true
media_downloader: true
pdf_compressor: true
qr_generator: true
notes: true
shared_cloud: true
who_is_home: true
personal_status: true
chores: true
recipes: true
expiry_tracker: true
url_shortener: true
expense_tracker: true
family_members:
- Mom
- Dad
- Dipanshu
- Vivek
- India
reminders:
# time_format controls how reminder times are displayed in the UI.
# Allowed values: "12h" (default) or "24h". Remove or leave blank to fall back to 12h.
time_format: 12h
# calendar_start_day controls which day the reminders calendar starts on.
# Accepts full weekday names (sunday..saturday) or numeric 0-6 where 0=Sunday.
calendar_start_day: sunday #default is Sunday
# Example reminder categories (keys lowercase no spaces recommended)
categories:
- key: health
label: Health
color: "#dc2626"
- key: bills
label: Bills
color: "#0d9488"
- key: school
label: School
color: "#7c3aed"
- key: family
label: Family
color: "#2563eb"
weather:
enabled: false
label: "" # optional location label (appears on right of header). Leave blank to hide.
latitude: "" # optional, leave empty to use browser geolocation
longitude: "" # optional, leave empty to use browser geolocation
timezone: "" # optional, e.g., "Europe/Kyiv" or "America/New_York"; if unset, API uses timezone=auto
units: metric # metric or imperial (default: metric)
view: compact # compact or detailed (detailed also shows today's forecast: sunrise, sunset, UV, rain %, highs/lows)
#Optional
theme:
primary_color: "#1d4ed8"
secondary_color: "#a0aec0"
background_color: "#f7fafc"
card_background_color: "#fff"
text_color: "#333"
sidebar_background_color: "#2563eb"
sidebar_text_color: "#ffffff"
sidebar_link_color: "rgba(255,255,255,0.95)"
sidebar_link_border_color: "rgba(255,255,255,0.18)"
sidebar_active_color: "#3b82f6" Prefer a managed setup? WinterFlow installs, configures, and updates HomeHub for you using this same Docker Compose configuration.