Skip to content

A YAML compose file with all images tried and found not useful, explanation and details

License

Notifications You must be signed in to change notification settings

tamimology/unused-docker-containers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

This document is intended to provide a docker-compose of the Docker Containers that I have TRIED but NOT used on my Synology DS1513+/Mini-PC home server, as I did not find any use for me. If you are using a different device, that should be fine as well, just make sure you define the $PERSIST location in your .env file that corresponds to the docker folder on your host device.

If you are not familiar with how to use a compose file, you can change the compose to docker CLI command by using a docker-compose Converter

Below are some ports that I have found to be reserved and cannot be used on my host, I always avoid using them

A CONSOLIDATED unused-docker-compose.yml FILE CAN BE FOUND HERE , AND TO START, JUST RENAME THE FILE TO docker-compose.yml and TYPE IN docker-compose up -d AND ALL CONTAINERS WILL START. NOTE THAT SOME CONTAINERS REQUIRES CONFIGURATION BEFORE STARTING, AS WELL AS MAKING SURE ALL REQUIRED FOLDERS ARE CREATED ON THE HOST MACHINE WITH THE CORRESPONDING NAMES AS IN THE COMPOSE

RESERVED PORTS NOT BE USED IN ANY CONTAINER

80        HTTP
443       HTTPS
1234      SSH
1986      DSM HTTP
1991      DSM HTTPS
5050      Unknown Port Used
5432      Unknown Port Used
7575      Reserved for the Docker Dashboard (personal choice)
8080      TCP/UDP

DATABASES

Container Port Description Docker Image
2FAuth-Redis 6378 Used for 2FAuth redis:alpine
Chatvault-Postgres - Used for Chatvault postgres:alpine
Grafana 3003 An open observability platform grafana/grafana:main
JoplinDB - Used for Joplin postgres:13.1
Our Shopping List-DB 27017 Used for Our Shopping List pmongo:4.0
phpMyAdmin ---- Personally replaced with Adminer 3300 UI interface to view self-hosted DBs phpmyadmin/phpmyadmin:latest
Phlare 4100 Continuous observability for workload's resources grafana/phlare:latest
Photoview-Postgress - Used for Photoview postgres:alpine
Piped-Postgres - Used for Piped postgres:alpine
Piwigo-DB - Used for Piwigo jbergstroem/mariadb-alpine:10.6.13
Prometheus 9090 Systems and service monitoring system prom/prometheus:latest

DOCKER RELATED

Container Port Description Docker Image
AlertManager 9093 Handles alerts sent by client applications (Prometheus) prom/alertmanager:latest
Autoheal - Monitor and restart unhealthy docker containers modem7/docker-autoheal:latest
BroadLinkManager 7020 Helps to work with Broadlink Devices techblog/broadlinkmanager:latest
cAdvisor 8888 Analyzes resource usage and performance of running containers gcr.io/cadvisor/cadvisor:latest
CheckMK 8722 Powerful monitoring of networks, servers, containers checkmk/check-mk-raw:latest
Container-Mon ---- Personally replaced with Monocker - Get notified when a Docker containers are unhealthy ghcr.io/rafhaanshah/container-mon:latest
DeCompose 4321 Generates docker-compose file from existing containers techblog/decompose:latest
DeUnHealth ---- Personally replaced with Autoheal - Restarts unhealthy containers qmcgaw/deunhealth:latest
DockGE 6001 Easy-to-use self-hosted docker compose.yaml manager louislam/dockge:1
Glances 61208 Cross-platform monitoring tool joweisberg/glances:latest
Node-Exporter 9091 Prometheus exporter for machine metrics prom/node-exporter:latest
Ouroboros ---- Personally replaced with WatchTower - Update containers with latest images pyouroboros/ouroboros:latest
Portainer-CE ---- Personally replaced with portainer/portainer-ee:alpine 9000,9443,8000 Docker management tool (FREE Community Edition) portainer/portainer-ce:alpine
TLS-Socket-Proxy ---- Personally replaced with Docker Socket Proxy 2376 A security-enhanced proxy for the Docker Socket with TLS sjawhar/docker-socket-proxy:latest
Container-WebTTY 8818,8090 SContainer WebTTY terminal access wrfly/container-web-tty:0.1.10
WhatsUpDocker ---- Personally replaced with WatchTower 3000 Same as WatchTower but with UI and actions fmartinou/whats-up-docker:latest

LINKS AND PAGE ORGANISATION

Container Port Description Docker Image
DashMachine ---- Personally replaced with Homarr 5050 Links manager rmountjoy/dashmachine:latest
Shiori 18080 A simple bookmarks manager ghcr.io/go-shiori/shiori:latest

MEDIA PLAYING

Container Port Description Docker Image
Emby ---- Personally replaced with Jellyfin 8096 Media server emby/embyserver:latest
EmbyStat ---- Personally replaced with JellyStat 6555 Stat web interface for Emby Media server uping/embystat:beta-linux-x64
Reiverr 9494 A single UI interacting with TMDB, Jellyfin, Radarr and Sonarr ghcr.io/aleksilassila/reiverr:latest
Jellyseerr 6556 Managing requests for media library fallenbagel/jellyseerr:latest
Plex Media Server ---- Personally replaced with Jellyfin 32400 Media server (standby) plexinc/pms-docker:latest

NETWORKING AND SECURITY

Container Port Description Docker Image
AdGuard ---- Personally replaced with pfSense 80, 3000 Network-wide software for blocking ads & tracking adguard/adguardhome:latest
AdGuard-Sync ---- Personally replaced with pfSense 3006 Synchronize AdGuardHome config to replica instances ghcr.io/bakito/adguardhome-sync:latest
CloudFlare DDNS ---- Personally replaced with Cloudflared - Dynamic DNS updater for CloudFlare Tunnel oznu/cloudflare-ddns:latest
DDNS Updater ---- Personally replaced with pfSense 8002 Dynamic DNS updater for mulit-DDNS services in one qmcgaw/ddns-updater:latest
DHCPdns - OBSELETE, ISC ceased maintaining ISC DHCP since 2022, replaced by Kea 10000,67 A DHCPdns with Webmin GUI to assign static IPs mayankt/dhcpdns:latest
Doku 9090 Monitor docker disk usage in a user-friendly manner amerkurev/doku:latest
DuckDNS ---- Personally replaced with DDNS Updater - Dynamic DNS updater for DuckDNS maksimstojkovic/duckdns:latest
Fail2Ban - Blockes IPs of Brute Force logins 'for Authelia' crazymax/fail2ban:latest
GoAccess 7880 Parse proxy logs for Nginx Proxy Manager xavierh/goaccess-for-nginxproxymanager:latest
Kea ---- Personally replaced with pfSense - A DHCP server to assign static IPs (no UI) jonasal/kea-dhcp4:2
Lets Encrypt ---- Personally replaced with Cloudflared - Auto HTTPS certificate generator from Let's Encrypt maksimstojkovic/letsencrypt:latest
MiddleFinger 404 Shows a dual 00100 hands for any unauthorised access modem7/middle-finger:dual
SnipeIT 1339 Open source IT asset management system snipe/snipe-it:latest-alpine
WebDAV ---- Personally replaced with Dufs 8888 Access local files using WebDAV bytemark/webdav:latest
webNUT 6543 UPS network monitoring web ui edgd1er/webnut:latest

PROGRAMMING

Container Port Description Docker Image
AppDaemon 6060 Sandbox py-execution environment for HomeAssistant acockburn/appdaemon:latest
IT-Tools 5545 Useful tools for developers working in IT corentinth/it-tools:latest
Visual Studio Code ---- Personally replaced with Code-Server 8181 Code editor codercom/code-server:latest

SYSTEM MONITORING AND MANAGEMENT

Container Port Description Docker Image
Home-Panel 8234 Web frontend for controlling the home timmo001/home-panel:latest

SELF-HOSTED

