├── compose-examples ├── .gitignore ├── images.png ├── README.md ├── start.txt ├── docker │ ├── .env │ ├── README.md │ └── compose.yaml ├── books │ ├── .env │ ├── README.md │ └── compose.yaml ├── download │ ├── .env │ ├── README.md │ └── compose.yaml ├── plex │ ├── README.md │ ├── .env │ └── compose.yaml ├── homeassistant │ ├── .env │ ├── README.md │ └── compose.yaml ├── productivity │ ├── .env │ ├── README.md │ └── compose.yaml └── network │ ├── .env │ ├── README.md │ └── compose.yaml ├── _config.yml ├── assets └── images │ ├── dockerholics-logo.png │ └── dockerholics-logo-blue.png ├── .github ├── workflows │ ├── linkcheck.yml │ └── labelsync.yml ├── dependabot.yml └── config │ └── labels.yml ├── LICENSE ├── .bashrc-syno ├── .bashrc └── README.md /compose-examples/.gitignore: -------------------------------------------------------------------------------- 1 | !.keep -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /compose-examples/images.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/petersem/dockerholics/HEAD/compose-examples/images.png -------------------------------------------------------------------------------- /assets/images/dockerholics-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/petersem/dockerholics/HEAD/assets/images/dockerholics-logo.png -------------------------------------------------------------------------------- /assets/images/dockerholics-logo-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/petersem/dockerholics/HEAD/assets/images/dockerholics-logo-blue.png -------------------------------------------------------------------------------- /compose-examples/README.md: -------------------------------------------------------------------------------- 1 | # Dockerholics Compose Examples 2 | Here you will finds a set of a directories for commonly used docker stacks. 3 | - Go into the directories to read more about them. 4 | - Review the start.txt file for the commands to run each of these stacks 5 | 6 | ![Docker stacks](images.png "Common Docker Stacks") 7 | -------------------------------------------------------------------------------- /compose-examples/start.txt: -------------------------------------------------------------------------------- 1 | docker-compose -f ./docker/compose.yaml up -d 2 | docker-compose -f ./download/compose.yaml up -d 3 | docker-compose -f ./network/compose.yaml up -d 4 | docker-compose -f ./plex/compose.yaml up -d 5 | docker-compose -f ./books/compose.yaml up -d 6 | docker-compose -f ./prductivity/compose.yaml up -d 7 | 8 | Or just go into each folder and type 9 | docker-compose up -d 10 | -------------------------------------------------------------------------------- /compose-examples/docker/.env: -------------------------------------------------------------------------------- 1 | # 2 | # Variables for the docker stack 3 | # 4 | 5 | # Input the tz database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 6 | TZ=Australia/Brisbane 7 | 8 | # Type 'id' in a terminal to get these values 9 | PUID=1000 10 | PGID=1000 11 | 12 | # path to docker folded 13 | DOCKER_PATH=~/docker 14 | 15 | # Watchtower 16 | WT_INTERVAL=15000 17 | WATCHTOWER_API_TOKEN=SectretAPIT0ken! 18 | 19 | -------------------------------------------------------------------------------- /.github/workflows/linkcheck.yml: -------------------------------------------------------------------------------- 1 | name: LinkCheck 2 | 3 | on: 4 | push: 5 | branches: ['*'] 6 | paths: ['README.md'] 7 | pull_request: 8 | paths: ['README.md'] 9 | workflow_dispatch: 10 | 11 | jobs: 12 | build: 13 | 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v6 18 | - uses: docker://dkhamsing/awesome_bot:latest 19 | with: 20 | args: /github/workspace/README.md --allow-redirect --white-list https://www.facebook.com/groups/205764024543769 -------------------------------------------------------------------------------- /compose-examples/docker/README.md: -------------------------------------------------------------------------------- 1 | # Docker - Docker app stack 2 | This will install and create containers for the following apps 3 | - autoheal 4 | - Portainer 5 | - Watchtower 6 | - Dozzle 7 | 8 | ## Prerequisites 9 | The following folders should be created 10 | - docker 11 | > - /c/docker (on windows) 12 | > - ~/docker (on linux) 13 | - {docker}/portainer 14 | > The above folder should be under your `docker` folder. 15 | 16 | ### Changes to .env file 17 | Review the .env and update 18 | - TZ 19 | - PUID 20 | - PGID 21 | -------------------------------------------------------------------------------- /compose-examples/books/.env: -------------------------------------------------------------------------------- 1 | # 2 | # Variables for the dl-pipeline stack 3 | # 4 | 5 | # Input the tz database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 6 | TZ=Australia/Brisbane 7 | 8 | # Type 'id' in a terminal to get these values 9 | PUID=1000 10 | PGID=1000 11 | 12 | # path to media (ideally all in folders under one top-level folder) 13 | MEDIA_PATH=~/media 14 | 15 | # path to docker folded 16 | DOCKER_PATH=~/docker 17 | 18 | # path to download locations 19 | DOWNLOADS=~/downloads 20 | 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "github-actions" 9 | directory: "/" 10 | schedule: 11 | # Check for updates to GitHub Actions every weekday 12 | interval: "daily" -------------------------------------------------------------------------------- /.github/workflows/labelsync.yml: -------------------------------------------------------------------------------- 1 | name: Label Manager 2 | 3 | on: 4 | push: 5 | paths: 6 | - '.github/config/labels.yml' 7 | workflow_dispatch: 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v6 15 | 16 | - name: Synchronize labels 17 | uses: julb/action-manage-label@v1 18 | with: 19 | from: .github/config/labels.yml 20 | skip_delete: false 21 | env: 22 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /compose-examples/download/.env: -------------------------------------------------------------------------------- 1 | # 2 | # Variables for the dl-pipeline stack 3 | # 4 | 5 | # Input the tz database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 6 | TZ=Australia/Brisbane 7 | 8 | # Type 'id' in a terminal to get these values 9 | PUID=1000 10 | PGID=1000 11 | 12 | # path to media (ideally all in folders under one top-level folder) 13 | MEDIA_PATH=~/media 14 | 15 | # path to docker folded 16 | DOCKER_PATH=~/docker 17 | 18 | # path to download locations 19 | DOWNLOADS=~/downloads 20 | INCOMPLETE=~/incomplete-downloads 21 | -------------------------------------------------------------------------------- /compose-examples/plex/README.md: -------------------------------------------------------------------------------- 1 | # Plex - Plex app stack 2 | This will install and create containers for the following apps 3 | - Plex 4 | - Tautulli 5 | - MovieMatch 6 | - Gaps 7 | - Posterr 8 | 9 | ## Prerequisites 10 | The following folders should be created 11 | - docker 12 | > - /c/docker (on windows) 13 | > - ~/docker (on linux) 14 | - {docker}/tautulli 15 | - {docker}/posterr 16 | - {docker}/poster/config 17 | - {docker}/poster/randomthemes 18 | - {docker}/plex 19 | - {docker}/plex/config 20 | - {docker}/plex/transocde 21 | - {docker}/gaps 22 | - 23 | > The above folder should be under your `docker` folder. 24 | 25 | ### Changes to .env file 26 | Review the .env and update 27 | - TZ 28 | - PUID 29 | - PGID 30 | - Plus other values 31 | -------------------------------------------------------------------------------- /compose-examples/homeassistant/.env: -------------------------------------------------------------------------------- 1 | # Input the tz database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 2 | TZ=Australia/Brisbane 3 | DOMAINNAME=yourdomain.com 4 | 5 | # Type 'id' in a terminal to get these values 6 | PUID=1000 7 | PGID=1000 8 | 9 | # path to docker folded 10 | DOCKER_PATH=~/docker 11 | 12 | # Code Server 13 | CODE_SERVER_PSW=password 14 | CODE=$DOCKER_PATH/homeassistant 15 | 16 | # DuckDNS 17 | DUCKSUBDOMS=your_subdomain 18 | DUCKTOKEN=your-duckdns-token 19 | 20 | # MariaDB for Home Assistant 21 | HA_DB_ROOT_PSW=your_root_password 22 | HA_DB=harecorder 23 | HA_DB_USER=your_user 24 | HA_DB_PSW=your_password 25 | 26 | # Frigate 27 | FRIGATE_RTSP_PASSWORD=your_password 28 | FRIGATE_MEDIA_CAMERA=/path/to/your/media/storage/folder 29 | -------------------------------------------------------------------------------- /compose-examples/productivity/.env: -------------------------------------------------------------------------------- 1 | # 2 | # Variables for the docker stack 3 | # 4 | 5 | # Input the tz database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 6 | TZ=Australia/Brisbane 7 | 8 | # Type 'id' in a terminal to get these values 9 | PUID=1000 10 | PGID=1000 11 | 12 | # domain name 13 | DOMAIN=yourdomain.net 14 | 15 | # path to docker folded 16 | DOCKER_PATH=~/docker 17 | 18 | # media path 19 | MEDIA_PATH=~/media 20 | 21 | # moviematch 22 | PURL=http://192.168.1.174:32400 23 | LIBFILTER=Movies 24 | 25 | # Vaultwarden 26 | VW_TOKEN=secretbitwardenpsw 27 | 28 | # 29 | # GMAIL 30 | # - This section is not yet implemented, so you can leave it all as is 31 | # 32 | GM_USER=emailaddress 33 | GM_TO=toemailaddress 34 | GM_PSW=emailapppassword 35 | GM_SERVER=smtp.gmail.com 36 | GM_PORT=587 37 | 38 | # Linkwarden 39 | NEXTAUTH_SECRET=This!Is!A!Pass!Phrase 40 | NEXTAUTH_URL=https://lw. 41 | NEXTAUTH_URL_INTERNAL=https://lw. 42 | POSTGRES_PASSWORD=LWPostgresPSW1! -------------------------------------------------------------------------------- /compose-examples/plex/.env: -------------------------------------------------------------------------------- 1 | # 2 | # Variables for the docker stack 3 | # 4 | 5 | # Input the tz database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 6 | TZ=Australia/Brisbane 7 | 8 | # Type 'id' in a terminal to get these values 9 | PUID=1000 10 | PGID=1000 11 | 12 | # path to docker folded 13 | DOCKER_PATH=~/docker 14 | 15 | # media path 16 | MEDIA_PATH=/mnt/media 17 | 18 | # Plex 19 | # ------------------------------------------------- 20 | # Get claim token from https://plex.tv/claim 21 | PLEX_CLAIM_TOKEN=your claim token 22 | # If you have an external domain for plex, else leave blank 23 | ADVERTISE_IP= 24 | # This is to allow non-authentication for local networks. Change to yours. 25 | ALLOWED_NETWORKS=192.168.1.0/24 26 | # Used by other apps, not needed just for plex, so can leave blank 27 | PLEX_TOKEN= 28 | # Name of plex server, but can also set later on 29 | HOST_NAME=Centaurus-BU 30 | 31 | # moviematch 32 | PURL=http://192.168.1.174:32400 33 | LIBFILTER=Movies 34 | -------------------------------------------------------------------------------- /.github/config/labels.yml: -------------------------------------------------------------------------------- 1 | - name: "bug" 2 | color: "d73a4a" 3 | description: "Something isn't working" 4 | - name: "dependencies" 5 | color: "C62109" 6 | description: "Pull requests that update a dependency file" 7 | - name: "documentation" 8 | color: "0075ca" 9 | description: "Improvements or additions to documentation" 10 | - name: "duplicate" 11 | color: "cfd3d7" 12 | description: "This issue or pull request already exists" 13 | - name: "enhancement" 14 | color: "a2eeef" 15 | description: "New feature or request" 16 | - name: "good first issue" 17 | color: "7057ff" 18 | description: "Good for newcomers" 19 | - name: "help wanted" 20 | color: "008672" 21 | description: "Extra attention is needed" 22 | - name: "invalid" 23 | color: "e4e669" 24 | description: "This doesn't seem right" 25 | - name: "question" 26 | color: "d876e3" 27 | description: "Further information is requested" 28 | - name: "wontfix" 29 | color: "#ffffff" 30 | description: "This will not be worked on" 31 | -------------------------------------------------------------------------------- /compose-examples/network/.env: -------------------------------------------------------------------------------- 1 | # 2 | # Variables for the dl-pipeline stack 3 | # 4 | 5 | # Input the tz database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 6 | TZ=Australia/Brisbane 7 | 8 | # Type 'id' in a terminal to get these values 9 | PUID=1000 10 | PGID=1000 11 | 12 | # path to docker folded 13 | DOCKER_PATH=~/docker 14 | 15 | # Nginx Proxy manager Settings 16 | NPMUSER=smileyfaceemoji 17 | NPMPSW=sadfaceemoji 18 | NPMROOT=poopemoji 19 | 20 | # Librespeed 21 | LIBREPSW=Elmoisking! 22 | 23 | #Pi-Hole 24 | HOSTNAME=pihole 25 | GM_USER=youremail@blah.com 26 | # host ip 27 | PH_SVR_IP=host_ip_number 28 | PH_PSW=yourpiholepassword 29 | REV_SERVER=true 30 | REV_SERVER_DOMAIN=local 31 | # network gateway 32 | REV_SERVER_TARGET=192.168.1.1 33 | REV_SERVER_CIDR=192.168.0.0/16 34 | # lan domain - optional 35 | LAN_DOMAIN_NAME=lan 36 | 37 | # Orbital-sync 38 | PRIMARY_HOST_BASE_URL: 'http://192.168.1.2' 39 | PRIMARY_HOST_PASSWORD: 'xxx' 40 | SECONDARY_HOST_1_BASE_URL: 'http://192.168.1.135' 41 | SECONDARY_HOST_1_PASSWORD: 'yyy' 42 | -------------------------------------------------------------------------------- /compose-examples/books/README.md: -------------------------------------------------------------------------------- 1 | # Audio and E-Book Management 2 | This will install and create containers for the following apps 3 | - Audiobookshelf 4 | - Calibre 5 | - Calibre-Web 6 | 7 | ### Folders 8 | The following folders should be created 9 | - {downloads} 10 | > - {downloads}/complete 11 | - {docker} 12 | > - /c/docker (on windows) 13 | > - ~/docker (on linux) 14 | > - /volume1/docker (on Synology) 15 | > These above folders are for partial and completed downloads. Put them under a folder wherever you wish. 16 | - cd {docker}/audiobookshelf 17 | - cd {docker}/audiobookshelf/config 18 | - cd {docker}/audiobookshelf/metadata 19 | - cd {docker}/calibre 20 | - cd {docker}/calibre-web 21 | > The above folders should be under your `docker` folder. 22 | 23 | Your media path should be one top-level folder with sub folders for different media types 24 | > For example: 25 | > - media 26 | > - ebooks 27 | > - audiobooks 28 | 29 | ### Changes to .env file 30 | Review the .env and update 31 | - TZ 32 | - PUID 33 | - PGID 34 | - MEDIA_PATH 35 | - DOCKER_PATH 36 | - DOWNLOADS 37 | -------------------------------------------------------------------------------- /compose-examples/network/README.md: -------------------------------------------------------------------------------- 1 | # Network - networking stack 2 | This will install and create containers for the following apps 3 | - Nginx Proxy Manager (reverse proxy) 4 | - openVPN (Requires configuration once created) 5 | - LibreSpeed (internal speed test) 6 | - Pi-Hole with Unbound (ad blocking) 7 | - Orbital-sync (Pi-hole primary to secondary/tertiary sync) 8 | 9 | ### Folders 10 | The following folders should be created 11 | - docker 12 | > - /c/docker (on windows) 13 | > - ~/docker (on linux) 14 | > - /volume1/docker (on Synology) 15 | - {docker}/openvpn 16 | - {docker}/librespeed 17 | - {docker}/proxymanager 18 | - {docker}/proxymanager/data 19 | - {docker}/proxymanager/letsencrypt 20 | - {docker}/pihole 21 | - {docker}/pihole/etc-pihole 22 | - {docker}/pihole/etc-dnsmasq.d 23 | 24 | > The above folders should be under your `docker` folder. 25 | 26 | ### Changes to .env file 27 | Review the .env and update 28 | - TZ 29 | - PUID 30 | - PGID 31 | - All path values 32 | - Settings for Librespeed and Nginx Proxy Manager 33 | - Pi-hole settings 34 | - Orbital-sync settings 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Matt P 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /compose-examples/download/README.md: -------------------------------------------------------------------------------- 1 | # DL - download pipeline stack 2 | This will install and create containers for the following apps 3 | - Radarr 4 | - Sonarr 5 | - Lidarr 6 | - Readarr 7 | - Prowlarr 8 | - Bazarr 9 | - Sabnzbd 10 | - Qbittorrent 11 | > Do not use Qbittorrent until it is protected by a VPN 12 | 13 | ## Prerequisites 14 | This will install as-is, however best with OpenVPN (for qbittorrent), Portainer, and Watchtower 15 | 16 | ### Folders 17 | The following folders should be created 18 | - docker 19 | > - /c/docker (on windows) 20 | > - ~/docker (on linux) 21 | > - /volume1/docker (on Synology) 22 | - *somewhere*/downloads 23 | - *somewhere*/incomplete 24 | > These above folders are for partial and completed downloads. Put them under a folder wherever you wish. 25 | - {docker}/prowlarr 26 | - {docker}/sonarr 27 | - {docker}/radarr 28 | - {docker}/lidarr 29 | - {docker}/bazarr 30 | - {docker}/readarr 31 | - {docker}/sabnzbd 32 | - {docker}/qbittorrent 33 | > The above folders should be under your `docker` folder. 34 | 35 | Your media path should be one top-level folder with sub folders for different media types 36 | > For example: 37 | > - media 38 | > - movies 39 | > - tv 40 | > - music 41 | > - ebooks 42 | 43 | ### Changes to .env file 44 | Review the .env and update 45 | - TZ 46 | - PUID 47 | - PGID 48 | - All path values 49 | -------------------------------------------------------------------------------- /compose-examples/books/compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | audiobookshelf: 3 | container_name: audiobookshelf 4 | image: ghcr.io/advplyr/audiobookshelf:latest 5 | environment: 6 | - AUDIOBOOKSHELF_UID=$PUID 7 | - AUDIOBOOKSHELF_GID=$PGID 8 | ports: 9 | - 13378:80 10 | volumes: 11 | - $MEDIA_PATH/audiobooks:/audiobooks 12 | - $DOCKER_PATH//audiobookshelf/config:/config 13 | - $DOCKER_PATH//audiobookshelf/metadata:/metadata 14 | restart: unless-stopped 15 | 16 | calibre-web: 17 | image: linuxserver/calibre-web 18 | container_name: calibre-web 19 | environment: 20 | - PUID=$PUID 21 | - PGID=$PGID 22 | - TZ=$TIME_ZONE 23 | - DOCKER_MODS=linuxserver/calibre-web:calibre 24 | volumes: 25 | - $DOCKER_PATH//calibre-web/config:/config 26 | - $MEDIA_PATH/ebooks:/books:rw 27 | ports: 28 | - 8083:8083 29 | healthcheck: 30 | test: curl -fSs http://127.0.0.1:8083 || exit 1 31 | start_period: 500s 32 | timeout: 10s 33 | interval: 30s 34 | retries: 3 35 | depends_on: 36 | calibre: 37 | condition: service_healthy 38 | restart: unless-stopped 39 | labels: 40 | autoheal: 'true' 41 | 42 | calibre: 43 | image: linuxserver/calibre 44 | container_name: calibre 45 | environment: 46 | - PUID=$PUID 47 | - PGID=$PGID 48 | - KEEP_APP_RUNNING=1 49 | - TZ=$TIME_ZONE 50 | - DISABLE_AUTH='true' 51 | - CALIBRE_USE_DARK_PALETTE=1 52 | volumes: 53 | - $DOCKER_PATH//calibre/config:/config 54 | - $MEDIA_PATH/ebooks:/books:rw 55 | - $DOWNLOADS:/downloads:rw 56 | ports: 57 | - 7080:8080 58 | - 7081:8081 59 | labels: 60 | autoheal: 'true' 61 | healthcheck: 62 | test: curl -fSs http://127.0.0.1:8080 || exit 1 63 | start_period: 360s 64 | timeout: 10s 65 | interval: 15s 66 | retries: 3 67 | restart: unless-stopped -------------------------------------------------------------------------------- /compose-examples/productivity/README.md: -------------------------------------------------------------------------------- 1 | # Productivity - app stack 2 | 3 | This will install and create containers for the following apps 4 | - Hasty Paste 5 | - Paperless NGX 6 | - Joplin 7 | - Homepage 8 | - Languagetool 9 | - WhiteBoardOnline 10 | - Filebrowser 11 | - Mealie 12 | - DrawIO 13 | - VaultWarden 14 | - Syncthing 15 | - Opengist 16 | - Glances 17 | - Linkding 18 | - Ntfy 19 | - Uptimekuma 20 | - Linkwarden 21 | 22 | 23 | ## Prerequisites 24 | The following folders should be created 25 | - docker 26 | > - /c/docker (on windows) 27 | > - ~/docker (on linux) 28 | - ~/docker/hastebinredis 29 | - ~/docker/hastypaste 30 | - ~/docker/vaultwarden 31 | - ~/docker/vaultwarden/data 32 | - ~/docker/vaultwarden/ssl 33 | - ~/docker/mealie 34 | - ~/docker/joplindb 35 | - ~/docker/filebrowser 36 | - ~/docker/wbo 37 | - ~/docker/languagetool 38 | - ~/docker/homepage 39 | - ~/docker/homepage/images 40 | - ~/docker/homepage/icons 41 | - ~/docker/linkding 42 | - ~/docker/ntfy 43 | - ~/docker/ntfy/cache 44 | - ~/docker/opengist 45 | - ~/docker/uptimekuma 46 | - ~/docker/linkwarden 47 | - ~/docker/linkwardendb 48 | 49 | > The above folder should be under your `docker` folder. 50 | 51 | ### Changes to .env file 52 | Review the .env and update 53 | - TZ 54 | - PUID 55 | - PGID 56 | - Plus other values 57 | 58 | ### Filebrowser initial setup (pre-create of container) 59 | ``` 60 | touch ~/~/docker/filebrowser/filebrowser.db 61 | touch ~/~/docker/filebrowser/.filebrowser.json 62 | 63 | nano ~/~/docker/filebrowser/.filebrowser.json 64 | { 65 | "port": 80, 66 | "baseURL": "", 67 | "address": "", 68 | "log": "stdout", 69 | "database": "/database/filebrowser.db", 70 | "root": "/srv" 71 | } 72 | ``` 73 | 74 | > initial filebrowser credentials are admin;admin 75 | 76 | ### Ntfy initial setup (post-creation of container) 77 | ``` 78 | docker exec -it ntfy sh 79 | ntfy user add --role=admin _your-admin-username_ 80 | 81 | exit 82 | ``` 83 | 84 | > Use these creditials to logon to Ntfy 85 | 86 | -------------------------------------------------------------------------------- /compose-examples/docker/compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | # 3 | # autoheal - restarts unhealthy containers 4 | # 5 | autoheal: 6 | container_name: autoheal 7 | restart: always 8 | environment: 9 | - AUTOHEAL_CONTAINER_LABEL=all 10 | - TZ=$TZ 11 | - WATCHTOWER_WARN_ON_HEAD_FAILURE=never 12 | volumes: 13 | - '/var/run/docker.sock:/var/run/docker.sock' 14 | image: willfarrell/autoheal 15 | 16 | # 17 | # Portainer - docker manager 18 | # 19 | portainer: 20 | image: portainer/portainer-ce 21 | container_name: portainer 22 | restart: always 23 | command: -H unix:///var/run/docker.sock 24 | ports: 25 | - 9000:9000 26 | - 8000:8000 27 | volumes: 28 | - /var/run/docker.sock:/var/run/docker.sock 29 | - $DOCKER_PATH/portainer:/data 30 | environment: 31 | - TZ=$TZ 32 | 33 | # 34 | # Watchtower - updates containers with latest images 35 | # 36 | watchtower: 37 | container_name: watchtower 38 | image: containrrr/watchtower 39 | volumes: 40 | - /var/run/docker.sock:/var/run/docker.sock 41 | environment: 42 | TZ: $TZ 43 | WATCHTOWER_REMOVE_VOLUMES: "true" 44 | WATCHTOWER_CLEANUP: "true" 45 | WATCHTOWER_INCLUDE_STOPPED: "true" 46 | WATCHTOWER_POLL_INTERVAL: $WT_INTERVAL 47 | WATCHTOWER_TIMEOUT: 15s 48 | WATCHTOWER_NOTIFICATIONS_LEVEL: info 49 | WATCHTOWER_HTTP_API_METRICS: "true" 50 | WATCHTOWER_HTTP_API_TOKEN: $WATCHTOWER_API_TOKEN 51 | WATCHTOWER_NOTIFICATIONS: shoutrrr 52 | # Using Pushbullet, telegram and pushover as examples, but just pick one 53 | # WATCHTOWER_NOTIFICATION_URL: "pushover://shoutrrr:$PUSHOVER_APP_API__SECRET@$PUSHOVER_USER_API__SECRET/?devices=$PUSHOVER_DEVICE telegram://$TELEGRAM_BOT_TOKEN__SECRET@telegram?channels=$TELEGRAM_CHAT_ID__SECRET pushbullet://$PUSHBULLET_API__SECRET" 54 | restart: always 55 | 56 | # 57 | # Dozzle - Container log aggregator 58 | # 59 | dozzle: 60 | container_name: dozzle 61 | image: amir20/dozzle 62 | volumes: 63 | - /var/run/docker.sock:/var/run/docker.sock 64 | ports: 65 | - 9999:8080 66 | restart: unless-stopped 67 | -------------------------------------------------------------------------------- /.bashrc-syno: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | 3 | # run 'source ~/.bashrc' to load latest changes in current session 4 | 5 | # ALIASES ######################################################## 6 | # Note that these aliases are for Synology docker 7 | 8 | # Set docker aliases 9 | alias dive='docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive' 10 | alias cdkr='cd ~/docker' 11 | alias cdcd='cd ~/code/dockerholics/compose-examples' 12 | alias list='docker ps -a --format "table {{.Names}}\t{{.ID}}\t{{.Status}}" | (read -r; printf "%s\n" "$REPLY"; sort -k > 13 | alias down='docker-compose down -v' 14 | alias pull='docker-compose pull' 15 | alias up='docker-compose up -d' 16 | alias inspect='docker inspect' 17 | alias create='docker-compose up --no-start' 18 | alias stop='docker stop' 19 | alias startall='docker start $(docker ps -a -q)' 20 | alias stopall='docker stop $(docker ps -a -q)' 21 | alias start='docker start' 22 | alias prune='docker system prune -a --volumes' 23 | alias del='docker rm' 24 | alias logs='docker logs -f' 25 | alias ddf='docker system df' 26 | 27 | # Set other aliases 28 | alias ver='cat /etc/os-release && uname -mrs && docker -v && docker compose version' 29 | alias topsize='sudo du -Sha | sort -rh | head -n 10' 30 | 31 | 32 | 33 | # FUNCTIONS #################################################### 34 | 35 | # run a command inside a given container 36 | drun() { 37 | docker exec $1 $2 38 | } 39 | 40 | # Restarts a container 41 | # 42 | cycle() { 43 | docker restart $1 44 | } 45 | 46 | # pulls a image and then creates and starts it 47 | pullup() { 48 | pull $1 49 | up $1 50 | } 51 | 52 | # Opens a bash shell, given a supplied container name 53 | # 54 | termb() { 55 | docker exec -it $1 /bin/bash 56 | } 57 | 58 | # Opens a ash shell, given a supplied container name 59 | # 60 | terma() { 61 | docker exec -it $1 /bin/ash 62 | } 63 | 64 | # stops and deletes a container 65 | # 66 | std() { 67 | stop $1 68 | del $1 69 | } 70 | 71 | # Shows 'port in use' details for a supplied port number 72 | # 73 | piu() { 74 | sudo netstat -plan | grep ":$1" 75 | } 76 | 77 | # ENVIRONMENT SETTINGS ########################################## 78 | # 79 | # Helps avoid timeouts for large yaml scripts 80 | export DOCKER_CLIENT_TIMEOUT=360 81 | export COMPOSE_HTTP_TIMEOUT=360 82 | -------------------------------------------------------------------------------- /.bashrc: -------------------------------------------------------------------------------- 1 | ################################################################## 2 | 3 | # run 'source ~/.bashrc' to load latest changes in current session 4 | 5 | # ALIASES ######################################################## 6 | # Note that these aliases do not work on Synology docker, due to the fact that they are a number of versions behind. (c> 7 | 8 | # Set docker aliases 9 | alias dive='docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive' 10 | alias cdkr='cd ~/docker' 11 | alias cdcd='cd ~/code/dockerholics/compose-examples' 12 | alias list='docker ps -a --format "table {{.Names}}\t{{.ID}}\t{{.Status}}" | (read -r; printf "%s\n" "$REPLY"; sort -k > 13 | alias down='docker compose down -v' 14 | alias pull='docker compose pull' 15 | alias up='docker compose up -d' 16 | alias inspect='docker inspect' 17 | alias create='docker compose up --no-start' 18 | alias stop='docker stop' 19 | alias startall='docker start $(docker ps -a -q)' 20 | alias stopall='docker stop $(docker ps -a -q)' 21 | alias start='docker start' 22 | alias prune='docker system prune -a --volumes' 23 | alias del='docker rm' 24 | alias logs='docker logs -f' 25 | alias ddf='docker system df' 26 | 27 | # Set other aliases 28 | alias ver='cat /etc/os-release && uname -mrs && docker -v && docker compose version' 29 | alias osupgrade='sudo do-release-upgrade' 30 | alias upgrade='sudo apt-get update && sudo apt-get upgrade -y && sudo apt autoremove --purge -y' 31 | alias topsize='sudo du -Sha | sort -rh | head -n 10' 32 | 33 | 34 | 35 | # FUNCTIONS #################################################### 36 | 37 | # run a command inside a given container 38 | drun() { 39 | docker exec $1 $2 40 | } 41 | 42 | # Restarts a container 43 | # 44 | cycle() { 45 | docker restart $1 46 | } 47 | 48 | # pulls a image and then creates and starts it 49 | pullup() { 50 | pull $1 51 | up $1 52 | } 53 | 54 | # Opens a bash shell, given a supplied container name 55 | # 56 | termb() { 57 | docker exec -it $1 /bin/bash 58 | } 59 | 60 | # Opens a ash shell, given a supplied container name 61 | # 62 | terma() { 63 | docker exec -it $1 /bin/ash 64 | } 65 | 66 | # stops and deletes a container 67 | # 68 | std() { 69 | stop $1 70 | del $1 71 | } 72 | 73 | # Shows 'port in use' details for a supplied port number 74 | # 75 | piu() { 76 | sudo netstat -plan | grep ":$1" 77 | } 78 | 79 | # ENVIRONMENT SETTINGS ########################################## 80 | # 81 | # Helps avoid timeouts for large yaml scripts 82 | export DOCKER_CLIENT_TIMEOUT=360 83 | export COMPOSE_HTTP_TIMEOUT=360 84 | -------------------------------------------------------------------------------- /compose-examples/plex/compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | # Poster 3 | posterr: 4 | image: petersem/posterr 5 | container_name: posterr 6 | environment: 7 | TZ: $TZ 8 | volumes: 9 | - $PERSIST/posterr/config:/usr/src/app/config 10 | - $PERSIST/posterr/custom:/usr/src/app/public/custom 11 | ports: 12 | - 9876:3000 13 | restart: always 14 | 15 | # moviematch - allows two or more people to select movies to watch on plex 16 | moviematch: 17 | container_name: moviematch 18 | restart: unless-stopped 19 | image: lukechannings/moviematch 20 | ports: 21 | - 2001:8000 22 | environment: 23 | - PLEX_TOKEN=$PLEX_TOKEN 24 | - PLEX_URL=$PURL 25 | - LIBRARY_FILTER=$LIBFILTER 26 | - PUID=$PUID 27 | - PGID=$PGID 28 | - TZ=$TZ 29 | depends_on: 30 | plex: 31 | condition: service_healthy 32 | 33 | # gaps - finds missing movies in plex libraries 34 | gaps: 35 | ports: 36 | - 8484:8484 37 | container_name: gaps 38 | expose: 39 | - '32400' 40 | volumes: 41 | - $DOCKER_PATH/gaps:/usr/data 42 | image: housewrecker/gaps 43 | restart: unless-stopped 44 | 45 | plex: 46 | container_name: plex 47 | restart: unless-stopped 48 | image: linuxserver/plex 49 | volumes: 50 | - $DOCKER_PATH/plex/config:/config 51 | - $DOCKER_PATH/plex/transcode:/transcode 52 | - $MEDIA_PATH:/media 53 | network_mode: host 54 | # ports: 55 | # - "32400:32400/tcp" 56 | # - "3005:3005/tcp" 57 | # - "8324:8324/tcp" 58 | # - "32469:32469/tcp" 59 | # - "1901:1900/udp" 60 | # - "32410:32410/udp" 61 | # - "32412:32412/udp" 62 | # - "32413:32413/udp" 63 | # - "32414:32414/udp" 64 | environment: 65 | - PUID=$PUID 66 | - PGID=$PGID 67 | - TZ=$TZ 68 | - HOSTNAME=$HOST_NAME 69 | - PLEX_CLAIM=$PLEX_CLAIM_TOKEN 70 | - ADVERTISE_IP=$ADVERTISE_IP 71 | - VERSION=docker 72 | - ALLOWED_NETWORKS=$ALLOWED_NETWORKS 73 | labels: 74 | autoheal: 'true' 75 | healthcheck: 76 | test: curl -fsS http://localhost:32400/identity > /dev/null || exit 1 77 | start_period: 20s 78 | timeout: 10s 79 | interval: 5s 80 | retries: 3 81 | # Un-comment the below if you have an embedded intel GPU 82 | #devices: 83 | # - /dev/dri:/dev/dri 84 | 85 | tautulli: 86 | environment: 87 | - HOME=/root 88 | - TERM=xterm 89 | - TAUTULLI_DOCKER=True 90 | - TZ=$TZ 91 | volumes: 92 | - $DOCKER_PATH/tautulli:/config:rw 93 | - $DOCKER_PATH/plex/config/Library/Application Support/Plex Media Server/Logs:/logs:ro 94 | container_name: tautulli 95 | ports: 96 | - 8181:8181 97 | labels: 98 | autoheal: 'true' 99 | healthcheck: 100 | test: curl -ILfSs http://localhost:8181/status > /dev/null || curl -ILfkSs https://localhost:8181/status > /dev/null 101 | start_period: 120s 102 | timeout: 10s 103 | interval: 5s 104 | retries: 3 105 | restart: 'unless-stopped' 106 | image: tautulli/tautulli 107 | depends_on: 108 | plex: 109 | condition: service_healthy -------------------------------------------------------------------------------- /compose-examples/homeassistant/README.md: -------------------------------------------------------------------------------- 1 | # HA - Home Assistant stack 2 | This will install and create containers for the following apps 3 | - Home Assistant 4 | - MQTT 5 | - NodeRed 6 | - MySQL (Recorder DB) 7 | - Frigate 8 | - ESPHome 9 | - Zigbee2MQTT 10 | - Code Server 11 | - DuckDNS 12 | 13 | ## Prerequisites 14 | This will install as-is, however best with, Portainer (simple management), and Watchtower (updates) 15 | 16 | ### Folders 17 | The following folders should be created 18 | - docker 19 | > - /c/docker (on windows) 20 | > - ~/docker (on linux) 21 | > - /volume1/docker (normally on Synology) 22 | 23 | - {docker}/homeassistant 24 | - {docker}/homeassistant/esphome 25 | - {docker}/homeassistantdb 26 | - {docker}/mqtt 27 | - {docker}/mqtt/data 28 | - {docker}/mqtt/logs 29 | - {docker}/mqtt/config 30 | - {docker}/zigbee2mqtt 31 | - {docker}/zigbee2mqtt/zigbee2mqtt-data 32 | - {docker}/vscode 33 | - {docker}/nodered 34 | - {docker}/duckdns 35 | - {docker}/frigate 36 | 37 | > The above folders should be under your `docker` folder. 38 | 39 | > Note that MQTT, Frigate, Zigbee2mqtt will need further changes via config files. 40 | > I have added examples for MQTT and Zigbee2MQTT, however please review respective documentation sites for details. (Please consult Frigate doco for config.) 41 | > If you choose to use DuckDNS instead of purchasing a domain, then you will need to create a DuckDNS account and create a subdomain on their site. 42 | > Home assistant will need configuration made, along with various integrations added to use all containers. 43 | 44 | ### Changes to .env file 45 | Review the .env and update 46 | - TZ 47 | - PUID 48 | - PGID 49 | - All otherr path values 50 | 51 | ## MQTT 52 | > MQTT will require a configuration file to be created and a user created. 53 | 54 | touch ~/docker/mqtt/config/mosquitto.conf 55 | nano ~/docker/mqtt/config/mosquitto.conf 56 | 57 | 58 | Populate the conf file as follows 59 | 60 | persistence true persistence_location /mosquitto/data/ 61 | log_dest file /mosquitto/log/mosquitto.log 62 | allow_anonymous false 63 | #password_file /mosquitto/config/passwordfile 64 | connection_messages true 65 | # protocol websockets 66 | listener 1883 67 | 68 | To create a MQTT user, run the following commands and then edit the mosqitto.conf to remove the _password_file_ comment. (This is _after_ you have done the above MQTT steps and then created the MQTT container) 69 | 70 | # Add a user to mqtt (remember the psw) 71 | docker exec -it mqtt mosquitto_passwd -c passwordfile homeassistant 72 | 73 | sudo nano ~/docker/mqtt/config/mosquitto.conf 74 | password_file /mosquitto/config/passwordfile 75 | docker restart mqtt 76 | 77 | ## Zigbee2MQTT 78 | create a _configuration.yaml_ file in the zigbee2mqtt/zigbee2mqtt-data folder, and then populate it with your settings 79 | > My example does _not_ use a usb zigbee adapter, but uses the Zigstar Lan gateway coordinator. See Z2M doco for appropriate doco on USB coordinators 80 | 81 | homeassistant: true 82 | permit_join: true 83 | mqtt: 84 | base_topic: zigbee2mqtt 85 | server: mqtt://_yourHostIP_ 86 | user: _yourMQTTuser_ 87 | password: _youMQTTpassword_ 88 | serial: 89 | port: tcp://zigstaradapterIP:6638 90 | advanced: 91 | homeassistant_legacy_entity_attributes: false 92 | legacy_api: false 93 | device_options: 94 | legacy: false 95 | frontend: 96 | port: 8080 97 | host: 0.0.0.0 98 | auth_token: z2mpassword 99 | url: http://_yourhostIP_:4040 100 | experimental: 101 | new_api: false 102 | 103 | 104 | -------------------------------------------------------------------------------- /compose-examples/network/compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | # 3 | # Proxymanager - Nginx Proxy Manager 4 | # 5 | proxymanager: 6 | container_name: proxymanager 7 | image: jc21/nginx-proxy-manager 8 | environment: 9 | PUID: $PUID 10 | PGID: $PGID 11 | TZ: $TZ 12 | ports: 13 | - 82:80 14 | - 81:81 15 | - 43:443 16 | volumes: 17 | - $DOCKER_PATH/proxymanager/data:/data 18 | - $DOCKER_PATH/proxymanager/letsencrypt:/etc/letsencrypt 19 | restart: always 20 | 21 | # 22 | # vpn - openVPN client container 23 | # 24 | vpn: 25 | devices: 26 | - /dev/net/tun 27 | restart: unless-stopped 28 | container_name: vpn 29 | #open any ports for containers which will use this vpn network 30 | ports: 31 | - 7881:6881 32 | - 9991:8080 33 | dns: 34 | - 1.1.1.1 35 | image: dperson/openvpn-client 36 | labels: 37 | - autoheal=true 38 | security_opt: 39 | - label:disable 40 | cap_add: 41 | - NET_ADMIN 42 | stdin_open: true 43 | tty: true 44 | volumes: 45 | - $DOCKER_PATH/openvpn:/vpn 46 | command: -f "" 47 | 48 | # 49 | # librespeed - internal speed test host to lan device 50 | # 51 | librespeed: 52 | image: linuxserver/librespeed 53 | container_name: librespeed 54 | environment: 55 | - PUID=$PUID 56 | - PGID=$PGID 57 | - TZ=$TZ 58 | - PASSWORD=#LIBREPSW 59 | volumes: 60 | - $DOCKER_PATH/librespeed:/config 61 | ports: 62 | - 8383:80 63 | restart: unless-stopped 64 | 65 | # 66 | # Pi-hole with Unbound 67 | # 68 | pihole: 69 | container_name: pihole 70 | image: cbcrowe/pihole-unbound:latest 71 | hostname: ${HOSTNAME} 72 | domainname: ${LAN_DOMAIN_NAME} 73 | cap_add: 74 | - NET_ADMIN 75 | dns: 76 | - 127.0.0.1 77 | - 1.1.1.1 78 | ports: 79 | - 6443:443/tcp 80 | - 53:53/tcp 81 | - 53:53/udp 82 | - 80:80/tcp 83 | - 22/tcp # Uncomment to enable SSH 84 | environment: 85 | ServerIP: $PH_SVR_IP 86 | TZ: $TZ 87 | WEBPASSWORD: $PH_PSW 88 | REV_SERVER: ${REV_SERVER} 89 | REV_SERVER_TARGET: ${REV_SERVER_TARGET} 90 | REV_SERVER_DOMAIN: ${REV_SERVER_DOMAIN} 91 | REV_SERVER_CIDR: ${REV_SERVER_CIDR} 92 | DNS1: 127.0.0.1#5335 # Hardcoded to our Unbound server 93 | DNS2: 127.0.0.1#5335 # Hardcoded to our Unbound server 94 | DNSSEC: "true" # Enable DNSSEC 95 | TEMPERATUREUNIT: c 96 | ADMIN_EMAIL: $GM_USER 97 | volumes: 98 | - '$DOCKER_PATH/pihole/etc-pihole/:/etc/pihole' 99 | - '$DOCKER_PATH/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d' 100 | labels: 101 | autoheal: 'true' 102 | healthcheck: 103 | test: curl -fSs http://127.0.0.1:80 || exit 1 104 | start_period: 15s 105 | timeout: 5s 106 | interval: 15s 107 | retries: 3 108 | restart: unless-stopped 109 | 110 | # 111 | # Orbital-sync 112 | # 113 | orbital-sync: 114 | container_name: orbital-sync 115 | image: mattwebbio/orbital-sync:1 116 | environment: 117 | PRIMARY_HOST_BASE_URL: $PRIMARY_HOST_BASE_URL 118 | PRIMARY_HOST_PASSWORD: $PRIMARY_HOST_PASSWORD 119 | SECONDARY_HOST_1_BASE_URL: $SECONDARY_HOST_1_BASE_URL 120 | SECONDARY_HOST_1_PASSWORD: $SECONDARY_HOST_1_PASSWORD 121 | SYNC_WHITELIST: 'true' 122 | SYNC_BLACKLIST: 'true' 123 | SYNC_REGEXLIST: 'true' 124 | SYNC_ADLIST: 'true' 125 | SYNC_CLIENTS: 'true' 126 | SYNC_GROUP: 'true' 127 | # SYNC_STATICDHCPLEASES: 'true' 128 | SYNC_LOCALDNSRECORDS: 'true' 129 | SYNC_LOCALCNAMERECORDS: 'true' 130 | SYNC_FLUSHTABLES: 'true' 131 | TZ: $TIME_ZONE 132 | INTERVAL_MINUTES: 30 133 | restart: unless-stopped -------------------------------------------------------------------------------- /compose-examples/homeassistant/compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | esphome: 3 | container_name: esphome 4 | restart: always 5 | image: esphome/esphome 6 | volumes: 7 | - $DOCKER_PATH/homeassistant/esphome:/config 8 | network_mode: host 9 | environment: 10 | - PUID=$PUID 11 | - PGID=$PGID 12 | - TZ=$TZ 13 | # devices: 14 | # - /dev/ttyUSB0:/dev/ttyUSB0 15 | labels: 16 | autoheal: "true" 17 | healthcheck: 18 | test: curl -fSs http://127.0.0.1:6052 || exit 1 19 | start_period: 90s 20 | timeout: 10s 21 | interval: 5s 22 | retries: 3 23 | 24 | homeassistant: 25 | container_name: homeassistant 26 | restart: always 27 | image: homeassistant/home-assistant 28 | #devices: 29 | # - /dev/ttyUSB0:/dev/ttyUSB0 30 | # - /dev/ttyUSB1:/dev/ttyUSB1 31 | # - /dev/ttyACM0:/dev/ttyACM0 32 | volumes: 33 | - $DOCKER_PATH/homeassistant:/config 34 | - /etc/localtime:/etc/localtime:ro 35 | - /var/run/docker.sock:/var/run/docker.sock 36 | network_mode: host 37 | #ports: 38 | # - "8123:8123" 39 | # - "1400:1400" 40 | privileged: true 41 | environment: 42 | - PUID=$PUID 43 | - PGID=$PGID 44 | - TZ=$TZ 45 | depends_on: 46 | homeassistantdb: 47 | condition: service_healthy 48 | esphome: 49 | condition: service_healthy 50 | zigbee2mqtt: 51 | condition: service_healthy 52 | mqtt: 53 | condition: service_started 54 | ducknds: 55 | condition: service_started 56 | labels: 57 | autoheal: "true" 58 | healthcheck: 59 | test: curl -fSs http://127.0.0.1:8123 || exit 1 60 | start_period: 90s 61 | timeout: 10s 62 | interval: 5s 63 | retries: 3 64 | 65 | homeassistantdb: 66 | image: linuxserver/mariadb 67 | container_name: homeassistantdb 68 | environment: 69 | - PUID=$PUID 70 | - PGID=$PGID 71 | - TZ=$TZ 72 | - MYSQL_ROOT_PASSWORD=$HA_DB_ROOT_PSW 73 | - MYSQL_DATABASE=$HA_DB 74 | - MYSQL_USER=$HA_DB_USER 75 | - MYSQL_PASSWORD=$HA_DB_PSW 76 | ports: 77 | - 8306:3306 78 | volumes: 79 | - $DOCKER_PATH/homeassistantdb:/config 80 | labels: 81 | autoheal: "true" 82 | healthcheck: 83 | test: ["CMD", "mysqladmin", "ping", "--silent"] 84 | restart: always 85 | 86 | mqtt: 87 | image: eclipse-mosquitto 88 | container_name: mqtt 89 | ports: 90 | - 1883:1883 91 | - 8883:8883 92 | volumes: 93 | - $DOCKER_PATH/mqtt/data:/mosquitto/data 94 | - $DOCKER_PATH/mqtt/logs:/mosquitto/log 95 | - $DOCKER_PATH/mqtt/config:/mosquitto/config 96 | 97 | zigbee2mqtt: 98 | container_name: zigbee2mqtt 99 | restart: unless-stopped 100 | image: koenkk/zigbee2mqtt 101 | volumes: 102 | - $DOCKER_PATH/zigbee2mqtt/zigbee2mqtt-data:/app/data 103 | - /run/udev:/run/udev:ro 104 | ports: 105 | - 6080:8080 106 | environment: 107 | - TZ=$TZ 108 | # devices: 109 | # - /dev/ttyUSB0:/dev/ttyUSB0 110 | depends_on: 111 | - mqtt 112 | labels: 113 | autoheal: "true" 114 | healthcheck: 115 | test: curl -fSs http://127.0.0.1:6080 || exit 1 116 | start_period: 90s 117 | timeout: 10s 118 | interval: 5s 119 | retries: 3 120 | 121 | code-server: 122 | image: ghcr.io/linuxserver/code-server 123 | container_name: code-server 124 | environment: 125 | - PUID=$PUID 126 | - PGID=$PGID 127 | - TZ=$TZ 128 | - PASSWORD=$CODE_SERVER_PSW 129 | # optional settinga 130 | #- HASHED_PASSWORD= #optional 131 | #- SUDO_PASSWORD=password #optional 132 | #- SUDO_PASSWORD_HASH= #optional 133 | #- PROXY_DOMAIN=code-server.$DOMAIN 134 | 135 | volumes: 136 | - $DOCKER_PATH/vscode:/config 137 | - $CODE:/code 138 | ports: 139 | - 5443:8443 140 | restart: unless-stopped 141 | 142 | nodered: 143 | image: nodered/node-red 144 | container_name: nodered 145 | environment: 146 | - PUID=$PUID 147 | - PGID=$PGID 148 | - TZ=$TZ 149 | volumes: 150 | - $DOCKER_PATH/nodered:/data 151 | ports: 152 | - 1880:1880 153 | labels: 154 | - autoheal="true" 155 | healthcheck: 156 | test: curl -fSs http://127.0.0.1:1880 || exit 1 157 | start_period: 90s 158 | timeout: 10s 159 | interval: 5s 160 | retries: 3 161 | restart: unless-stopped 162 | 163 | duckdns: 164 | image: linuxserver/duckdns 165 | container_name: duckdns 166 | environment: 167 | - PUID=$PUID 168 | - PGID=$PGID 169 | - TZ=$TZ 170 | - SUBDOMAINS=$DUCKSUBDOMS 171 | - TOKEN=$DUCKTOKEN 172 | - LOG_FILE=true #optional 173 | volumes: 174 | - $DOCKER_PATH/duckdns:/config #optional - use if log_file true 175 | restart: unless-stopped 176 | 177 | frigate: 178 | container_name: frigate 179 | privileged: true # this may not be necessary for all setups 180 | restart: unless-stopped 181 | image: blakeblackshear/frigate:stable-amd64 182 | shm_size: "20mb" # update for your cameras based on calculation above 183 | devices: 184 | #- /dev/bus/usb:/dev/bus/usb # passes the USB Coral, needs to be modified for other versions 185 | #- /dev/apex_0:/dev/apex_0 # passes a PCIe Coral, follow driver instructions here https://coral.ai/docs/m2/get-started/#2a-on-linux 186 | - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware 187 | volumes: 188 | - /etc/localtime:/etc/localtime:ro 189 | - $DOCKER_PATH/frigate/config.yml:/config/config.yml:ro 190 | - $MEDIA_CAMERA_PATH:/media/frigate 191 | - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear 192 | target: /tmp/cache 193 | tmpfs: 194 | size: 1000000000 195 | ports: 196 | - "5151:5000" 197 | - "1935:1935" # RTMP feeds 198 | environment: 199 | FRIGATE_RTSP_PASSWORD: $FRIGATE_RTSP_PASSWORD -------------------------------------------------------------------------------- /compose-examples/download/compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | # 3 | # Prowlarr - index aggregator 4 | # 5 | prowlarr: 6 | container_name: prowlarr 7 | image: linuxserver/prowlarr:nightly 8 | ports: 9 | - 9696:9696 10 | environment: 11 | - PUID=$PUID 12 | - PGID=$PGID 13 | - TZ=$TZ 14 | - UMASK=002 15 | volumes: 16 | - $DOCKER_PATH/prowlarr:/config 17 | labels: 18 | - autoheal="true" 19 | healthcheck: 20 | test: curl -fSs http://127.0.0.1:9696 > /dev/null || exit 1 21 | start_period: 20s 22 | timeout: 5s 23 | interval: 5s 24 | retries: 3 25 | restart: unless-stopped 26 | depends_on: 27 | sabnzbd: 28 | condition: service_healthy 29 | qbittorrent: 30 | condition: service_healthy 31 | 32 | # 33 | # Radarr - Movies Search 34 | # 35 | radarr: 36 | environment: 37 | - UMASK_SET=22 38 | - PUID=$PUID 39 | - PGID=$PGID 40 | - TZ=$TZ 41 | volumes: 42 | - $DOCKER_PATH/radarr:/config:rw 43 | - $MEDIA_PATH:/media:rw 44 | - $DOWNLOADS:/downloads:rw 45 | container_name: radarr 46 | labels: 47 | - autoheal=true 48 | healthcheck: 49 | test: curl -fSs http://127.0.0.1:7878 > /dev/null || exit 1 50 | start_period: 20s 51 | timeout: 5s 52 | interval: 5s 53 | retries: 3 54 | ports: 55 | - 7878:7878 56 | restart: unless-stopped 57 | entrypoint: 58 | - /init 59 | image: linuxserver/radarr 60 | depends_on: 61 | sabnzbd: 62 | condition: service_healthy 63 | qbittorrent: 64 | condition: service_healthy 65 | 66 | # 67 | # Sonarr - Show Search 68 | # 69 | sonarr: 70 | environment: 71 | - UMASK_SET=22 72 | - PUID=$PUID 73 | - PGID=$PGID 74 | - TZ=$TZ 75 | volumes: 76 | - $DOCKER_PATH/sonarr:/config:rw 77 | - $MEDIA_PATH:/media:rw 78 | - $DOWNLOADS:/downloads:rw 79 | container_name: sonarr 80 | labels: 81 | - autoheal=true 82 | healthcheck: 83 | test: curl -fSs http://127.0.0.1:8989 || exit 1 84 | start_period: 90s 85 | timeout: 5s 86 | interval: 5s 87 | retries: 3 88 | ports: 89 | - 8989:8989 90 | restart: 'unless-stopped' 91 | entrypoint: 92 | - /init 93 | image: linuxserver/sonarr:develop 94 | depends_on: 95 | sabnzbd: 96 | condition: service_healthy 97 | qbittorrent: 98 | condition: service_healthy 99 | 100 | lidarr: 101 | image: linuxserver/lidarr:nightly 102 | container_name: lidarr 103 | environment: 104 | - PUID=$PUID 105 | - PGID=$PGID 106 | - TZ=$TZ 107 | - UMASK_SET=022 108 | volumes: 109 | - $DOCKER_PATH/lidarr:/config 110 | - $MEDIA_PATH:/media 111 | - $DOWNLOADS:/downloads:rw 112 | ports: 113 | - 8686:8686 114 | restart: unless-stopped 115 | labels: 116 | - autoheal=true 117 | healthcheck: 118 | test: curl -fSs http://127.0.0.1:8686 > /dev/null || exit 1 119 | start_period: 20s 120 | timeout: 5s 121 | interval: 5s 122 | retries: 3 123 | depends_on: 124 | sabnzbd: 125 | condition: service_healthy 126 | qbittorrent: 127 | condition: service_healthy 128 | 129 | # 130 | # Bazarr - subtitles search 131 | # 132 | bazarr: 133 | image: linuxserver/bazarr:development 134 | container_name: bazarr 135 | environment: 136 | - PUID=$PUID 137 | - PGID=$PGID 138 | - TZ=$TZ 139 | - UMASK_SET=022 #optional 140 | volumes: 141 | - $DOCKER_PATH/bazarr:/config 142 | - $MEDIA_PATH:/media 143 | ports: 144 | - 6767:6767 145 | labels: 146 | - autoheal=true 147 | healthcheck: 148 | test: curl -fSs http://127.0.0.1:6767 > /dev/null || exit 1 149 | start_period: 60s 150 | timeout: 5s 151 | interval: 5s 152 | retries: 3 153 | restart: unless-stopped 154 | mem_limit: 300M 155 | mem_reservation: 250M 156 | 157 | # 158 | # Sabnzbd - Usenet downloader 159 | # 160 | sabnzbd: 161 | image: linuxserver/sabnzbd 162 | container_name: sabnzbd 163 | environment: 164 | - PUID=$PUID 165 | - PGID=$PGID 166 | - TZ=$TZ 167 | labels: 168 | - autoheal=true 169 | healthcheck: 170 | test: curl -fSs 127.0.0.1:8080 > /dev/null || exit 1 171 | start_period: 20s 172 | interval: 5s 173 | timeout: 5s 174 | retries: 3 175 | volumes: 176 | - $DOCKER_PATH/sabnzbd:/config 177 | - $DOWNLOADS:/downloads:rw 178 | - $INCOMPLETE:/incomplete-downloads:rw 179 | ports: 180 | - 8080:8080 181 | - 9090:9090 182 | restart: unless-stopped 183 | 184 | # 185 | # E-Book Searcher 186 | # 187 | readarr: 188 | container_name: readarr 189 | ports: 190 | - 8787:8787 191 | environment: 192 | - PUID=$PUID 193 | - PGID=$PGID 194 | - TZ=$TZ 195 | volumes: 196 | - $DOCKER_PATH/readarr:/config 197 | - $MEDIA_PATH:/media:rw 198 | - $DOWNLOADS:/downloads:rw 199 | image: hotio/readarr:nightly 200 | restart: unless-stopped 201 | labels: 202 | - autoheal=true 203 | healthcheck: 204 | test: curl -fSs http://127.0.0.1:8787 > /dev/null || exit 1 205 | start_period: 20s 206 | interval: 5s 207 | timeout: 5s 208 | retries: 3 209 | depends_on: 210 | sabnzbd: 211 | condition: service_healthy 212 | qbittorrent: 213 | condition: service_healthy 214 | 215 | # 216 | # Qbittorrent - default creds are admin & adminadmin 217 | # 218 | qbittorrent: 219 | image: hotio/qbittorrent 220 | container_name: qbittorrent 221 | environment: 222 | - PUID=$PUID 223 | - PGID=$PGID 224 | - TZ=$TZ 225 | - UMASK_SET=022 226 | volumes: 227 | - $DOCKER_PATH/qbittorrent:/config 228 | - $DOWNLOADS:/downloads 229 | # this line forces qbittorrent to use the vpn container (in network stack) 230 | network_mode: "container:vpn" 231 | # ports: 232 | # - 7881:6881 233 | # - 8080:8080 234 | restart: unless-stopped 235 | labels: 236 | - autoheal=true 237 | healthcheck: 238 | test: curl -fSs https://google.com || exit 1 239 | start_period: 90s 240 | timeout: 10s 241 | interval: 5s 242 | retries: 3 -------------------------------------------------------------------------------- /compose-examples/productivity/compose.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | # Opengist 3 | opengist: 4 | image: ghcr.io/thomiceli/opengist:1 5 | container_name: opengist 6 | restart: unless-stopped 7 | ports: 8 | - "6157:6157" # HTTP port 9 | - "2222:2222" # SSH port, can be removed if you don't use SSH 10 | volumes: 11 | - $DOCKER_PATH/opengist:/opengist 12 | environment: 13 | CONFIG: | 14 | log-level: info 15 | ssh.git-enabled: false 16 | disable-signup: false # You may wish to change this to true after you sign up the first time. 17 | 18 | # Glances - system monitoring 19 | glances: 20 | container_name: glances 21 | ports: 22 | - 61208-61209:61208-61209 23 | volumes: 24 | - /var/run/docker.sock:/var/run/docker.sock 25 | environment: 26 | - GLANCES_OPT=-w 27 | restart: always 28 | pid: host 29 | image: nicolargo/glances 30 | 31 | # Ntfy 32 | ntfy: 33 | image: binwiederhier/ntfy 34 | container_name: ntfy 35 | command: 36 | - serve 37 | environment: 38 | - TZ=$TZ # optional: set desired timezone 39 | user: $PUID:$PGID # optional: replace with your own user/group or uid/gid 40 | volumes: 41 | - $DOCKER_PATH/ntfy/cache:/var/cache/ntfy 42 | - $DOCKER_PATH/ntfy:/etc/ntfy 43 | ports: 44 | - 8585:80 45 | healthcheck: # optional: remember to adapt the host:port to your environment 46 | test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"] 47 | interval: 60s 48 | timeout: 10s 49 | retries: 3 50 | start_period: 40s 51 | restart: unless-stopped 52 | 53 | # Homepage dashboard 54 | homepage: 55 | image: ghcr.io/gethomepage/homepage:latest 56 | container_name: homepage 57 | ports: 58 | - 3344:3000 59 | volumes: 60 | - $DOCKER_PATH/homepage:/app/config # Make sure your local config directory exists 61 | - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods 62 | - $DOCKER_PATH/homepage/images:/app/public/images 63 | - $DOCKER_PATH/homepage/icons:/app/public/icons 64 | environment: 65 | PUID: $PUID 66 | PGID: $PGID 67 | restart: unless-stopped 68 | 69 | # link manager 70 | linkding: 71 | image: sissbruecker/linkding 72 | container_name: linkding 73 | ports: 74 | - 9999:9090 75 | volumes: 76 | - $DOCKER_PATH/linkding:/etc/linkding/data 77 | restart: unless-stopped 78 | 79 | # White Board Online 80 | wbo: 81 | image: lovasoa/wbo 82 | container_name: wbo 83 | ports: 84 | - 5005:80 85 | volumes: 86 | - $DOCKER_PATH/wbo:/opt/app/server-data" 87 | restart: unless-stopped 88 | 89 | # file browser - web-based file browser/manager 90 | filebrowser: 91 | container_name: filebrowser 92 | volumes: 93 | - $MEDIA_PATH:/srv 94 | - $DOCKER_PATH/filebrowser/filebrowser.db:/database/filebrowser.db 95 | - $DOCKER_PATH/filebrowser/.filebrowser.json:/.filebrowser.json 96 | environment: 97 | user: "$PUID:$PGID" 98 | ports: 99 | - 6543:80 100 | image: filebrowser/filebrowser 101 | 102 | # Joplin 103 | joplin: 104 | container_name: joplin 105 | image: joplin/server:latest 106 | depends_on: 107 | - joplindb 108 | ports: 109 | - "2230:2230" 110 | restart: unless-stopped 111 | environment: 112 | - APP_PORT=2230 113 | - APP_BASE_URL=http://joplin.$DOMAIN 114 | - DB_CLIENT=pg 115 | - POSTGRES_PASSWORD=joplinpsw 116 | - POSTGRES_DATABASE=joplin 117 | - POSTGRES_USER=joplinuser 118 | - POSTGRES_PORT=5432 119 | - POSTGRES_HOST=joplindb 120 | 121 | joplindb: 122 | container_name: joplindb 123 | image: postgres:13.1 124 | volumes: 125 | - $DOCKER_PATH/joplindb:/var/lib/postgresql/data 126 | # ports: 127 | # - "5435:5432" 128 | restart: unless-stopped 129 | environment: 130 | - POSTGRES_PASSWORD=joplinpsw 131 | - POSTGRES_USER=joplinuser 132 | - POSTGRES_DB=joplin 133 | 134 | # Mealie 135 | mealie: 136 | container_name: mealie 137 | image: ghcr.io/mealie-recipes/mealie:latest 138 | restart: unless-stopped 139 | ports: 140 | - 9925:80 141 | environment: 142 | TZ: $TZ 143 | volumes: 144 | - $DOCKER_PATH/mealie/data/:/app/data 145 | labels: 146 | autoheal: true 147 | 148 | # Vaultwarden Password Manager 149 | vaultwarden: 150 | container_name: vaultwarden 151 | image: vaultwarden/server 152 | restart: always 153 | volumes: 154 | - $DOCKER_PATH/vaultwarden/data:/data 155 | - $DOCKER_PATH/vaultwarden/ssl:/ssl 156 | - /etc/localtime:/etc/localtime:ro 157 | ports: 158 | - 8089:8089 159 | - 3012:3012 160 | user: $PUID:$PGID 161 | environment: 162 | - LOG_FILE=/data/vaultwarden.log 163 | - PUID=$PUID 164 | - PGID=$PGID 165 | - TZ=$TZ 166 | #- SIGNUPS_ALLOWED=true 167 | - SIGNUPS_ALLOWED=false 168 | - INVITATIONS_ALLOWED=true 169 | - LOG_LEVEL=warn 170 | - EXTENDED_LOGGING=true 171 | - DOMAIN=https://vw.$DOMAIN 172 | - ROCKET_PORT=8089 173 | - WEBSOCKET_ENABLED=true 174 | - ADMIN_TOKEN=$VW_TOKEN 175 | - SMTP_HOST=$GM_SERVER 176 | - SMTP_FROM=$GM_USER 177 | - SMTP_PORT=$GM_PORT 178 | - SMTP_SSL=true 179 | - SMTP_USERNAME=$GM_USER 180 | - SMTP_PASSWORD=$GM_PSW 181 | 182 | # Syncthing 183 | syncthing: 184 | container_name: syncthing 185 | environment: 186 | - PUID=$PUID 187 | - PGID=$PGID 188 | - TZ=$TZ 189 | - UMASK_SET=022 190 | volumes: 191 | - $DOCKER_PATH/syncthing/config:/config 192 | - $DOCKER_PATH/syncthing/data1:/data1 193 | - $DOCKER_PATH/syncthing/data2:/data2 194 | ports: 195 | - 8384:8384 196 | - 22000:22000 197 | - 21027:21027/udp 198 | image: linuxserver/syncthing 199 | restart: unless-stopped 200 | 201 | # hasty paste 202 | hastypaste: 203 | container_name: hastypaste 204 | image: ghcr.io/enchant97/hasty-paste:1 205 | restart: unless-stopped 206 | environment: 207 | NEW_AT_INDEX: "true" 208 | DEFAULT_USE_LONG_ID: "false" 209 | ENABLE_PUBLIC_LIST: "true" 210 | volumes: 211 | - $DOCKER_PATH/hastypaste:/app/data 212 | ports: 213 | - 8069:8000 214 | 215 | # SearNGX 216 | searxng: 217 | container_name: searxng 218 | image: searxng/searxng:latest 219 | networks: 220 | - external 221 | ports: 222 | - "5080:8080" 223 | volumes: 224 | - $DOCKER_PATH/searxng:/etc/searxng:rw 225 | environment: 226 | - SEARXNG_BASE_URL=https://sear.$DOMAIN/ 227 | cap_drop: 228 | - ALL 229 | cap_add: 230 | - CHOWN 231 | - SETGID 232 | - SETUID 233 | - DAC_OVERRIDE 234 | logging: 235 | driver: "json-file" 236 | options: 237 | max-size: "1m" 238 | max-file: "1" 239 | 240 | # Languagetool - self-host spell checker 241 | languagetool: 242 | image: erikvl87/languagetool 243 | container_name: languagetool 244 | ports: 245 | - 8018:8010 # Using default port from the image 246 | labels: 247 | autoheal: 'true' 248 | networks: 249 | - external 250 | environment: 251 | - langtool_languageModel=/ngrams # OPTIONAL: Using ngrams data 252 | - Java_Xms=256m # OPTIONAL: Setting a minimal Java heap size of 512 mib 253 | - Java_Xmx=512m # OPTIONAL: Setting a maximum Java heap size of 1 Gib 254 | volumes: 255 | - $DOCKER_PATH/languagetool:/ngrams 256 | restart: unless-stopped 257 | healthcheck: 258 | test: curl -d "text=Color atomize" -d "language=en-AU" http://localhost:8010/v2/check > /dev/null || exit 1 259 | start_period: 25s 260 | timeout: 5s 261 | interval: 10s 262 | retries: 3 263 | 264 | # UptimeKuma service monitor 265 | uptimekuma: 266 | container_name: uptimekuma 267 | image: louislam/uptime-kuma 268 | restart: unless-stopped 269 | ports: 270 | - 2001:3001 271 | volumes: 272 | - $PERSIST/uptimekuma:/app/data 273 | dns: 274 | - 192.168.1.2 275 | 276 | 277 | linkwardendb: 278 | image: postgres:16-alpine 279 | container_name: linkwardendb 280 | env_file: .env 281 | volumes: 282 | - $DOCKER_PATH/linkwardendb:/var/lib/postgresql/data 283 | # ports: 284 | # - 5532:5432 285 | restart: unless-stopped 286 | 287 | linkwarden: 288 | container_name: linkwarden 289 | env_file: .env 290 | environment: 291 | - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@linkwardendb:5432/postgres 292 | - NEXT_PUBLIC_DISABLE_REGISTRATION=true 293 | - NEXTAUTH_URL=https://lw.$DOMAIN 294 | - NEXTAUTH_URL_INTERNAL=https://lw.$DOMAIN 295 | - NEXTAUTH_SECRET=$NEXTAUTH_SECRET 296 | image: ghcr.io/linkwarden/linkwarden:latest 297 | ports: 298 | - 3111:3000 299 | volumes: 300 | - $DOCKER_PATH/linkwarden:/data/data 301 | depends_on: 302 | - linkwardendb 303 | restart: unless-stopped 304 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dockerholics 2 | Join our community [here](https://www.facebook.com/groups/205764024543769) 3 | 4 | # Docker Compose [Examples](https://github.com/petersem/dockerholics/tree/main/compose-examples) 5 | Use these to kick-start your installs. 6 | - [Books](https://github.com/petersem/dockerholics/tree/main/compose-examples/books) 7 | - [Docker](https://github.com/petersem/dockerholics/tree/main/compose-examples/docker) 8 | - [Download](https://github.com/petersem/dockerholics/tree/main/compose-examples/download) 9 | - [Home Assistant](https://github.com/petersem/dockerholics/tree/main/compose-examples/homeassistant) 10 | - [Networking](https://github.com/petersem/dockerholics/tree/main/compose-examples/network) 11 | - [Plex](https://github.com/petersem/dockerholics/tree/main/compose-examples/plex) 12 | - [Productivity](https://github.com/petersem/dockerholics/tree/main/compose-examples/productivity) 13 | 14 | - [Linux Aliases](https://raw.githubusercontent.com/petersem/dockerholics/main/.bashrc) 15 | 16 | # Dockerholics Application List 17 | This is a list of free applications which can be hosted locally in Docker containers. These are images that the group experts have tried out and verified. 18 | > See [Contributing](#Contributing) for ways that you can add to this list. 19 | 20 | ## Categories 21 | - [Dockerholics](#dockerholics) 22 | - [Docker Compose Examples](#docker-compose-examples) 23 | - [Dockerholics Application List](#dockerholics-application-list) 24 | - [Categories](#categories) 25 | - [Backup](#backup) 26 | - [Business](#business) 27 | - [Collaboration and Synchronisation](#collaboration-and-synchronisation) 28 | - [Content Creation](#content-creation) 29 | - [Databases and Data Stores](#databases-and-data-stores) 30 | - [Development](#development) 31 | - [Docker](#docker) 32 | - [Document Management](#document-management) 33 | - [Downloading and Searching](#downloading-and-searching) 34 | - [E-books](#e-books) 35 | - [Entertainment](#entertainment) 36 | - [Finance](#finance) 37 | - [Information Sharing](#information-sharing) 38 | - [Internet](#internet) 39 | - [Link Organisation](#link-organisation) 40 | - [Media Servers](#media-servers) 41 | - [Media Management](#media-management) 42 | - [Media Utilities](#media-utilities) 43 | - [Messaging Tools](#messaging-tools) 44 | - [Monitoring and Management](#monitoring-and-management) 45 | - [Networking and Security](#networking-and-security) 46 | - [Photos](#photos) 47 | - [Planning](#planning) 48 | - [Recipe Management](#recipe-management) 49 | - [Security](#security) 50 | - [Contributing](#contributing) 51 | 52 | ## Backup 53 | - [Borgmatic](https://github.com/modem7/docker-borgmatic) 54 | Borgmatic is simple, configuration-driven backup software for servers and workstations. Protect your files with client-side encryption. Backup your databases too. Monitor it all with integrated third-party services. `Recommended` 55 | - [Duplicacy](https://github.com/gilbertchen/duplicacy) 56 | Duplicacy is a new generation cross-platform cloud backup tool based on the idea of [Lock-Free Deduplication](https://github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication). 57 | - [Duplicati](https://github.com/duplicati/duplicati) 58 | Duplicati is a free, open source, backup client that securely stores encrypted, incremental, compressed backups on cloud storage services and remote file servers. 59 | 60 | **[`^ back to top ^`](#dockerholics-application-list)** 61 | 62 | ## Business 63 | - [Dolibarr](https://hub.docker.com/r/tuxgasy/dolibarr) 64 | ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda, etc.) 65 | - [LibreOffice](https://hub.docker.com/r/linuxserver/libreoffice) 66 | is a free and powerful office suite, and a successor to OpenOffice.org (commonly known as OpenOffice). Its clean interface and feature-rich tools help you unleash your creativity and enhance your productivity. 67 | - [Mattermost](https://hub.docker.com/r/mattermost/mattermost-team-edition) 68 | is an open-source, self-hostable online chat service with file sharing, search, and integrations. It is designed as an internal chat for organisations and companies, and mostly markets itself as an open-source alternative to Slack and Microsoft Teams. 69 | - [Monica](https://hub.docker.com/_/monica) 70 | is the Personal Relationship Manager. `Recommended` 71 | 72 | **[`^ back to top ^`](#dockerholics-application-list)** 73 | 74 | ## Collaboration and Synchronisation 75 | - [FileRun](https://hub.docker.com/r/filerun/filerun) 76 | is a self-hosted Google Drive alternative. It is a full featured web based file manager with an easy to use user interface. 77 | - [FileBrowser](https://hub.docker.com/r/filebrowser/filebrowser) 78 | provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. `Recommended` 79 | - [HasteBin](https://hub.docker.com/r/rlister/hastebin) 80 | is a simple pastebin, which can be installed on a protected network `Recommended` 81 | - [Hastypaste](https://github.com/enchant97/hasty-paste) 82 | is a fast and minimal paste bin, written in Python using Quart. `Recommended` 83 | - [NextCloud](https://hub.docker.com/_/nextcloud) 84 | is a safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms. `Recommended` 85 | - [Picoshare](https://github.com/mtlynch/picoshare) 86 | is a minimalist service that allows you to share files, or simple text pastes, easily. `Recommended` 87 | - [PrivateBin](https://hub.docker.com/r/privatebin/nginx-fpm-alpine) 88 | is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted and decrypted in the browser using 256bit AES. 89 | - [SyncThing](https://hub.docker.com/r/linuxserver/syncthing) 90 | replaces proprietary sync and cloud services with something open, trustworthy and decentralized. 91 | - [WBO](https://hub.docker.com/r/lovasoa/wbo) 92 | is an online collaborative whiteboard that is simple, easy to use and open-source. 93 | 94 | **[`^ back to top ^`](#dockerholics-application-list)** 95 | 96 | ## Content Creation 97 | - [BookStack](https://hub.docker.com/r/linuxserver/bookstack) 98 | is a free and open source Wiki designed for creating beautiful documentation. Feautring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. `Recommended` 99 | - [Draw.io](https://hub.docker.com/r/fjudith/draw.io) 100 | is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPMN online, as a circuit diagram maker, and more. 101 | - [Ghost](https://hub.docker.com/_/ghost) 102 | is a free and open source blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications. `Recommended` 103 | - [Joplin](https://hub.docker.com/r/joplin/server) 104 | is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. (see github page for client/server install instructions) 105 | - [Languagetool](https://hub.docker.com/r/erikvl87/languagetool) 106 | is an Open Source proofreading software for English, French, German, Polish, Russian, and more than 20 other languages. 107 | - [Limesurvey](https://hub.docker.com/r/acspri/limesurvey) 108 | is a free and open source on-line statistical survey web app. 109 | - [Opengist](https://github.com/thomiceli/opengist#with-docker) 110 | is a self-hosted pastebin powered by Git. 111 | - [Strapi](https://hub.docker.com/r/strapi/strapi) 112 | is the leading open-source headless CMS. 113 | - [Wiznote](https://hub.docker.com/r/wiznote/wizserver) 114 | is a cloud service that you could use to save your notes or share documents with your colleagues. 115 | - [Wordpress](https://hub.docker.com/_/wordpress) 116 | is a free and open source blogging tool and a content management system (CMS) based on PHP and MySQL, which runs on a web hosting service. Features include a plugin architecture and a template system. `Recommended` 117 | 118 | **[`^ back to top ^`](#dockerholics-application-list)** 119 | 120 | ## Databases and Data Stores 121 | - [Eclipse-Mosquitto](https://hub.docker.com/_/eclipse-mosquitto) 122 | Eclipse Mosquitto is an open source message broker which implements MQTT. 123 | - [InfluxDB](https://hub.docker.com/_/influxdb) 124 | is an open source time series database for recording metrics, events, and analytics. `Recommended` 125 | - [MariaDB](https://hub.docker.com/r/linuxserver/mariadb) 126 | is one of the most popular database servers. Made by the original developers of MySQL. `Recommended` 127 | - [MySQL](https://hub.docker.com/_/mysql) 128 | is a widely used, open-source relational database management system (RDBMS). 129 | - [MySQL Workbench](https://hub.docker.com/r/linuxserver/mysql-workbench) 130 | is a unified visual tool for database architects, developers, and DBAs. MySQL Workbench provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, and backup. 131 | - [PHPMyAdmin](https://hub.docker.com/r/phpmyadmin/phpmyadmin/) 132 | is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. 133 | - [PostgreSQL](https://hub.docker.com/_/postgres/) 134 | is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices. It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users. Recent versions also provide replication of the database itself for security and scalability. [Docs](https://www.postgresql.org/docs/) 135 | - [Redis](https://hub.docker.com/_/redis) 136 | is an open source, in-memory data structure store, used as a database, cache, and message broker. For example to improve speed of "Authelia". [Docs](https://redis.io/documentation/) 137 | 138 | **[`^ back to top ^`](#dockerholics-application-list)** 139 | 140 | ## Development 141 | - [Open-VS-Code-Server](https://github.com/linuxserver/docker-openvscode-server) 142 | is Open VS Code running on a remote server, accessible through the browser. 143 | - [Code-Server](https://hub.docker.com/r/linuxserver/code-server) 144 | is VS Code running on a remote server, accessible through the browser. `Recommended` 145 | - [Gitea](https://hub.docker.com/r/gitea/gitea) 146 | is a community managed painless self-hosted Git service. 147 | - [Node-Red](https://hub.docker.com/r/nodered/node-red) 148 | is a low-code programming for event-driven applications 149 | - [Snippet-Box](https://hub.docker.com/r/pawelmalak/snippet-box) 150 | is a simple self-hosted app for organizing your code snippets. 151 | 152 | **[`^ back to top ^`](#dockerholics-application-list)** 153 | 154 | ## Docker 155 | - [Autoheal](https://hub.docker.com/r/willfarrell/autoheal) 156 | monitors and restarts unhealthy docker containers. `Recommended` 157 | - [Dozzle](https://hub.docker.com/r/amir20/dozzle) 158 | is a small lightweight application with a web based interface to monitor Docker logs. It doesn’t store any log files. It is for live monitoring of your container logs only. `Recommended` 159 | - [Diun](https://crazymax.dev/diun/) 160 | receive notifications when a Docker image is updated on a Docker registry. `Recommended` 161 | - [Monocker](https://hub.docker.com/r/petersem/monocker) 162 | Monitor and alert on container state changes 163 | - [Portainer](https://hub.docker.com/r/portainer/portainer-ce) 164 | is a lightweight management UI which allows you to easily manage your Docker AND Kubernetes clusters. `Recommended` 165 | - [Volume-Backup](https://hub.docker.com/r/loomchild/volume-backup) 166 | is a utility to backup and restore docker volumes. 167 | - [WatchTower](https://hub.docker.com/r/containrrr/watchtower) 168 | is a process for automating Docker container base image updates. `Recommended` 169 | 170 | **[`^ back to top ^`](#dockerholics-application-list)** 171 | 172 | ## Document Management 173 | - [PaperMerge](https://hub.docker.com/r/linuxserver/papermerge) 174 | is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. `Recommended` 175 | - [Paperless-ngx](https://hub.docker.com/r/paperlessngx/paperless-ngx) 176 | Open Source document management system, including OCR, import from specific folder, E-Mail attachement import, full text search, machine learning powered document matching and much more. Archive your documents easily and store them in your private cloud. [Docs](https://paperless-ngx.readthedocs.io/en/latest/) `Recommended` 177 | 178 | - [Reactive-Resume](https://hub.docker.com/r/amruthpillai/reactive-resume) 179 | Reactive Resume is a free and open source resume builder that’s built to make the mundane tasks of creating, updating and sharing your resume easy. You can create multiple resumes, share them with recruiters through a unique link and print as PDF. [Docs](https://docs.rxresu.me) 180 | 181 | **[`^ back to top ^`](#dockerholics-application-list)** 182 | 183 | ## Downloading and Searching 184 | > Always use a VPN or SSL connection for dowload tools 185 | 186 | - [Exatorrent](https://github.com/varbhat/exatorrent) 187 | Modern layout and light weight torrent app. 188 | - [Gaps](https://hub.docker.com/r/housewrecker/gaps) 189 | Search your movies and find missing movies from MovieDB collections. `Recommended` 190 | - [Jackett](https://hub.docker.com/r/linuxserver/jackett) 191 | works as a proxy server: it translates queries from apps (Sonarr, SickRage, CouchPotato, Mylar, etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. 192 | - [NzbGet](https://hub.docker.com/r/linuxserver/nzbget) 193 | is a usenet downloader, written in C++ and designed with performance in mind to achieve maximum download speed by using very little system resources. 194 | - [NzbHydra2](https://hub.docker.com/r/linuxserver/nzbhydra2) 195 | is a meta search application for NZB indexers, the "spiritual successor" to NZBmegasearcH, and an evolution of the original application NZBHydra. 196 | - [Prowlarr](https://hub.docker.com/r/linuxserver/prowlarr) 197 | is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. `Recommended` 198 | - [QbitTorrent](https://hub.docker.com/r/hotio/qbittorrent) 199 | aims to provide an open-source software alternative to µTorrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library. `Recommended` 200 | - [RuTorrent](https://hub.docker.com/r/linuxserver/rutorrent) 201 | is a popular rtorrent client with a webui for ease of use. 202 | - [Sabnzbd](https://hub.docker.com/r/linuxserver/sabnzbd) 203 | makes Usenet as simple and streamlined as possible by automating everything we can. `Recommended` 204 | - [Transmission-OpenVPN](https://hub.docker.com/r/haugene/transmission-openvpn) 205 | is a Torrent Client which runs only when there is an active VPN tunnel. Has built in support for many popular VPN providers. `Recommended` 206 | 207 | **[`^ back to top ^`](#dockerholics-application-list)** 208 | 209 | ## E-books 210 | - [Audiobookshelf](https://www.audiobookshelf.org/) 211 | is a self-hosted audiobook and podcast server 212 | - [Calibre](https://hub.docker.com/r/linuxserver/calibre) 213 | is a powerful and easy to use e-book manager. Users say it’s outstanding and a must-have. It’ll allow you to do nearly everything and it takes things a step beyond normal e-book software. `Recommended` 214 | - [Calibre-Web](https://hub.docker.com/r/linuxserver/calibre-web) 215 | is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself. `Recommended` 216 | - [Cops](https://hub.docker.com/r/linuxserver/cops) 217 | links to your Calibre library database and allows downloading and emailing of books directly from a web browser and provides a OPDS feed to connect to your devices. `Recommended` 218 | 219 | **[`^ back to top ^`](#dockerholics-application-list)** 220 | 221 | ## Entertainment 222 | - [OpenRA](https://hub.docker.com/r/rmoriz/openra) 223 | is a multi-player network client for the OpenRA game 224 | - [Mario](https://hub.docker.com/r/pengbai/docker-supermario) 225 | Infinite Mario in HTML5 JavaScript - using Canvas and Audio elements 226 | - [Rickroll](https://hub.docker.com/r/modem7/docker-rickroll) 227 | is a self-hosted, self-contained Rickroll container 228 | - [Minecraft Server](https://hub.docker.com/r/itzg/minecraft-server) 229 | enables deployment of a minecraft server with automatic version management. It also supports mods and other server customizations. [Docs](https://github.com/itzg/docker-minecraft-server#readme) 230 | 231 | 232 | **[`^ back to top ^`](#dockerholics-application-list)** 233 | 234 | ## Finance 235 | - [Actual Budget](https://hub.docker.com/r/actualbudget/actual-server) 236 | is a super fast and privacy-focused app for managing your finances. At its heart is the well proven and much loved Envelope Budgeting methodology. You own your data and can do whatever you want with it. Featuring multi-device sync, optional end-to-end encryption and so much more. 237 | - [BudgetZero](https://hub.docker.com/r/budgetzero/budgetzero) 238 | budgetzero is a free, open-source, privacy-friendly, offline-first budgeting system. `Recommended` 239 | - [Firefly III](https://hub.docker.com/r/fireflyiii/core) 240 | is a manager for your personal finances. It can help you keep track of your expenses and income, so you can spend less and save more. Firefly III supports the use of budgets, categories and tags. It can import data from external sources and it has many neat financial reports available. [Docs](https://docs.firefly-iii.org/) `Recommended` 241 | - [Hammond](https://hub.docker.com/r/akhilrex/hammond) 242 | is a self hosted vehicle management system to track fuel and other expenses related to all of your vehicles. It supports multiple users sharing multiple vehicles. 243 | - [Openbudgeteer](https://hub.docker.com/r/axelander/openbudgeteer) 244 | is a budgeting app based on the Bucket Budgeting Principle and inspired by YNAB and Buckets. 245 | 246 | **[`^ back to top ^`](#dockerholics-application-list)** 247 | 248 | ## Information Sharing 249 | - [MagicMirror²](https://hub.docker.com/r/bastilimbach/docker-magicmirror) 250 | is an open source modular smart mirror platform. With a growing list of installable modules, which allows you to convert your hallway or bathroom mirror into your personal assistant. `Recommended` 251 | 252 | **[`^ back to top ^`](#dockerholics-application-list)** 253 | 254 | ## Internet 255 | - [FreshRSS](https://hub.docker.com/r/linuxserver/freshrss) 256 | is a free, self-hostable aggregator for rss feeds. 257 | - [TheLounge](https://hub.docker.com/r/linuxserver/thelounge) 258 | is a web IRC client that you host on your own server. 259 | - [NginX](https://hub.docker.com/_/nginx) 260 | is an open source reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, HTTP cache, and a web server. 261 | - [Searxng](https://github.com/searxng/searxng-docker) 262 | is a privacy-respecting, hackable metasearch engine `Recommended` 263 | 264 | **[`^ back to top ^`](#dockerholics-application-list)** 265 | 266 | ## Link Organisation 267 | - [DashMachine](https://hub.docker.com/r/rmountjoy/dashmachine) 268 | is another web application bookmark dashboard, with fun features. 269 | - [Flame](https://github.com/pawelmalak/flame) 270 | Flame is self-hosted startpage for your server. 271 | - [Homepage](https://github.com/benphelps/homepage) 272 | is self-hosted startpage for your server. `Recommended` 273 | - [Heimdall](https://hub.docker.com/r/linuxserver/heimdall) 274 | is a way to organise all those links to your most used web sites and web applications in a simple way. Simplicity is the key to Heimdall. 275 | - [Homarr](https://github.com/ajnart/homarr) 276 | is a simple and lightweight homepage for your server, that helps you easily access all of your services in one place. 277 | - [Homer](https://hub.docker.com/r/b4bz/homer) 278 | is a dead simple static HOMe for your servER to keep your services on hand from a simple yaml config. `Recommended` 279 | - [Linkding](https://hub.docker.com/r/sissbruecker/linkding) 280 | is a simple bookmark service that you can host yourself 281 | - [Linkwarden](https://github.com/linkwarden/linkwarden) 282 | is a self-hosted, open-source collaborative bookmark manager to collect, organize and archive webpages. 283 | - [Organizr](https://hub.docker.com/r/organizr/organizr) 284 | aims to be your one stop shop for your Servers Frontend. 285 | 286 | 287 | **[`^ back to top ^`](#dockerholics-application-list)** 288 | 289 | ## Media Servers 290 | - [AirSonic](https://hub.docker.com/r/airsonic/airsonic) 291 | is a free, web-based media streamer, providing ubiquitous access to your music. 292 | - [Emby](https://hub.docker.com/r/linuxserver/emby) 293 | organizes video, music, live TV, and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. 294 | - [JellyFin](https://hub.docker.com/r/linuxserver/jellyfin) 295 | is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. `Recommended` 296 | - [Plex](https://hub.docker.com/r/linuxserver/plex) 297 | organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. `Recommended` 298 | 299 | **[`^ back to top ^`](#dockerholics-application-list)** 300 | 301 | ## Media Management 302 | - [Bazarr](https://hub.docker.com/r/linuxserver/bazarr) 303 | is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you. `Recommended` 304 | - [LazyLibrarian](https://hub.docker.com/r/linuxserver/lazylibrarian) 305 | is a program to follow authors and grab metadata for all your digital reading needs. It uses a combination of Goodreads Librarything and optionally GoogleBooks as sources for author info and book info. 306 | - [Lidarr](https://hub.docker.com/r/linuxserver/lidarr) 307 | is a music collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new tracks from your favorite artists and will grab, sort and rename them. `Recommended` 308 | - [Radarr](https://hub.docker.com/r/linuxserver/radarr) 309 | is a fork of Sonarr to work with movies à la Couchpotato. `Recommended` 310 | - [Readarr](https://hub.docker.com/r/hotio/readarr) 311 | is an ebook (and maybe eventually magazine/audiobook) collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new books from your favorite authors and will grab, sort and rename them. `Recommended` 312 | - [Sonarr](https://hub.docker.com/r/linuxserver/sonarr) 313 | is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. `Recommended` 314 | 315 | **[`^ back to top ^`](#dockerholics-application-list)** 316 | 317 | ## Media Utilities 318 | - [AllTube](https://hub.docker.com/r/rudloff/alltube) 319 | is a HTML GUI for youtube-dl 320 | - [DizQueTV](https://hub.docker.com/r/vexorian/dizquetv) 321 | allows you to create your own IPTV channels and spoof HDHR tuners from your media library. 322 | - [Exportarr](https://hub.docker.com/r/petersem/exportarr) 323 | allows you to share your Radarr lists with others, without having to give them your Radarr API key. 324 | - [Handbrake](https://hub.docker.com/r/jlesage/handbrake) 325 | is a Docker container for HandBrake. 326 | - [Jellystat](https://hub.docker.com/r/cyfershepard/jellystat) 327 | is a free and open source Statistics App for Jellyfin! 328 | - [MovieMatch](https://hub.docker.com/r/lukechannings/moviematch) 329 | Have you ever spent longer deciding on a movie than it'd take to just watch a random movie? This is an app that helps you and your friends pick a movie to watch from a Plex server. 330 | - [Ombi](https://hub.docker.com/r/linuxserver/ombi) 331 | allows you to host your own Plex Request and user management system. If you are sharing your Plex server with other users, allow them to request new content using an easy to manage interface! 332 | - [Overseerr](https://hub.docker.com/r/sctx/overseerr) 333 | is a free and open source software application for managing requests for your media library. It integrates with your existing services, such as Sonarr, Radarr, and Plex! `Recommended` 334 | - [Plex-Meta-Manager](https://github.com/meisnate12/Plex-Meta-Manager) 335 | eases the creation and maintenance of metadata, collections, and playlists within a Plex Media Server 336 | - [Posterr](https://hub.docker.com/r/petersem/posterr) 337 | is a media poster display for Plex, Sonarr, and Radarr 338 | - [Reqestrr](https://hub.docker.com/r/linuxserver/requestrr) 339 | is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat. 340 | - [Tautulli](https://hub.docker.com/r/tautulli/tautulli) 341 | will monitor your Plex Media Server `Recommended` 342 | - [Tdarr](https://hub.docker.com/r/haveagitgat/tdarr) 343 | is a closed-source distributed transcoding system for automating media library transcode/remux management and making sure your files are exactly how you need them to be in terms of codecs/streams/containers and so on. `Recommended` 344 | - [Xteve](https://hub.docker.com/r/dnsforge/xteve) 345 | emulates a SiliconDust HDHomeRun OTA tuner, which allows it to expose IPTV style channels to software, which would not normally support it. 346 | - [Varken](https://hub.docker.com/r/boerderij/varken) 347 | is a standalone command-line utility to aggregate data from the Plex ecosystem into InfluxDB 348 | 349 | **[`^ back to top ^`](#dockerholics-application-list)** 350 | 351 | ## Messaging Tools 352 | - [Gotify](https://hub.docker.com/r/gotify/server) 353 | a simple server for sending and receiving messages 354 | - [NTFY](https://hub.docker.com/r/binwiederhier/ntfy) 355 | Send push notifications to your phone or desktop via PUT/POST 356 | 357 | **[`^ back to top ^`](#dockerholics-application-list)** 358 | 359 | ## Monitoring and Management 360 | - [BabyBuddy](https://hub.docker.com/r/linuxserver/babybuddy) 361 | tracks your baby's schedule and routine. 362 | - [ChangeDetection](https://hub.docker.com/r/dgtlmoon/changedetection.io) 363 | lets you know when web pages change! Stay on top of new information! 364 | - [Frigate](https://hub.docker.com/r/blakeblackshear/frigate) 365 | is an NVR With Realtime Object Detection for IP Cameras 366 | - [Glances](https://hub.docker.com/r/nicolargo/glances) 367 | is a cross-platform monitoring tool which aims to present a maximum of information in a minimum of space. 368 | - [Grafana](https://hub.docker.com/r/grafana/grafana) 369 | Query, visualize, alert on, and understand your data no matter where it’s stored. 370 | - [HomeAssistant](https://hub.docker.com/r/homeassistant/home-assistant) 371 | is a open source home automation that puts local control and privacy first. `Recommended` 372 | - [Monitorr](https://hub.docker.com/r/monitorr/monitorr) 373 | is a webfront to live display the status of any webapp or service. 374 | - [NetData](https://hub.docker.com/r/netdata/netdata) 375 | is distributed, real-time, performance and health monitoring for systems and applications. `Recommended` 376 | - [OwntracksRecorder](https://hub.docker.com/r/owntracks/recorder) 377 | is a lightweight program for storing and accessing location data published via MQTT (or HTTP) by the OwnTracks apps. `Recommended` 378 | - [Scrutiny](https://github.com/AnalogJ/scrutiny) 379 | is a WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze. 380 | - [SmokePing](https://hub.docker.com/r/linuxserver/smokeping) 381 | keeps track of your network latency. 382 | - [Telegraf](https://hub.docker.com/_/telegraf) 383 | is an agent for collecting metrics and writing them to InfluxDB or other outputs. 384 | - [Uptime Kuma](https://hub.docker.com/r/louislam/uptime-kuma) 385 | is a fancy self-hosted website/ip monitoring tool . `Recommended` 386 | 387 | **[`^ back to top ^`](#dockerholics-application-list)** 388 | 389 | ## Networking and Security 390 | - [DuckDNS](https://hub.docker.com/r/linuxserver/duckdns) 391 | is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. The service is completely free, and doesn't require reactivation or forum posts to maintain its existence. 392 | - [Filezilla](https://hub.docker.com/r/jlesage/filezilla) 393 | is a cross-platform graphical FTP, SFTP, and FTPS file management tool with a vast list of features. 394 | - [LibreSpeed](https://hub.docker.com/r/linuxserver/librespeed) 395 | is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers. No Flash, No Java, No Websocket, No Bullshit. 396 | - [Nginx Proxy Manager](https://hub.docker.com/r/jc21/nginx-proxy-manager) 397 | enables you to easily forward to your websites running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt. `Recommended` 398 | - [OpenVPN Client](https://hub.docker.com/r/dperson/openvpn-client) 399 | is an OpenVPN client docker container. It makes routing containers' traffic through OpenVPN easy. `Recommended` 400 | - [Orbital-sync](https://github.com/mattwebbio/orbital-sync) 401 | synchronizes multiple Pi-hole instances for high availability (HA) using the built-in "teleporter". `Recommended` 402 | - [Pi-hole Unbound](https://hub.docker.com/r/cbcrowe/pihole-unbound) 403 | uses Docker to run Pi-Hole with an upstream Unbound resolver `Recommended` 404 | - [Privoxy](https://hub.docker.com/r/vimagick/privoxy) 405 | is a non-caching web proxy, with advanced features. 406 | - [Speed Test](https://hub.docker.com/r/e7db/speedtest) 407 | is a self-hosted, lightweight speed test implemented in JavaScript, and based on Web Workers and XMLHttpRequest. 408 | - [Traefik](https://hub.docker.com/_/traefik) 409 | is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. `Recommended` 410 | - [WireGuard](https://hub.docker.com/r/linuxserver/wireguard) 411 | is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. . `Recommended` 412 | - [Zigbee2MQTT](https://hub.docker.com/r/koenkk/zigbee2mqtt) 413 | Allows you to use your Zigbee devices without the vendors bridge/gateway. `Recommended` 414 | 415 | **[`^ back to top ^`](#dockerholics-application-list)** 416 | 417 | ## Photos 418 | - [Chevereto](https://hub.docker.com/r/linuxserver/chevereto) 419 | is an image hosting software that allows you to create a beautiful and full-featured image hosting website on your own server. 420 | - [LibrePhotos](https://github.com/LibrePhotos/librephotos) 421 | is a self-hosted open source photo management service, with a slight focus on cool graphs 422 | - [Lychee](https://hub.docker.com/r/lycheeorg/lychee) 423 | is a great looking and easy-to-use photo-management-system. 424 | - [PhotoShow](https://hub.docker.com/r/linuxserver/photoshow) 425 | is gallery software at its easiest, it doesn't even require a database. 426 | - [PiWigo](https://hub.docker.com/r/linuxserver/piwigo) 427 | is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures. `Recommended` 428 | - [Photoprism](https://hub.docker.com/r/photoprism/photoprism) 429 | A server-based application for browsing, organizing and sharing your personal photo collection. (includes face recognition) `Recommended` 430 | - [Immich](https://immich.app/docs/install/docker-compose/) 431 | Self-hosted backup solution for photos and videos on mobile device. 432 | 433 | **[`^ back to top ^`](#dockerholics-application-list)** 434 | 435 | ## Planning 436 | - [Grocy](https://hub.docker.com/r/linuxserver/grocy) 437 | is a web-based self-hosted groceries & household management solution for your home. 438 | - [Focalboard](https://github.com/mattermost/focalboard) 439 | is an open source, multilingual, self-hosted project management tool that's an alternative to Trello, Notion, and Asana. 440 | - [Kanboard](https://hub.docker.com/r/kanboard/kanboard) 441 | is a free and open source Kanban project management software. 442 | - [Planka](https://hub.docker.com/r/meltyshev/planka) 443 | is a Trello-like kanban board built with React and Redux 444 | - [Pokertime](https://hub.docker.com/r/sebazzz/pokertime) 445 | Remote planning poker tool built in ASP.NET Core and Blazor. 446 | - [Taskcafe](https://hub.docker.com/r/taskcafe/taskcafe) 447 | is a Kanban-style management tool 448 | - [Wekan](https://github.com/wekan/wekan) 449 | open source Kanban 450 | `Recommended` 451 | 452 | **[`^ back to top ^`](#dockerholics-application-list)** 453 | 454 | ## Recipe Management 455 | - [Mealie](https://hub.docker.com/r/hkotel/mealie) 456 | is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor. `Recommended` 457 | 458 | **[`^ back to top ^`](#dockerholics-application-list)** 459 | 460 | ## Security 461 | - [Authelia](https://hub.docker.com/r/authelia/authelia) 462 | is an open-source authentication and authorization server providing two-factor authentication and single sign-on (SSO) for your applications via a web portal. `Recommended` 463 | - [VaultWarden](https://hub.docker.com/r/vaultwarden/server) 464 | is an alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients. `Recommended` 465 | 466 | **[`^ back to top ^`](#dockerholics-application-list)** 467 | 468 | ## Contributing 469 | - Submit a pull request. 470 | - Send a message or tag a group expert on Dockerholics. 471 | 472 | **[`^ back to top ^`](#dockerholics-application-list)** 473 | 474 | 475 | > If you like my work, you can make a donation to say thanks! [Buy me a coffee](https://www.paypal.com/paypalme/thanksmp) 476 | --------------------------------------------------------------------------------