From f00e9756e7ccf68e9c8aff7d27f15e0dd2abfc0f Mon Sep 17 00:00:00 2001 From: Andrew Hurley Date: Wed, 26 Oct 2022 23:17:38 +1100 Subject: [PATCH] First Commit --- .env | 6 ++ README.md | 0 docker-backup.sh | 30 ++++++ docker-compose.yml | 247 +++++++++++++++++++++++++++++++++++++++++++++ docker-restore.sh | 30 ++++++ 5 files changed, 313 insertions(+) create mode 100644 .env 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/.env b/.env new file mode 100644 index 0000000..9bd96da --- /dev/null +++ b/.env @@ -0,0 +1,6 @@ +CONF=../config/ +BIND= +CERT=../srvtls/ +DATA=../ncdata/ +FMED=../fmedia/ +DORG=docker.io 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..3a47153 --- /dev/null +++ b/docker-backup.sh @@ -0,0 +1,30 @@ +#!/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_ggrav-html:/source/docker_ggrav-html:ro \ + -v docker_imap-mail:/source/docker_imap-mail:ro \ + -v docker_nextc-db:/source/docker_nextc-db:ro \ + -v docker_nextc-html:/source/docker_nextc-html:ro \ + -v docker_onlyo-ds-font:/source/docker_onlyo-ds-font:ro \ + -v docker_onlyo-ds-lib:/source/docker_onlyo-ds-lib:ro \ + -v docker_onlyo-ds-log:/source/docker_onlyo-ds-log:ro \ + -v docker_onlyo-ds-pg:/source/docker_onlyo-ds-pg:ro \ + -v docker_onlyo-ds-rb:/source/docker_onlyo-ds-rb:ro \ + -v docker_onlyo-ds-rd:/source/docker_onlyo-ds-rd:ro \ + -v docker_onlyo-ds-www:/source/docker_onlyo-ds-www:ro \ + -v docker_porta-data:/source/docker_porta-data:ro \ + -v docker_redis-data:/source/docker_redis-data: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..7dbfa18 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,247 @@ + +networks: + + mailu: + driver: bridge + name: mailu + ipam: + driver: default + config: + - subnet: 192.168.2.0/24 + local: + internal: true + nextc: + internal: true + +volumes: + + redis-data: + front-overrides: + admin-data: + admin-dkim: + imap-mail: + smtp-queue: + antispam-filter: + webmail-data: + webmail-overrides: + + ggrav-html: + nextc-html: + nextc-db: + onlyo-ds-log: + onlyo-ds-lib: + onlyo-ds-www: + onlyo-ds-pg: + onlyo-ds-rb: + onlyo-ds-rd: + onlyo-ds-font: + +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: 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:995" + 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 + + ggrav: + image: andrew/getgrav:1.7.37.1 + build: + context: https://cor.cherished.me/gt/andrew/build-grav.git + args: + - "GRAV_VERSION=1.7.37.1" + - "GRAV_SUBDIR=html/gv" + restart: always + volumes: + - ${BIND?err}ggrav-html:/var/www/html + env_file: + - ${CONF?err}ggrav.env + healthcheck: + test: ["CMD-SHELL","curl -fsS http://localhost/gv/"] + interval: 20s + timeout: 5s + retries: 5 + networks: + - local + + nextc: + image: andrew/nextcloud:24.0 + build: + context: https://cor.cherished.me/gt/andrew/build-nextcloud.git + args: + - "VERSION=24.0" + - "PUID=1000" + restart: always + volumes: + - ${BIND?err}nextc-html:/var/www/html + - ${DATA?err}:/ncdata + - ${FMED?err}:/fmedia + env_file: + - ${CONF?err}nextc.env + depends_on: + - nextc-db + healthcheck: + test: ["CMD_SHELL","curl -fsS http://localhost"] + interval: 20s + timeout: 5s + retries: 5 + networks: + - local + - nextc + + nextc-db: + image: ${DORG?err}/mariadb:10.8 + restart: always + volumes: + - ${BIND?err}nextc-db:/var/lib/mysql + env_file: + - ${CONF?err}nextc-db.env + healthcheck: + test: ["CMD-SHELL","/usr/bin/mysql -hlocalhost -p$$MARIADB_ROOT_PASSWORD --execute=\"use ncdb;\""] + interval: 20s + timeout: 5s + retries: 5 + networks: + - nextc + + onlyo-ds: + image: ${DORG?err}/onlyoffice/documentserver:7.1 + restart: always + volumes: + - ${CONF?err}onlyo-ds.crt:/onlyo-ds.crt:ro + - ${CONF?err}onlyo-ds.key:/onlyo-ds.key:ro + - ${BIND?err}onlyo-ds-log:/var/log/onlyoffice + - ${BIND?err}onlyo-ds-lib:/var/lib/onlyoffice + - ${BIND?err}onlyo-ds-www:/var/www/onlyoffice/Data + - ${BIND?err}onlyo-ds-pg:/var/lib/postgresql + - ${BIND?err}onlyo-ds-rb:/var/lib/rabbitmq + - ${BIND?err}onlyo-ds-rd:/var/lib/redis + - ${BIND?err}onlyo-ds-font:/usr/share/fonts/truetype/custom + env_file: + - ${CONF?err}onlyo-ds.env + networks: + - local + + diff --git a/docker-restore.sh b/docker-restore.sh new file mode 100755 index 0000000..69eaaf0 --- /dev/null +++ b/docker-restore.sh @@ -0,0 +1,30 @@ +#!/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_ggrav-html:/source/docker_ggrav-html \ + -v docker_imap-mail:/source/docker_imap-mail \ + -v docker_nextc-db:/source/docker_nextc-db \ + -v docker_nextc-html:/source/docker_nextc-html \ + -v docker_onlyo-ds-font:/source/docker_onlyo-ds-font \ + -v docker_onlyo-ds-lib:/source/docker_onlyo-ds-lib \ + -v docker_onlyo-ds-log:/source/docker_onlyo-ds-log \ + -v docker_onlyo-ds-pg:/source/docker_onlyo-ds-pg \ + -v docker_onlyo-ds-rb:/source/docker_onlyo-ds-rb \ + -v docker_onlyo-ds-rd:/source/docker_onlyo-ds-rd \ + -v docker_onlyo-ds-www:/source/docker_onlyo-ds-www \ + -v docker_porta-data:/source/docker_porta-data \ + -v docker_redis-data:/source/docker_redis-data \ + -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 +