Container Port Description Docker Image
2FAuth 8010 2FAuth OTP Generator 2fauth/2fauth:latest
Chatvault 8787 Stores backups of WhatsApp conversations from various sources ghcr.io/vitormarcal/chatvault:latest
Collabora 9988 Editing documents in a browser from supported applications tiredofit/collabora-online:latest
Dufs 4688 Utility file server that supports webdav sigoden/dufs:latest
FlatNotes ---- Personally replaced with WizNote 8053 A database-less note-taking web app dullage/flatnotes:latest
Forgejo ---- Personally replaced with Gitea 3332,223 A self-hosted lightweight software forge codeberg.org/forgejo/forgejo:1.21
Joplin ---- Personally replaced with WizNote 2300 Open source note taking and to-do application joplin/server:latest
KanBoard ---- Personally replaced with FocalBoard 4480,4443 Kanban Board kanboard/kanboard:latest
LibreX ---- Personally replaced with LibreY 8245 Free privacy respecting meta search engine Google Alternative librex/librex:latest
LibreTranslate 7821 Open Source Machine Translation API libretranslate/libretranslate:latest
Lingva-Translate 6455 Alternative front-end for Google Translate thedaviddelta/lingva-translate:latest
Memos ---- Personally replaced with WizNote 5230 Capture and share your great thoughts neosmemo/memos:latest
Our Shopping List 8989 A simple shared shopping list application nanawel/our-shopping-list:latest
Photoprism ---- Personally replaced with Immich 2342 AI-Powered Photos App for the Decentralized Web photoprism/photoprism:latest
Photoview ---- Personally replaced with Immich 7354 A simple and user-friendly Photo Gallery viktorstrate/photoview:2
Pigallery ---- Personally replaced with Immich 9842 A self-hosted directory-first photo gallery website bpatrik/pigallery2:latest
PicoShare 8179 Minimalist service to share files easily mtlynch/picoshare:latest
Piped-Backend ---- Personally replaced with Invidious - An advanced open-source privacy alternative to YouTube 1337kavin/piped:latest
Piped-Frontend ---- Personally replaced with Invidious - A front UI for Piped-Backeend 1337kavin/piped-frontend:latest
Piped-Nginx ---- Personally replaced with Invidious 7601 Redirects all Youtube to Piped-Backend nginx:mainline-alpine
Piped-Proxy ---- Personally replaced with Invidious - A proxy for Piped-Backend 1337kavin/piped-proxy:latest
Piwigo ---- Personally replaced with Immich 8100 Photos/videos managing with face recognition ghcr.io/linuxserver/piwigo:latest
SearXNG ---- Personally replaced with LibreY 5080 Privacy-respecting, hackable metasearch engine searxng/searxng:latest
Vault 8205 A tool for secrets management hashicorp/vault:latest
xBackbone ---- Personally replaced with ProjectSend 8522,4443 A lightweight file manager with full ShareX support lscr.io/linuxserver/xbackbone:latest

To begin with, I defined my own networks to use, that makes my setup easier for IP allocation of some containers.

version: '3'

networks:

# Bridge Network
  my_bridge:
    name: my_bridge
    driver: bridge
    attachable: true
    ipam:
     config:
       - subnet: $BRIDGE_SUBNET
         gateway: $BRIDGE_GATEWAY

# MacVLAN Network
  dockervlan:
    name: dockervlan
    driver: macvlan
    driver_opts:
      parent: $ETHCARD
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: "$SUBNET"
          gateway: "$MACVLAN_GATEWAY"
          ip_range: "$MACVLAN_RANGE"

services:

Now assuming that every docker-compose file you use, will have the standard parameters on top, then you just paste each compose below that corresponds to your need. I have included those in the network definition above.

You can add them to each file separately if needed. I assume that you will be using 1 file for all of the containers, and then docker-compose up -d CONTAINER_NAME to start every single container. You can add as many CONTAINER_NAME as needed i.e.

docker-compose up -d cadvisor will start the cAdvisor container only. If you use docker-compose up -d then all containers in the compose file will be started in one command.

version: '3'

services:

2FAuth

  2fauth:
    container_name: 2fauth
    restart: $RESTART_POLICY
    hostname: 2fauth
    environment:
      - APP_NAME=My Server 2FAuth
      - APP_ENV=local
      - APP_DEBUG=false
      - SITE_OWNER=$GM_USER
      - APP_KEY=$APP_KEY
      - APP_URL=https://2fauth.$DOMAINNAME
      - IS_DEMO_APP=false
      - LOG_CHANNEL=daily
      - APP_LOG_LEVEL=notice # debug, info, notice, warning, error, critical, alert, emergency
      - DB_CONNECTION=sqlite #can only be sqlite
      - DB_DATABASE="/srv/database/database.sqlite"
      # If you're looking for performance improvements, you could install memcached.
      - CACHE_DRIVER=file
      - SESSION_DRIVER=file
      - FILESYSTEM_DRIVER=local
      - MAIL_DRIVER=log
      - MAIL_HOST=$GM_HOST
      - MAIL_PORT=$GM_PORT
      - MAIL_FROM=$GM_USER
      - MAIL_USERNAME=$GM_USER
      - MAIL_PASSWORD=$GM_PSW
      - MAIL_ENCRYPTION=null
      - MAIL_FROM_NAME=2FAuth
      - MAIL_FROM_ADDRESS=$GM_USER
      - AUTHENTICATION_GUARD=web-guard
      - AUTH_PROXY_HEADER_FOR_USER=null
      - AUTH_PROXY_HEADER_FOR_EMAIL=null
      - WEBAUTHN_NAME=My Server 2FAuth
      - WEBAUTHN_ID=null
      - WEBAUTHN_ICON=null
      - WEBAUTHN_USER_VERIFICATION=preferred
      - TRUSTED_PROXIES=null  # * to trust any proxy, or a comma-separated IP list
      - BROADCAST_DRIVER=log
      - QUEUE_DRIVER=sync
      - SESSION_LIFETIME=12
      - REDIS_HOST=2fauth-redis
      - REDIS_PASSWORD=null
      - REDIS_PORT=6378
      - MIX_ENV=local
      #- PUSHER_APP_ID=
      #- PUSHER_APP_KEY=
      #- PUSHER_APP_SECRET=
      #- PUSHER_APP_CLUSTER=mt1
      #- MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
      #- MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
    volumes:
      - $PERSIST/2fauth:/2fauth
    ports:
      - 8010:8000/tcp
    networks:
      my_bridge:
    depends_on:
      - 2fauth-redis
    image: '2fauth/2fauth:3.0.2' #latest'

๐Ÿ”ผ Back to top

2FAuth-Redis

  2fauth-redis:
    container_name: 2fauth-redis
    restart: $RESTART_POLICY
    hostname: 2fauth-redis
    environment:
      - TZ=$TZ
    volumes:
      - $PERSIST/2fauth/redis:/data
    expose:
      - 6378
    networks:
      my_bridge:
    image: 'redis:alpine'

๐Ÿ”ผ Back to top

AdGuard

  adguard:
    container_name: adguard
    restart: $ALWAYS_ON_POLICY
    hostname: adguard
    environment:
      - TZ=$TZ
    volumes:
      - $PERSIST/adguard/conf:/opt/adguardhome/conf 
      - $PERSIST/adguard/work:/opt/adguardhome/work 
      - $PERSIST/adguard/certs:/certs
    ports:
      - 53/udp 
      - 67/udp 
      - 68/tcp 
      - 68/udp 
      - 80/tcp 
      - 443/tcp 
      - 853/tcp 
      - 3000/tcp 
    networks:
      my_bridge:
         ipv4_address: $BRIDGE_NET.202
      dockervlan:
        ipv4_address: $MACVLAN_NET.5 # IP address inside defined $MACVLAN_RANGE range
    security_opt:
      - no-new-privileges:true
    labels: 
      autoheal: $AUTOHEAL_RESTART
      monocker.enable: $MONOCKER_ENABLE
    image: 'adguard/adguardhome:latest'

๐Ÿ”ผ Back to top

AdGuard-Sync

  adguard-sync:
    container_name: adguard-sync
    restart: $ALWAYS_ON_POLICY
    hostname: adguard-sync
    command: run --config /config/adguardhome-sync.yaml
    environment:
      - LOG_LEVEL=info
      - PUID=$PUID
      - PGID=$PGID
      - TZ=$TZ
    volumes:
      - $PERSIST/adguard/sync/adguardhome-sync.yaml:/config/adguardhome-sync.yaml
    networks:
      my_bridge:
      dockervlan:
        ipv4_address: $MACVLAN_NET.7 #must be in the same macvlan as original instance
    labels: 
      autoheal: $AUTOHEAL_RESTART
      monocker.enable: $MONOCKER_ENABLE
    ports:
      - 3006:8080
    image: 'ghcr.io/bakito/adguardhome-sync:latest'

๐Ÿ”ผ Back to top

AlertManager

  alertmanager:
    container_name: alertmanager
    restart: $ALWAYS_ON_POLICY
    hostname: alertmanager
    volumes:
      - $PERSIST/alertmanager/:/etc/alertmanager/
    ports:
      - 9093:9093
    networks:
      my_bridge:
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'
    image: 'prom/alertmanager:latest'

๐Ÿ”ผ Back to top

AndroidTV ADB

  androidtv-adb:
    container_name: androidtv-adb
    restart: $ALWAYS_ON_POLICY
    hostname: androidtv-adb
    volumes:
     - $PERSIST/adb/config:/config
     - $LOCAL_TIME:/etc/localtime:ro
    ports:
     - 5037:5037
    networks:
      my_bridge:
    command: sh -c "/config/startup.sh & adb -a -P 5037 server nodaemon"
    image: 'sorccu/adb:latest'

๐Ÿ”ผ Back to top

AppDaemon

  appdaemon:
    container_name: appdaemon
    restart: $ALWAYS_ON_POLICY
    hostname: appdaemon
    environment:
        - HA_URL=http://$LOCAL_HOST:8123
        - TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIxNjY2ZWMwZGI4YWE0MTYwODQ5NDYzMWEyNWY5ODAzMyIsImlhdCI6MTY4ODQ1ODUyMSwiZXhwIjoyMDAzODE4NTIxfQ.PEsdgMBC0Oc2Zl9Wl2VYPY2LGKzqvO02XxkkeQSnfL8
        - DASH_URL=http://$LOCAL_HOST:6060
    volumes:
        - $PERSIST/appdaemon:/conf'
    ports:
        - 6060:5050
    networks:
      my_bridge:
    image: 'acockburn/appdaemon:latest'

๐Ÿ”ผ Back to top

Auto-Heal

  autoheal:
    container_name: autoheal
    restart: $ALWAYS_ON_POLICY
    hostname: autoheal
    environment:
      - AUTOHEAL_CONTAINER_LABEL=autoheal #all
      - DOCKER_SOCK=$DOCKER_HOST
      - APPRISE_URL=http://$LOCAL_HOST:8001/notify/autoheal
      - AUTOHEAL_INTERVAL=5   # check every 5 seconds
      - AUTOHEAL_START_PERIOD=600   # wait 10 minutes before the first health check
      - AUTOHEAL_DEFAULT_STOP_TIMEOUT=60   # Docker waits max 10 seconds (the Docker default) for a container to stop before killing during restarts (container overridable via label, see below)
      - CURL_TIMEOUT=30     # --max-time seconds for curl requests to Docker API
      # - POST_RESTART_SCRIPT=""    # Run the specified script if a container was re
    volumes:
      - $LOCAL_TIME:/etc/localtime:ro
    networks:
      my_bridge:
    image: 'modem7/docker-autoheal:latest'

๐Ÿ”ผ Back to top

BroadLinkManager

  broadlinkmanager:
    container_name: broadlinkmanager
    restart: $RESTART_POLICY
    hostname: broadlinkmanager
    environment:
      - ENABLE_GOOGLE_ANALYTICS=False #Optional, default is True, Set to False if you want to disable Google Analytics
    volumes:
      - $PERSIST/broadlinkmanager:/opt/broadlinkmanager/data
    ports:
      - 7020:7020
    network_mode: host
    image: 'techblog/broadlinkmanager:latest'

๐Ÿ”ผ Back to top

cAdvisor

  cadvisor:
    container_name: cadvisor
    restart: $RESTART_POLICY
    hostname: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /volume1/@docker:/var/lib/docker:ro # USE IN SSH TO GET IT ( docker info | grep "Docker Root Dir:" )
      - /dev:/dev:ro

      - /sys/fs/cgroup/cpu:/sys/fs/cgroup/cpu:ro

      # - /sys/fs/cgroup/cpuset:/sys/fs/cgroup/cpuset:ro

      - /sys/fs/cgroup/cpuacct/docker:/sys/fs/cgroup/cpuacct:ro
      - /sys/fs/cgroup/cpuacct/cgroup.clone_children:/sys/fs/cgroup/cpuacct/cgroup.clone_children:ro
      - /sys/fs/cgroup/cpuacct/cgroup.event_control:/sys/fs/cgroup/cpuacct/cgroup.event_control:ro
      - /sys/fs/cgroup/cpuacct/cgroup.procs:/sys/fs/cgroup/cpuacct/cgroup.procs:ro
      - /sys/fs/cgroup/cpuacct/cpuacct.stat:/sys/fs/cgroup/cpuacct/cpuacct.stat:ro
      - /sys/fs/cgroup/cpuacct/cpuacct.usage:/sys/fs/cgroup/cpuacct/cpuacct.usage:ro
      - /sys/fs/cgroup/cpuacct/cpuacct.usage_percpu:/sys/fs/cgroup/cpuacct/cpuacct.usage_percpu:ro
      - /sys/fs/cgroup/cpuacct/notify_on_release:/sys/fs/cgroup/cpuacct/notify_on_release:ro
      - /sys/fs/cgroup/cpuacct/tasks:/sys/fs/cgroup/cpuacct/tasks:ro
    privileged: true
    devices:
        - /dev/kmsg
    ports:
      - 8888:8080
    networks:
      my_bridge:        
    image: 'gcr.io/cadvisor/cadvisor:latest'

๐Ÿ”ผ Back to top

ChatVault

  chatvault:
    container_name: chatvault
    restart: $RESTART_POLICY
    hostname: chatvault
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://chatvault-postgres:5432/chatvaultdb
      - SPRING_DATASOURCE_USERNAME=chatvault
      - SPRING_DATASOURCE_PASSWORD=$DB_PASSWORD
      - CHATVAULT_MSGPARSER_DATEFORMAT="dd/MM/yyyy HH:mm"
      - APP_EMAIL_ENABLED=true
      - APP_EMAIL_HOST=$GM_HOST
      - APP_EMAIL_PASSWORD=$GM_PSW
      - APP_EMAIL_PORT=$GM_PORT
      - APP_EMAIL_USERNAME=$GM_USER
    volumes:
      - $PERSIST/chatvault:/opt/chatvault
      - $PERSIST/chatvault/config:/config
    networks:
      my_bridge:
    ports:
      - 8787:8080
    depends_on:
      - chatvault-postgres
    image: 'ghcr.io/vitormarcal/chatvault:latest'

๐Ÿ”ผ Back to top

ChatVault-Postgres

  chatvault-postgres:
    container_name: chatvault-postgres
    restart: $RESTART_POLICY
    hostname: chatvault-postgres
    volumes:
      - $PERSIST/chatvault/db:/var/lib/postgresql/data
    environment:
      TZ: $TZ
      POSTGRES_DB: chatvaultdb
      POSTGRES_USER: chatvault
      POSTGRES_PASSWORD: $DB_PASSWORD
    networks:
      my_bridge:
    security_opt:
      - no-new-privileges:true
    user: $PUID:$PGID
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "chatvaultdb", "-U", "chatvault"]
      timeout: 45s
      interval: 10s
      retries: 10
    labels: 
      autoheal: $AUTOHEAL_RESTART
    image: 'postgres:alpine'

๐Ÿ”ผ Back to top

CheckMK

  checkmk:
    container_name: checkmk
    restart: $ALWAYS_ON_POLICY
    hostname: checkmk
    volumes:
      - $PERSIST/checkmk:/omd/sites
      - $LOCAL_TIME:/etc/localtime:ro
    ports:
      - 8722:5000
    networks:
      my_bridge:
    tmpfs: /opt/omd/sites/cmk/tmp:uid=1000,gid=1000
    image: 'checkmk/check-mk-raw:latest'

๐Ÿ”ผ Back to top

CloudFlare-DDNS

  cloudflare-ddns:
    container_name: cloudflare-ddns
    restart: $ALWAYS_ON_POLICY
    hostname: cloudflare-ddns
    environment:
      - API_KEY=$DDNS_AUTOUPDATE_TOKEN
      - ZONE=tamimology.com
      - PROXIED=true
      - PUID=$PUID
      - PGID=$PGID
    networks:
      my_bridge:
    image: 'oznu/cloudflare-ddns:latest'

๐Ÿ”ผ Back to top

Collabora

  collabora:
    image: 'tiredofit/collabora-online:latest'
    container_name: collabora
    # hostname: online.example.com
    cap_add:
      - MKNOD
      - NET_ADMIN
    privileged: true
    # volumes:
    #   - $PERSIST/logs:/logs
    environment:
      - TIMEZONE=$TZ
      - CONTAINER_NAME=collabora
      - ADMIN_USER=admin
      - ADMIN_PASS=collabora-online
      - ALLOWED_HOSTS=localhost
      - ENABLE_TLS=FALSE
      # - ENABLE_TLS_REVERSE_PROXY=TRUE
      - INTERFACE=notebookbar
      - LOG_TYPE=FILE
    ports:
      - 9988:9980
    networks:
      my_bridge:
    restart: always

๐Ÿ”ผ Back to top

Container-Mon

  container-mon:
    container_name: container-mon
    restart: $RESTART_POLICY
    hostname: container-mon
    # volumes:
    #   - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DOCKER_HOST=$DOCKER_HOST
      - CONTAINERMON_CRON=*/1 * * * * # every 1 min
      - CONTAINERMON_FAIL_LIMIT=1
      - CONTAINERMON_USE_LABELS=false #If true will only monitor containers with the label containermon.enable=true set
      - CONTAINERMON_NOTIFICATION_URL=pushover://shoutrrr:$PUSHOVER_DOCKERHEALTH_API@$PUSHOVER_USER_KEY
      - CONTAINERMON_NOTIFY_HEALTHY=true
      - CONTAINERMON_CHECK_STOPPED=false
    networks:
      my_bridge:
    image: 'ghcr.io/rafhaanshah/container-mon:latest'

๐Ÿ”ผ Back to top

DashMachine

  dashmachine:
    container_name: dashachine
    restart: $RESTART_POLICY
    hostname: dashmachine
    volumes:
      - $PERSIST/dashmachine:/dashmachine/dashmachine/user_data
    ports:
      - 5050:5000
    networks:
      my_bridge:
    image: 'rmountjoy/dashmachine:latest'

๐Ÿ”ผ Back to top

