# kinora: https://kinora.stream/docs/installation
# Put TMDB_API_KEY=your_key in a .env file next to this one, then: docker compose up -d
services:
  kinora:
    image: ghcr.io/ermos/kinora:latest
    ports:
      - "8080:8080"
    env_file: .env
    environment:
      TMDB_API_KEY: ${TMDB_API_KEY:?set TMDB_API_KEY in .env (free key at https://www.themoviedb.org/settings/api)}
      DATABASE_URL: postgres://kinora:kinora@postgres:5432/kinora?sslmode=disable
    depends_on:
      postgres:
        condition: service_healthy
    restart: unless-stopped

  postgres:
    image: postgres:18-alpine
    environment:
      POSTGRES_USER: kinora
      POSTGRES_PASSWORD: kinora
      POSTGRES_DB: kinora
    volumes:
      - postgres:/var/lib/postgresql
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "kinora"]
      interval: 5s
      retries: 10
    restart: unless-stopped

  # Optional: lets kinora search the sites behind Cloudflare. Enable it in Account > FlareSolverr with
  # http://flaresolverr:8191.
  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    restart: unless-stopped

  # Optional: daily database dumps in the backups volume (7 daily, 4 weekly, 6 monthly kept). Enable it with
  # COMPOSE_PROFILES=backup in .env.
  backup:
    image: prodrigestivill/postgres-backup-local:18
    profiles: [backup]
    environment:
      POSTGRES_HOST: postgres
      POSTGRES_DB: kinora
      POSTGRES_USER: kinora
      POSTGRES_PASSWORD: kinora
      SCHEDULE: "@daily"
      BACKUP_ON_START: "TRUE"
      BACKUP_KEEP_DAYS: 7
      BACKUP_KEEP_WEEKS: 4
      BACKUP_KEEP_MONTHS: 6
    volumes:
      - backups:/backups
    depends_on:
      postgres:
        condition: service_healthy
    restart: unless-stopped

volumes:
  postgres:
  backups:
