diff --git a/.bashrc b/.bashrc index 966d803..e1662cc 100644 --- a/.bashrc +++ b/.bashrc @@ -1,29 +1,71 @@ +# nano ~/.bashrc # run 'source ~/.bashrc' to load latest changes in current session # ALIASES ##################################################### -# Note that these aliases do not use the latest docker compose cli commands as Synology docker is a number of versions behind. -# If you are running the latest Docker engine on linux, then substitute 'docker-compose' for 'docker compose' - -# Set docker aliases -alias cdkr='cd /volume1/docker' -alias list='docker ps -a --format "table {{.Names}}\t{{.ID}}\t{{.Image}}\t{{.Status}}" | (read -r; printf "%s\n" "$REPLY"; sort -k 1 )' -alias down='docker-compose down -v' -alias pull='docker-compose pull' -alias up='docker-compose up -d' +# Note that these aliases do not work on Synology docker, due to the fact that they are a number of versions behind. (change "docker compose" to "docker-compose" and then it should work) + + +########## Set docker aliases +# + +# basic change folder command +alias cdkr='cd ~/docker' +alias cdcd='cd ~/code/dockerholics/compose-examples' + +# list all containers in a formatted list +alias list='docker ps -a --format "table {{.Names}}\t{{.ID}}\t{{.Image}}\t{{.Status}}" | (read -r; printf "%s\n" "$REPLY"; sort -k 1 )' + +# stop and remove all containers in your compose file. Optional to add a single container name +alias down='docker compose down -v' + +# pull latest images in your compose file. Optional to add a single container name +alias pull='docker compose pull' + +# start all containers in your compose file. Optional to add a single container name +alias up='docker compose up -d' + +# inspect the details for a given container alias inspect='docker inspect' -alias create='docker-compose up --no-start' + +# create, but dont start, all containers in your compose file. Optional to add a single container name +alias create='docker compose up --no-start' + +# stop a specific container alias stop='docker stop' + +# stop all containers +alias stopall='docker stop $(docker ps -a -q)' + +# start all containers +alias startall='docker start $(docker ps -a -q)' + +# start a specific container alias start='docker start' + +# Remove all images and volumes that are not in use. *including stopped containers* alias prune='docker system prune -a --volumes' + +# delete a stopped container alias del='docker rm' -# FUNCTIONS #################################################### +# restart a container +alias cycle='docker restart' + +# show the logs for a specific container +alias logs='docker logs -f' -# Restarts a container +# show host disk use for docker +alias ddf='docker system df' + +# rename a specified container +alias rename='docker rename' + +# FUNCTIONS #################################################### # -cycle() { - stop $1 - start $1 + +# run a command inside a given container. Pass a single command or encapsulate in "" for a command with a parameter +drun() { + docker exec $1 } # pulls a image and then creates and starts it @@ -46,7 +88,7 @@ terma() { # stops and deletes a container # -mdk() { +std() { stop $1 del $1 } @@ -57,8 +99,10 @@ piu() { sudo netstat -plan | grep ":$1" } + + # ENVIRONMENT SETTINGS ########################################## -# # Helps avoid timeouts for large yaml scripts + export DOCKER_CLIENT_TIMEOUT=360 export COMPOSE_HTTP_TIMEOUT=360 \ No newline at end of file diff --git a/.github/workflows/labelsync.yml b/.github/workflows/labelsync.yml index a9cbd25..cfdf481 100644 --- a/.github/workflows/labelsync.yml +++ b/.github/workflows/labelsync.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Synchronize labels uses: julb/action-manage-label@v1 diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml index 0ba64fa..88c270e 100644 --- a/.github/workflows/linkcheck.yml +++ b/.github/workflows/linkcheck.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: docker://dkhamsing/awesome_bot:latest with: args: /github/workspace/README.md --allow-redirect --white-list https://www.facebook.com/groups/205764024543769 \ No newline at end of file diff --git a/README.md b/README.md index 8c4671f..0488772 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,14 @@ Join our community [here](https://www.facebook.com/groups/205764024543769) # Docker Compose [Examples](https://github.com/petersem/dockerholics/tree/main/compose-examples) Use these to kick-start your installs. +- [Books](https://github.com/petersem/dockerholics/tree/main/compose-examples/books) - [Docker](https://github.com/petersem/dockerholics/tree/main/compose-examples/docker) - [Download](https://github.com/petersem/dockerholics/tree/main/compose-examples/download) +- [Home Assistant](https://github.com/petersem/dockerholics/tree/main/compose-examples/homeassistant) - [Networking](https://github.com/petersem/dockerholics/tree/main/compose-examples/network) - [Plex](https://github.com/petersem/dockerholics/tree/main/compose-examples/plex) -- [Home Assistant](https://github.com/petersem/dockerholics/tree/main/compose-examples/homeassistant) +- [Productivity](https://github.com/petersem/dockerholics/tree/main/compose-examples/productivity) + - [Linux Aliases](https://raw.githubusercontent.com/petersem/dockerholics/main/.bashrc) # Dockerholics Application List @@ -25,8 +28,8 @@ This is a list of free applications which can be hosted locally in Docker conta - [Document Management](#document-management) - [Downloading and Searching](#downloading-and-searching) - [E-books](#e-books) + - [Entertainment](#entertainment) - [Finance](#finance) - - [Gaming](#gaming) - [Information Sharing](#information-sharing) - [Internet](#internet) - [Link Organisation](#link-organisation) @@ -70,8 +73,12 @@ This is a list of free applications which can be hosted locally in Docker conta 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` - [HasteBin](https://hub.docker.com/r/rlister/hastebin) is a simple pastebin, which can be installed on a protected network `Recommended` +- [Hastypaste](https://github.com/enchant97/hasty-paste) + is a fast and minimal paste bin, written in Python using Quart. `Recommended` - [NextCloud](https://hub.docker.com/_/nextcloud) is a safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms. `Recommended` +- [Picoshare](https://github.com/mtlynch/picoshare) + is a minimalist service that allows you to share files, or simple text pastes, easily. `Recommended` - [PrivateBin](https://hub.docker.com/r/privatebin/nginx-fpm-alpine) 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. - [SyncThing](https://hub.docker.com/r/linuxserver/syncthing) @@ -94,6 +101,8 @@ This is a list of free applications which can be hosted locally in Docker conta is an Open Source proofreading software for English, French, German, Polish, Russian, and more than 20 other languages. - [Limesurvey](https://hub.docker.com/r/acspri/limesurvey) is a free and open source on-line statistical survey web app. +- [Opengist](https://github.com/thomiceli/opengist#with-docker) + is a self-hosted pastebin powered by Git. - [Strapi](https://hub.docker.com/r/strapi/strapi) is the leading open-source headless CMS. - [Wiznote](https://hub.docker.com/r/wiznote/wizserver) @@ -124,8 +133,8 @@ This is a list of free applications which can be hosted locally in Docker conta **[`^ back to top ^`](#dockerholics-application-list)** ## Development -- [Cloud9](https://hub.docker.com/r/linuxserver/cloud9) - is a complete web based IDE with terminal access. +- [Open-VS-Code-Server](https://github.com/linuxserver/docker-openvscode-server) + is Open VS Code running on a remote server, accessible through the browser. - [Code-Server](https://hub.docker.com/r/linuxserver/code-server) is VS Code running on a remote server, accessible through the browser. `Recommended` - [Gitea](https://hub.docker.com/r/gitea/gitea) @@ -158,8 +167,6 @@ This is a list of free applications which can be hosted locally in Docker conta ## Document Management - [PaperMerge](https://hub.docker.com/r/linuxserver/papermerge) is an open source document management system (DMS) primarily designed for archiving and retrieving your digital documents. `Recommended` -- [Paperless-ng](https://hub.docker.com/r/jonaswinkler/paperless-ng) - 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/) - [Paperless-ngx](https://hub.docker.com/r/paperlessngx/paperless-ngx) 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` @@ -195,8 +202,10 @@ This is a list of free applications which can be hosted locally in Docker conta **[`^ back to top ^`](#dockerholics-application-list)** ## E-books +- [Audiobookshelf](https://www.audiobookshelf.org/) + is a self-hosted audiobook and podcast server - [Calibre](https://hub.docker.com/r/linuxserver/calibre) - 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. + 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` - [Calibre-Web](https://hub.docker.com/r/linuxserver/calibre-web) 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` - [Cops](https://hub.docker.com/r/linuxserver/cops) @@ -204,6 +213,19 @@ This is a list of free applications which can be hosted locally in Docker conta **[`^ back to top ^`](#dockerholics-application-list)** +## Entertainment +- [OpenRA](https://hub.docker.com/r/rmoriz/openra) + is a multi-player network client for the OpenRA game +- [Mario](https://hub.docker.com/r/pengbai/docker-supermario) + Infinite Mario in HTML5 JavaScript - using Canvas and Audio elements +- [Rickroll](https://hub.docker.com/r/modem7/docker-rickroll) + is a self-hosted, self-contained Rickroll container +- [Minecraft Server](https://hub.docker.com/r/itzg/minecraft-server) + 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) + + +**[`^ back to top ^`](#dockerholics-application-list)** + ## Finance - [BudgetZero](https://hub.docker.com/r/budgetzero/budgetzero) budgetzero is a free, open-source, privacy-friendly, offline-first budgeting system. `Recommended` @@ -216,16 +238,6 @@ is a budgeting app based on the Bucket Budgeting Principle and inspired by YNAB **[`^ back to top ^`](#dockerholics-application-list)** -## Gaming -- [OpenRA](https://hub.docker.com/r/rmoriz/openra) - is a multi-player network client for the OpenRA game -- [Mario](https://hub.docker.com/r/pengbai/docker-supermario) - Infinite Mario in HTML5 JavaScript - using Canvas and Audio elements -- [Minecraft Server](https://hub.docker.com/r/itzg/minecraft-server) - is a docker image that can run a minecraft server which automatically runs the selected version. It also supports mods and other server customizations. [Docs](https://github.com/itzg/docker-minecraft-server#readme) - -**[`^ back to top ^`](#dockerholics-application-list)** - ## Information Sharing - [MagicMirror²](https://hub.docker.com/r/bastilimbach/docker-magicmirror) 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` @@ -239,6 +251,8 @@ is a budgeting app based on the Bucket Budgeting Principle and inspired by YNAB is a web IRC client that you host on your own server. - [NginX](https://hub.docker.com/_/nginx) 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. +- [Searxng](https://github.com/searxng/searxng-docker) + is a privacy-respecting, hackable metasearch engine `Recommended` **[`^ back to top ^`](#dockerholics-application-list)** @@ -247,13 +261,20 @@ is a budgeting app based on the Bucket Budgeting Principle and inspired by YNAB is another web application bookmark dashboard, with fun features. - [Flame](https://github.com/pawelmalak/flame) Flame is self-hosted startpage for your server. +- [Homepage](https://github.com/benphelps/homepage) + is self-hosted startpage for your server. `Recommended` - [Heimdall](https://hub.docker.com/r/linuxserver/heimdall) 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. +- [Homarr](https://github.com/ajnart/homarr) + is a simple and lightweight homepage for your server, that helps you easily access all of your services in one place. - [Homer](https://hub.docker.com/r/b4bz/homer) is a dead simple static HOMe for your servER to keep your services on hand from a simple yaml config. `Recommended` +- [Linkding](https://hub.docker.com/r/sissbruecker/linkding) + is a simple bookmark service that you can host yourself - [Organizr](https://hub.docker.com/r/organizr/organizr) aims to be your one stop shop for your Servers Frontend. + **[`^ back to top ^`](#dockerholics-application-list)** ## Media Servers @@ -293,12 +314,16 @@ is a budgeting app based on the Bucket Budgeting Principle and inspired by YNAB allows you to share your Radarr lists with others, without having to give them your Radarr API key. - [Handbrake](https://hub.docker.com/r/jlesage/handbrake) is a Docker container for HandBrake. +- [Jellystat](https://hub.docker.com/r/cyfershepard/jellystat) + is a free and open source Statistics App for Jellyfin! - [MovieMatch](https://hub.docker.com/r/lukechannings/moviematch) 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. - [Ombi](https://hub.docker.com/r/linuxserver/ombi) 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! - [Overseerr](https://hub.docker.com/r/sctx/overseerr) 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` +- [Plex-Meta-Manager](https://github.com/meisnate12/Plex-Meta-Manager) + eases the creation and maintenance of metadata, collections, and playlists within a Plex Media Server - [Posterr](https://hub.docker.com/r/petersem/posterr) is a media poster display for Plex, Sonarr, and Radarr - [Reqestrr](https://hub.docker.com/r/linuxserver/requestrr) @@ -319,6 +344,8 @@ is a budgeting app based on the Bucket Budgeting Principle and inspired by YNAB tracks your baby's schedule and routine. - [ChangeDetection](https://hub.docker.com/r/dgtlmoon/changedetection.io) lets you know when web pages change! Stay on top of new information! +- [Frigate](https://hub.docker.com/r/blakeblackshear/frigate) + is an NVR With Realtime Object Detection for IP Cameras - [Glances](https://hub.docker.com/r/nicolargo/glances) is a cross-platform monitoring tool which aims to present a maximum of information in a minimum of space. - [Grafana](https://hub.docker.com/r/grafana/grafana) @@ -353,6 +380,8 @@ is a budgeting app based on the Bucket Budgeting Principle and inspired by YNAB 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` - [OpenVPN Client](https://hub.docker.com/r/dperson/openvpn-client) is an OpenVPN client docker container. It makes routing containers' traffic through OpenVPN easy. `Recommended` +- [Orbital-sync](https://github.com/mattwebbio/orbital-sync) + synchronizes multiple Pi-hole instances for high availability (HA) using the built-in "teleporter". `Recommended` - [Pi-hole Unbound](https://hub.docker.com/r/cbcrowe/pihole-unbound) uses Docker to run Pi-Hole with an upstream Unbound resolver `Recommended` - [Privoxy](https://hub.docker.com/r/vimagick/privoxy) @@ -381,6 +410,8 @@ is a budgeting app based on the Bucket Budgeting Principle and inspired by YNAB is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures. `Recommended` - [Photoprism](https://hub.docker.com/r/photoprism/photoprism) A server-based application for browsing, organizing and sharing your personal photo collection. (includes face recognition) `Recommended` +- [Immich](https://immich.app/docs/install/docker-compose/) + Self-hosted backup solution for photos and videos on mobile device. **[`^ back to top ^`](#dockerholics-application-list)** diff --git a/compose-examples/books/.env b/compose-examples/books/.env new file mode 100644 index 0000000..a18214c --- /dev/null +++ b/compose-examples/books/.env @@ -0,0 +1,20 @@ +# +# Variables for the dl-pipeline stack +# + +# Input the tz database name from https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +TZ=Australia/Brisbane + +# Type 'id' in a terminal to get these values +PUID=1000 +PGID=1000 + +# path to media (ideally all in folders under one top-level folder) +MEDIA_PATH=~/media + +# path to docker folded +DOCKER_PATH=~/docker + +# path to download locations +DOWNLOADS=~/downloads + diff --git a/compose-examples/books/README.md b/compose-examples/books/README.md new file mode 100644 index 0000000..0c6cbbe --- /dev/null +++ b/compose-examples/books/README.md @@ -0,0 +1,36 @@ +# Audio and E-Book Management +This will install and create containers for the following apps +- Audiobookshelf +- Calibre +- Calibre-Web + +### Folders +The following folders should be created +- {downloads} +> - {downloads}/complete +- {docker} +> - /c/docker (on windows) +> - ~/docker (on linux) +> - /volume1/docker (on Synology) +> These above folders are for partial and completed downloads. Put them under a folder wherever you wish. +- cd {docker}/audiobookshelf +- cd {docker}/audiobookshelf/config +- cd {docker}/audiobookshelf/metadata +- cd {docker}/calibre +- cd {docker}/calibre-web +> The above folders should be under your `docker` folder. + +Your media path should be one top-level folder with sub folders for different media types +> For example: +> - media +> - ebooks +> - audiobooks + +### Changes to .env file +Review the .env and update +- TZ +- PUID +- PGID +- MEDIA_PATH +- DOCKER_PATH +- DOWNLOADS diff --git a/compose-examples/books/compose.yaml b/compose-examples/books/compose.yaml new file mode 100644 index 0000000..c20c2b4 --- /dev/null +++ b/compose-examples/books/compose.yaml @@ -0,0 +1,67 @@ +services: + audiobookshelf: + container_name: audiobookshelf + image: ghcr.io/advplyr/audiobookshelf:latest + environment: + - AUDIOBOOKSHELF_UID=$PUID + - AUDIOBOOKSHELF_GID=$PGID + ports: + - 13378:80 + volumes: + - $MEDIA_PATH/audiobooks:/audiobooks + - $DOCKER_PATH//audiobookshelf/config:/config + - $DOCKER_PATH//audiobookshelf/metadata:/metadata + restart: unless-stopped + + calibre-web: + image: linuxserver/calibre-web + container_name: calibre-web + environment: + - PUID=$PUID + - PGID=$PGID + - TZ=$TIME_ZONE + - DOCKER_MODS=linuxserver/calibre-web:calibre + volumes: + - $DOCKER_PATH//calibre-web/config:/config + - $MEDIA_PATH/ebooks:/books:rw + ports: + - 8083:8083 + healthcheck: + test: curl -fSs http://127.0.0.1:8083 || exit 1 + start_period: 500s + timeout: 10s + interval: 30s + retries: 3 + depends_on: + calibre: + condition: service_healthy + restart: unless-stopped + labels: + autoheal: 'true' + + calibre: + image: linuxserver/calibre + container_name: calibre + environment: + - PUID=$PUID + - PGID=$PGID + - KEEP_APP_RUNNING=1 + - TZ=$TIME_ZONE + - DISABLE_AUTH='true' + - CALIBRE_USE_DARK_PALETTE=1 + volumes: + - $DOCKER_PATH//calibre/config:/config + - $MEDIA_PATH/ebooks:/books:rw + - $DOWNLOADS:/downloads:rw + ports: + - 7080:8080 + - 7081:8081 + labels: + autoheal: 'true' + healthcheck: + test: curl -fSs http://127.0.0.1:8080 || exit 1 + start_period: 360s + timeout: 10s + interval: 15s + retries: 3 + restart: unless-stopped \ No newline at end of file diff --git a/compose-examples/content/compose.yaml b/compose-examples/content/compose.yaml index f27e4ed..ea31501 100644 --- a/compose-examples/content/compose.yaml +++ b/compose-examples/content/compose.yaml @@ -60,247 +60,4 @@ services: - /var/run/docker.sock:/var/run/docker.sock ports: - 9999:8080 - restart: unless-stopped - -services: - # - # Prowlarr - index aggregator - # - prowlarr: - container_name: prowlarr - image: linuxserver/prowlarr:nightly - ports: - - 9696:9696 - environment: - - PUID=$PUID - - PGID=$PGID - - TZ=$TZ - - UMASK=002 - volumes: - - $DOCKER_PATH/prowlarr:/config - labels: - - autoheal="true" - healthcheck: - test: curl -fSs http://127.0.0.1:9696 > /dev/null || exit 1 - start_period: 20s - timeout: 5s - interval: 5s - retries: 3 - restart: unless-stopped - depends_on: - sabnzbd: - condition: service_healthy - qbittorrent: - condition: service_healthy - - # - # Radarr - Movies Search - # - radarr: - environment: - - UMASK_SET=22 - - PUID=$PUID - - PGID=$PGID - - TZ=$TZ - volumes: - - $DOCKER_PATH/radarr:/config:rw - - $MEDIA_PATH:/media:rw - - $DOWNLOADS:/downloads:rw - container_name: radarr - labels: - - autoheal=true - healthcheck: - test: curl -fSs http://127.0.0.1:7878 > /dev/null || exit 1 - start_period: 20s - timeout: 5s - interval: 5s - retries: 3 - ports: - - 7878:7878 - restart: unless-stopped - entrypoint: - - /init - image: linuxserver/radarr - depends_on: - sabnzbd: - condition: service_healthy - qbittorrent: - condition: service_healthy - - # - # Sonarr - Show Search - # - sonarr: - environment: - - UMASK_SET=22 - - PUID=$PUID - - PGID=$PGID - - TZ=$TZ - volumes: - - $DOCKER_PATH/sonarr:/config:rw - - $MEDIA_PATH:/media:rw - - $DOWNLOADS:/downloads:rw - container_name: sonarr - labels: - - autoheal=true - healthcheck: - test: curl -fSs http://127.0.0.1:8989 || exit 1 - start_period: 90s - timeout: 5s - interval: 5s - retries: 3 - ports: - - 8989:8989 - restart: 'unless-stopped' - entrypoint: - - /init - image: linuxserver/sonarr:develop - depends_on: - sabnzbd: - condition: service_healthy - qbittorrent: - condition: service_healthy - - lidarr: - image: linuxserver/lidarr:nightly - container_name: lidarr - environment: - - PUID=$PUID - - PGID=$PGID - - TZ=$TZ - - UMASK_SET=022 - volumes: - - $DOCKER_PATH/lidarr:/config - - $MEDIA_PATH:/media - - $DOWNLOADS:/downloads:rw - ports: - - 8686:8686 - restart: unless-stopped - labels: - - autoheal=true - healthcheck: - test: curl -fSs http://127.0.0.1:8686 > /dev/null || exit 1 - start_period: 20s - timeout: 5s - interval: 5s - retries: 3 - depends_on: - sabnzbd: - condition: service_healthy - qbittorrent: - condition: service_healthy - - # - # Bazarr - subtitles search - # - bazarr: - image: linuxserver/bazarr:development - container_name: bazarr - environment: - - PUID=$PUID - - PGID=$PGID - - TZ=$TZ - - UMASK_SET=022 #optional - volumes: - - $DOCKER_PATH/bazarr:/config - - $MEDIA_PATH:/media - ports: - - 6767:6767 - labels: - - autoheal=true - healthcheck: - test: curl -fSs http://127.0.0.1:6767 > /dev/null || exit 1 - start_period: 60s - timeout: 5s - interval: 5s - retries: 3 - restart: unless-stopped - mem_limit: 300M - mem_reservation: 250M - - # - # Sabnzbd - Usenet downloader - # - sabnzbd: - image: linuxserver/sabnzbd - container_name: sabnzbd - environment: - - PUID=$PUID - - PGID=$PGID - - TZ=$TZ - labels: - - autoheal="true" - healthcheck: - test: curl -fSs 127.0.0.1:8080 > /dev/null || exit 1 - start_period: 20s - interval: 5s - timeout: 5s - retries: 3 - volumes: - - $DOCKER_PATH/sabnzbd:/config - - $DOWNLOADS:/downloads:rw - - $INCOMPLETE:/incomplete-downloads:rw - ports: - - 8080:8080 - - 9090:9090 - restart: unless-stopped - - # - # E-Book Searcher - # - readarr: - container_name: readarr - ports: - - 8787:8787 - environment: - - PUID=$PUID - - PGID=$PGID - - TZ=$TZ - volumes: - - $DOCKER_PATH/readarr:/config - - $MEDIA_PATH:/media:rw - - $DOWNLOADS:/downloads:rw - image: hotio/readarr:nightly - restart: unless-stopped - labels: - - autoheal="true" - healthcheck: - test: curl -fSs http://127.0.0.1:8787 > /dev/null || exit 1 - start_period: 20s - interval: 5s - timeout: 5s - retries: 3 - depends_on: - sabnzbd: - condition: service_healthy - qbittorrent: - condition: service_healthy - - # - # Qbittorrent - default creds are admin & adminadmin - # - qbittorrent: - image: hotio/qbittorrent - container_name: qbittorrent - environment: - - PUID=$PUID - - PGID=$PGID - - TZ=$TZ - - UMASK_SET=022 - volumes: - - $DOCKER_PATH/qbittorrent:/config - - $DOWNLOADS:/downloads - # this line forces qbittorrent to use the vpn container (in network stack) - network_mode: "container:vpn" - # ports: - # - 7881:6881 - # - 8080:8080 - restart: unless-stopped - labels: - - autoheal="true" - healthcheck: - test: curl -fSs https://google.com || exit 1 - start_period: 90s - timeout: 10s - interval: 5s - retries: 3 \ No newline at end of file + restart: unless-stopped \ No newline at end of file diff --git a/compose-examples/docker/.env b/compose-examples/docker/.env index 8ccd397..e68cd59 100644 --- a/compose-examples/docker/.env +++ b/compose-examples/docker/.env @@ -14,4 +14,5 @@ DOCKER_PATH=~/docker # Watchtower WT_INTERVAL=15000 +WATCHTOWER_API_TOKEN=SectretAPIT0ken! diff --git a/compose-examples/docker/compose.yaml b/compose-examples/docker/compose.yaml index ea31501..48eed2b 100644 --- a/compose-examples/docker/compose.yaml +++ b/compose-examples/docker/compose.yaml @@ -8,6 +8,7 @@ services: environment: - AUTOHEAL_CONTAINER_LABEL=all - TZ=$TZ + - WATCHTOWER_WARN_ON_HEAD_FAILURE=never volumes: - '/var/run/docker.sock:/var/run/docker.sock' image: willfarrell/autoheal @@ -45,6 +46,8 @@ services: WATCHTOWER_POLL_INTERVAL: $WT_INTERVAL WATCHTOWER_TIMEOUT: 15 WATCHTOWER_NOTIFICATIONS_LEVEL: info + WATCHTOWER_HTTP_API_METRICS: "true" + WATCHTOWER_HTTP_API_TOKEN: $WATCHTOWER_API_TOKEN WATCHTOWER_NOTIFICATIONS: shoutrrr # Using Pushbullet, telegram and pushover as examples, but just pick one # 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" @@ -60,4 +63,4 @@ services: - /var/run/docker.sock:/var/run/docker.sock ports: - 9999:8080 - restart: unless-stopped \ No newline at end of file + restart: unless-stopped diff --git a/compose-examples/homeassistant/README.md b/compose-examples/homeassistant/README.md index 00f64f2..227f863 100644 --- a/compose-examples/homeassistant/README.md +++ b/compose-examples/homeassistant/README.md @@ -11,7 +11,7 @@ This will install and create containers for the following apps - DuckDNS ## Prerequisites -This will install as-is, however best with OpenVPN (for qbittorrent), Portainer, and Watchtower +This will install as-is, however best with, Portainer (simple management), and Watchtower (updates) ### Folders The following folders should be created diff --git a/compose-examples/homeassistant/compose.yaml b/compose-examples/homeassistant/compose.yaml index f89be27..2a914de 100644 --- a/compose-examples/homeassistant/compose.yaml +++ b/compose-examples/homeassistant/compose.yaml @@ -63,7 +63,7 @@ services: retries: 3 homeassistantdb: - image: linuxserver/mariadb:alpine + image: linuxserver/mariadb container_name: homeassistantdb environment: - PUID=$PUID diff --git a/compose-examples/network/.env b/compose-examples/network/.env index 3dcf2e5..b18b3cf 100644 --- a/compose-examples/network/.env +++ b/compose-examples/network/.env @@ -33,3 +33,9 @@ REV_SERVER_TARGET=192.168.1.1 REV_SERVER_CIDR=192.168.0.0/16 # lan domain - optional LAN_DOMAIN_NAME=lan + +# Orbital-sync +PRIMARY_HOST_BASE_URL: 'http://192.168.1.2' +PRIMARY_HOST_PASSWORD: 'xxx' +SECONDARY_HOST_1_BASE_URL: 'http://192.168.1.135' +SECONDARY_HOST_1_PASSWORD: 'yyy' diff --git a/compose-examples/network/README.md b/compose-examples/network/README.md index a76dd22..a5b5252 100644 --- a/compose-examples/network/README.md +++ b/compose-examples/network/README.md @@ -1,8 +1,10 @@ # Network - networking stack This will install and create containers for the following apps -- Nginx Proxy Manager +- Nginx Proxy Manager (reverse proxy) - openVPN (Requires configuration once created) -- LibreSpeed +- LibreSpeed (internal speed test) +- Pi-Hole with Unbound (ad blocking) +- Orbital-sync (Pi-hole primary to secondary/tertiary sync) ### Folders The following folders should be created @@ -29,3 +31,4 @@ Review the .env and update - All path values - Settings for Librespeed and Nginx Proxy Manager - Pi-hole settings +- Orbital-sync settings diff --git a/compose-examples/network/compose.yaml b/compose-examples/network/compose.yaml index a1cb1b2..5c886c3 100644 --- a/compose-examples/network/compose.yaml +++ b/compose-examples/network/compose.yaml @@ -9,45 +9,14 @@ services: PUID: $PUID PGID: $PGID TZ: $TZ - DB_MYSQL_HOST: 'proxymanagerdb' - DB_MYSQL_PORT: 3306 - DB_MYSQL_USER: $NPMUSER - DB_MYSQL_PASSWORD: $NPMPSW - DB_MYSQL_NAME: 'npm' ports: - - 880:80 - - 881:81 - - 843:443 + - 82:80 + - 81:81 + - 43:443 volumes: - $DOCKER_PATH/proxymanager/data:/data - $DOCKER_PATH/proxymanager/letsencrypt:/etc/letsencrypt restart: always - depends_on: - proxymanagerdb: - condition: service_healthy - - # - # Proxymanagerdb - MariaDB database for Nginx Proxy Manager - # - proxymanagerdb: - container_name: proxymanagerdb - image: ghcr.io/linuxserver/mariadb:alpine - environment: - MYSQL_ROOT_PASSWORD: $NPMROOT - MYSQL_DATABASE: 'npm' - MYSQL_USER: $NPMUSER - MYSQL_PASSWORD: $NPMPSW - volumes: - - $DOCKER_PATH/proxymanagerdb:/config - restart: always - labels: - - autoheal=true - healthcheck: - test: ["CMD", "mysqladmin", "ping", "--silent"] - start_period: 240s - timeout: 10s - interval: 5s - retries: 3 # # vpn - openVPN client container @@ -137,3 +106,28 @@ services: interval: 15s retries: 3 restart: unless-stopped + + # + # Orbital-sync + # + orbital-sync: + container_name: orbital-sync + image: mattwebbio/orbital-sync:1 + environment: + PRIMARY_HOST_BASE_URL: $PRIMARY_HOST_BASE_URL + PRIMARY_HOST_PASSWORD: $PRIMARY_HOST_PASSWORD + SECONDARY_HOST_1_BASE_URL: $SECONDARY_HOST_1_BASE_URL + SECONDARY_HOST_1_PASSWORD: $SECONDARY_HOST_1_PASSWORD + SYNC_WHITELIST: 'true' + SYNC_BLACKLIST: 'true' + SYNC_REGEXLIST: 'true' + SYNC_ADLIST: 'true' + SYNC_CLIENTS: 'true' + SYNC_GROUP: 'true' +# SYNC_STATICDHCPLEASES: 'true' + SYNC_LOCALDNSRECORDS: 'true' + SYNC_LOCALCNAMERECORDS: 'true' + SYNC_FLUSHTABLES: 'true' + TZ: $TIME_ZONE + INTERVAL_MINUTES: 30 + restart: unless-stopped \ No newline at end of file diff --git a/compose-examples/plex/compose.yaml b/compose-examples/plex/compose.yaml index 9ef1d7b..08295c7 100644 --- a/compose-examples/plex/compose.yaml +++ b/compose-examples/plex/compose.yaml @@ -6,8 +6,8 @@ services: environment: TZ: $TZ volumes: - - $DOCKER_PATH/posterr/randomthemes:/usr/src/app/public/randomthemes - - $DOCKER_PATH/posterr/config:/usr/src/app/config + - $PERSIST/posterr/config:/usr/src/app/config + - $PERSIST/posterr/custom:/usr/src/app/public/custom ports: - 9876:3000 restart: always diff --git a/compose-examples/productivity/.env b/compose-examples/productivity/.env index 318e7db..cc1cf77 100644 --- a/compose-examples/productivity/.env +++ b/compose-examples/productivity/.env @@ -9,25 +9,29 @@ TZ=Australia/Brisbane PUID=1000 PGID=1000 +# domain name +DOMAIN=yourdomain.net + # path to docker folded DOCKER_PATH=~/docker # media path MEDIA_PATH=~/media -# Plex -# ------------------------------------------------- -# Get claim token from https://plex.tv/claim -PLEX_CLAIM_TOKEN=your claim token -# If you have an external domain for plex, else leave blank -ADVERTISE_IP= -# This is to allow non-authentication for local networks. Change to yours. -ALLOWED_NETWORKS=192.168.1.0/24 -# Used by other apps, not needed just for plex, so can leave blank -PLEX_TOKEN= -# Name of plex server, but can also set later on -HOST_NAME=Centaurus-BU - # moviematch PURL=http://192.168.1.174:32400 LIBFILTER=Movies + +# Vaultwarden +VW_TOKEN=secretbitwardenpsw + +# +# GMAIL +# - This section is not yet implemented, so you can leave it all as is +# +GM_USER=emailaddress +GM_TO=toemailaddress +GM_PSW=emailapppassword +GM_SERVER=smtp.gmail.com +GM_PORT=587 + diff --git a/compose-examples/productivity/README.md b/compose-examples/productivity/README.md index 72a0378..7bf3d91 100644 --- a/compose-examples/productivity/README.md +++ b/compose-examples/productivity/README.md @@ -1,14 +1,10 @@ # Productivity - app stack -> -> THIS STACK NOT IMPLEMENTED YET!! -> This will install and create containers for the following apps -- Hastebin - Hasty Paste - Paperless NGX - Joplin -- Flame +- Homepage - Languagetool - WhiteBoardOnline - Filebrowser @@ -16,6 +12,10 @@ This will install and create containers for the following apps - DrawIO - VaultWarden - Syncthing +- Opengist +- Glances +- Linkding +- Uptimekuma ## Prerequisites @@ -33,8 +33,13 @@ The following folders should be created - {docker}/filebrowser - {docker}/wbo - {docker}/languagetool -- {docker}/flame -- +- {docker}/homepage +- {docker}/homepage/images +- {docker}/homepage/icons +- {docker}/linkding +- {docker}/opengist +- {docker}/uptimekuma + > The above folder should be under your `docker` folder. ### Changes to .env file @@ -43,3 +48,19 @@ Review the .env and update - PUID - PGID - Plus other values + +### Filebrowser initial setup (pre-create of container) +touch ~/{docker}/filebrowser/filebrowser.db +touch ~/{docker}/filebrowser/.filebrowser.json + +nano ~/{docker}/filebrowser/.filebrowser.json +{ + "port": 80, + "baseURL": "", + "address": "", + "log": "stdout", + "database": "/database/filebrowser.db", + "root": "/srv" +} + +> initial filebrowser credentials are admin;admin diff --git a/compose-examples/productivity/compose.yaml b/compose-examples/productivity/compose.yaml index 538d8e3..7c2acb2 100644 --- a/compose-examples/productivity/compose.yaml +++ b/compose-examples/productivity/compose.yaml @@ -1,4 +1,59 @@ services: + # Opengist + opengist: + image: ghcr.io/thomiceli/opengist:1 + container_name: opengist + restart: unless-stopped + ports: + - "6157:6157" # HTTP port + - "2222:2222" # SSH port, can be removed if you don't use SSH + volumes: + - $DOCKER_PATH/opengist:/opengist + environment: + CONFIG: | + log-level: info + ssh.git-enabled: false + disable-signup: false # You may wish to change this to true after you sign up the first time. + + # Glances - system monitoring + glances: + container_name: glances + ports: + - 61208-61209:61208-61209 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - GLANCES_OPT=-w + restart: always + pid: host + image: nicolargo/glances + + # Homepage dashboard + homepage: + image: ghcr.io/gethomepage/homepage:latest + container_name: homepage + ports: + - 3344:3000 + volumes: + - $DOCKER_PATH/homepage:/app/config # Make sure your local config directory exists + - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods + - $DOCKER_PATH/homepage/images:/app/public/images + - $DOCKER_PATH/homepage/icons:/app/public/icons + environment: + PUID: $PUID + PGID: $PGID + restart: unless-stopped + + # link manager + linkding: + image: sissbruecker/linkding + container_name: linkding + ports: + - 9999:9090 + volumes: + - $DOCKER_PATH/linkding:/etc/linkding/data + restart: unless-stopped + # White Board Online wbo: image: lovasoa/wbo @@ -14,7 +69,7 @@ services: container_name: filebrowser volumes: - $MEDIA_PATH:/srv - - $DOCKER_PATH/filebrowser/filebrowser.db:/database.db + - $DOCKER_PATH/filebrowser/filebrowser.db:/database/filebrowser.db - $DOCKER_PATH/filebrowser/.filebrowser.json:/.filebrowser.json environment: user: "$PUID:$PGID" @@ -91,16 +146,16 @@ services: - INVITATIONS_ALLOWED=true - LOG_LEVEL=warn - EXTENDED_LOGGING=true - - DOMAIN=https://bw.$DOMAINNAME + - DOMAIN=https://vw.$DOMAIN - ROCKET_PORT=8089 - WEBSOCKET_ENABLED=true - - ADMIN_TOKEN=$BW_TOKEN__SECRET + - ADMIN_TOKEN=$VW_TOKEN - SMTP_HOST=$GM_SERVER - - SMTP_FROM=$GM_USER__SECRET + - SMTP_FROM=$GM_USER - SMTP_PORT=$GM_PORT - SMTP_SSL=true - - SMTP_USERNAME=$GM_USER__SECRET - - SMTP_PASSWORD=$GM_PSW__SECRET + - SMTP_USERNAME=$GM_USER + - SMTP_PASSWORD=$GM_PSW # Syncthing syncthing: @@ -121,50 +176,15 @@ services: image: linuxserver/syncthing restart: unless-stopped - # Hastebin Redis Cache - hastebin: - container_name: hastebin - image: rlister/hastebin - environment: - STORAGE_TYPE: redis - STORAGE_HOST: hastebinredis - ports: - - 7777:7777 - restart: unless-stopped - depends_on: - hastebinredis: - condition: service_healthy - labels: - autoheal: true - healthcheck: - test: wget -s http://127.0.0.1:7777 || exit 1 - start_period: 10s - timeout: 5s - interval: 5s - retries: 3 - - # Hastebin Redis Cache - hastebinredis: - container_name: hastebinredis - image: redis - volumes: - - $DOCKER_PATH/hastebinredis:/data - entrypoint: redis-server --appendonly yes - labels: - autoheal: true - restart: unless-stopped - healthcheck: - test: ["CMD", "redis-cli","ping"] - start_period: 10s - timeout: 5s - interval: 5s - retries: 3 - - # hasy paste + # hasty paste hastypaste: container_name: hastypaste image: ghcr.io/enchant97/hasty-paste:1 restart: unless-stopped + environment: + NEW_AT_INDEX: "true" + DEFAULT_USE_LONG_ID: "false" + ENABLE_PUBLIC_LIST: "true" volumes: - $DOCKER_PATH/hastypaste:/app/data ports: @@ -181,7 +201,7 @@ services: volumes: - $DOCKER_PATH/searxng:/etc/searxng:rw environment: - - SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/ + - SEARXNG_BASE_URL=https://sear.$DOMAIN/ cap_drop: - ALL cap_add: @@ -193,4 +213,40 @@ services: driver: "json-file" options: max-size: "1m" - max-file: "1" \ No newline at end of file + max-file: "1" + + # Languagetool - self-host spell checker + languagetool: + image: erikvl87/languagetool + container_name: languagetool + ports: + - 8018:8010 # Using default port from the image + labels: + autoheal: 'true' + networks: + - external + environment: + - langtool_languageModel=/ngrams # OPTIONAL: Using ngrams data + - Java_Xms=256m # OPTIONAL: Setting a minimal Java heap size of 512 mib + - Java_Xmx=512m # OPTIONAL: Setting a maximum Java heap size of 1 Gib + volumes: + - $DOCKER_PATH/languagetool:/ngrams + restart: unless-stopped + healthcheck: + test: curl -d "text=Color atomize" -d "language=en-AU" http://localhost:8010/v2/check > /dev/null || exit 1 + start_period: 25s + timeout: 5s + interval: 10s + retries: 3 + +# UptimeKuma service monitor + uptimekuma: + container_name: uptimekuma + image: louislam/uptime-kuma + restart: unless-stopped + ports: + - 2001:3001 + volumes: + - $PERSIST/uptimekuma:/app/data + dns: + - 192.168.1.2 diff --git a/compose-examples/start.txt b/compose-examples/start.txt index fe1b76a..a173a08 100644 --- a/compose-examples/start.txt +++ b/compose-examples/start.txt @@ -2,6 +2,8 @@ docker-compose -f ./docker/compose.yaml up -d docker-compose -f ./download/compose.yaml up -d docker-compose -f ./network/compose.yaml up -d docker-compose -f ./plex/compose.yaml up -d +docker-compose -f ./books/compose.yaml up -d +docker-compose -f ./prductivity/compose.yaml up -d Or just go into each folder and type docker-compose up -d