version: "3.7" services: haven: image: ghcr.io/havenweb/haven:a0280ce container_name: haven depends_on: - haven-db ports: - ${APP_PORT}:3000 volumes: - ${APP_DATA_DIR}/data/storage:/storage environment: - RAILS_ENV=production - HAVEN_DB_HOST=haven-db - HAVEN_DB_NAME=haven - HAVEN_DB_ROLE=haven - HAVEN_DB_PASSWORD=${HAVEN_DB_PASSWORD} - HAVEN_USER_EMAIL=${HAVEN_USER_EMAIL} - HAVEN_USER_PASS=${HAVEN_USER_PASSWORD} networks: - tipi_main_network labels: # Main traefik.enable: true traefik.http.middlewares.haven-web-redirect.redirectscheme.scheme: https traefik.http.services.haven.loadbalancer.server.port: 3000 # Web traefik.http.routers.haven-insecure.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.haven-insecure.entrypoints: web traefik.http.routers.haven-insecure.service: haven traefik.http.routers.haven-insecure.middlewares: haven-web-redirect # Websecure traefik.http.routers.haven.rule: Host(`${APP_DOMAIN}`) traefik.http.routers.haven.entrypoints: websecure traefik.http.routers.haven.service: haven traefik.http.routers.haven.tls.certresolver: myresolver # Local domain traefik.http.routers.haven-local-insecure.rule: Host(`haven.${LOCAL_DOMAIN}`) traefik.http.routers.haven-local-insecure.entrypoints: web traefik.http.routers.haven-local-insecure.service: haven traefik.http.routers.haven-local-insecure.middlewares: haven-web-redirect # Local domain secure traefik.http.routers.haven-local.rule: Host(`haven.${LOCAL_DOMAIN}`) traefik.http.routers.haven-local.entrypoints: websecure traefik.http.routers.haven-local.service: haven traefik.http.routers.haven-local.tls: true haven-db: image: postgres:13.2-alpine container_name: haven-db command: [ "postgres", "-c", "max_connections=1000", "-c", "synchronous_commit=off", "-c", "fsync=off", "-c", "full_page_writes=off", "-c", "max_wal_size=4GB", "-c", "checkpoint_timeout=30min", "-c", "wal_level=logical", ] environment: POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_USER: haven volumes: - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data networks: - tipi_main_network