--- # XXX: some network features don't work in 3.0-3.3, but work in 2.1, go figure :( version: '2.1' networks: # 'localnet': this network allows containers to obtain their own IP's on the localnetwork, similar to a VM in bridge mode # - For ipv4, an address between 172.25.0.64-95 will be assigned by Docker. For static assignments, see the 'unifi' container config. # - For ipv6, docker will not assign an address and the container must acquire an address using SLAAC, which assumes # a router on the localnet providing SLAAC services is available. localnet: driver: macvlan enable_ipv6: true driver_opts: parent: br0 ipam: config: # bogus ipv6 subnet here. The container should use SLAAC to acquire a real ipv6 addr from your router - subnet: 2001::0/64 # 172.25.0.64/27 = 64-95. Don't let your DHCP server assign IP's from this range. - subnet: 172.25.0.0/24 gateway: 172.25.0.1 ip_range: 172.25.0.64/27 # 'metrics': a private network for graphite/grafana related services to communicate with each other. metrics: driver: bridge ipam: driver: default config: - subnet: 192.168.1.0/24 gateway: 192.168.1.1 services: tautulli: container_name: tautulli image: tautulli/tautulli:latest restart: always environment: - PUID=65534 - PGID=65534 - ADVANCED_GIT_BRANCH=master volumes: - /virt/persistent/tautulli:/config - /etc/localtime:/etc/localtime:ro ports: - "8181:8181" organizr-v2: container_name: organizr-v2 image: organizr/organizr:latest restart: always environment: - PUID=65534 - PGID=65534 volumes: - /virt/persistent/organizr-v2:/config - /etc/localtime:/etc/localtime:ro ports: - "8282:80" sabnzbd: container_name: sabnzbd image: lscr.io/linuxserver/sabnzbd:latest restart: always environment: - PUID=65534 - PGID=65534 - TZ=America/Los_Angeles volumes: - /files:/files - /tmp/sabnzbd:/tmp/sabnzbd - /virt/persistent/sabnzbd:/config - /etc/localtime:/etc/localtime:ro ports: - "8085:8085" sonarr: container_name: sonarr image: lscr.io/linuxserver/sonarr:latest restart: always environment: - XDG_CONFIG_HOME=/config - PUID=65534 - PGID=65534 volumes: - /files:/files - /virt/persistent/sonarr:/config - /etc/localtime:/etc/localtime:ro ports: - "8989:8989" radarr: container_name: radarr image: lscr.io/linuxserver/radarr:latest restart: always environment: - PUID=65534 - PGID=65534 - TZ=America/Los_Angeles volumes: - /files:/files - /virt/persistent/radarr:/config - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro ports: - 7878:7878 deluge: container_name: deluge image: linuxserver/deluge:2.0.5 restart: always environment: - PUID=65534 - PGID=65534 - TZ=America/Los_Angeles volumes: - /files:/files - /virt/persistent/deluge:/config - /etc/localtime:/etc/localtime:ro ports: - "8083:8112" # previous config used 8083 for web, linuxserver uses 8112. re-map for backwards compat - "6881:6881" - "6881:6881/udp" # qbittorrent: # container_name: qbittorrent # image: qbittorrent # build: ./qbittorrent # environment: # - PUID=65534 # - PGID=65534 # - TZ=America/Los_Angeles # - WEBUI_PORT=8084 # volumes: # - /path/to/appdata/config:/config # - /path/to/downloads:/downloads # ports: # - 6881:6881 # - 6881:6881/udp # - 8084:8084 # restart: unless-stopped plex: container_name: plex image: lscr.io/linuxserver/plex:latest restart: always volumes: - /files:/files - /virt/persistent/plex:/config - /tmp/plex-transcode:/transcode - /etc/localtime:/etc/localtime:ro network_mode: host devices: - /dev/dri:/dev/dri environment: # linuxserver/plex: udpate to latest available including betas: - VERSION=latest # ports: # - "32400:32400" emby: container_name: emby image: emby/embyserver:latest restart: always volumes: - /files:/files - /virt/persistent/emby:/config - /etc/localtime:/etc/localtime:ro environment: - APP_USER=nobody - APP_UID=65534 - APP_GID=65534 network_mode: host devices: - /dev/dri:/dev/dri timecapsule: container_name: timecapsule build: ./timecapsule restart: always hostname: timecapsule environment: - TM_USER=backup - TM_PW=backup - TM_ID=34 # uid of the backup user on the host - TM_SIZE=712000 # MB volumes: - /etc/localtime:/etc/localtime:ro - /files/timemachine:/timemachine networks: - localnet unifi: container_name: unifi build: ./unifi restart: always environment: - PUID=65534 - PGID=65534 volumes: - /virt/persistent/unifi:/config - /etc/localtime:/etc/localtime:ro networks: localnet: ipv4_address: 172.25.0.65 grafana: container_name: grafana build: ./grafana restart: always environment: - GF_INSTALL_PLUGINS=grafana-clock-panel volumes: - /virt/persistent/grafana:/var/lib/grafana networks: - metrics ports: - "3000:3000" # 2021-10-24: disabled graphite-api. Appears the project is abandoned. Using graphite-web from official graphite image instead # graphite-api: # container_name: graphite-api # image: joemiller/graphite-api # build: ./graphite-api # restart: always # volumes: # - /virt/persistent/graphite-api/graphite-api.yaml:/etc/graphite-api.yaml # - /virt/persistent/go-carbon/data:/data # networks: # - metrics # official graphite container with only graphite-web and nginx running graphite: container_name: graphite image: graphiteapp/graphite-statsd restart: always environment: - CARBON_DISABLED=1 - CARBON_AGGREGATOR_DISABLED=1 - STATSD_DISABLED=1 - GO_CARBON_DISABLED=1 - REDIS_DISABLED=1 - GRAPHITE_CARBONLINK_HOSTS=go-carbon:7002 volumes: - /virt/persistent/graphite:/opt/graphite/conf - /virt/persistent/go-carbon/data:/opt/graphite/storage/whisper networks: - metrics # uncomment to expose the graphite-web UI # ports: # - "9111:80" go-carbon: container_name: go-carbon restart: always build: ./go-carbon volumes: - /virt/persistent/go-carbon/data:/data - /virt/persistent/go-carbon/config:/config networks: - metrics ports: - "2003:2003" - "2003:2003/udp" - "2004:2004" # - "7002:7002" # - "8080:8080" influxdb: container_name: influxdb image: influxdb:1.8 restart: always volumes: - /virt/persistent/influxdb:/var/lib/influxdb - /virt/persistent/influxdb2:/var/lib/influxdb2 - /virt/persistent/influxdb2/etc-influxdb2:/etc/influxdb2 networks: - metrics ports: - "8086:8086" telegraf-snmp-unifi: container_name: telegraf-snmp-unifi build: ./telegraf-snmp-unifi restart: always volumes: - /virt/persistent/telegraf-snmp-unifi:/etc/telegraf networks: - metrics # netdata: # container_name: netdata # image: joemiller/netdata # build: ./netdata # restart: always # hostname: server # environment: # # docker group from the host: # - PGID=128 # cap_add: # - SYS_PTRACE # security_opt: # - apparmor=unconfined # volumes: # - /proc:/host/proc:ro # - /sys:/host/sys:ro # - /var/lib/smartmontools:/var/log/smartd:ro # - /var/run/docker.sock:/var/run/docker.sock:ro # ports: # - "19999:19999" jenkins: container_name: jenkins build: ./jenkins restart: always hostname: server environment: - JAVA_OPTS="-Xmx256m" volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro # jenkins runs with uid 1000: # sudo mkdir -p /virt/persistent/jenkins/ ; sudo chown -R 1000 /virt/persistent/jenkins/ - /virt/persistent/jenkins:/var/jenkins_home # docker socket - /var/run/docker.sock:/var/run/docker.sock:ro ports: - "8090:8080" # GID 128 is docker group from the host. Necessary to allow access to the docker.sock user: jenkins:128 nginx: container_name: nginx build: ./nginx restart: always hostname: server volumes: - /files:/files:ro - /etc/localtime:/etc/localtime:ro ports: - "80:80" scrutiny: container_name: scrutiny image: analogj/scrutiny:latest restart: always volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /run/udev:/run/udev:ro - /virt/persistent/scrutiny:/scrutiny/config devices: - /dev/sda - /dev/sdb - /dev/sdc - /dev/sdd - /dev/sde - /dev/sdf - /dev/nvme0 cap_add: - SYS_RAWIO - SYS_ADMIN ports: - 9988:8080 # homeassistant: # container_name: homeassistant # image: joemiller/homeassistant # build: ./homeassistant # restart: always # volumes: # - /virt/persistent/homeassistant:/config # - /etc/localtime:/etc/localtime:ro # restart: always # network_mode: host nzbhydra2: container_name: nzbhydra2 image: lscr.io/linuxserver/nzbhydra2:latest restart: always environment: - PUID=65534 - PGID=65534 volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /virt/persistent/nzbhydra2:/config #- :/downloads ports: - 5076:5076 bazarr: container_name: bazarr image: lscr.io/linuxserver/bazarr:latest restart: always environment: - PUID=65534 - PGID=65534 - TZ=America/Los_Angeles volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /virt/persistent/bazarr:/config - /files:/files ports: - 6767:6767 loki: container_name: loki build: ./loki restart: always command: -config.file=/etc/loki/local-config.yaml environment: - TZ=America/Los_Angeles volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /virt/persistent/loki/data:/data networks: - metrics ports: - 3100:3100 promtail: container_name: promtail build: ./promtail restart: always command: -config.file=/etc/promtail/promtail.yaml environment: - TZ=America/Los_Angeles volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /var/log:/var/log:ro - /virt/persistent/loki/promtail:/data networks: - metrics syslog-ng-converter: container_name: syslog-ng-converter build: ./syslog-ng-converter restart: always # uncomment for more debug output: #command: -dve environment: - TZ=America/Los_Angeles volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro networks: - metrics ports: - "1514:1514" - "1514:1514/udp" # IPTV bridge for plex # xteve: # container_name: xteve # image: joemiller/xteve # build: ./xteve # ports: # - "34400:34400" # volumes: # - /etc/localtime:/etc/localtime:ro # - /etc/timezone:/etc/timezone:ro # - /virt/persistent/xteve/root:/root/xteve # - /virt/persistent/xteve/tmp:/tmp/xteve # -- BEGIN teslamate stack -- teslamate: container_name: teslamate image: teslamate/teslamate:latest restart: always environment: - DATABASE_USER=${TESLAMATE_DB_USER} - DATABASE_PASS=${TESLAMATE_DB_PASS} - DATABASE_NAME=${TESLAMATE_DB_NAME} - DATABASE_HOST=teslamate-database - MQTT_HOST=teslamate-mosquitto volumes: - /etc/localtime:/etc/localtime:ro ports: - 4000:4000 cap_drop: - all teslamate-grafana: container_name: teslamate-grafana image: teslamate/grafana:latest restart: always environment: - DATABASE_USER=${TESLAMATE_DB_USER} - DATABASE_PASS=${TESLAMATE_DB_PASS} - DATABASE_NAME=${TESLAMATE_DB_NAME} - DATABASE_HOST=teslamate-database ports: - 4001:3000 volumes: - /etc/localtime:/etc/localtime:ro - /virt/persistent/teslamate/grafana:/var/lib/grafana teslamate-database: container_name: teslamate-postgres image: postgres:12 restart: always environment: - POSTGRES_USER=${TESLAMATE_DB_USER} - POSTGRES_PASSWORD=${TESLAMATE_DB_PASS} - POSTGRES_DB=teslamate volumes: - /etc/localtime:/etc/localtime:ro - /virt/persistent/teslamate/postgres:/var/lib/postgresql/data teslamate-mosquitto: container_name: teslamate-mosquitto image: eclipse-mosquitto:1.6 restart: always ports: - 1883:1883 volumes: - /etc/localtime:/etc/localtime:ro - /virt/persistent/teslamate/mosquitto-conf:/mosquitto/config - /virt/persistent/teslamate/mosquitto-data:/mosquitto/data # -- END teslamate stack -- # build-only containers / utility containers. These are not services. snapraid: container_name: snapraid image: joemiller/snapraid build: ./snapraid entrypoint: "bash -c" command: "exit 0" mergerfs-tools: container_name: mergerfs-tools image: joemiller/mergerfs-tools build: ./mergerfs-tools entrypoint: "bash -c" command: "exit 0" backup-scripts: container_name: backup-scripts image: joemiller/backup-scripts build: ./backup-scripts entrypoint: "bash -c" command: "exit 0"