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