Initial commit

This commit is contained in:
Bram Veenboer
2024-06-01 09:58:18 +02:00
commit f55ee86752

442
docker-compose.yml Normal file
View File

@@ -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