DeCompose

  decompose:
    container_name: decompose
    restart: $RESTART_POLICY
    hostname: decompose
    environment:
      DOCKER_HOST: $DOCKER_HOST
    # volumes:
    #   - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 4321:8080
    networks:
      my_bridge:
    image: 'techblog/decompose:latest'

๐Ÿ”ผ Back to top

DeUnHealth

  deunhealth:
    container_name: deunhealth
    restart: $RESTART_POLICY
    hostname: deunhealth
    environment:
      - DOCKER_HOST=unix://$DOCKER_SOCKET
      - LOG_LEVEL=info
      - HEALTH_SERVER_ADDRESS=127.0.0.1:9999
      - TZ=$TZ
    volumes:
      - $DOCKER_SOCKET:/var/run/docker.sock
    network_mode: "none"
    image: 'qmcgaw/deunhealth:latest'

๐Ÿ”ผ Back to top

DDNS-Updater

  ddns-updater:
    container_name: ddns-updater
    restart: $ALWAYS_ON_POLICY
    hostname: ddns-updater
    environment:
      - TZ=$TZ
      - PUID=$PUID
      - PGID=$PGID
      # - USER="0" #run the container as root 
      - PERIOD=5m
      - UPDATE_COOLDOWN_PERIOD=5m
      - PUBLICIP_FETCHERS=all
      - PUBLICIP_HTTP_PROVIDERS=all
      - PUBLICIPV4_HTTP_PROVIDERS=all
      - PUBLICIPV6_HTTP_PROVIDERS=all
      - PUBLICIP_DNS_PROVIDERS=all
      - PUBLICIP_DNS_TIMEOUT=3s
      - HTTP_TIMEOUT=10s
      - LISTENING_PORT=8000
      - HEALTH_SERVER_ADDRESS=127.0.0.1:9999
      - ROOT_URL=/
      - BACKUP_PERIOD=24h # 0 to disable
      - BACKUP_DIRECTORY=/updater/data
      - LOG_LEVEL=info
      - LOG_CALLER=hidden
      - SHOUTRRR_ADDRESSES=pushover://shoutrrr:$PUSHOVER_DDNS_API@$PUSHOVER_USER_KEY
    volumes:
      - $PERSIST/ddns-updater:/updater/data
    networks:
      my_bridge:
    ports:
      - 8002:8000/tcp
    user: $PUID:$PGID
    labels: 
      autoheal: $AUTOHEAL_RESTART
      autoheal.stop.timeout: 30
      monocker.enable: $MONOCKER_ENABLE
    image: 'qmcgaw/ddns-updater:latest'

๐Ÿ”ผ Back to top

DHCPdns

  dhcpdns:
    container_name: dhcpdns
    restart: $ALWAYS_ON_POLICY
    hostname: dhcpdns
    privileged: true
    environment:
      - PUID=$PUID
      - PGID=$PGID
    volumes:
        - $PERSIST/dhcpdns:/data
        - $PERSIST/dhcpdns/dhcp/dhcpd.conf:/data/dhcp/dhcpd.conf:rw
    network_mode: host
    ports:
      - 67:67/udp
      - 10000:10000/tcp
    cap_add:
        - NET_ADMIN
    image: 'mayankt/dhcpdns:latest'

๐Ÿ”ผ Back to top

DockGE

  dockge:
    container_name: dockge
    restart: $RESTART_POLICY
    hostname: dockge
    environment:
      - DOCKER_HOST=$DOCKER_HOST #$SOCKET
      - DOCKGE_STACKS_DIR=$PERSIST/dockge/stacks
    volumes:
      # - $DOCKER_SOCKET:/var/run/docker.sock
      - $PERSIST/dockge/data:/app/data
      - $PERSIST/dockge/stacks:$PERSIST/dockge/stacks #(Both paths match)
    ports:
      - 6001:5001
    networks:
      my_bridge:
    image: 'louislam/dockge:1'

๐Ÿ”ผ Back to top

Doku

  doku:
    container_name: doku
    restart: $RESTART_POLICY
    hostname: doku
    environment:
        - DOCKER_HOST=$DOCKER_HOST
    volumes:
        # - $DOCKER_SOCKET:/var/run/docker.sock:ro
        - /:/hostroot:ro
    ports:
        - 9090:9090
    image: 'amerkurev/doku:latest'

๐Ÿ”ผ Back to top

DuckDNS

  duckdns:
    container_name: duckdns
    restart: $ALWAYS_ON_POLICY
    hostname: duckdns
    environment:
      - DUCKDNS_DOMAIN=$DOMAINNAME 
      - DUCKDNS_TOKEN=$DUCKTOKEN 
      - DUCKDNS_DELAY=5
      - TZ=$TZ
    networks:
      my_bridge:
    image: 'maksimstojkovic/duckdns:latest'

๐Ÿ”ผ Back to top

Dufs

  dufs:
    container_name: dufs
    restart: $RESTART_POLICY
    hostname: dufs
    volumes:
      - $PERSIST/dufs:/data
    networks:
      my_bridge:
    ports:
      - 4688:5000
    command: /data -A
    tty: true
    image: 'sigoden/dufs:latest'

๐Ÿ”ผ Back to top

Emby

  emby:
    container_name: emby
    restart: $ALWAYS_ON_POLICY
    hostname: emby
    environment:
      - UID=1028
      - GID=2
      - TZ=$TZ
    volumes:
      - $PERSIST/emby/config:/config:rw
      - $PERSIST/emby/backup:/backup:rw
      - $MEDIA_PATH:/media:rw
      # - /dev/shm:/data/transcode
    ports:
      - 0.0.0.0::1900/udp
      - 0.0.0.0::7359/udp
      - 8096:8096/tcp
      - 2096:8920/tcp #cloudflare supported https port https://developers.cloudflare.com/fundamentals/get-started/reference/network-ports/
    networks:
      my_bridge:
    # devices:
    #   - /dev/dri:/dev/dri # for hardware transcoding
    labels: 
      monocker.enable: $MONOCKER_ENABLE
    image: 'emby/embyserver:latest'

๐Ÿ”ผ Back to top

EmbyStat

  embystat:
    container_name: embystat
    restart: $RESTART_POLICY
    hostname: embystat
    environment:
      - PUID=$PUID
      - PGID=$PGID
      - TZ=$TZ
    volumes:
      - $PERSIST/embystat:/app/config
    ports:
      - 6555:6555
    networks:
      my_bridge:
    image: 'uping/embystat:beta-linux-x64'

๐Ÿ”ผ Back to top

Fail2Ban

  fail2ban:
    container_name: fail2ban
    restart: $RESTART_POLICY
    hostname: fail2ban
    environment: 
      - PUID=$PUID
      - PGID=$PGID
      - TZ=$TZ
      - F2B_DB_PURGE_AGE=30d
      - F2B_LOG_TARGET=/data/fail2ban.log
      - F2B_LOG_LEVEL=INFO
      - F2B_IPTABLES_CHAIN=INPUT
      # - SSMTP_HOST=$GM_HOST
      # - SSMTP_PORT=$GM_PORT
      # - SSMTP_HOSTNAME=pop.gmail.com
      # - SSMTP_USER=$GM_USER
      # - SSMTP_PASSWORD=$GM_PSW
      # - SSMTP_TLS=NO
      # - SSMTP_STARTTLS=NO
    volumes:
      - $PERSIST/fail2ban:/data
      - $PERSIST/authelia/config:/var/log/authelia:ro
      - $PERSIST/vaultwarden/vaultwarden.log:/var/log/vaultwarden/vaultwarden.log:ro
      - $PERSIST/data/navidrome/navidrome.log:/var/log/navidrome/navidrome.log:ro
    network_mode: host
    privileged: true
    cap_add:
      - NET_ADMIN
      - NET_RAW
    image: 'crazymax/fail2ban:latest'

๐Ÿ”ผ Back to top

FlatNotes

  flatnotes:
    container_name: flatnotes
    restart: $RESTART_POLICY
    hostname: flatnotes
    environment:
      PUID: $PUID
      PGID: $PGID
      FLATNOTES_AUTH_TYPE: "password"
      FLATNOTES_USERNAME: "admin"
      FLATNOTES_PASSWORD: "$DB_PASSWORD"
      FLATNOTES_SECRET_KEY: "$APP_KEY"
    volumes:
      - $PERSIST/flatnotes/data:/data
      - $PERSIST/flatnotes/index:/data/.flatnotes # Optional. Allows you to save the search index in a different location: 
    ports:
      - 8053:8080
    networks:
      my_bridge:
    image: 'dullage/flatnotes:latest'

๐Ÿ”ผ Back to top

Forgejo

  forgejo:
    container_name: forgejo
    restart: $RESTART_POLICY
    hostname: forgejo
    environment:
      - USER_UID=$PUID
      - USER_GID=$PGID
    networks:
      my_bridge:
    volumes:
      - $PERSIST/forgejo:/data
      - $TIME_ZONE:/etc/TZ:ro
      - $LOCAL_TIME:/etc/localtime:ro
    ports:
      - 3332:3000
      - 223:22
    image: 'codeberg.org/forgejo/forgejo:1.21'

