HomeHub logo

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.