diff --git a/docker-compose.adminer.yml b/docker-compose.adminer.yml new file mode 100644 index 0000000..9893e3a --- /dev/null +++ b/docker-compose.adminer.yml @@ -0,0 +1,10 @@ +services: + adminer: + container_name: adminer + image: adminer:latest + links: + - pgsql + - mysql + ports: + - 7070:8080 + restart: always diff --git a/docker-compose.apt-cacher.yml b/docker-compose.apt-cacher.yml new file mode 100644 index 0000000..4e3746e --- /dev/null +++ b/docker-compose.apt-cacher.yml @@ -0,0 +1,9 @@ +services: + apt-cacher: + container_name: apt-cacher + image: sameersbn/apt-cacher-ng:3.1-3 + ports: + - 3142:3142 + restart: unless-stopped + volumes: + - /media/scratch/apt-cacher:/var/cache/apt-cacher-ng diff --git a/docker-compose.borgmatic.yml b/docker-compose.borgmatic.yml new file mode 100644 index 0000000..b5952f0 --- /dev/null +++ b/docker-compose.borgmatic.yml @@ -0,0 +1,16 @@ +services: + borgmatic: + container_name: borgmatic + environment: + - TZ=Europe/Amsterdam + image: b3vis/borgmatic:v1.1.10-1.4.21 + restart: unless-stopped + volumes: + - /:/sepia:ro + - /media:/media + - /root/.ssh:/root/.ssh:ro + - /opt/borgmatic/config/crontab.txt:/etc/borgmatic.d/crontab.txt + - /opt/borgmatic/config:/config + - /opt/borgmatic/keys:/keys + - /opt/borgmatic/cache:/cache + - /opt/borgmatic/log:/log diff --git a/docker-compose.caddy.yml b/docker-compose.caddy.yml new file mode 100644 index 0000000..c611e26 --- /dev/null +++ b/docker-compose.caddy.yml @@ -0,0 +1,19 @@ +services: + caddy: + build: + context: /opt/caddy/ + container_name: caddy + depends_on: + - nginx + environment: + - AWS_ACCESS_KEY_ID="AKIAY4DUYEBSTECHF6RN" + - AWS_SECRET_ACCESS_KEY="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" + image: caddy + links: + - nginx + ports: + - 444:443 + restart: unless-stopped + volumes: + - /opt/caddy/Caddyfile:/etc/caddy/Caddyfile + - /opt/caddy/data:/data diff --git a/docker-compose.collectd.yml b/docker-compose.collectd.yml new file mode 100644 index 0000000..6cc0952 --- /dev/null +++ b/docker-compose.collectd.yml @@ -0,0 +1,15 @@ +services: + collectd: + container_name: collectd + image: collectd:latest + privileged: true + restart: unless-stopped + volumes: + - /opt/collectd/etc:/etc/collectd + - /opt/collectd/var:/var/lib/collectd + - /opt/collectd/usr:/host/usr + - /root/scripts/speedtest-cli:/sbin/speedtest-cli + - /:/host/root + - /media:/host/media + - /var/lib/docker:/media/docker + - /dev/mapper:/dev/mapper diff --git a/docker-compose.dns-ad-blocker.yml b/docker-compose.dns-ad-blocker.yml new file mode 100644 index 0000000..73cf692 --- /dev/null +++ b/docker-compose.dns-ad-blocker.yml @@ -0,0 +1,13 @@ +services: + dns-ad-blocker: + container_name: dns-ad-blocker + environment: + - AUTO_UPDATE=1 + - BRANCH=master + - DNSCRYPT=1 + - DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.ns0.dnscrypt.nl + - DNSCRYPT_RESOLVER_ADDR=45.76.35.212 + - DNSCRYPT_PROVIDER_KEY=4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA + image: oznu/dns-ad-blocker:latest + ports: + - 192.168.2.151:53:53/udp diff --git a/docker-compose.esphome.yml b/docker-compose.esphome.yml new file mode 100644 index 0000000..78abd4a --- /dev/null +++ b/docker-compose.esphome.yml @@ -0,0 +1,10 @@ +services: + esphome: + container_name: esphome + image: esphome/esphome:2022.12.8 + network_mode: host + restart: unless-stopped + volumes: + - /opt/esphome:/config:rw + - /opt/esphome/log:/log:rw + - /etc/localtime:/etc/localtime:ro diff --git a/docker-compose.filebrowser.yml b/docker-compose.filebrowser.yml new file mode 100644 index 0000000..cb53556 --- /dev/null +++ b/docker-compose.filebrowser.yml @@ -0,0 +1,11 @@ +services: + filebrowser: + container_name: filebrowser + image: filebrowser/filebrowser:v2.21.1 + ports: + - 8001:80 + restart: unless-stopped + volumes: + - /opt/filebrowser/.filebrowser.json:/.filebrowser.json + - /opt/filebrowser/database.db:/database.db + - /media:/host/media diff --git a/docker-compose.grafana.yml b/docker-compose.grafana.yml new file mode 100644 index 0000000..4bf05d9 --- /dev/null +++ b/docker-compose.grafana.yml @@ -0,0 +1,9 @@ +services: + grafana: + container_name: grafana + image: grafana/grafana:9.0.2 + ports: + - 3333:3000 + restart: unless-stopped + volumes: + - /opt/grafana:/var/lib/grafana diff --git a/docker-compose.homeassistant.yml b/docker-compose.homeassistant.yml new file mode 100644 index 0000000..4943b0f --- /dev/null +++ b/docker-compose.homeassistant.yml @@ -0,0 +1,10 @@ +services: + homeassistant: + container_name: homeassistant + image: homeassistant/home-assistant:2024.10 + network_mode: host + privileged: true + restart: unless-stopped + volumes: + - /opt/homeassistant:/config + - /etc/localtime:/etc/localtime:ro diff --git a/docker-compose.lighttpd.yml b/docker-compose.lighttpd.yml new file mode 100644 index 0000000..cc51902 --- /dev/null +++ b/docker-compose.lighttpd.yml @@ -0,0 +1,12 @@ +services: + lighttpd: + container_name: lighttpd + image: webserver:latest + ports: + - 80:81 + restart: unless-stopped + volumes: + - /opt/lighttpd/etc:/host/etc + - /home/user/certs:/host/etc/certs + - /opt/lighttpd/var/log:/host/var/log + - /home/user/www:/host/var/www/global diff --git a/docker-compose.mysql.yml b/docker-compose.mysql.yml new file mode 100644 index 0000000..156e0c5 --- /dev/null +++ b/docker-compose.mysql.yml @@ -0,0 +1,12 @@ +services: + mysql: + container_name: mysql + environment: + MYSQL_DATABASE: example + MYSQL_PASSWORD: example + MYSQL_ROOT_PASSWORD: example + MYSQL_USER: example + image: mysql:5.7 + restart: unless-stopped + volumes: + - /opt/mysql:/var/lib/mysql diff --git a/docker-compose.nginx.yml b/docker-compose.nginx.yml new file mode 100644 index 0000000..bf9c480 --- /dev/null +++ b/docker-compose.nginx.yml @@ -0,0 +1,13 @@ +services: + nginx: + container_name: nginx + extra_hosts: + - host:192.168.2.150 + image: nginx:1.25.4 + restart: unless-stopped + volumes: + - /opt/nginx/etc/.htpasswd:/host/etc/.htpasswd + - /opt/nginx/etc/nginx/conf:/etc/nginx/conf + - /opt/nginx/etc/nginx/conf.d:/etc/nginx/conf.d + - /opt/nginx/var/log/nginx:/var/log/nginx + - /opt/seafile/seafile-server-latest/seahub/media:/host/var/www/seafile diff --git a/docker-compose.openvpn-server.yml b/docker-compose.openvpn-server.yml new file mode 100644 index 0000000..9c64c1c --- /dev/null +++ b/docker-compose.openvpn-server.yml @@ -0,0 +1,15 @@ +services: + openvpn-server: + cap_add: + - NET_ADMIN + container_name: openvpn-server + extra_hosts: + - host:192.168.2.150 + image: kylemanna/openvpn:2.4 + network_mode: bridge + ports: + - 443:443 + privileged: true + restart: unless-stopped + volumes: + - /opt/openvpn-server:/etc/openvpn diff --git a/docker-compose.pgsql-admin.yml b/docker-compose.pgsql-admin.yml new file mode 100644 index 0000000..c76b84d --- /dev/null +++ b/docker-compose.pgsql-admin.yml @@ -0,0 +1,12 @@ +services: + pgsql-admin: + container_name: pgsql-admin + environment: + - PGADMIN_DEFAULT_EMAIL=admin + - PGADMIN_DEFAULT_PASSWORD=toUEhcycUC5Kpj27 + image: dpage/pgadmin4:latest + ports: + - 5050:80 + restart: unless-stopped + volumes: + - /opt/pgsql-admin=/var/lib/pgadmin diff --git a/docker-compose.pgsql.yml b/docker-compose.pgsql.yml new file mode 100644 index 0000000..f2c68bf --- /dev/null +++ b/docker-compose.pgsql.yml @@ -0,0 +1,11 @@ +services: + pgsql: + container_name: pgsql + environment: + - POSTGRES_PASSWORD=example + image: postgres:latest + ports: + - 5432:5432 + restart: unless-stopped + volumes: + - /opt/pgsql:/var/lib/postgresql/data diff --git a/docker-compose.seafile.yml b/docker-compose.seafile.yml new file mode 100644 index 0000000..cbd1185 --- /dev/null +++ b/docker-compose.seafile.yml @@ -0,0 +1,13 @@ +services: + seafile: + container_name: seafile + environment: + - MODE=autorun + image: gronis/seafile:9.0.4 + ports: + - 8000:8000 + - 8082:8082 + restart: unless-stopped + volumes: + - /opt/seafile:/seafile:rw + - /media/seafile:/seafile/seafile-data:rw diff --git a/docker-compose.timescaledb.yml b/docker-compose.timescaledb.yml new file mode 100644 index 0000000..86d76cc --- /dev/null +++ b/docker-compose.timescaledb.yml @@ -0,0 +1,12 @@ +services: + timescaledb: + container_name: timescaledb + environment: + - POSTGRES_USER=timescaleuser + - POSTGRES_PASSWORD=timescalepwd + image: timescale/timescaledb:2.7.1-pg14 + ports: + - 6543:5432 + restart: unless-stopped + volumes: + - /opt/timescaledb:/var/lib/postgresql/data diff --git a/docker-compose.wordpress.yml b/docker-compose.wordpress.yml new file mode 100644 index 0000000..d7f468b --- /dev/null +++ b/docker-compose.wordpress.yml @@ -0,0 +1,16 @@ +services: + wordpress: + container_name: wordpress + environment: + - WORDPRESS_DB_HOST=pgsql + - WORDPRESS_DB_USER=wordpress + - WORDPRESS_DB_PASSWORD=wordpress + - WORDPRESS_DB_NAME=wordpress + image: wordpress:mod + links: + - pgsql + ports: + - 8888:80 + restart: unless-stopped + volumes: + - /opt/wordpress:/var/www/html diff --git a/docker-compose.yml b/docker-compose.yml index b4128ee..861d4c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,238 +1,20 @@ -services: - # - # official - # - nginx: - image: nginx:1.25.4 # official, linuxserver/nginx - container_name: nginx - # ports: - # - 444:443 - extra_hosts: - - "host:192.168.2.150" - volumes: - - /opt/nginx/etc/.htpasswd:/host/etc/.htpasswd - - /opt/nginx/etc/nginx/conf:/etc/nginx/conf - - /opt/nginx/etc/nginx/conf.d:/etc/nginx/conf.d - - /opt/nginx/var/log/nginx:/var/log/nginx - - /opt/seafile/seafile-server-latest/seahub/media:/host/var/www/seafile - restart: unless-stopped - filebrowser: - image: filebrowser/filebrowser:v2.21.1 # official, no linuxserver image - container_name: filebrowser - volumes: - - /opt/filebrowser/.filebrowser.json:/.filebrowser.json - - /opt/filebrowser/database.db:/database.db - - /media:/host/media - ports: - - 8001:80 - restart: unless-stopped - # - # custom - # - caddy: - image: caddy - container_name: caddy - build: - context: /opt/caddy/ - ports: - - 444:443 - volumes: - - /opt/caddy/Caddyfile:/etc/caddy/Caddyfile - - /opt/caddy/data:/data - environment: - #- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?} - #- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?} - - AWS_ACCESS_KEY_ID="AKIAY4DUYEBSTECHF6RN" - - AWS_SECRET_ACCESS_KEY="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" - restart: unless-stopped - depends_on: - - nginx - links: - - nginx - openvpn-server: # custom, no linuxserver image - image: kylemanna/openvpn:2.4 - container_name: openvpn-server - privileged: true - extra_hosts: - - "host:192.168.2.150" - ports: - - 443:443 - cap_add: - - NET_ADMIN - volumes: - - /opt/openvpn-server:/etc/openvpn - network_mode: bridge - restart: unless-stopped - borgmatic: - image: b3vis/borgmatic:v1.1.10-1.4.21 # custom, no linuxserver image - container_name: borgmatic - volumes: - - /:/sepia:ro - - /media:/media - - /root/.ssh:/root/.ssh:ro - - /opt/borgmatic/config/crontab.txt:/etc/borgmatic.d/crontab.txt - - /opt/borgmatic/config:/config - - /opt/borgmatic/keys:/keys - - /opt/borgmatic/cache:/cache - - /opt/borgmatic/log:/log - restart: unless-stopped - environment: - - TZ=Europe/Amsterdam - seafile: - image: gronis/seafile:9.0.4 - container_name: seafile - restart: unless-stopped - volumes: - - /opt/seafile:/seafile:rw - - /media/seafile:/seafile/seafile-data:rw - ports: - - 8000:8000 - - 8082:8082 - environment: - - MODE=autorun - wordpress: - image: wordpress:mod # custom, ook wordpress:php8.1-apache-pgsql (official + pgsql extension) in /opt/wordpress/docker/build.sh, maar werkt niet met postgres 12! - container_name: wordpress - volumes: - - /opt/wordpress:/var/www/html - ports: - - 8888:80 - environment: - - WORDPRESS_DB_HOST=pgsql - - WORDPRESS_DB_USER=wordpress - - WORDPRESS_DB_PASSWORD=wordpress - - WORDPRESS_DB_NAME=wordpress - links: - - pgsql - #- mysql # Lukt niet om te migreren van pgsql naar mysql - restart: unless-stopped - mysql: - image: mysql:5.7 # official - container_name: mysql - volumes: - - /opt/mysql:/var/lib/mysql - environment: - MYSQL_DATABASE: example - MYSQL_USER: example - MYSQL_PASSWORD: example - MYSQL_ROOT_PASSWORD: example - restart: unless-stopped - adminer: - image: adminer:latest # official - container_name: adminer - restart: always - links: - - pgsql - - mysql - ports: - - 7070:8080 - pgsql: - image: postgres:latest # official, no linuxserver image - container_name: pgsql - volumes: - - /opt/pgsql:/var/lib/postgresql/data - ports: - - 5432:5432 - environment: - - POSTGRES_PASSWORD=example - restart: unless-stopped - pgsql-admin: - image: dpage/pgadmin4:latest # custom, no linuxserver image - container_name: pgsql-admin - volumes: - - /opt/pgsql-admin=/var/lib/pgadmin - ports: - - 5050:80 - environment: - - PGADMIN_DEFAULT_EMAIL=admin - - PGADMIN_DEFAULT_PASSWORD=toUEhcycUC5Kpj27 - restart: unless-stopped - apt-cacher: - image: sameersbn/apt-cacher-ng:3.1-3 - container_name: apt-cacher - ports: - - "3142:3142" - volumes: - - /media/scratch/apt-cacher:/var/cache/apt-cacher-ng - restart: unless-stopped - dns-ad-blocker: - image: oznu/dns-ad-blocker:latest # custom, no linuxserver image, no version - container_name: dns-ad-blocker - ports: - - "192.168.2.151:53:53/udp" - environment: - - AUTO_UPDATE=1 - - BRANCH=master - - DNSCRYPT=1 - - DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.ns0.dnscrypt.nl - - DNSCRYPT_RESOLVER_ADDR=45.76.35.212 - - DNSCRYPT_PROVIDER_KEY=4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA - # - # homemade - # - lighttpd: - image: webserver:latest # homemade, no linuxserver image - container_name: lighttpd - ports: - - 80:81 - volumes: - - /opt/lighttpd/etc:/host/etc - - /home/user/certs:/host/etc/certs - - /opt/lighttpd/var/log:/host/var/log - - /home/user/www:/host/var/www/global - restart: unless-stopped - collectd: - image: collectd:latest # homemade, no linuxserver image - container_name: collectd - privileged: true - volumes: - - /opt/collectd/etc:/etc/collectd - - /opt/collectd/var:/var/lib/collectd - - /opt/collectd/usr:/host/usr - - /root/scripts/speedtest-cli:/sbin/speedtest-cli - - /:/host/root - - /media:/host/media - - /var/lib/docker:/media/docker - - /dev/mapper:/dev/mapper - restart: unless-stopped - - # Homeassistant et al. - esphome: - image: esphome/esphome:2022.12.8 - container_name: esphome - volumes: - - /opt/esphome:/config:rw - - /opt/esphome/log:/log:rw - - /etc/localtime:/etc/localtime:ro - #devices: - #- /dev/ttyACM0:/dev/ttyACM0 - network_mode: host - restart: unless-stopped - homeassistant: - container_name: homeassistant - image: homeassistant/home-assistant:2024.10 - volumes: - - /opt/homeassistant:/config - - /etc/localtime:/etc/localtime:ro - restart: unless-stopped - privileged: true - network_mode: host - timescaledb: - image: timescale/timescaledb:2.7.1-pg14 # official - container_name: timescaledb - volumes: - - /opt/timescaledb:/var/lib/postgresql/data - ports: - - 6543:5432 - environment: - - POSTGRES_USER=timescaleuser - - POSTGRES_PASSWORD=timescalepwd - restart: unless-stopped - grafana: # admin:grafana - image: grafana/grafana:9.0.2 # official - container_name: grafana - volumes: - - /opt/grafana:/var/lib/grafana - ports: - - 3333:3000 - restart: unless-stopped +include: +- docker-compose.nginx.yml +- docker-compose.filebrowser.yml +- docker-compose.caddy.yml +- docker-compose.openvpn-server.yml +- docker-compose.borgmatic.yml +- docker-compose.seafile.yml +- docker-compose.wordpress.yml +- docker-compose.mysql.yml +- docker-compose.adminer.yml +- docker-compose.pgsql.yml +- docker-compose.pgsql-admin.yml +- docker-compose.apt-cacher.yml +- docker-compose.dns-ad-blocker.yml +- docker-compose.lighttpd.yml +- docker-compose.collectd.yml +- docker-compose.esphome.yml +- docker-compose.homeassistant.yml +- docker-compose.timescaledb.yml +- docker-compose.grafana.yml diff --git a/unused.yaml b/unused.yaml deleted file mode 100644 index d5691ec..0000000 --- a/unused.yaml +++ /dev/null @@ -1,40 +0,0 @@ - mysql: - image: mysql:latest - instances: - mysql-1: - ship: local - ports: {service: 3306} - lifecycle: - running: [{type: tcp, port: service}] - volumes: - /host: /opt/mysql - #/host/reset.sql: /opt/mysql/fix/reset.sql - #/etc/service/mysql/run: /opt/mysql/fix/service - inverter: - image: inverter:latest - instances: - inverter-1: - ship: local - volumes: - /opt/inverter: /home/user/inverter - /opt/inverter/data: /opt/inverter/data - /var/log: /opt/inverter/var/log - /etc/logrotate.d: /opt/inverter/etc/logrotate.d - privileged: true - backintime: - image: backintime:latest - instances: - backintime-1: - ship: local - volumes: - /var/log: /opt/backintime/var/log - /root/.local/share/backintime: /opt/backintime/local - /var/spool: /opt/backintime/var/spool - /root/.config/backintime: /opt/backintime/config - /host/rootfs: / - /host/etc: /etc - /host/opt: /opt - /host/root: /root - /host/home: /home - /host/docker: /opt - /host/backup: /media/backup