๐Ÿ”ผ Back to top

Glances

  glances:
    container_name: glances
    restart: $RESTART_POLICY
    hostname: glances
    environment:
      - TZ=$TZ
      - GLANCES_OPT=--webserver
    volumes:
      - $DOCKER_SOCKET:/var/run/docker.sock:ro
      - $PERSIST/glances:/glances/conf
    pid: host
    ports:
      - 61208:61208
    image: 'joweisberg/glances:latest'

๐Ÿ”ผ Back to top

GoAccess

  goaccess:
    container_name: goaccess
    restart: $RESTART_POLICY
    hostname: goaccess
    environment:
        - PUID=$PUID
        - PGID=$PGID
        - TZ=$TZ
        - BASIC_AUTH=true
        - BASIC_AUTH_USERNAME=admin
        - BASIC_AUTH_PASSWORD=$DB_PASSWORD
    volumes:
        - $PERSIST/nginx-proxy/logs:/opt/log
    ports:
        - 7880:7880
    networks:
      my_bridge:
    image: 'xavierh/goaccess-for-nginxproxymanager:latest'

๐Ÿ”ผ Back to top

Grafana

  grafana:
    container_name: grafana
    restart: $RESTART_POLICY
    hostname: grafana
    environment: #You can do this with any of the configuration options in https://github.com/grafana/grafana/blob/main/conf/defaults.ini by setting GF_<SectionName>_<KeyName>__FILE to the path of the file holding the secret.
      - GF_AUTH_DISABLE_LOGIN_FORM=true
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
      - GF_SECURITY_ALLOW_EMBEDDING=true
      - GF_FEATURE_TOGGLES_ENABLE=flameGraph
      - GF_DASHBOARDS_MIN_REFRESH_INTERVAL=1s
      # - GF_AUTH_DISABLE_LOGIN_FORM=true
      # - GF_AUTH_ANONYMOUS_ENABLED=true
      # - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
      # - GF_SERVER_ROOT_URL
    user: '1000'    
    volumes:
      - $PERSIST/grafana:/var/lib/grafana
    ports:
      - 3003:3000
    networks:
      my_bridge:
    depends_on:
      - influxdb
    image: 'grafana/grafana:main'

๐Ÿ”ผ Back to top

Home-Panel

  homepanel:
    container_name: homepanel
    restart: $RESTART_POLICY
    hostname: homepanel
    volumes:
      - $PERSIST/homepanel/data:/data
    ports:
      - 8234:8234
    networks:
      my_bridge:
    image: 'timmo001/home-panel:latest'

๐Ÿ”ผ Back to top

IT-Tools

  it-tools:
    container_name: it-tools
    restart: $RESTART_POLICY
    hostname: it-tools
    networks:
      my_bridge:
    ports:
      - 5545:80
    image: 'corentinth/it-tools:latest'

๐Ÿ”ผ Back to top

Jellyseerr

  jellyseerr:
    container_name: jellyseerr
    restart: $RESTART_POLICY
    hostname: mediatracker
    environment:
        - LOG_LEVEL=debug
        - TZ=$TZ
    ports:
        - 6556:5055
    networks:
      my_bridge:
    volumes:
        - $PERSIST/jellyseerr:/app/config
    image: 'fallenbagel/jellyseerr:latest'

๐Ÿ”ผ Back to top

Joplin

  joplin:
    container_name: joplin
    restart: $RESTART_POLICY
    hostname: joplin
    environment:
        - APP_PORT=2230
        - APP_BASE_URL=https://joplin.$DOMAINNAME/
        - DB_CLIENT=pg
        - POSTGRES_PASSWORD=$DB_PASSWORD
        - POSTGRES_DATABASE=joplindb
        - POSTGRES_USER=joplin
        - POSTGRES_PORT=5432
        - POSTGRES_HOST=joplindb
    ports:
        - 2230:2230
    networks:
      my_bridge:
    depends_on:
        - joplindb
    image: 'joplin/server:latest'

๐Ÿ”ผ Back to top

JoplinDB

  joplindb:
    container_name: joplindb
    restart: $RESTART_POLICY
    hostname: joplindb
    environment:
        - POSTGRES_PASSWORD=$DB_PASSWORD
        - POSTGRES_USER=joplin
        - POSTGRES_DB=joplindb
    volumes:
        - $PERSIST/joplin:/var/lib/postgresql/data
    networks:
      my_bridge:
    image: 'postgres:13.1'

๐Ÿ”ผ Back to top

KanBoard

  kanboard:
    container_name: kanboard
    restart: $RESTART_POLICY
    hostname: kanboard
    volumes:
      - $PERSIST/kanboard/data:/var/www/app/data
      - $PERSIST/kanboard/plugins:/var/www/app/plugins
      - $PERSIST/kanboard/ssl:/etc/nginx/ssl
    # environment:
    #   DATABASE_URL: mysql://kanboard:$DB_PASSWORD@db/kanboard
    networks:
      my_bridge:
    ports:
      - 4480:80
      - 4443:443
    image: 'kanboard/kanboard:latest'

๐Ÿ”ผ Back to top

Kea

  kea:
    container_name: kea-dhcp4
    restart: $ALWAYS_ON_POLICY
    hostname: kea
    network_mode: host
    command: -c /kea/config/dhcp4.json
    volumes:
      - $PERSIST/kea/config:/kea/config
      - $PERSIST/kea/sockets:/kea/sockets
      - $PERSIST/kea/leases:/kea/leases
      - $PERSIST/kea/logs:/kea/logs
    labels: 
      monocker.enable: $MONOCKER_ENABLE
    image: 'jonasal/kea-dhcp4:2' # do not use the alpine as it does not support routing to Adguard

๐Ÿ”ผ Back to top

Lets Encrypt

  letsencrypt:
    container_name: letsencrypt
    restart: $ALWAYS_ON_POLICY
    hostname: letsencrypt
    volumes:
      - $PERSIST/homeassistant/ssl:/etc/letsencrypt:rw
    environment:
      - DUCKDNS_DOMAIN=$DOMAINNAME
      - DUCKDNS_TOKEN=$DUCKTOKEN
      - LETSENCRYPT_EMAIL=$GM_USER
      - LETSENCRYPT_DOMAIN=$DOMAINNAME
      - LETSENCRYPT_WILDCARD=ture
      - TZ=$TZ
    networks:
      my_bridge:
    image: 'maksimstojkovic/letsencrypt:latest'

๐Ÿ”ผ Back to top

LibreTranslate

  libretranslate:
    container_name: libretranslate
    restart: $RESTART_POLICY
    hostname: libretranslate
    environment:
      LT_LOAD_ONLY: en,ar #,de,zh,it,es,fr,pl,tr,ru,fi,nl,id,cs,el,hu,sk
      # LT_API_KEYS: true
      # LT_API_KEYS_DB_PATH: /app/db/api_keys.db # Same result as `db/api_keys.db` or `./db/api_keys.db`
      # LT_UPDATE_MODELS: true
    # volumes:
    #   - $PERSIST/libretranslate/db:/app/db
    #   - $PERSIST/libretranslate/models:/home/libretranslate/.local:rw
    healthcheck:
      test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
    security_opt:
      - no-new-privileges:true
    ports:
      - 7821:5000
    networks: 
      my_bridge:
    image: 'libretranslate/libretranslate:latest'

๐Ÿ”ผ Back to top

LibreX

  librex:
    container_name: librex
    restart: $ALWAYS_ON_POLICY
    hostname: librex
    environment:
      - PUID=$PUID
      - PGID=$PGID
      - VERSION=docker
      - TZ=$TZ
      - CONFIG_GOOGLE_DOMAIN=com
      - CONFIG_GOOGLE_LANGUAGE_SITE=en
      - CONFIG_GOOGLE_LANGUAGE_RESULTS=en
      - CONFIG_WIKIPEDIA_LANGUAGE=en
    volumes:
      - $PERSIST/librex/nginx:/var/log/nginx
      - $PERSIST/librex/logs:/var/log/php7
    ports:
      - 8245:8080
    networks:
      my_bridge:
    image: 'librex/librex:latest'

๐Ÿ”ผ Back to top

Lingva-Translate

  lingva:
    container_name: lingva
    restart: $RESTART_POLICY
    hostname: lingva
    environment:
      site_domain: translate.$DOMAINNAME
      force_default_theme: dark
      default_source_lang: auto
      default_target_lang: en
    ports:
      - 6455:3000
    networks:
      my_bridge: 
    security_opt:
      - no-new-privileges:true
    image: 'thedaviddelta/lingva-translate:latest'

๐Ÿ”ผ Back to top

Memos

  memos:
    container_name: memos
    restart: $RESTART_POLICY
    hostname: memos
    volumes:
      - $PERSIST/memos:/var/opt/memos
    ports:
      - 5230:5230
    networks:
      my_bridge:
    labels: 
      # autoheal: $AUTOHEAL_RESTART
      monocker.enable: $MONOCKER_ENABLE
    image: 'neosmemo/memos:latest'

๐Ÿ”ผ Back to top

MiddleFinger

  middlefinger:
    container_name: middlefinger
    restart: $ALWAYS_ON_POLICY
    hostname: middlefinger
    ports:
      - 404:8080
    networks:
      my_bridge:
    image: 'modem7/middle-finger:dual'

๐Ÿ”ผ Back to top

Node-Exporter

  node-exporter:
    container_name: node-exporter
    restart: $RESTART_POLICY
    hostname: node-exporter
    privileged: true
    ports:
      - 9100:9100
    networks:
      my_bridge:
    image: 'prom/node-exporter:latest'

๐Ÿ”ผ Back to top

Node-RED

  nodered:
    container_name: nodered
    restart: $RESTART_POLICY
    hostname: nodered
    environment:
      - TZ=$TZ
    volumes:
      - $PERSIST/nodered:/data
    ports:
      - 1880:1880/tcp
    healthcheck:
      test: curl -fSs http://127.0.0.1:1880 || exit 1
      start_period: 90s
      timeout: 10s
      interval: 5s
      retries: 3    
    networks:
      my_bridge:
    working_dir: /usr/src/node-red
    labels:
      - autoheal=$AUTOHEAL_RESTART
    image: 'nodered/node-red:latest'

๐Ÿ”ผ Back to top

Nginx Proxy Manager

  npm:
    container_name: nginx-proxy-manager
    restart: $ALWAYS_ON_POLICY
    hostname: nginx-proxy-manager
    environment:
      PUID: $PUID
      PGID: $PGID
      TZ: $TZ
    #  DB_SQLITE_FILE: "/data/database.sqlite"
      DB_MYSQL_HOST: 'mariadb'
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: 'npm'
      DB_MYSQL_PASSWORD: '$DB_PASSWORD'
      DB_MYSQL_NAME: 'npmdb'
      DISABLE_IPV6: 'true'
    volumes:
      - $PERSIST/nginx-proxy/letsencrypt:/etc/letsencrypt:rw
      - $PERSIST/nginx-proxy:/data:rw
    ports:
      - 880:80 
      - 881:81
      - 843:443
    networks:
      my_bridge:
    depends_on:
        mariadb:
          condition: service_healthy
    image: 'jc21/nginx-proxy-manager:latest'

๐Ÿ”ผ Back to top

Our Shopping List

  osl:
    container_name: osl
    restart: $ALWAYS_ON_POLICY
    hostname: osl
    environment:
      LISTEN_PORT: 8080
      MONGODB_HOST: osldb
      MONGODB_PORT: 27017
      MONGODB_DB: osl
      VUE_APP_I18N_LOCALE: en
      VUE_APP_I18N_FALLBACK_LOCALE: en
      VUE_APP_I18N_FORCE_LOCALE: 0
      VUE_APP_SINGLEBOARD_MODE: 0
    ports:
      - 8989:8080
    networks:
      my_bridge:
    depends_on:
      - osldb
    image: 'nanawel/our-shopping-list:latest'

๐Ÿ”ผ Back to top

Our Shopping List-DB

  osldb:
    container_name: osldb
    restart: $ALWAYS_ON_POLICY
    hostname: osldb
    volumes:
      - $PERSIST/mongodb/shoppinglist:/data/db
    ports:
      - 27017:27017
    networks:
      my_bridge:
    image: 'mongo:4.0'

๐Ÿ”ผ Back to top

Ouroboros

  ouroboros:
    container_name: ouroboros
    restart: $RESTART_POLICY
    hostname: ouroboros
    environment:
      - CLEANUP=true
      - LOG_LEVEL=info
      - CRON="0/15 1 * * *" #At every 15th minute from 0 through 59 past 1am
      - LATEST=true
      - SELF_UPDATE=true
      - SKIP_STARTUP_NOTIFICATIONS=true 
      - NOTIFIERS="pover://$PUSHOVER_USER_KEY@$PUSHOVER_OUROBOROS_API"
      #- IGNORE=esphome homeassistant
      - TZ=$TZ
    volumes:
      - $DOCKER_SOCKET:/var/run/docker.sock:rw
    networks:
      my_bridge:
    working_dir: /app
    image: 'pyouroboros/ouroboros:latest'

๐Ÿ”ผ Back to top

phpMyAdmin

  phpmyadmin:
    container_name: phpmyadmin
    restart: $RESTART_POLICY
    hostname: phpmyadmin
    environment:
      - PMA_HOST=mariadb
      - PMA_USER=root
      - PMA_PASSWORD=$DB_PASSWORD
      - TZ=$TZ
    volumes:
       - $LOCAL_TIME:/etc/localtime:ro
    ports:
      - 3300:80 
    networks:
      my_bridge:
    depends_on:
      - mariadb
    tty: true
    image: 'phpmyadmin/phpmyadmin:latest'

๐Ÿ”ผ Back to top

Phlare

  phlare:
    container_name: phlare
    restart: $RESTART_POLICY
    hostname: phlare
    volumes:
      - $PERSIST/phlare/config.yaml:/etc/phlare/config.yaml'
    ports:
      - 4100:4100
    networks:
      my_bridge:
    command: --config.file=/etc/phlare/config.yaml
    image: 'grafana/phlare:latest'

๐Ÿ”ผ Back to top

Photoprism

  photoprism:
    container_name: photoprism
    restart: $RESTART_POLICY
    hostname: photoprism
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    user: $PUID:$PGID
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:2342
    ports:
      - 2342:2342        
    volumes:
      - $PERSIST/photoprism/import:/photoprism/import:rw       # *Optional* base folder from which files can be imported to originals    
      - $PERSIST/photoprism/storage:/photoprism/storage:rw
      - $MEDIA_PATH/Photos:/photoprism/originals:rw
#     - /volume1/docker/photoprism/family:/photoprism/originals/family:rw               # *Additional* media folders can be mounted like this
    environment:
      PHOTOPRISM_ADMIN_USER: tam
      PHOTOPRISM_ADMIN_PASSWORD: ts*JhcmL&5zc^5
      PHOTOPRISM_UID: $PUID
      PHOTOPRISM_GID: $PGID
      PHOTOPRISM_AUTH_MODE: password
      PHOTOPRISM_SITE_URL: http://localhost:2342/
      PHOTOPRISM_ORIGINALS_LIMIT: 5120
      PHOTOPRISM_HTTP_COMPRESSION: gzip
      PHOTOPRISM_READONLY: false
      PHOTOPRISM_EXPERIMENTAL: false
      PHOTOPRISM_DISABLE_CHOWN: false
      PHOTOPRISM_DISABLE_WEBDAV: false
      PHOTOPRISM_DISABLE_SETTINGS: false
      PHOTOPRISM_DISABLE_TENSORFLOW: false
      PHOTOPRISM_DISABLE_FACES: false
      PHOTOPRISM_DISABLE_CLASSIFICATION: false
      PHOTOPRISM_DISABLE_RAW: true
      PHOTOPRISM_RAW_PRESETS: false
      PHOTOPRISM_DISABLE_DARKTABLE: true
      PHOTOPRISM_DISABLE_RAWTHERAPEE: true
      PHOTOPRISM_DISABLE_IMAGEMAGICK: true
      PHOTOPRISM_DISABLE_HEIFCONVERT: true
      PHOTOPRISM_DISABLE_RSVGCONVERT: true
      PHOTOPRISM_JPEG_QUALITY: 100
      PHOTOPRISM_DETECT_NSFW: false
      PHOTOPRISM_UPLOAD_NSFW: true
      PHOTOPRISM_SPONSOR: true
      PHOTOPRISM_DATABASE_DRIVER: mysql
      PHOTOPRISM_DATABASE_SERVER: mariadb:3306
      PHOTOPRISM_DATABASE_NAME: photoprism
      PHOTOPRISM_DATABASE_USER: photoprism
      PHOTOPRISM_DATABASE_PASSWORD: $DB_PASSWORD
      PHOTOPRISM_WORKERS: 2
      PHOTOPRISM_THUMB_FILTER: blackman       # best to worst: blackman, lanczos, cubic, linear
      PHOTOPRISM_APP_MODE: standalone         # progressive web app MODE - fullscreen, standalone, minimal-ui, browser
#     PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
#     PHOTOPRISM_SITE_DESCRIPTION: ""
#     PHOTOPRISM_SITE_AUTHOR: ""
    working_dir: "/photoprism"
    networks:
      my_bridge:
    depends_on:
      mariadb:
        condition: service_started
    image: 'photoprism/photoprism:latest'

๐Ÿ”ผ Back to top

