committed to running traefik in network_mode: host, and fixed up where this then caused traefik labels to not knowthe loadbalancer port

then realised hass needed to add ::1 ti trusted hosts as that was how traefik is using the explicit loadbalancer port setting with network_mode: host containers like hass, emby, etc.
upgrade to latest mail again, validated newer fail2ban defaults look okay, reduced comment appropriately, added rspamd* env vars (commented out), prepared to remove old env vars so we can switch to rspamd - doing this commit first

put back SASL auth, and updated LDAP_HOST use for mail container based on newer format - and Cams doc :)

removed last reference to prometheus (in a depends_on, which didnt exist clearly)

converted padb* containers back to native postgres:16 images, and used better model of overriding install scripts via entrypoint:

removed old reference to asuscomm.com

tried out and got working autodiscover, it worked for thunderbird but not our phones, so just getting rid of it - it seems to be a stale image / not maintained

convered from wikijs to bookstack (due to wikijs being unmaintained, and producing version 3 for something like 18 months and still being a mile from finished)

tweaked naming with myth container - still some work to fix up here I believe (remove network_mode: host, and put back DB server name to be container name - cant test until nothing is being recorded)

and myth* still has lame passwords, as does influxdb, to be finalised...
This commit is contained in:
2024-01-19 17:55:26 +11:00
parent aa31f0a691
commit 7b1e2307f9

View File

