--- services: mailarchive: image: s1t5/mailarchiver:${MAILARCHIVE_VERSION} container_name: mailarchive restart: always networks: - traefik - mailarchive environment: # Database Connection - ConnectionStrings__DefaultConnection=Host=postgres;Database=MailArchiver;Username=${DB_USER};Password=${DB_PASSWORD}; # Authentication Settings - Authentication__Enabled=${AUTH_ENABLE} - Authentication__Username=${AUTH_USER} - Authentication__Password=${AUTH_PASSWORD} - Authentication__SessionTimeoutMinutes=${AUTH_SESSION_TIMEOUT_IN_MINUTES} - Authentication__CookieName=MailArchiverAuth # MailSync Settings - MailSync__IntervalMinutes=${MAIL_SYNC_INTERVAL_IN_MINUTES} - MailSync__TimeoutMinutes=${MAIL_SYNC_TIMEOUT_IN_MINUTES} - MailSync__ConnectionTimeoutSeconds=${MAIL_CONNECTION_TIMEOUT_IN_SECONDS} - MailSync__CommandTimeoutSeconds=${MAIL_COMMAND_TIMEOUT_IN_SECONDS} # BatchRestore Settings - BatchRestore__AsyncThreshold=50 - BatchRestore__MaxSyncEmails=150 - BatchRestore__MaxAsyncEmails=50000 - BatchRestore__SessionTimeoutMinutes=30 - BatchRestore__DefaultBatchSize=50 # BatchOperation Settings - BatchOperation__BatchSize=50 - BatchOperation__PauseBetweenEmailsMs=50 - BatchOperation__PauseBetweenBatchesMs=250 # Npgsql Settings - Npgsql__CommandTimeout=900 labels: - "traefik.enable=true" - "traefik.docker.network=traefik" - "traefik.http.routers.mailarchive.entrypoints=http" - "traefik.http.routers.mailarchive.rule=Host(`${MAILARCHIVE_DOMAIN}`)" - "traefik.http.middlewares.mailarchive-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.mailarchive.middlewares=mailarchive-https-redirect" - "traefik.http.routers.mailarchive-secure.entrypoints=https" - "traefik.http.routers.mailarchive-secure.rule=Host(`${MAILARCHIVE_DOMAIN}`)" - "traefik.http.routers.mailarchive-secure.tls=true" - "traefik.http.routers.mailarchive-secure.service=mailarchive" - "traefik.http.services.mailarchive.loadbalancer.server.port=5000" depends_on: postgres: condition: service_healthy postgres: image: postgres:${POSTGRES_VERSION} container_name: mailarchive-db restart: always environment: POSTGRES_DB: MailArchiver POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - ./data/db:/var/lib/postgresql/data networks: - mailarchive healthcheck: test: ["CMD-SHELL", "pg_isready -U mailuser -d MailArchiver"] interval: 10s timeout: 5s retries: 5 start_period: 10s networks: traefik: external: true postgres: