version: '3.8' services: postgres: image: ghcr.io/aliasvault/postgres:latest container_name: aliasvault-postgres volumes: - postgres_data:/var/lib/postgresql/data:rw - ./secrets:/secrets:ro env_file: - .env restart: unless-stopped environment: POSTGRES_DB: aliasvault POSTGRES_USER: aliasvault POSTGRES_PASSWORD_FILE: /secrets/postgres_password healthcheck: test: ["CMD-SHELL", "pg_isready -U aliasvault"] interval: 5s timeout: 5s retries: 5 start_period: 10s networks: - aliasvault-network client: image: ghcr.io/aliasvault/client:latest container_name: aliasvault-client volumes: - ./logs/msbuild:/apps/server/msbuild-logs:rw expose: - "3000" restart: unless-stopped env_file: - .env networks: - aliasvault-network api: image: ghcr.io/aliasvault/api:latest container_name: aliasvault-api expose: - "3001" volumes: - database_data:/database:rw - logs_data:/logs:rw - ./secrets:/secrets:ro restart: unless-stopped env_file: - .env depends_on: postgres: condition: service_healthy networks: - aliasvault-network admin: image: ghcr.io/aliasvault/admin:latest container_name: aliasvault-admin expose: - "3002" volumes: - database_data:/database:rw - logs_data:/logs:rw - ./secrets:/secrets:ro restart: unless-stopped env_file: - .env depends_on: postgres: condition: service_healthy networks: - aliasvault-network smtp: image: ghcr.io/aliasvault/smtp:latest container_name: aliasvault-smtp ports: - "${SMTP_PORT:-25}:25" - "${SMTP_TLS_PORT:-587}:587" volumes: - database_data:/database:rw - logs_data:/logs:rw - ./secrets:/secrets:ro - ./certificates/smtp:/certificates/smtp:ro restart: unless-stopped env_file: - .env depends_on: postgres: condition: service_healthy networks: - aliasvault-network task-runner: image: ghcr.io/aliasvault/task-runner:latest container_name: aliasvault-task-runner volumes: - database_data:/database:rw - logs_data:/logs:rw - ./secrets:/secrets:ro restart: unless-stopped env_file: - .env depends_on: postgres: condition: service_healthy networks: - aliasvault-network reverse-proxy: image: ghcr.io/aliasvault/reverse-proxy:latest container_name: aliasvault-reverse-proxy ports: - "${HTTP_PORT:-80}:80" - "${HTTPS_PORT:-443}:443" volumes: - ./certificates/ssl:/etc/nginx/ssl:rw - ./certificates/letsencrypt:/etc/nginx/ssl-letsencrypt:rw - ./certificates/letsencrypt/www:/var/www/certbot:rw depends_on: - admin - client - api - smtp restart: unless-stopped env_file: - .env networks: - aliasvault-network volumes: postgres_data: driver: local database_data: driver: local logs_data: driver: local networks: aliasvault-network: driver: bridge