services: blog: pull_policy: build build: context: ./docker/blog dockerfile: Dockerfile pull: true volumes: - "blog-public:/public" restart: on-failure:3 nginx: pull_policy: build build: context: ./docker/nginx dockerfile: Dockerfile pull: true ports: - "80:80" - "443:443" - "443:443/udp" volumes: - "./generated/nginx/conf.d:/etc/nginx/conf.d:ro" - "./generated/nginx/common:/etc/nginx/common:ro" - "./data/certbot/certs:/etc/letsencrypt" - "./data/certbot/webroot:/srv/acme:ro" - "./data/certbot/data:/var/lib/letsencrypt" - "./data/certbot/webroot:/var/www/certbot" - "blog-public:/srv/www/blog:ro" restart: on-failure:3 v2ray: pull_policy: build build: context: ./docker/v2ray dockerfile: Dockerfile pull: true hostname: v2ray command: [ "run", "-c", "/etc/v2fly/config.json" ] volumes: - "./generated/v2ray-config.json:/etc/v2fly/config.json:ro" restart: on-failure:3 auto-backup: pull_policy: build build: context: ./docker/auto-backup dockerfile: Dockerfile pull: true volumes: - "./data:/data" secrets: - auto-backup restart: on-failure:3 mailserver: image: docker.io/mailserver/docker-mailserver:latest pull_policy: always container_name: mailserver hostname: mail.@@CRUPEST_DOMAIN@@ env_file: generated/mailserver.env # More information about the mail-server ports: # https://docker-mailserver.github.io/docker-mailserver/edge/config/security/understanding-the-ports/ # To avoid conflicts with yaml base-60 float, DO NOT remove the quotation marks. ports: - "25:25" # SMTP (explicit TLS => STARTTLS) - "143:143" # IMAP4 (explicit TLS => STARTTLS) - "465:465" # ESMTP (implicit TLS) - "587:587" # ESMTP (explicit TLS => STARTTLS) - "993:993" # IMAP4 (implicit TLS) - "4190:4190" # manage sieve protocol volumes: - ./data/dms/mail-data/:/var/mail/ - ./data/dms/mail-state/:/var/mail-state/ - ./data/dms/mail-logs/:/var/log/mail/ - ./data/dms/config/:/tmp/docker-mailserver/ - ./data/certbot/certs:/etc/letsencrypt - /etc/localtime:/etc/localtime:ro restart: on-failure:3 stop_grace_period: 1m healthcheck: test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1" timeout: 3s retries: 0 git-server: pull_policy: build build: context: ./docker/git-server dockerfile: Dockerfile secrets: - "git-server" pull: true args: - ROOT_URL=https://@@CRUPEST_DOMAIN@@/git hostname: git-server volumes: - "./data/git:/git" restart: on-failure:3 roundcubemail: image: roundcube/roundcubemail:latest pull_policy: always hostname: roundcubemail volumes: - ./data/secret/gnupg:/gnupg - ./data/roundcube/www/html:/var/www/html - ./data/roundcube/db:/var/roundcube/db - ./data/roundcube/config:/var/roundcube/config - roundcubemail-temp:/tmp/roundcube-temp environment: - ROUNDCUBEMAIL_DEFAULT_HOST=ssl://mail.crupest.life - ROUNDCUBEMAIL_DEFAULT_PORT=993 - ROUNDCUBEMAIL_SMTP_SERVER=ssl://mail.crupest.life - ROUNDCUBEMAIL_SMTP_PORT=465 - ROUNDCUBEMAIL_DB_TYPE=sqlite - ROUNDCUBEMAIL_PLUGINS=archive,enigma,jqueryui,newmail_notifier,show_additional_headers,userinfo,zipdownload,managesieve restart: on-failure:3 2fauth: image: 2fauth/2fauth pull_policy: always hostname: 2fauth volumes: - ./data/2fauth:/2fauth environment: - APP_NAME=2FAuth-crupest - APP_TIMEZONE=UTC - SITE_OWNER=crupest@crupest.life - APP_KEY=@@CRUPEST_2FAUTH_APP_KEY@@ - APP_URL=https://@@CRUPEST_DOMAIN@@/2fa - APP_SUBDIRECTORY=2fa - MAIL_MAILER=smtp - MAIL_HOST=mail.crupest.life - MAIL_PORT=465 - MAIL_USERNAME=@@CRUPEST_2FAUTH_MAIL_USERNAME@@ - MAIL_PASSWORD=@@CRUPEST_2FAUTH_MAIL_PASSWORD@@ - MAIL_ENCRYPTION=ssl - MAIL_FROM_NAME=2FAuth-crupest - MAIL_FROM_ADDRESS=@@CRUPEST_2FAUTH_MAIL_USERNAME@@ - TRUSTED_PROXIES=* volumes: blog-public: roundcubemail-temp: secrets: auto-backup: file: data/config git-server: file: data/config