Photoview

  photoview:
    container_name: photoview
    restart: $RESTART_POLICY
    hostname: photoview
    environment:
      PHOTOVIEW_DATABASE_DRIVER: postgres
      PHOTOVIEW_POSTGRES_URL: postgresql://photoview:photoview@photoview-postgress:5432/photoview
      PHOTOVIEW_LISTEN_PORT: 4000
      PHOTOVIEW_MEDIA_CACHE: /app/cache
    volumes:
      - $PERSIST/photoview/cache:/app/cache:rw
      - $MEDIA_PATH/Photos:/photos:ro
      # - /path_to_photos:/photos2:ro
    ports:
      - 7354:4000
    networks:
      my_bridge:
    security_opt:
      - no-new-privileges:true
    read_only: true
    user: $PUID:$PGID
    healthcheck:
      test: curl -f http://localhost:4000/ || exit 1
    depends_on:
      photoview-postgress:
        condition: service_healthy
    image: 'viktorstrate/photoview:2'

๐Ÿ”ผ Back to top

Photoview-Postgress

  photoview-postgress:
    container_name: photoview-postgress
    restart: $RESTART_POLICY
    hostname: photoview-postgress
    environment:
      POSTGRES_DB: photoview
      POSTGRES_USER: photoview
      POSTGRES_PASSWORD: photoview
    volumes:
      - $PERSIST/photoview/db:/var/lib/postgresql/data:rw
    networks:
      my_bridge:  
    security_opt:
      - no-new-privileges:true
    user: $PUID:$PGID
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "photoview", "-U", "photoview"]
      timeout: 45s
      interval: 10s
      retries: 10
    image: 'postgres:alpine'

๐Ÿ”ผ Back to top

PicoShare

  picoshare:
    container_name: picoshare
    restart: $RESTART_POLICY
    hostname: picoshare
    environment:
      - PORT=3001
      - PS_SHARED_SECRET=$PASSWD # Change to any password
    volumes:
      - $PERSIST/picoshare:/data
    ports:
      - 8179:3001
    networks:
      my_bridge:
    command: -db /data/store.db -vacuum true
    image: 'mtlynch/picoshare:latest'

๐Ÿ”ผ Back to top

Pigallery

  pigallery:
    container_name: pigallery
    hostname: pigallery
    restart: $RESTART_POLICY
    environment:
      NODE_ENV: production
      PORT: 8080
    volumes:
      - $PERSIST/pigallery/db:/app/data/db:rw
      - $PERSIST/pigallery/config:/app/data/config:rw
      - $PERSIST/pigallery/tmp:/app/data/tmp:rw
      - $MEDIA_PATH/Photos:/app/data/images:ro  # Point to your photos folder
    ports:
      - 9842:8080
    networks:
      my_bridge:  
    security_opt:
      - no-new-privileges:true
    read_only: true
    user: $PUID:$PGID
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:8080
    image: 'bpatrik/pigallery2:latest'

๐Ÿ”ผ Back to top

Piped-Postgres

  piped-postgres:
    container_name: piped-postgres
    hostname: piped-postgres
    restart: $RESTART_POLICY
    volumes:
      - $PERSIST/piped/db:/var/lib/postgresql/data
    environment:
      TZ: $TZ
      POSTGRES_DB: piped
      POSTGRES_USER: piped
      POSTGRES_PASSWORD: $DB_PASSWORD
    networks:
      my_bridge:
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "piped", "-U", "piped"]
      timeout: 45s
      interval: 10s
      retries: 10
    labels: 
      autoheal: $AUTOHEAL_RESTART
    user: $PUID:$PGID
    image: 'postgres:alpine'

๐Ÿ”ผ Back to top

Piped-Backend

  piped-backend:
    container_name: piped-backend
    hostname: piped-backend
    restart: $RESTART_POLICY
    volumes:
      - $PERSIST/piped/config.properties:/app/config.properties:ro
    networks:
      my_bridge:
    healthcheck:
      test: stat /etc/passwd || exit 1
    labels: 
      autoheal: $AUTOHEAL_RESTART
      monocker.enable: $MONOCKER_ENABLE
    security_opt:
      - no-new-privileges:true
    depends_on:
      piped-postgres:
        condition: service_healthy
    image: '1337kavin/piped:latest'

๐Ÿ”ผ Back to top

Piped-Frontend

  piped-frontend:
    container_name: piped-frontend
    hostname: piped-frontend
    restart: $RESTART_POLICY
    networks:
      my_bridge:
    security_opt:
      - no-new-privileges:true
    depends_on:
      piped-backend:
        condition: service_healthy
    entrypoint: ash -c 'sed -i s/pipedapi.kavin.rocks/utubeapi.tamimology.com/g /usr/share/nginx/html/assets/* && /docker-entrypoint.sh && nginx -g "daemon off;"'
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:80
    labels: 
      autoheal: $AUTOHEAL_RESTART
      monocker.enable: $MONOCKER_ENABLE
    image: '1337kavin/piped-frontend:latest'

๐Ÿ”ผ Back to top

Piped-Nginx

  piped-nginx:
    container_name: piped-nginx
    restart: $RESTART_POLICY
    hostname: piped-nginx
    ports:
      - 7601:80
    networks:
      my_bridge:
    volumes:
      - $PERSIST/piped/proxy:/var/run/ytproxy:rw
      - $PERSIST/piped/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - $PERSIST/piped/nginx/pipedapi.conf:/etc/nginx/conf.d/pipedapi.conf:ro
      - $PERSIST/piped/nginx/pipedproxy.conf:/etc/nginx/conf.d/pipedproxy.conf:ro
      - $PERSIST/piped/nginx/pipedfrontend.conf:/etc/nginx/conf.d/pipedfrontend.conf:ro
      - $PERSIST/piped/nginx/ytproxy.conf:/etc/nginx/snippets/ytproxy.conf:ro
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:80
    labels: 
      autoheal: $AUTOHEAL_RESTART
      monocker.enable: $MONOCKER_ENABLE
    depends_on:
      piped-backend:
        condition: service_healthy
      piped-frontend:
        condition: service_healthy
      piped-proxy:
        condition: service_started
    image: 'nginx:mainline-alpine'

๐Ÿ”ผ Back to top

Piped-Proxy

  piped-proxy:
    container_name: piped-proxy
    restart: $RESTART_POLICY
    hostname: piped-proxy
    environment:
      UDS: 1
    volumes:
      - $PERSIST/piped/proxy:/app/socket:rw
    networks:
      my_bridge:
    read_only: true
    security_opt:
      - no-new-privileges:true
    image: '1337kavin/piped-proxy:latest'

๐Ÿ”ผ Back to top

Piwigo

  piwigo:
    container_name: piwigo
    restart: $RESTART_POLICY
    hostname: piwigo
    volumes:
      - $PERSIST/piwigo/config:/config
      - $MEDIA_PATH/Photo Albums:/gallery
    environment:
      - PUID=$PUID
      - PGID=$PGID
      - TZ=$TZ
    healthcheck:
      test: curl -fSs http://127.0.0.1:80 || exit 1
      start_period: 120s
      timeout: 10s
      interval: 5s
      retries: 3
    ports:
      - 8100:80
    networks:
      my_bridge:
    labels:
      - autoheal=$AUTOHEAL_RESTART
    depends_on:
      - piwigodb
    image: 'ghcr.io/linuxserver/piwigo:latest'

๐Ÿ”ผ Back to top

Piwigo-DB

  piwigodb:
    container_name: piwigo-db
    restart: $RESTART_POLICY
    hostname: piwigodb
    volumes:
      - $PERSIST/piwigo/db:/config
    environment:
      - PUID=$PUID
      - PGID=$PGID
      - TZ=$TZ
      - MYSQL_ROOT_PASSWORD=piwigo
      - MYSQL_DATABASE=piwigo
      - MYSQL_USER=piwigo
      - MYSQL_PASSWORD=$DB_PASSWORD
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "--silent"]
    expose: 
      - 3306
    networks:
      my_bridge:
    image: 'jbergstroem/mariadb-alpine:10.6.13'

๐Ÿ”ผ Back to top

Prometheus

  prometheus:
    container_name: prometheus
    restart: $RESTART_POLICY
    hostname: prometheus
    volumes:
      - $PERSIST/prometheus/data:/prometheus
      - $PERSIST/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    depends_on:
        - cadvisor
    ports:
      - 9090:9090
    networks:
      my_bridge:
    user: root
    command: "--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus"
    image: 'prom/prometheus:latest' 

๐Ÿ”ผ Back to top

Plex Media Server

  plex:
    container_name: plex
    restart: $RESTART_POLICY
    hostname: plex
    environment:
      - PLEX_CLAIM=$PLEX_CLAIM_TOKEN
      - PLEX_GID=$PGID
      - PLEX_UID=$PUID
      - TZ=$TZ
    volumes:
      - $PERSIST/plex/config:/config:rw
      - $PERSIST/plex/transcode:/transcode:rw
      - $PERSIST/plex/data:/data:rw
      - $MEDIA_PATH:/media:rw
    healthcheck:
      test: curl -fsS http://localhost:32400/identity > /dev/null || exit 1
      start_period: 60s
      timeout: 10s
      interval: 5s
      retries: 3
    #network_mode: "host"
    networks:
      my_bridge:
    labels:
      - autoheal=$AUTOHEAL_RESTART
    image: 'plexinc/pms-docker:latest'

๐Ÿ”ผ Back to top

