From 0dd964e121a4ce33d4fc4405850e3d82d46bcf11 Mon Sep 17 00:00:00 2001 From: Andrew Hurley Date: Wed, 26 Oct 2022 22:39:17 +1100 Subject: [PATCH] First Commit --- README.md | 0 docker-backup.sh | 27 +++++ docker-compose.yml | 252 +++++++++++++++++++++++++++++++++++++++++++++ docker-restore.sh | 27 +++++ 4 files changed, 306 insertions(+) create mode 100644 README.md create mode 100755 docker-backup.sh create mode 100644 docker-compose.yml create mode 100755 docker-restore.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/docker-backup.sh b/docker-backup.sh new file mode 100755 index 0000000..95aa9f7 --- /dev/null +++ b/docker-backup.sh @@ -0,0 +1,27 @@ +#!/bin/bash +sudo docker run --rm \ + --name volumerize \ + -e TZ=Australia/Perth \ + -e VOLUMERIZE_SOURCE=/source \ + -e VOLUMERIZE_TARGET=file:///backup \ + -v backup_docker-cache:/volumerize-cache \ + -v backup_docker-volume:/backup \ + -v docker_admin-data:/source/docker_admin-data:ro \ + -v docker_admin-dkim:/source/docker_admin-dkim:ro \ + -v docker_antispam-filter:/source/docker_antispam-filter:ro \ + -v docker_front-overrides:/source/docker_front-overrides:ro \ + -v docker_gitea-data:/source/docker_gitea-data:ro \ + -v docker_gitea-db:/source/docker_gitea-db:ro \ + -v docker_imap-mail:/source/docker_imap-mail:ro \ + -v docker_passb-db:/source/docker_passb-db:ro \ + -v docker_passb-gpg:/source/docker_passb-gpg:ro \ + -v docker_passb-jwt:/source/docker_passb-jwt:ro \ + -v docker_redis-data:/source/docker_redis-data:ro \ + -v docker_regty-store:/source/docker_regty-store:ro \ + -v docker_searx-etc:/source/docker_searx-etc:ro \ + -v docker_searx-uwsgi:/source/docker_searx-uwsgi:ro \ + -v docker_smtp-queue:/source/docker_smtp-queue:ro \ + -v docker_webmail-data:/source/docker_webmail-data:ro \ + -v docker_webmail-overrides:/source/docker_webmail-overrides:ro \ + blacklabelops/volumerize:1.7.1 backup + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fb44a2a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,252 @@ +--- +networks: + + mailu: + driver: bridge + name: mailu + ipam: + driver: default + config: + - subnet: 192.168.2.0/24 + local: + internal: true + gitea: + internal: true + passb: + internal: true + +volumes: + + redis-data: + front-overrides: + admin-data: + admin-dkim: + imap-mail: + smtp-queue: + antispam-filter: + webmail-data: + webmail-overrides: + + searx-etc: + searx-uwsgi: + gitea-data: + gitea-db: + passb-gpg: + passb-jwt: + passb-db: + regty-store: + +services: + + resolver: + image: ${DORG?err}/mailu/unbound:${MAILU_VERSION:-1.9} + env_file: ${CONF?err}mailu.env + restart: always + networks: + mailu: + ipv4_address: 192.168.2.254 + + redis: + image: ${DORG?err}/redis:alpine + restart: always + volumes: + - ${BIND?err}redis-data:/data + depends_on: + - resolver + networks: + - mailu + dns: + - 192.168.2.254 + + front: + image: ${DORG?err}/mailu/nginx:${MAILU_VERSION:-1.9} + restart: always + env_file: ${CONF?err}mailu.env + logging: + driver: journald + options: + tag: docker-front + ports: + - "80:80" + - "443:443" + - "25:25" + - "465:465" + - "143:143" + - "993:993" + - "587:587" + - "110:110" + - "995:955" + volumes: + - ${BIND?err}front-overrides:/overrides + - ${CERT?err}:/certs:ro + - ${CONF?err}mailu-front-overrides.conf:/overrides/overrides.conf:ro + depends_on: + - resolver + networks: + - mailu + - local + dns: + - 192.168.2.254 + + admin: + image: ${DORG?err}/mailu/admin:${MAILU_VERSION:-1.9} + restart: always + env_file: + - ${CONF?err}mailu.env + volumes: + - ${BIND?err}admin-data:/data + - ${BIND?err}admin-dkim:/dkim + depends_on: + - redis + - resolver + networks: + - mailu + dns: + - 192.168.2.254 + + imap: + image: ${DORG?err}/mailu/dovecot:${MAILU_VERSION:-1.9} + restart: always + env_file: + - ${CONF?err}mailu.env + volumes: + - ${BIND?err}imap-mail:/mail + depends_on: + - front + - resolver + networks: + - mailu + dns: + - 192.168.2.254 + + smtp: + image: ${DORG?err}/mailu/postfix:${MAILU_VERSION:-1.9} + restart: always + env_file: ${CONF?err}mailu.env + volumes: + - ${BIND?err}smtp-queue:/queue + depends_on: + - front + - resolver + networks: + - mailu + dns: + - 192.168.2.254 + + antispam: + image: ${DORG?err}/mailu/rspamd:${MAILU_VERSION:-1.9} + hostname: antispam + restart: always + env_file: + - ${CONF?err}mailu.env + volumes: + - ${BIND?err}antispam-filter:/var/lib/rspamd + depends_on: + - front + - resolver + networks: + - mailu + dns: + - 192.168.2.254 + + webmail: + image: ${DORG?err}/mailu/roundcube:${MAILU_VERSION:-1.9} + restart: always + env_file: + - ${CONF?err}mailu.env + volumes: + - ${BIND?err}webmail-data:/data + - ${BIND?err}webmail-overrides:/overrides + depends_on: + - front + - imap + - resolver + networks: + - mailu + dns: + - 192.168.2.254 + + regty: + image: ${DORG?err}/registry:2 + restart: always + volumes: + - ${BIND?err}regty-store:/var/lib/registry + - ${CONF?err}regty-config.yml:/etc/docker/registry/config.yml:ro + - ${CONF?err}regty-htpasswd:/htpasswd:ro + env_file: + - ${CONF}regty.env + networks: + - local + + searx: + image: ${DORG?err}/searx/searx + restart: always + volumes: + - ${BIND?err}searx-etc:/etc/searx + - ${BIND?err}searx-uwsgi:/var/log/uwsgi + env_file: + - ${CONF?err}searx.env + networks: + - local + + gitea: + image: ${DORG?err}/gitea/gitea:1.16.9 + restart: always + volumes: + - ${BIND?err}gitea-data:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + env_file: + - ${CONF?err}gitea.env + depends_on: + - gitea-db + networks: + - local + - gitea + + gitea-db: + image: ${DORG?err}/mariadb:10.8 + restart: always + volumes: + - ${BIND?err}gitea-db:/var/lib/mysql + env_file: + - ${CONF?err}gitea-db.env + healthcheck: + test: ["CMD-SHELL","/usr/bin/mysql -hlocalhost -p$$MARIADB_ROOT_PASSWORD --execute=\"use gtdb;\""] + interval: 20s + timeout: 5s + retries: 5 + networks: + - gitea + + passb: + image: ${DORG?err}/passbolt/passbolt:3.7.2-1-ce + restart: always + volumes: + - ${BIND?err}passb-gpg:/etc/passbolt/gpg + - ${BIND?err}passb-jwt:/etc/passbolt/jwt + env_file: + - ${CONF?err}passb.env + depends_on: + - passb-db + command: ["/usr/bin/wait-for.sh", "-t", "0", "passb-db:3306", "--", "/docker-entrypoint.sh"] + networks: + - local + - passb + + passb-db: + image: ${DORG?err}/mariadb:10.8 + restart: always + volumes: + - ${BIND?err}passb-db:/var/lib/mysql + env_file: + - ${CONF?err}passb-db.env + healthcheck: + test: ["CMD-SHELL","/usr/bin/mysql -hlocalhost -p$$MARIADB_ROOT_PASSWORD --execute=\"use pbdb;\""] + interval: 20s + timeout: 5s + retries: 5 + networks: + - passb + + diff --git a/docker-restore.sh b/docker-restore.sh new file mode 100755 index 0000000..fab3804 --- /dev/null +++ b/docker-restore.sh @@ -0,0 +1,27 @@ +#!/bin/bash +sudo docker run --rm \ + --name volumerize \ + -e TZ=Australia/Perth \ + -e VOLUMERIZE_SOURCE=/source \ + -e VOLUMERIZE_TARGET=file:///backup \ + -v backup_docker-cache:/volumerize-cache \ + -v backup_docker-volume:/backup:ro \ + -v docker_admin-data:/source/docker_admin-data \ + -v docker_admin-dkim:/source/docker_admin-dkim \ + -v docker_antispam-filter:/source/docker_antispam-filter \ + -v docker_front-overrides:/source/docker_front-overrides \ + -v docker_gitea-data:/source/docker_gitea-data \ + -v docker_gitea-db:/source/docker_gitea-db \ + -v docker_imap-mail:/source/docker_imap-mail \ + -v docker_passb-db:/source/docker_passb-db \ + -v docker_passb-gpg:/source/docker_passb-gpg \ + -v docker_passb-jwt:/source/docker_passb-jwt \ + -v docker_redis-data:/source/docker_redis-data \ + -v docker_regty-store:/source/docker_regty-store \ + -v docker_searx-etc:/source/docker_searx-etc \ + -v docker_searx-uwsgi:/source/docker_searx-uwsgi \ + -v docker_smtp-queue:/source/docker_smtp-queue \ + -v docker_webmail-data:/source/docker_webmail-data \ + -v docker_webmail-overrides:/source/docker_webmail-overrides \ + blacklabelops/volumerize:1.7.1 restore +