services: roundcube-db: image: postgres:16-alpine container_name: roundcube-db restart: unless-stopped environment: POSTGRES_DB: roundcube POSTGRES_USER: roundcube POSTGRES_PASSWORD: "{{ roundcube_db_password }}" volumes: - {{ roundcube_data_dir }}/db:/var/lib/postgresql/data networks: - internal logging: driver: gelf options: gelf-address: "udp://{{ graylog_host }}:{{ graylog_gelf_port }}" tag: "roundcube-db" roundcube: image: roundcube/roundcubemail:{{ roundcube_version }} container_name: roundcube restart: unless-stopped depends_on: - roundcube-db environment: ROUNDCUBEMAIL_DB_TYPE: pgsql ROUNDCUBEMAIL_DB_HOST: roundcube-db ROUNDCUBEMAIL_DB_NAME: roundcube ROUNDCUBEMAIL_DB_USER: roundcube ROUNDCUBEMAIL_DB_PASSWORD: "{{ roundcube_db_password }}" ROUNDCUBEMAIL_DEFAULT_HOST: "ssl://stalwart" ROUNDCUBEMAIL_DEFAULT_PORT: 993 ROUNDCUBEMAIL_SMTP_SERVER: "tls://stalwart" ROUNDCUBEMAIL_SMTP_PORT: 587 ROUNDCUBEMAIL_DES_KEY: "{{ roundcube_des_key }}" ROUNDCUBEMAIL_PLUGINS: "archive,zipdownload,managesieve,jqueryui" ROUNDCUBEMAIL_SKIN: "{{ roundcube_skin }}" volumes: - {{ roundcube_data_dir }}/config/custom.inc.php:/var/roundcube/config/custom.inc.php:ro labels: - "traefik.enable=true" - "traefik.http.routers.roundcube.rule=Host(`{{ roundcube_domain }}`)" - "traefik.http.routers.roundcube.tls=true" - "traefik.http.routers.roundcube.tls.certresolver=letsencrypt" - "traefik.http.services.roundcube.loadbalancer.server.port=80" networks: - internal - {{ sovereign_network_name }} logging: driver: gelf options: gelf-address: "udp://{{ graylog_host }}:{{ graylog_gelf_port }}" tag: "roundcube" networks: internal: {{ sovereign_network_name }}: external: true