Portainer-CE

  portainer:
    container_name: portainer-ce
    restart: $ALWAYS_ON_POLICY
    hostname: portainer
    privileged: true
    command: -H $DOCKER_HOST --tlsskipverify
    environment:
      DOCKER_HOST: $SOCKET
    volumes:
      - $DOCKER_SOCKET:/var/run/docker.sock
      - $PERSIST/portainer:/data
    ports:
      - 8000:8000/tcp
      - 9000:9000/tcp
      - 9443:9443/tcp
    networks:
      my_bridge:
    image: 'portainer/portainer-ce:alpine'

๐Ÿ”ผ Back to top

Reiverr

  reiverr:
    container_name: reiverr
    restart: $RESTART_POLICY
    hostname: reiverr
    volumes:
      - $PERSIST/reiverr:/config
    ports:
      - 9494:9494
    networks:
      my_bridge:
    image: 'ghcr.io/aleksilassila/reiverr:latest'

๐Ÿ”ผ Back to top

SearXNG

  searxng:
    container_name: searxng
    restart: $ALWAYS_ON_POLICY
    hostname: searxng
    environment:
      - SEARXNG_BASE_URL=https://search.$DOMAINNAME/
    volumes:
      - $PERSIST/searxng:/etc/searxng:rw
    ports:
     - 5080:8080
    networks:
      my_bridge:
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - DAC_OVERRIDE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
    image: 'searxng/searxng:latest'

๐Ÿ”ผ Back to top

Shiori

  shiori:
    container_name: shiori
    restart: $RESTART_POLICY
    hostname: shiori
    environment:
      - PUID=1000
      - PGID=1000
    ports:
        - 18080:8080
    networks:
      my_bridge:
    volumes:
        - $PERSIST/shiori:/shiori
    image: 'ghcr.io/go-shiori/shiori:latest'

๐Ÿ”ผ Back to top

SnipeIT

  snipeit:
    image: 'snipe/snipe-it:latest-alpine' #https://hub.docker.com/r/snipe/snipe-it/
    container_name: snipeit
    restart: on-failure:5
    healthcheck:
      test: curl -f http://localhost:80/ || exit 1
    depends_on:
      - mariadb
    networks:
      my_bridge:
    volumes:
      - $PERSIST/snipeit:/config:rw
    environment:
      - TZ=$TZ
      - APP_URL=http://192.168.1.10:1339
      - APP_KEY=base64:jtww95XJZi2u97Nou8a9SMI2CZg6BOvfdUc7yF9y4bw=
      - MYSQL_PORT_3306_TCP_ADDR=mariadb
      - MYSQL_PORT_3306_TCP_PORT=3306
      - MYSQL_DATABASE=snipe
      - MYSQL_USER=snipe
      - MYSQL_PASSWORD=snipe
      - PGID=$PGID
      - PUID=$PUID
      - MAIL_PORT_587_TCP_ADDR=$GM_HOST
      - MAIL_PORT_587_TCP_PORT=$GM_PORT
      - MAIL_ENV_FROM_ADDR=$GM_USER
      - MAIL_ENV_FROM_NAME=Tamimology Server
      - MAIL_ENV_ENCRYPTION=SSL
      - MAIL_ENV_USERNAME=$GM_USER
      - MAIL_ENV_PASSWORD=$GM_PSW
    ports:
      - 1339:80

๐Ÿ”ผ Back to top

TLS-Socket-Proxy

  dsp:
    container_name: dsp
    restart: $ALWAYS_ON_POLICY
    hostname: dsp
    environment:
      CERTS_DIR: "/server-keys"
    volumes:
      - $PERSIST/socket-proxy/certs:/server-keys:ro #https://docs.docker.com/engine/security/protect-access/
      - $DOCKER_SOCKET:/var/run/docker.sock
    ports:
      - 2376:2376
    command: ["-dd", "-lmlocal2"]
    image: 'sjawhar/docker-socket-proxy:latest'

๐Ÿ”ผ Back to top

Vault

  vault:
    restart: on-failure:5
    container_name: vault
    environment:
      VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
    volumes:
      - $PERSIST/vault/logs:/vault/logs:rw
      - $PERSIST/vault/data:/vault/file:rw
      - $PERSIST/vault/config:/vault/config:rw
      - $PERSIST/vault/plugins:/vault/plugins:rw
      - $LOCAL_TIME:/etc/localtime:ro
    # hostname: vault
    # mem_limit: 512m
    # cpu_shares: 768
    ports:
      - 8205:8200
    networks:
      my_bridge:
    security_opt:
      - no-new-privileges:true
    cap_add:
      - IPC_LOCK
    entrypoint: vault server -config=/vault/config/vault.json
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:8200
    image: 'hashicorp/vault:latest'

๐Ÿ”ผ Back to top

Visual Studio Code

  vscode:
    container_name: vscode
    restart: $RESTART_POLICY
    hostname: vscode
    environment:
      - PASSWORD=$DB_PASSWORD
    volumes:
      - $PERSIST/vscode:/home/coder/.local/share/code-server:rw
      - $PERSIST/homeassistant:/home/coder/project:rw
    ports:
      - 8181:8080
    networks:
      my_bridge:
    working_dir: /home/coder
    command: code-server --no-auth # if using proxy add: --allow-http
    image: 'codercom/code-server:latest'

๐Ÿ”ผ Back to top

Container-WebTTY

  webtty:
    container_name: container-webtty
    restart: $RESTART_POLICY
    hostname: webtty
    environment:
      - DOCKER_HOST=$SOCKET
    # volumes:
    #   - $DOCKER_SOCKET:/var/run/docker.sock
    ports:
      - 8818:8080
    networks:
      my_bridge:
    image: 'wrfly/container-web-tty:0.1.10' #latest'

๐Ÿ”ผ Back to top

WhatsUpDocker

  whatsupdocker:
    container_name: whatsupdocker
    restart: $RESTART_POLICY
    hostname: whatsupdocker
    environment:
      - DOCKER_HOST=$SOCKET  
      # - TZ=$TZ
      - WUD_TRIGGER_PUSHOVER_1_TOKEN=$PUSHOVER_DOCKER_UPDATES_API
      - WUD_TRIGGER_PUSHOVER_1_USER=$PUSHOVER_USER_KEY
      # - WUD_TRIGGER_PUSHOVER_1_DEVICE=myIphone,mySamsung
      - WUD_WATCHER_LOCAL_CRON=0 10 * * *
    volumes:
    #   - /var/run/docker.sock:/var/run/docker.sock
      - $PERSIST/wud:/store
      - $LOCAL_TIME:/etc/localtime:ro
    healthcheck:
      test: wget --no-verbose --tries=1 --no-check-certificate --spider http://localhost:3000
      interval: 10s
      timeout: 10s
      retries: 3
      start_period: 10s  
    networks:
      my_bridge:
    ports:
      - 3000:3000
    image: 'fmartinou/whats-up-docker:latest'

๐Ÿ”ผ Back to top

WebDAV

  webdav:
    container_name: webdav
    restart: $RESTART_POLICY
    hostname: webdav
    environment:
      PUID: $PUID
      PGID: $PGID
      AUTH_TYPE: Digest
      USERNAME: admin
      PASSWORD: $WEBDAVPWD
    volumes:
      - $PERSIST/webdav:/var/lib/dav
    ports:
      - 8888:80
    networks:
      my_bridge:
    image: 'bytemark/webdav:latest'

๐Ÿ”ผ Back to top

webNUT

  webnut:
    container_name: webnut
    restart: $ALWAYS_ON_POLICY
    hostname: webnut
    environment:
      UPS_HOST: "$LOCAL_HOST"
      UPS_PORT: "3493"
      UPS_USER: "upsadmin"
      UPS_PASSWORD: "secret"
    ports:
     - 6543:6543
    network_mode: host
    image: 'edgd1er/webnut:latest'

๐Ÿ”ผ Back to top

WeTTY

  wetty:
    container_name: wetty
    restart: $RESTART_POLICY
    hostname: wetty
    environment:
      SSHHOST: $LOCAL_HOST
      SSHPORT: 22
      SSHUSER: admin
      SSHPASS: $SSHPASS
      NODE_ENV: 'development'
      BASE: /
      VERSION: true
      # COMMAND: 'cd $PERSIST'
      TITLE: 'My SSH'
    ports:
      - 5800:3000
    networks:
      my_bridge:
        ipv4_address: $BRIDGE_NET.100
    tty: true
    working_dir: /usr/src/app
    image: 'wettyoss/wetty:latest'

๐Ÿ”ผ Back to top

xBackbone

  xbackbone:
    container_name: xbackbone
    restart: $RESTART_POLICY
    hostname: xbackbone
    environment:
      - PUID=$PUID
      - PGID=$PGID
      - TZ=$TZ
    volumes:
      - $PERSIST/xbackbone:/config
    ports:
      - 8522:80
      - 4443:443
    networks:
      my_bridge: 
    image: 'lscr.io/linuxserver/xbackbone:latest'

๐Ÿ”ผ Back to top

About

A YAML compose file with all images tried and found not useful, explanation and details

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published