From f55ee86752d52d9c9182b3c690f6a9c4f2c5512f Mon Sep 17 00:00:00 2001 From: Bram Veenboer Date: Sat, 1 Jun 2024 09:58:18 +0200 Subject: [PATCH] Initial commit --- docker-compose.yml | 442 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 442 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e11a270 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,442 @@ +services: + # + # official + # + nginx: + image: nginx:1.25.4 # official, linuxserver/nginx + container_name: nginx + extra_hosts: + - "host:192.168.2.150" + volumes: + - /opt/nginx/etc/nginx/conf:/etc/nginx/conf + - /opt/nginx/etc/nginx/conf.d:/etc/nginx/conf.d + - /opt/nginx/etc/nginx/nginx.conf:/etc/nginx/nginx.conf + - /opt/nginx/var/log/nginx:/var/log/nginx + restart: unless-stopped + filebrowser: + image: filebrowser/filebrowser:v2.28.0 # official, no linuxserver image + container_name: filebrowser + volumes: + - /opt/filebrowser/.filebrowser.json:/.filebrowser.json + - /opt/filebrowser/database.db:/database.db + - /media:/srv/host/media + ports: + - 8001:80 + homeassistant: + container_name: homeassistant + image: homeassistant/home-assistant:2024.4.3 + volumes: + - /opt/homeassistant:/config + - /etc/localtime:/etc/localtime:ro + restart: unless-stopped + privileged: true + network_mode: host + photoprism: + image: photoprism/photoprism:231128 # official + container_name: photoprism + ports: + - 2342:2342 + environment: + - PHOTOPRISM_ADMIN_PASSWORD=insecure # INITIAL PASSWORD FOR admin USER, MINIMUM 8 CHARACTERS + - PHOTOPRISM_AUTH_MODE=password # authentication mode (public, password) + - PHOTOPRISM_SITE_URL=https://photoprism.bram.veenboer.xyz/ # public server URL incl http:// or https:// and /path, :port is optional + - PHOTOPRISM_ORIGINALS_LIMIT=5000 # file size limit for originals in MB (increase for high-res video) + - PHOTOPRISM_HTTP_COMPRESSION=gzip # improves transfer speed and bandwidth utilization (none or gzip) + - PHOTOPRISM_LOG_LEVEL=info # log level=trace, debug, info, warning, error, fatal, or panic + - PHOTOPRISM_READONLY=true # do not modify originals directory (reduced functionality) + - PHOTOPRISM_EXPERIMENTAL=false # enables experimental features + - PHOTOPRISM_DISABLE_CHOWN=true # disables updating storage permissions via chmod and chown on startup + - PHOTOPRISM_DISABLE_WEBDAV=true # disables built-in WebDAV server + - PHOTOPRISM_DISABLE_SETTINGS=false # disables settings UI and API + - PHOTOPRISM_DISABLE_TENSORFLOW=false # disables all features depending on TensorFlow + - PHOTOPRISM_DISABLE_FACES=false # disables face detection and recognition (requires TensorFlow) + - PHOTOPRISM_DISABLE_CLASSIFICATION=false # disables image classification (requires TensorFlow) + - PHOTOPRISM_DISABLE_RAW=true # disables indexing and conversion of RAW files + - PHOTOPRISM_RAW_PRESETS=false # enables applying user presets when converting RAW files (reduces performance) + - PHOTOPRISM_JPEG_QUALITY=85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) + - PHOTOPRISM_DETECT_NSFW=false # automatically flags photos as private that MAY be offensive (requires TensorFlow) + - PHOTOPRISM_UPLOAD_NSFW=true # allows uploads that MAY be offensive (no effect without TensorFlow) + - PHOTOPRISM_DATABASE_DRIVER=sqlite # SQLite is an embedded database that doesn't require a server + - PHOTOPRISM_UID=1000 + - PHOTOPRISM_GID=1000 + devices: + - /dev/dri:/dev/dri # Intel QSV + security_opt: + - seccomp:unconfined + - apparmor:unconfined + volumes: + - /opt/photoprism:/photoprism/storage + - /media/scratch/photoprism/cache:/photoprism/storage/cache + - /opt/photoprism/originals:/photoprism/originals/ + - /media/helios/Photographs/Vakantie:/photoprism/originals/Vakantie + - /media/helios/Photographs/Plaatsen:/photoprism/originals/Plaatsen + restart: unless-stopped + influxdb: # admin:password + image: influxdb:2.3.0 # official + container_name: influxdb + restart: unless-stopped + volumes: + - /opt/influxdb:/var/lib/influxdb2 + ports: + - 8086:8086 + # + # Linux Server images + # + rsnapshot: + image: linuxserver/rsnapshot:1.4.5 + container_name: rsnapshot + volumes: + - /opt/rsnapshot/etc:/etc/rsnapshot + - /opt/rsnapshot/var/log:/var/log + - /opt/rsnapshot/var/run:/var/run + - /opt/rsnapshot/var/spool:/var/spool + - /opt/rsnapshot/usr:/host/usr + - /opt/host_aliases:/host/etc/host_aliases + - /media/jupiter/rsnapshot:/host/scratch + - /root/.ssh:/root/.ssh + restart: unless-stopped + facette: + image: facette/facette:0.5.1 + container_name: facette + volumes: + - /opt/facette/etc:/etc/facette #RO + - /opt/facette/var:/var/lib/facette #RW + - /opt/collectd/var:/var/lib/collectd #RO + - /media/scratch/collectd/shuttle/rrd/server:/var/lib/collectd/rrd/shuttle #RO + - /media/scratch/collectd/sepia/rrd/sepia:/var/lib/collectd/rrd/sepia #RO + - /media/scratch/collectd/kratos/rrd/kratos:/var/lib/collectd/rrd/kratos #RO + ports: + - 12003:12003 + restart: unless-stopped + jellyfin: + image: linuxserver/jellyfin:10.9.3 + container_name: jellyfin + volumes: + - /opt/jellyfin/config:/config + - /media/neptune/Video/Movies:/host/srv/movies + - /media/neptune/Video/Shows:/host/srv/shows + - /media/helios/Bram/Music:/host/srv/music/bram + - /media/neptune/Music/Albums:/host/srv/music/albums + - /media/scratch/jellyfin/transcoding-temp/config/data/transcoding-temp + - /media/scratch/jellyfin/transcodes:/config/data/trancodes + - /media/scratch/jellyfin/metadata:/config/data/metadata + ports: + - 8097:8097 + devices: + - /dev/dri/renderD128:/dev/dri/renderD128 + restart: unless-stopped + lidarr: + image: linuxserver/lidarr:2.2.5.4141-ls165 + container_name: lidarr + external_links: + - transmission + volumes: + - /opt/lidarr:/config + - /media/nubes/downloads:/downloads + - /media/neptune/Music/Albums:/music + - /media/nubes/music:/stage + - /media/scratch/lidarr/MediaCover:/config/MediaCover + ports: + - 18686:8686 + extra_hosts: + - "transmission:192.168.2.150" + restart: unless-stopped + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + sonarr: + image: linuxserver/sonarr:4.0.4.1491-ls236 + container_name: sonarr + external_links: + - transmission + volumes: + - /opt/sonarr:/config + - /media/nubes/downloads:/downloads + - /media/neptune/Video/Shows:/tv + ports: + - 18989:8989 + extra_hosts: + - "transmission:192.168.2.150" + restart: unless-stopped + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + radarr: + image: linuxserver/radarr:5.4.6.8723-ls213 + container_name: radarr + external_links: + - transmission + volumes: + - /opt/radarr:/config + - /media/nubes/downloads:/downloads + - /media/neptune/Video/Movies:/movies + ports: + - 17878:7878 + extra_hosts: + - "transmission:192.168.2.150" + restart: unless-stopped + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + bazarr: + image: linuxserver/bazarr:v1.4.2-ls246 + container_name: bazarr + volumes: + - /opt/bazarr/config:/config + - /media/neptune/Video/Movies:/movies + - /media/neptune/Video/Shows:/tv + ports: + - 16767:6767 + restart: unless-stopped + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + jackett: + image: linuxserver/jackett:v0.21.2371-ls368 + container_name: jackett + external_links: + - transmission + volumes: + - /opt/jackett:/config + - /media/nubes/downloads:/downloads + ports: + - 9117:9117 + restart: unless-stopped + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + transmission: + image: linuxserver/transmission:4.0.5-r0-ls229 + container_name: transmission + volumes: + - /opt/transmission:/config + - /media/nubes/torrents:/watch + - /media/nubes/downloads:/downloads + environment: + - PUID=1000 + - PGID=1000 + network_mode: service:surfshark + depends_on: + - surfshark + restart: unless-stopped + 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 + - /opt/openvpn-server/logrotate.d/openvpn:/etc/logrotate.d/openvpn + network_mode: bridge + restart: unless-stopped + 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:?} + restart: unless-stopped + depends_on: + - nginx + links: + - nginx + borgmatic: + image: b3vis/borgmatic:1.8.9 # custom, no linuxserver image + container_name: borgmatic + volumes: + - /media:/media + - /:/host + - /root/.ssh:/root/.ssh + - /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 + cap_add: + - sys_admin + privileged: true # for NFS mount + seafile: + image: gronis/seafile:10.0.1 + container_name: seafile + restart: unless-stopped + volumes: + - /opt/seafile:/seafile:rw + - /media/seafile:/seafile/seafile-data:rw + ports: + - 8100:8000 + - 8180:8080 + - 8182:8082 + environment: + - MODE=autorun + #- MODE=maintenance + 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 + network_mode: host + restart: unless-stopped + #nordvpn: + # image: bubuntux/nordlynx:2023-06-01 # custom, no linuxserver image + # container_name: nordvpn + # cap_add: + # - net_admin + # environment: + # - PRIVATE_KEY=4JaL+NcPPLTcFYTzu1aswWr+qIvOhNhCajXoUgd3nVo= + # ports: + # - 9091:9091 # transmission + # restart: unless-stopped + surfshark: + image: ilteoood/docker-surfshark:1.7.2 # custom, no linuxserver image + container_name: surfshark + environment: + - SURFSHARK_USER=${SURFSHARK_USER:?} + - SURFSHARK_PASSWORD=${SURFSHARK_PASSWORD:?} + - SURFSHARK_COUNTRY=nl + - SURFSHARK_CITY=ams + - CONNECTION_TYPE=udp + - LAN_NETWORK= + cap_add: + - NET_ADMIN + devices: + - /dev/net/tun + ports: + - 1080:1080 # socks5 server + - 9091:9091 # transmission + restart: unless-stopped + dns: + - 1.1.1.1 + plik: + image: rootgg/plik:1.3.8 # custom, no linuxserver image + container_name: plik + ports: + - 8087:8080 + volumes: + - /opt/plik/plikd.cfg:/home/plik/server/plikd.cfg + - /opt/plik/files:/home/plik/server/files + 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 + restart: unless-stopped + ghost: + #image: ghost:5.45.1 # TODO: needs database migration + image: ghost:1.21.5 # custom, no linuxserver image + container_name: ghost + restart: unless-stopped + volumes: + - /opt/ghost/content:/var/lib/ghost/content + - /opt/ghost/etc/config.production.json:/var/lib/ghost/config.production.json + ports: + - 2368:2368 + lighttpd: + image: sebp/lighttpd:1.4.64-r0 # custom, no linuxserver image + container_name: lighttpd + ports: + - 80:81 + volumes: + - /opt/lighttpd/etc:/host/etc + - /opt/lighttpd/var/log:/host/var/log + - /media/nubes/www:/host/var/www + tty: true + restart: unless-stopped + # + # homemade + # + collectd: + image: collectd:bookworm # homemade, no linuxserver image + build: + context: /opt/collectd/docker + dockerfile: Dockerfile.buster + container_name: collectd + privileged: true + volumes: + - /opt/collectd/etc:/etc/collectd + - /opt/collectd/var:/var/lib/collectd + - /opt/collectd/usr:/host/usr + - /:/host/root + - /media:/host/media + - /media/jupiter/borg:/host/media/borg + - /media/jupiter/rsnapshot:/host/media/rsnapshot + - /var/lib/docker:/media/docker + - /dev/mapper:/dev/mapper + restart: unless-stopped + # + # IoT + # + dsmrdb: + image: postgres + container_name: dsmrdb + restart: unless-stopped + volumes: + - /opt/dsmr/data:/var/lib/postgresql/data + environment: + - POSTGRES_USER=dsmrreader + - POSTGRES_PASSWORD=dsmrreader + - POSTGRES_DB=dsmrreader + - 5432:5432 + dsmr: + image: xirixiz/dsmr-reader-docker:5.11.0-2024.02.04 + container_name: dsmr + restart: unless-stopped + depends_on: + - dsmrdb + links: + - dsmrdb:dsmrreader + volumes: + - /opt/dsmr/backups:/home/dsmr/app/backups + - /dev:/dev + environment: + - DJANGO_DATABASE_HOST=dsmrdb + - DSMRREADER_ADMIN_USER=admin + - DSMRREADER_ADMIN_PASSWORD=password + ports: + - 8888:80 + 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 + grafana: + image: grafana/grafana:10.4.2 # official + container_name: grafana + volumes: # admin:grafana + - /opt/grafana:/var/lib/grafana + ports: + - 3333:3000