Ovumcy logo

Ovumcy

Privacy-first, self-hosted menstrual cycle tracker

Alternative to: flo, clue

Ovumcy screenshotOvumcy screenshot

Ovumcy is a self-hosted menstrual cycle tracker that keeps period, symptom, and fertility data on your own server instead of a cloud vendor. It predicts upcoming periods, ovulation, and fertile windows, offers calendar and statistics views, reminders via webhook or calendar subscription, and CSV/JSON export. It supports optional OIDC/SSO sign-in with TOTP two-factor authentication.

Ovumcy Docker Compose example

Self-host Ovumcy on your own server, homelab, or VPS starting from this Docker Compose example. It runs Ovumcy in Docker containers using the official ghcr.io/ovumcy/ovumcy-web: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:
  ovumcy:
    image: ghcr.io/ovumcy/ovumcy-web:latest
    restart: unless-stopped
    init: true
    environment:
      # Container timezone.
      TZ: "UTC"
      # UI language. Supported: en, ru, es, fr, de, it
      DEFAULT_LANGUAGE: "en"
      # Account registration policy: open or closed.
      REGISTRATION_MODE: "open"
      # Database engine: sqlite (default) or postgres.
      DB_DRIVER: "sqlite"
      # Path to the SQLite database file inside the persistent data volume.
      DB_PATH: "/app/data/ovumcy.db"
      # Strong application secret. Generate with: openssl rand -hex 32
      # Rotating it invalidates every session, TOTP secret, stored webhook URL and calendar-feed URL.
      SECRET_KEY: "changeme"
      # Set to true only when the app is served over HTTPS (e.g. behind a TLS-terminating reverse proxy).
      COOKIE_SECURE: "false"
      # Enable only when the app is behind your own trusted reverse proxy.
      TRUST_PROXY_ENABLED: "false"
      # Optional OpenID Connect / SSO sign-in. Requires HTTPS, COOKIE_SECURE=true and a
      # redirect URL ending in /auth/oidc/callback.
      OIDC_ENABLED: "false"
      OIDC_ISSUER_URL: ""
      OIDC_CLIENT_ID: ""
      OIDC_CLIENT_SECRET: ""
      OIDC_REDIRECT_URL: ""
      # hybrid keeps local login alongside SSO; oidc_only removes local login/register.
      OIDC_LOGIN_MODE: "hybrid"
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    read_only: true
    tmpfs:
      - /tmp
    volumes:
      - ovumcy_data:/app/data
    healthcheck:
      test: ["CMD", "/app/ovumcy", "healthcheck"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 20s

volumes:
  ovumcy_data:

Values set to changeme are required — replace them with your own values before starting Ovumcy.

Prefer a managed setup? WinterFlow installs, configures, and updates Ovumcy for you using this same Docker Compose configuration.