@@ -31,6 +31,8 @@ services:
- "traefik.http.middlewares.dashboard.replacepathregex.replacement=/dashboard/$$1" - "traefik.http.middlewares.dashboard.replacepathregex.replacement=/dashboard/$$1"
- "traefik.http.routers.dashboard.middlewares=dashboard" - "traefik.http.routers.dashboard.middlewares=dashboard"
- "traefik.http.routers.dashboard.entrypoints=web" - "traefik.http.routers.dashboard.entrypoints=web"
# need to ensure incoming traffic for traefik goes to port 8080 inside
# the container, too many other ports (80, 443) so we have to be explicit
- "traefik.http.services.dashboard.loadbalancer.server.port=8080" - "traefik.http.services.dashboard.loadbalancer.server.port=8080"
- "traefik.http.routers.dashboard.service=api@internal" - "traefik.http.routers.dashboard.service=api@internal"
depends_on: depends_on:
@@ -205,25 +207,14 @@ services:
- "com.centurylinklabs.watchtower.enable=true" - "com.centurylinklabs.watchtower.enable=true"
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.emby.rule=Host(`emby.depaoli.id.au`)" - "traefik.http.routers.emby.rule=Host(`emby.depaoli.id.au`)"
# to note with network_mode: host, this only works via ipv6! --> traefik routes this to http://[::]:8096"
- "traefik.http.services.emby.loadbalancer.server.port=8096" - "traefik.http.services.emby.loadbalancer.server.port=8096"
- "traefik.http.routers.emby.tls=true" - "traefik.http.routers.emby.tls=true"
- "traefik.http.routers.emby.entrypoints=secureweb" - "traefik.http.routers.emby.entrypoints=secureweb"
# # fail2ban might need a better whitelist? (I had internal docker ips in my quick fudge as well?)
# fail2ban is a bit jumpy from memory, so I've added a whitelist
# but its not going to survive a pull... and it seems if I mount
# the docker container before its initialised it ends up empty
# (timing?) so I have done this by hand
# for now, until I work out a solution:
## sudo docker exec -it mail bash
## root@mail:/etc/fail2ban/jail.d# cat > whitelist.conf
## [DEFAULT]
## ignoreip = 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
# sudo docker-compose restart mail
##### CAM/DDP: CHECK this with new mail version, seemed to be new fail2ban env options
#
mail: mail:
image: docker.io/mailserver/docker-mailserver:12.1.0 image: docker.io/mailserver/docker-mailserver:latest
hostname: depaoli.id.au hostname: depaoli.id.au
domainname: depaoli.id.au domainname: depaoli.id.au
container_name: mail container_name: mail
@@ -249,32 +240,47 @@ services:
- /srv/docker/container/mail/mara-bin:/root/bin - /srv/docker/container/mail/mara-bin:/root/bin
- /srv/docker/container/mail/monitoring-results:/monitoring-results - /srv/docker/container/mail/monitoring-results:/monitoring-results
environment: environment:
##################################### del block ############################
- ENABLE_SPAMASSASSIN=1 - ENABLE_SPAMASSASSIN=1
- ENABLE_SPAMASSASSIN_KAM=1 - ENABLE_SPAMASSASSIN_KAM=1
- SPAMASSASIN_SPAM_TO_INBOX=1 - SPAMASSASIN_SPAM_TO_INBOX=1
- MOVE_SPAM_TO_JUNK=1 - MOVE_SPAM_TO_JUNK=1
- SA_SPAM_SUBJECT=1 - SA_SPAM_SUBJECT=1
- AMAVIS_LOGLEVEL=-1
# enable rspam and delete this del block
##################################### del block ############################
- ENABLE_CLAMAV=1 - ENABLE_CLAMAV=1
- ENABLE_FAIL2BAN=1 - ENABLE_FAIL2BAN=1
- ENABLE_POSTGREY=0 - ENABLE_POSTGREY=0
- ENABLE_UPDATE_CHECK=1 - ENABLE_UPDATE_CHECK=1
# not sure if =0 disables these?
- ENABLE_POP3=0 - ENABLE_POP3=0
# this allows users to manage their own sieves, not something we use at present
- ENABLE_MANAGESIEVE=0 - ENABLE_MANAGESIEVE=0
# Adding these, for future testing # don't know if this can go to 1 or not, seems more for postscreen than rspamd, so not sure if it has always been off?
# - ENABLE_DNSBL=0 - ENABLE_DNSBL=0
# enable rspamd be uncommenting block ############################
# # as per doco, enabling rspamd and disabling unneeded services (up to spamassassin)
# - ENABLE_RSPAMD=1
# - ENABLE_OPENDKIM=0 # - ENABLE_OPENDKIM=0
# - ENABLE_OPENDMARC=0 # - ENABLE_OPENDMARC=0
# - FAIL2BAN_BLOCKTYPE=drop # - ENABLE_POLICYD_SPF=0
# - ENABLE_RSPAMD=1 # - ENABLE_AMAVIS=0
# presume if we do the above, we should turn off the spamassassin checks, but could do both I guess? # - ENABLE_SPAMASSASSIN=0
# - MOVE_SPAM_TO_JUNK=1
# # only greylist spammy emails
# - RSPAMD_GREYLISTING=1
# # if ppl move mail to junk -> inbox (spam) or reverse (ham), learn from it
# - RSPAMD_LEARN=1
# # some hostname heuristics for dodgy mailservers using wrong syntax - adds header only at the moment, test and drop when we trust
# - RSPAMD_HFILTER=1
##################################### rspam block ############################
# spoof prot stops anyone sending with an email address that doesn't match what they connected with
- SPOOF_PROTECTION=1 - SPOOF_PROTECTION=1
- ONE_DIR=1 - ONE_DIR=1
- DMS_DEBUG=0 - DMS_DEBUG=0
- LOG_LEVEL=warn - LOG_LEVEL=warn
- AMAVIS_LOGLEVEL=-1
- ACCOUNT_PROVISIONER=LDAP - ACCOUNT_PROVISIONER=LDAP
- LDAP_SERVER_HOST=192.168.0.2 # using IP, as we changed over container names (openldap->openldapnew) - LDAP_SERVER_HOST=ldap://openldap:1389 # using IP, as we changed over container names (openldap->openldapnew)
- LDAP_SEARCH_BASE=dc=depaoli,dc=id,dc=au - LDAP_SEARCH_BASE=dc=depaoli,dc=id,dc=au
- LDAP_BIND_DN=cn=admin,dc=depaoli,dc=id,dc=au - LDAP_BIND_DN=cn=admin,dc=depaoli,dc=id,dc=au
- LDAP_QUERY_FILTER_USER=(&(mail=%s)(mailEnabled=TRUE)) - LDAP_QUERY_FILTER_USER=(&(mail=%s)(mailEnabled=TRUE))
@@ -283,15 +289,12 @@ services:
- LDAP_QUERY_FILTER_DOMAIN=(|(&(mail=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(&(mailGroupMember=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(&(mailalias=*@%s)(objectClass=PostfixBookMailForward))) - LDAP_QUERY_FILTER_DOMAIN=(|(&(mail=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(&(mailGroupMember=*@%s)(objectClass=PostfixBookMailAccount)(mailEnabled=TRUE))(&(mailalias=*@%s)(objectClass=PostfixBookMailForward)))
- DOVECOT_PASS_FILTER=(&(objectClass=PostfixBookMailAccount)(uid=%n)) - DOVECOT_PASS_FILTER=(&(objectClass=PostfixBookMailAccount)(uid=%n))
- DOVECOT_USER_FILTER=(&(objectClass=PostfixBookMailAccount)(uid=%n)) - DOVECOT_USER_FILTER=(&(objectClass=PostfixBookMailAccount)(uid=%n))
# I can't get SASL auth to work with bitnami ldap for some reason, - ENABLE_SASLAUTHD=1
# given its all internal/local traffic tolerate for now - SASLAUTHD_MECHANISMS=ldap
- ENABLE_SASLAUTHD=0 - SASLAUTHD_LDAP_SERVER=ldap://openldap:1389
# - ENABLE_SASLAUTHD=1 - SASLAUTHD_LDAP_BIND_DN=cn=admin,dc=depaoli,dc=id,dc=au
# - SASLAUTHD_MECHANISMS=ldap - SASLAUTHD_LDAP_SEARCH_BASE=ou=users,dc=depaoli,dc=id,dc=au
# - SASLAUTHD_LDAP_SERVER=openldap - SASLAUTHD_LDAP_FILTER=(&(uid=%U)(objectClass=person))
# - SASLAUTHD_LDAP_BIND_DN=cn=admin,dc=depaoli,dc=id,dc=au
# - SASLAUTHD_LDAP_SEARCH_BASE=ou=users,dc=depaoli,dc=id,dc=au
# - SASLAUTHD_LDAP_FILTER=(&(uid=%U)(objectClass=person))
- POSTMASTER_ADDRESS=postmaster@depaoli.id.au - POSTMASTER_ADDRESS=postmaster@depaoli.id.au
- POSTFIX_MESSAGE_SIZE_LIMIT=100000000 - POSTFIX_MESSAGE_SIZE_LIMIT=100000000
- SSL_TYPE=letsencrypt - SSL_TYPE=letsencrypt
@@ -388,6 +391,7 @@ services:
- "traefik.http.middlewares.stripprefix-portainer.stripprefix.prefixes=/portainer" - "traefik.http.middlewares.stripprefix-portainer.stripprefix.prefixes=/portainer"
- "traefik.http.routers.portainer.middlewares=stripprefix-portainer@docker" - "traefik.http.routers.portainer.middlewares=stripprefix-portainer@docker"
- "traefik.http.routers.portainer.entrypoints=web" - "traefik.http.routers.portainer.entrypoints=web"
# need to be explicit, as it also runs API ports, SSL ports, etc
- "traefik.http.services.portainer.loadbalancer.server.port=9000" - "traefik.http.services.portainer.loadbalancer.server.port=9000"
# this is running network_mode: host so it is on the same subnet as the IoT # this is running network_mode: host so it is on the same subnet as the IoT
@@ -413,6 +417,13 @@ services:
- /run/dbus:/run/dbus:ro - /run/dbus:/run/dbus:ro
labels: labels:
- "com.centurylinklabs.watchtower.enable=false" - "com.centurylinklabs.watchtower.enable=false"
# to note traefik is used here, but handled via files due to use of "network_mode: host"
- "traefik.enable=true"
- "traefik.http.routers.hass.rule=Host(`hass.depaoli.id.au`)"
# to note with network_mode: host, this only works via ipv6! --> traefik routes this to http://[::]:8123"
- "traefik.http.services.hass.loadbalancer.server.port=8123"
- "traefik.http.routers.hass.tls=true"
- "traefik.http.routers.hass.entrypoints=secureweb"
# this runs in network_most host so that it can find the players automatically # this runs in network_most host so that it can find the players automatically
mass: mass:
@@ -434,6 +445,7 @@ services:
- "traefik.http.routers.mass.entrypoints=secureweb" - "traefik.http.routers.mass.entrypoints=secureweb"
- "traefik.http.middlewares.stripprefix-mass.stripprefix.prefixes=/mass" - "traefik.http.middlewares.stripprefix-mass.stripprefix.prefixes=/mass"
- "traefik.http.routers.mass.middlewares=stripprefix-mass@docker" - "traefik.http.routers.mass.middlewares=stripprefix-mass@docker"
# to note with network_mode: host, this only works via ipv6! --> traefik routes this to http://[::]:8095"
- "traefik.http.services.mass.loadbalancer.server.port=8095" - "traefik.http.services.mass.loadbalancer.server.port=8095"
mosquitto: mosquitto:
@@ -552,7 +564,7 @@ services:
container_name: grafana container_name: grafana
restart: always restart: always
depends_on: depends_on:
- prometheus - influxdb
volumes: volumes:
- /srv/docker/container/grafana/grafana.ini:/etc/grafana/grafana.ini - /srv/docker/container/grafana/grafana.ini:/etc/grafana/grafana.ini
- /srv/docker/container/grafana/data:/var/lib/grafana - /srv/docker/container/grafana/data:/var/lib/grafana
@@ -595,6 +607,7 @@ services:
- "traefik.http.middlewares.replaceprefix-pihole.replacepathregex.regex=^/admin/$$" - "traefik.http.middlewares.replaceprefix-pihole.replacepathregex.regex=^/admin/$$"
- "traefik.http.middlewares.replaceprefix-pihole.replacepathregex.replacement=/pihole/admin/" - "traefik.http.middlewares.replaceprefix-pihole.replacepathregex.replacement=/pihole/admin/"
- "traefik.http.middlewares.stripprefix-pihole.stripprefix.prefixes=/pihole" - "traefik.http.middlewares.stripprefix-pihole.stripprefix.prefixes=/pihole"
# we set this to port 80, pihole has many open ports (e.g. 53), so have to tell traefik which port to send http traffic too
- "traefik.http.services.pihole.loadbalancer.server.port=80" - "traefik.http.services.pihole.loadbalancer.server.port=80"
- "traefik.http.routers.pihole.middlewares=replaceprefix-pihole@docker,stripprefix-pihole@docker" - "traefik.http.routers.pihole.middlewares=replaceprefix-pihole@docker,stripprefix-pihole@docker"
@@ -676,9 +689,12 @@ services:
padb_dev: padb_dev:
container_name: padb_dev container_name: padb_dev
build: image: postgres
context: '/home/ddp/src/photoassistant/db-container'
restart: always restart: always
# replace entrypoint to install cron and a cron job to backup users so we can rebuild the content from sqls
entrypoint: /root/init/entrypoint-wrapper.sh
labels:
- "com.centurylinklabs.watchtower.enable=true"
environment: environment:
POSTGRES_USER: pa POSTGRES_USER: pa
POSTGRES_DB: pa POSTGRES_DB: pa
@@ -691,13 +707,17 @@ services:
volumes: volumes:
- /srv/docker/container/padb_dev/data:/var/lib/postgresql/data - /srv/docker/container/padb_dev/data:/var/lib/postgresql/data
- /srv/docker/container/padb_dev/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d - /srv/docker/container/padb_dev/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
- /srv/docker/container/padb_dev/init:/root/init
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
padb: padb:
container_name: padb container_name: padb
build: image: postgres:16
context: '/home/ddp/src/photoassistant/db-container'
restart: always restart: always
# replace entrypoint to install cron and a cron job to backup users so we can rebuild the content from sqls
entrypoint: /root/init/entrypoint-wrapper.sh
labels:
- "com.centurylinklabs.watchtower.enable=true"
environment: environment:
POSTGRES_USER: pa POSTGRES_USER: pa
POSTGRES_DB: pa POSTGRES_DB: pa
@@ -708,6 +728,7 @@ services:
volumes: volumes:
- /srv/docker/container/padb/data:/var/lib/postgresql/data - /srv/docker/container/padb/data:/var/lib/postgresql/data
- /srv/docker/container/padb/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d - /srv/docker/container/padb/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
- /srv/docker/container/padb/init:/root/init
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
paweb: paweb:
@@ -764,7 +785,7 @@ services:
labels: labels:
- "com.centurylinklabs.watchtower.enable=true" - "com.centurylinklabs.watchtower.enable=true"
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.bitwarden_rs.rule=Host(`bw.depaoli.id.au`) || Host(`ddphome.asuscomm.com`)" - "traefik.http.routers.bitwarden_rs.rule=Host(`bw.depaoli.id.au`)"
- "traefik.http.routers.bitwarden_rs.tls=true" - "traefik.http.routers.bitwarden_rs.tls=true"
- "traefik.http.routers.bitwarden_rs.tls.options=tls12@file" - "traefik.http.routers.bitwarden_rs.tls.options=tls12@file"
- "traefik.http.routers.bitwarden_rs.entrypoints=secureweb" - "traefik.http.routers.bitwarden_rs.entrypoints=secureweb"
@@ -783,51 +804,51 @@ services:
- "/var/run/docker.sock:/var/run/docker.sock" - "/var/run/docker.sock:/var/run/docker.sock"
- "/etc/localtime:/etc/localtime:ro" - "/etc/localtime:/etc/localtime:ro"
wikidb: # wikidb_old:
image: postgres:16 # image: postgres:16
container_name: wikidb # container_name: wikidb_old
environment: # environment:
POSTGRES_DB: wiki # POSTGRES_DB: wiki
POSTGRES_USER: wikijs # POSTGRES_USER: wikijs
env_file: # env_file:
- /srv/docker/config/secrets/wiki-common # - /srv/docker/config/secrets/wiki-common_old
logging: # logging:
driver: "none" # driver: "none"
restart: always # restart: always
depends_on: # depends_on:
- openldap # - openldap
- pihole # - pihole
labels: # labels:
- "com.centurylinklabs.watchtower.enable=true" # - "com.centurylinklabs.watchtower.enable=true"
volumes: # volumes:
- "/srv/docker/container/wikidb/data:/var/lib/postgresql/data" # - "/srv/docker/container/wikidb_old/data:/var/lib/postgresql/data"
- "/srv/docker/container/wikidb/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d" # - "/srv/docker/container/wikidb_old/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d"
- "/etc/localtime:/etc/localtime:ro" # - "/etc/localtime:/etc/localtime:ro"
#
wiki: # wiki_old:
image: requarks/wiki:latest # image: requarks/wiki:latest
container_name: wiki # container_name: wiki_old
depends_on: # depends_on:
- openldap # - openldap
- wikidb # - wikidb_old
environment: # environment:
DB_TYPE: postgres # DB_TYPE: postgres
DB_HOST: wikidb # DB_HOST: wikidb_old
DB_PORT: 5432 # DB_PORT: 5432
DB_USER: wikijs # DB_USER: wikijs
DB_NAME: wiki # DB_NAME: wiki
env_file: # env_file:
- /srv/docker/config/secrets/wiki-common # - /srv/docker/config/secrets/wiki-common_old
restart: always # restart: always
volumes: # volumes:
- "/srv/docker/container/wiki/data/content:/wiki/data/content" # - "/srv/docker/container/wiki_old/data/content:/wiki/data/content"
- "/etc/localtime:/etc/localtime:ro" # - "/etc/localtime:/etc/localtime:ro"
labels: # labels:
- "com.centurylinklabs.watchtower.enable=true" # - "com.centurylinklabs.watchtower.enable=true"
- "traefik.enable=true" # - "traefik.enable=true"
- "traefik.http.routers.wiki.rule=Host(`wiki.depaoli.id.au`)" # - "traefik.http.routers.wiki.rule=Host(`wikitst.depaoli.id.au`)"
- "traefik.http.routers.wiki.tls=true" # - "traefik.http.routers.wiki.tls=true"
- "traefik.http.routers.wiki.entrypoints=secureweb" # - "traefik.http.routers.wiki.entrypoints=secureweb"
# used for hass (eufy) to get notifications from camera # used for hass (eufy) to get notifications from camera
eufy_security_ws: eufy_security_ws:
@@ -869,25 +890,25 @@ services:
volumes: volumes:
- "/etc/localtime:/etc/localtime:ro" - "/etc/localtime:/etc/localtime:ro"
autodiscover: # autodiscover:
image: monogramm/autodiscover-email-settings:latest # image: monogramm/autodiscover-email-settings:latest
container_name: autodiscover # container_name: autodiscover
environment: # environment:
- COMPANY_NAME=depaoli # - COMPANY_NAME=depaoli
- SUPPORT_URL=https://autodiscover.depaoli.id.au # - SUPPORT_URL=https://autodiscover.depaoli.id.au
- DOMAIN=depaoli.id.au # - DOMAIN=depaoli.id.au
- IMAP_HOST=depaoli.id.au # - IMAP_HOST=depaoli.id.au
- IMAP_PORT=993 # - IMAP_PORT=993
- IMAP_SOCKET=SSL # - IMAP_SOCKET=SSL
- SMTP_HOST=depaoli.id.au # - SMTP_HOST=depaoli.id.au
- SMTP_PORT=587 # - SMTP_PORT=587
- SMTP_SOCKET=STARTTLS # - SMTP_SOCKET=STARTTLS
labels: # labels:
- "com.centurylinklabs.watchtower.enable=true" # - "com.centurylinklabs.watchtower.enable=true"
- "traefik.enable=true" # - "traefik.enable=true"
- "traefik.http.routers.autodiscover.rule=Host(`autodiscover.depaoli.id.au`)" # - "traefik.http.routers.autodiscover.rule=Host(`autodiscover.depaoli.id.au`)"
- "traefik.http.routers.autodiscover.tls=true" # - "traefik.http.routers.autodiscover.tls=true"
- "traefik.http.routers.autodiscover.entrypoints=secureweb" # - "traefik.http.routers.autodiscover.entrypoints=secureweb"
# ark-server: # ark-server:
# restart: always # restart: always
@@ -972,11 +993,13 @@ services:
- /srv/docker/container/mythtv/db/mythtv.cnf:/etc/mysql/conf.d/mythtv.cnf - /srv/docker/container/mythtv/db/mythtv.cnf:/etc/mysql/conf.d/mythtv.cnf
# hacked entrypoint to 'add' to this container so it works as mara needs # hacked entrypoint to 'add' to this container so it works as mara needs
mythbackend: myth:
container_name: mythtvbackend container_name: myth
image: instantlinux/mythtv-backend:latest image: instantlinux/mythtv-backend:latest
hostname: ${HOSTNAME_MYTHTV:-mythtv} hostname: ${HOSTNAME_MYTHTV:-mythtv}
restart: always restart: always
labels:
- "com.centurylinklabs.watchtower.enable=true"
# needed to renice / ionice just the mythbackend process inside this container # needed to renice / ionice just the mythbackend process inside this container
# (it also runs cron, shepherd and various binaries out of /usr/local/bin) # (it also runs cron, shepherd and various binaries out of /usr/local/bin)
cap_add: cap_add:
@@ -985,7 +1008,9 @@ services:
environment: environment:
APACHE_LOG_DIR: /var/log/apache2 APACHE_LOG_DIR: /var/log/apache2
DBNAME: mythconverg DBNAME: mythconverg
DBSERVER: mythdb # needs to be ip not container name as the host network_mode and DNS dont work together
# test this as mythdb and remove network_mode host when I can
DBSERVER: 192.168.0.2
LANG: en_US.UTF-8 LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8 LANGUAGE: en_US.UTF-8
LOCALHOSTNAME: mara LOCALHOSTNAME: mara
@@ -1011,9 +1036,49 @@ services:
- /srv/docker/container/mythtv/monitoring-results:/monitoring-results - /srv/docker/container/mythtv/monitoring-results:/monitoring-results
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
- /export/myth:/export/myth - /export/myth:/export/myth
- /export/docker/storage/other-videos:/export/myth/videos
devices: devices:
- /dev/dvb:/dev/dvb - /dev/dvb:/dev/dvb
env_file: env_file:
- /srv/docker/config/secrets/mythtv - /srv/docker/config/secrets/mythtv
depends_on: depends_on:
- mythdb - mythdb
wiki:
image: lscr.io/linuxserver/bookstack
container_name: wiki
environment:
- PUID=1000
- PGID=1000
- APP_URL=https://wiki.depaoli.id.au
- DB_HOST=wikidb
- DB_PORT=3306
env_file:
- /srv/docker/config/secrets/wiki
volumes:
- /srv/docker/container/wiki:/config
restart: unless-stopped
depends_on:
- wikidb
labels:
- "com.centurylinklabs.watchtower.enable=true"
- "traefik.enable=true"
- "traefik.http.routers.wikitst.rule=Host(`wiki.depaoli.id.au`)"
- "traefik.http.routers.wikitst.tls=true"
- "traefik.http.routers.wikitst.entrypoints=secureweb"
wikidb:
image: lscr.io/linuxserver/mariadb
container_name: wikidb
environment:
- PUID=1000
- PGID=1000
- TZ=Australia/Melbourne
env_file:
- /srv/docker/config/secrets/wiki
volumes:
- /srv/docker/container/wikidb/config:/config
- /srv/docker/container/wikidb/data:/var/lib/mysql
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"