444 lines
16 KiB
YAML
444 lines
16 KiB
YAML
---
|
|
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
|