Compare commits

...
27 Commits
Author SHA1 Message Date
Mike McFetridge eb4884e4fd removed safeline
Deploy Safeline / deploy (push) Failing after 35s
2026-08-11 07:45:03 -04:00
Mike McFetridge 2cb5d5b7cf update arr stack
Deploy ArrStack / deploy (push) Successful in 33s
Deploy ArrStack / deploy (push) Failing after 16s
2026-07-27 17:41:42 -04:00
Mike McFetridge e6b0da4f19 Merge branch 'main' of gitea.mikemcfetridge.com:miker/Docker-01
Deploy Safeline / deploy (push) Successful in 28s
2026-07-26 09:38:32 -04:00
Mike McFetridge 6264b22363 Update 2026-07-26 09:38:26 -04:00
miker 6f80a2f62a Update safeline/.env 2026-07-26 13:35:49 +00:00
Mike McFetridge cbca7f9866 added safeline 2026-07-26 09:35:02 -04:00
Mike McFetridge 2de1929975 Update WatchTower
Deploy ArrStack / deploy (push) Successful in 1m6s
Deploy ArrStack / deploy (push) Failing after 47s
Deploy MySpeed / deploy (push) Successful in 18s
Deploy Watchtower / deploy (push) Successful in 7s
2026-07-25 08:14:23 -04:00
Mike McFetridge 54a91045a4 Watcher
Deploy ArrStack / deploy (push) Successful in 14s
Deploy ArrStack / deploy (push) Failing after 7s
2026-07-22 19:05:32 -04:00
Mike McFetridge 0da0fba8ac added sencho to ArrStack
Deploy ArrStack / deploy (push) Successful in 30s
Deploy ArrStack / deploy (push) Failing after 7s
2026-07-22 18:58:23 -04:00
Mike McFetridge f27d9d93ec ArrStack Updated
Deploy ArrStack / deploy (push) Successful in 22s
Deploy ArrStack / deploy (push) Failing after 1m0s
2026-07-22 18:49:34 -04:00
Mike McFetridge e53c827cf6 updated several configs
Deploy Mealie / deploy (push) Successful in 10s
Deploy Semaphore / deploy (push) Successful in 7s
Deploy Bookstack / deploy (push) Successful in 7s
2026-07-22 18:44:47 -04:00
Mike McFetridge 47b3d10b01 update bookstach configs
Deploy Bookstack / deploy (push) Successful in 12s
2026-07-22 18:39:26 -04:00
Mike McFetridge 90d18452e9 Update Watchtower env
Deploy Watchtower / deploy (push) Successful in 8s
2026-07-22 18:35:02 -04:00
Mike McFetridge a9d31a6012 .
Deploy Watchtower / deploy (push) Successful in 7s
2026-07-21 17:29:05 -04:00
miker 22e933bd09 Update MySpeed/docker-compose.yml
Deploy MySpeed / deploy (push) Successful in 10s
2026-07-20 18:40:25 +00:00
Mike McFetridge 0a4a19652a .
Deploy MySpeed / deploy (push) Failing after 12s
2026-07-20 14:32:58 -04:00
Mike McFetridge 7b27c85938 Merge branch 'main' of gitea.mikemcfetridge.com:miker/Docker-01
Deploy Bookstack / deploy (push) Successful in 20s
2026-07-20 13:32:31 -04:00
Mike McFetridge 11331023ca . 2026-07-20 13:32:23 -04:00
miker b8a799eb9a Update Semaphore/docker-compose.yml
Deploy Semaphore / deploy (push) Successful in 23s
2026-07-20 15:09:50 +00:00
miker 3ddc44ab0d Update Mealie/docker-compose.yml
Deploy Mealie / deploy (push) Successful in 28s
2026-07-20 15:09:35 +00:00
miker 47646e1c61 Update Ittools/docker-compose.yml
Deploy Ittools / deploy (push) Successful in 11s
2026-07-20 15:09:21 +00:00
Mike McFetridge a25b2951ae Merge branch 'main' of gitea.mikemcfetridge.com:miker/Docker-01 2026-07-20 11:09:01 -04:00
Mike McFetridge 69d3d32712 . 2026-07-20 11:08:52 -04:00
miker 6d90680c08 Update Ittools/docker-compose.yml 2026-07-20 15:08:25 +00:00
miker 4fe7073eb3 Update Mealie/docker-compose.yml 2026-07-20 15:08:10 +00:00
miker 13ac87f3ce Update Semaphore/docker-compose.yml 2026-07-20 15:07:58 +00:00
miker 81c9ce2736 Update Sencho/docker-compose.yml
Deploy Sencho / deploy (push) Successful in 17s
2026-07-20 14:17:49 +00:00
19 changed files with 527 additions and 259 deletions
+35
View File
@@ -0,0 +1,35 @@
name: Deploy ArrStack
on:
push:
branches:
- main
paths:
- 'ArrStack/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync ArrStack to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "ArrStack/*"
target: "/opt/Docker-Deployments/ArrStack"
strip_components: 1
- name: Deploy ArrStack Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/ArrStack
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy Ittools
on:
push:
branches:
- main
paths:
- 'Ittools/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync Ittools to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "Ittools/*"
target: "/opt/Docker-Deployments/Ittools"
strip_components: 1
- name: Deploy Ittools Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/Ittools
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy Mealie
on:
push:
branches:
- main
paths:
- 'Mealie/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync Mealie to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "Mealie/*"
target: "/opt/Docker-Deployments/Mealie"
strip_components: 1
- name: Deploy Mealie Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/Mealie
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy Semaphore
on:
push:
branches:
- main
paths:
- 'Semaphore/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync Semaphore to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "Semaphore/*"
target: "/opt/Docker-Deployments/Semaphore"
strip_components: 1
- name: Deploy Semaphore Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/Semaphore
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy Bookstack
on:
push:
branches:
- main
paths:
- 'Bookstack/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync Bookstack to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "Bookstack/*"
target: "/opt/Docker-Deployments/Bookstack"
strip_components: 1
- name: Deploy Bookstack Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/Bookstack
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy MySpeed
on:
push:
branches:
- main
paths:
- 'MySpeed/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync MySpeed to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "MySpeed/*"
target: "/opt/Docker-Deployments/MySpeed"
strip_components: 1
- name: Deploy MySpeed Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/MySpeed
docker compose up -d --remove-orphans
+35
View File
@@ -0,0 +1,35 @@
name: Deploy Safeline
on:
push:
branches:
- main
paths:
- 'Safeline/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Sync Safeline to Host
uses: appleboy/scp-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "Safeline/*"
target: "/opt/Docker-Deployments/Safeline"
strip_components: 1
- name: Deploy Safeline Stack
uses: appleboy/ssh-action@master
with:
host: "192.168.2.13"
username: "miker"
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /opt/Docker-Deployments/Safeline
docker compose up -d --remove-orphans
+6 -106
View File
@@ -1,69 +1,23 @@
# ============================================================
# Tom Spark's ARR Stack — Environment Configuration
# https://github.com/loponai/arrstack
#
# INSTRUCTIONS:
# 1. Copy this file: cp .env.example .env
# 2. Fill in your VPN credentials below
# 3. Adjust timezone and user IDs if needed
# 4. Run: docker compose up -d
# ============================================================
# ============================================================ # ============================================================
# SYSTEM SETTINGS # SYSTEM SETTINGS
# ============================================================ # ============================================================
# Your timezone (list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
TZ=America/New_York TZ=America/New_York
# Your Linux user/group ID. Find yours with: id
# Most systems default to 1000. If yours is different, change these.
PUID=1000 PUID=1000
PGID=1000 PGID=1000
# ============================================================ # ============================================================
# VPN SETTINGS — Pick your provider and fill in credentials # VPN SETTINGS (AirVPN WireGuard)
# Full provider list: https://github.com/qdm12/gluetun-wiki/tree/main/setup/providers
#
# IMPORTANT: VPN credentials are NOT your login email/password!
# You need service credentials from your VPN provider's manual
# setup or API section. See the provider examples at the bottom of this file.
# ============================================================ # ============================================================
# Your VPN provider (surfshark, nordvpn, protonvpn, airvpn, mullvad, private internet access, windscribe, etc.)
VPN_SERVICE_PROVIDER=airvpn VPN_SERVICE_PROVIDER=airvpn
# Protocol: wireguard (recommended, faster) or openvpn
VPN_TYPE=wireguard VPN_TYPE=wireguard
# --- WIREGUARD CREDENTIALS ---
# For Surfshark: go to https://my.surfshark.com/vpn/manual-setup/main → WireGuard
# For other providers: see the examples at the bottom of this file
WIREGUARD_PRIVATE_KEY=eDgf3GPFy2ltgx2RkD/Vx5wKZ4dVi28YbQmSJOrbWmk= WIREGUARD_PRIVATE_KEY=eDgf3GPFy2ltgx2RkD/Vx5wKZ4dVi28YbQmSJOrbWmk=
WIREGUARD_ADDRESSES=10.175.23.30 WIREGUARD_ADDRESSES=10.175.23.30
# Only needed for some providers (AirVPN). Leave blank if not required.
# WIREGUARD_PUBLIC_KEY=
WIREGUARD_PRESHARED_KEY=+0+hrSdzRUxKDNk1Q37PNmNJ2jsj2EzF45JtbZad4lI= WIREGUARD_PRESHARED_KEY=+0+hrSdzRUxKDNk1Q37PNmNJ2jsj2EzF45JtbZad4lI=
# --- OPENVPN CREDENTIALS ---
# Only needed if VPN_TYPE=openvpn. Leave blank if using WireGuard.
# OPENVPN_USER=
# OPENVPN_PASSWORD=
# --- SERVER SELECTION ---
# Pick a country close to you for best speeds
SERVER_COUNTRIES=Canada SERVER_COUNTRIES=Canada
# --- PORT FORWARDING ---
# Supported by: ProtonVPN, AirVPN, PIA. Can help with upload speeds and seeding.
# Not required for downloading. Most users don't need this.
# Set to "on" if your provider supports it, leave blank otherwise (Surfshark, NordVPN, etc.).
#VPN_PORT_FORWARDING=
# If your provider requires manually specifying a port (e.g. AirVPN):
FIREWALL_VPN_INPUT_PORTS=29261 FIREWALL_VPN_INPUT_PORTS=29261
# ============================================================ # ============================================================
# NETWORK — Static IPs for each service # STATIC IP ALLOCATIONS
# You shouldn't need to change these unless you have a conflict.
# ============================================================ # ============================================================
IP_GLUETUN=172.39.0.2 IP_GLUETUN=172.39.0.2
IP_RADARR=172.39.0.3 IP_RADARR=172.39.0.3
@@ -76,69 +30,17 @@ IP_AUDIO=172.39.0.9
IP_NAVI=172.39.0.10 IP_NAVI=172.39.0.10
IP_LIST=172.39.0.11 IP_LIST=172.39.0.11
IP_WATCH=172.39.0.12 IP_WATCH=172.39.0.12
# ============================================================ # ============================================================
# PROVIDER-SPECIFIC EXAMPLES # WATCHTOWER CONFIGURATION
# Uncomment and fill in the section for your VPN provider.
# ============================================================ # ============================================================
# --- NORDVPN ---
# 1. Go to: https://my.nordaccount.com/dashboard/nordvpn/manual-configuration/
# 2. Generate a WireGuard private key (NordLynx)
# 3. Paste the private key below
# VPN_SERVICE_PROVIDER=nordvpn
# VPN_TYPE=wireguard
# WIREGUARD_PRIVATE_KEY=your_nordvpn_private_key_here
# WIREGUARD_ADDRESSES=10.5.0.2/16
# SERVER_COUNTRIES=United States
# --- PROTONVPN ---
# 1. Go to: https://account.protonvpn.com/ → Downloads → WireGuard configuration
# 2. Generate a config, open the file, copy the PrivateKey and Address
# 3. Port forwarding is supported on paid plans
# VPN_SERVICE_PROVIDER=protonvpn
# VPN_TYPE=wireguard
# WIREGUARD_PRIVATE_KEY=your_proton_private_key_here
# WIREGUARD_ADDRESSES=10.2.0.2/32
# SERVER_COUNTRIES=United States
# VPN_PORT_FORWARDING=on
# --- SURFSHARK ---
# 1. Go to: https://my.surfshark.com/vpn/manual-setup/main
# 2. Get WireGuard credentials
# VPN_SERVICE_PROVIDER=surfshark
# VPN_TYPE=wireguard
# WIREGUARD_PRIVATE_KEY=your_surfshark_private_key_here
# WIREGUARD_ADDRESSES=10.14.0.2/16
# SERVER_COUNTRIES=United States
# --- AIRVPN ---
# 1. Go to: https://airvpn.org/ → Client Area → Config Generator
# 2. Select Linux → WireGuard → pick a server → Generate
# 3. Copy all keys and the assigned IP
# VPN_SERVICE_PROVIDER=airvpn
# VPN_TYPE=wireguard
# WIREGUARD_PRIVATE_KEY=your_airvpn_private_key_here
# WIREGUARD_PUBLIC_KEY=your_airvpn_public_key_here
# WIREGUARD_PRESHARED_KEY=your_airvpn_preshared_key_here
# WIREGUARD_ADDRESSES=your_assigned_ip/32
# FIREWALL_VPN_INPUT_PORTS=your_forwarded_port
# VPN_PORT_FORWARDING=on
# --- MULLVAD ---
# 1. Go to: https://mullvad.net/en/account → WireGuard configuration
# VPN_SERVICE_PROVIDER=mullvad
# VPN_TYPE=wireguard
# WIREGUARD_PRIVATE_KEY=your_mullvad_private_key_here
# WIREGUARD_ADDRESSES=your_assigned_ip/32
# SERVER_COUNTRIES=United States
# --- Watchtower ---
WATCHTOWER_CLEANUP=true WATCHTOWER_CLEANUP=true
WATCHTOWER_INCLUDE_RESTARTING=true WATCHTOWER_INCLUDE_RESTARTING=true
WATCHTOWER_ROLLING_RESTARTING=true WATCHTOWER_ROLLING_RESTARTING=true
WATCHTOWER_SCHEDULE=0 0 4 * * * WATCHTOWER_SCHEDULE="0 0 4 * * *"
WATCHTOWER_INCLUDE_STOPPED=true WATCHTOWER_INCLUDE_STOPPED=true
WATCHTOWER_NOTIFICATIONS=email WATCHTOWER_NOTIFICATIONS=email
WATCHTOWER_NOTIFICATIONS_HOSTNAME=Docker-Deply # Add Server Name or IP Address WATCHTOWER_NOTIFICATIONS_HOSTNAME=Docker-ArrStack
WATCHTOWER_NOTIFICATION_EMAIL_FROM=miker@mmcfetridge.net WATCHTOWER_NOTIFICATION_EMAIL_FROM=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_TO=miker@mmcfetridge.net WATCHTOWER_NOTIFICATION_EMAIL_TO=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.mmcfetridge.net WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.mmcfetridge.net
@@ -146,5 +48,3 @@ WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=miker@mmcfetridge.net WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=!Sucyetat123 WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=!Sucyetat123
WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2
PUID=1000
PGID=1000
+68 -78
View File
@@ -1,20 +1,5 @@
# Tom Spark's ARR Stack — Automated Media Server # ARR Stack — Automated Media Server
# https://github.com/loponai/arrstack # https://github.com/loponai/arrstack
#
# Comment this out if you are not deploying this through Gitea CI/CD process.
# echo "Setting up directory nd ownership"
# Create the directory if it doesn't exist yet
# sudo mkdir -p /opt/Docker-Deployments
# Usage:
# 1. Copy .env.example to .env and fill in your VPN credentials
# 2. Run: bash setup-folders.sh
# 3. Run: docker compose up -d
#
# All VPN-protected services (qBittorrent, Prowlarr, FlareSolverr) run
# through Gluetun. If the VPN drops, traffic stops. Zero leaks.
#
# Radarr, Sonarr, Lidarr, Bazarr, Jellyfin, and Seerr do NOT run through
# the VPN — they need direct network access for speed and local connectivity.
networks: networks:
arrnetwork: arrnetwork:
@@ -26,10 +11,7 @@ networks:
services: services:
# ============================================================ # ============================================================
# GLUETUN — VPN Container (kill switch + tunnel) # GLUETUN — VPN Container
# All VPN-protected services route through this container.
# Ports for those services are mapped HERE, not on the services themselves.
# Docs: https://github.com/qdm12/gluetun-wiki
# ============================================================ # ============================================================
gluetun: gluetun:
image: qmcgaw/gluetun:latest image: qmcgaw/gluetun:latest
@@ -53,21 +35,12 @@ services:
environment: environment:
- VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER} - VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER}
- VPN_TYPE=${VPN_TYPE} - VPN_TYPE=${VPN_TYPE}
# --- WireGuard credentials (most providers) ---
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY} - WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES} - WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES}
# - WIREGUARD_PUBLIC_KEY=${WIREGUARD_PUBLIC_KEY}
- WIREGUARD_PRESHARED_KEY=${WIREGUARD_PRESHARED_KEY} - WIREGUARD_PRESHARED_KEY=${WIREGUARD_PRESHARED_KEY}
# --- OpenVPN credentials (if using OpenVPN instead) ---
# - OPENVPN_USER=${OPENVPN_USER}
# - OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
# --- Server selection ---
- SERVER_COUNTRIES=${SERVER_COUNTRIES} - SERVER_COUNTRIES=${SERVER_COUNTRIES}
# --- Port forwarding (ProtonVPN, AirVPN, PIA) ---
# - VPN_PORT_FORWARDING=${VPN_PORT_FORWARDING}
- FIREWALL_VPN_INPUT_PORTS=${FIREWALL_VPN_INPUT_PORTS} - FIREWALL_VPN_INPUT_PORTS=${FIREWALL_VPN_INPUT_PORTS}
- FIREWALL_OUTBOUND_SUBNETS=192.168.0.0/22 - FIREWALL_OUTBOUND_SUBNETS=192.168.0.0/22
# --- General ---
- PUID=${PUID} - PUID=${PUID}
- PGID=${PGID} - PGID=${PGID}
- UMASK=002 - UMASK=002
@@ -84,8 +57,7 @@ services:
restart: unless-stopped restart: unless-stopped
# ============================================================ # ============================================================
# QBITTORRENT — Torrent Client (runs through Gluetun VPN) # QBITTORRENT — Torrent Client
# ALL traffic goes through the VPN tunnel. No direct internet.
# ============================================================ # ============================================================
qbittorrent: qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest image: lscr.io/linuxserver/qbittorrent:latest
@@ -117,7 +89,6 @@ services:
# ============================================================ # ============================================================
# DEUNHEALTH — Auto-restarts unhealthy containers # DEUNHEALTH — Auto-restarts unhealthy containers
# If qBittorrent loses VPN connection, this restarts it automatically.
# ============================================================ # ============================================================
deunhealth: deunhealth:
image: qmcgaw/deunhealth image: qmcgaw/deunhealth
@@ -133,8 +104,7 @@ services:
restart: always restart: always
# ============================================================ # ============================================================
# PROWLARR — Indexer Manager (runs through Gluetun VPN) # PROWLARR — Indexer Manager
# Manages torrent/usenet indexers. Syncs to Radarr/Sonarr/Lidarr.
# ============================================================ # ============================================================
prowlarr: prowlarr:
image: lscr.io/linuxserver/prowlarr:latest image: lscr.io/linuxserver/prowlarr:latest
@@ -154,8 +124,7 @@ services:
restart: unless-stopped restart: unless-stopped
# ============================================================ # ============================================================
# FLARESOLVERR — Cloudflare Bypass (runs through Gluetun VPN) # FLARESOLVERR — Cloudflare Bypass
# Some indexers use Cloudflare protection. This gets around it.
# ============================================================ # ============================================================
flaresolverr: flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest image: ghcr.io/flaresolverr/flaresolverr:latest
@@ -173,9 +142,7 @@ services:
restart: unless-stopped restart: unless-stopped
# ============================================================ # ============================================================
# RADARR — Movie Manager (NOT behind VPN) # RADARR — Movie Manager
# Searches via Prowlarr, sends downloads to qBittorrent,
# renames and hard-links completed files to media folder.
# ============================================================ # ============================================================
radarr: radarr:
image: lscr.io/linuxserver/radarr:latest image: lscr.io/linuxserver/radarr:latest
@@ -196,8 +163,7 @@ services:
restart: unless-stopped restart: unless-stopped
# ============================================================ # ============================================================
# SONARR — TV Show Manager (NOT behind VPN) # SONARR — TV Show Manager
# Same pattern as Radarr but for TV series.
# ============================================================ # ============================================================
sonarr: sonarr:
image: lscr.io/linuxserver/sonarr:latest image: lscr.io/linuxserver/sonarr:latest
@@ -218,8 +184,7 @@ services:
restart: unless-stopped restart: unless-stopped
# ============================================================ # ============================================================
# LIDARR — Music Manager (NOT behind VPN) # LIDARR — Music Manager
# Optional. Comment out if you don't need music automation.
# ============================================================ # ============================================================
lidarr: lidarr:
image: lscr.io/linuxserver/lidarr:latest image: lscr.io/linuxserver/lidarr:latest
@@ -240,8 +205,7 @@ services:
restart: unless-stopped restart: unless-stopped
# ============================================================ # ============================================================
# BAZARR — Subtitle Manager (NOT behind VPN) # BAZARR — Subtitle Manager
# Automatically downloads subtitles for movies and TV shows.
# ============================================================ # ============================================================
bazarr: bazarr:
image: lscr.io/linuxserver/bazarr:latest image: lscr.io/linuxserver/bazarr:latest
@@ -262,9 +226,7 @@ services:
restart: unless-stopped restart: unless-stopped
# ============================================================ # ============================================================
# JELLYFIN — Media Server (NOT behind VPN) # JELLYFIN — Media Server
# Your personal streaming service. Plays movies, TV, music.
# Needs full bandwidth — never put this behind the VPN.
# ============================================================ # ============================================================
jellyfin: jellyfin:
image: lscr.io/linuxserver/jellyfin:latest image: lscr.io/linuxserver/jellyfin:latest
@@ -279,36 +241,16 @@ services:
- /data/media:/data/media - /data/media:/data/media
ports: ports:
- 8096:8096 - 8096:8096
# Uncomment the lines below to enable hardware transcoding (Intel Quick Sync / VAAPI).
# Only works if your system has Intel/AMD integrated graphics (/dev/dri must exist).
# If you get an error about /dev/dri not found, leave these commented out.
# devices:
# - /dev/dri:/dev/dri
networks: networks:
arrnetwork: arrnetwork:
ipv4_address: ${IP_JELLYFIN} ipv4_address: ${IP_JELLYFIN}
restart: unless-stopped restart: unless-stopped
# ============================================================ # ============================================================
# SEERR — Request System (NOT behind VPN) # SEERR — Request System
# Netflix-like UI for requesting movies and TV shows.
# Share this with family — they never need to touch Radarr.
#
# Seerr is the unified successor to Overseerr and Jellyseerr
# (merged under seerr-team). Supports Plex, Jellyfin, and Emby.
#
# Config uses a NAMED Docker volume (not a bind mount). This is
# required: Seerr runs as the `node` user (UID 1000) and a
# bind-mounted host folder is created root-owned, causing a
# permission-denied crash loop. On Windows/WSL, bind mounts also
# corrupt the SQLite DB over SMB. Named volumes fix both cases
# (matches upstream Seerr docs).
#
# Migrating from ./jellyseerr or ./seerr bind mount? See README
# troubleshooting "Migrating Seerr config to a named volume".
# ============================================================ # ============================================================
seerr: seerr:
image: ghcr.io/seerr-team/seerr:v3.0.1 image: ghcr.io/seerr-team/seerr:latest
init: true init: true
container_name: seerr container_name: seerr
environment: environment:
@@ -319,7 +261,7 @@ services:
- TZ=${TZ} - TZ=${TZ}
- PORT=5055 - PORT=5055
volumes: volumes:
- seerr_volume:/app/config # <--- Needed or will cause a permissions issue. - seerr_volume:/app/config
ports: ports:
- 5055:5055 - 5055:5055
healthcheck: healthcheck:
@@ -333,6 +275,9 @@ services:
ipv4_address: ${IP_SEERR} ipv4_address: ${IP_SEERR}
restart: unless-stopped restart: unless-stopped
# ============================================================
# LISTENARR — Audiobooks & Podcasts
# ============================================================
listenarr: listenarr:
image: ghcr.io/listenarrs/listenarr:canary image: ghcr.io/listenarrs/listenarr:canary
container_name: listenarr container_name: listenarr
@@ -352,6 +297,9 @@ services:
arrnetwork: arrnetwork:
ipv4_address: ${IP_LIST} ipv4_address: ${IP_LIST}
# ============================================================
# AUDIOBOOKSHELF — Audiobook / Podcast Server
# ============================================================
audiobookshelf: audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest image: ghcr.io/advplyr/audiobookshelf:latest
container_name: audiobookshelf container_name: audiobookshelf
@@ -371,6 +319,10 @@ services:
networks: networks:
arrnetwork: arrnetwork:
ipv4_address: ${IP_AUDIO} ipv4_address: ${IP_AUDIO}
# ============================================================
# NAVIDROME — Music Streaming
# ============================================================
navidrome: navidrome:
image: deluan/navidrome:latest image: deluan/navidrome:latest
container_name: navidrome container_name: navidrome
@@ -391,17 +343,19 @@ services:
networks: networks:
arrnetwork: arrnetwork:
ipv4_address: ${IP_NAVI} ipv4_address: ${IP_NAVI}
# ============================================================
# WATCHTOWER — Automatic Image Updates
# ============================================================
watchtower: watchtower:
image: containrrr/watchtower image: nickfedor/watchtower:latest
container_name: watchtower container_name: watchtower
restart: unless-stopped restart: unless-stopped
env_file: .env
environment: environment:
- DOCKER_API_VERSION=1.44 - DOCKER_API_VERSION=1.44
- TZ=${TZ} - TZ=${TZ}
- PUID:=${PUID} # Reference PUID from .env - PUID=${PUID}
- PGID=${PGID} # Reference PGID from .env - PGID=${PGID}
- WATCHTOWER_CLEANUP=${WATCHTOWER_CLEANUP} - WATCHTOWER_CLEANUP=${WATCHTOWER_CLEANUP}
- WATCHTOWER_INCLUDE_RESTARTING=${WATCHTOWER_INCLUDE_RESTARTING} - WATCHTOWER_INCLUDE_RESTARTING=${WATCHTOWER_INCLUDE_RESTARTING}
- WATCHTOWER_ROLLING_RESTARTING=${WATCHTOWER_ROLLING_RESTARTING} - WATCHTOWER_ROLLING_RESTARTING=${WATCHTOWER_ROLLING_RESTARTING}
@@ -415,6 +369,7 @@ services:
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT} - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER} - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD} - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD}
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=${WATCHTOWER_NOTIFICATION_EMAIL_DELAY}
security_opt: security_opt:
- no-new-privileges:true - no-new-privileges:true
volumes: volumes:
@@ -425,7 +380,42 @@ services:
networks: networks:
arrnetwork: arrnetwork:
ipv4_address: ${IP_WATCH} ipv4_address: ${IP_WATCH}
# Go to the VERY BOTTOM of your file (outside of services) and add this:
sencho:
image: saelix/sencho:latest
container_name: sencho
restart: unless-stopped
ports:
- "1852:1852"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/Docker-Deployments/Sencho/data:/app/data
# Change this line so the container path matches the host path.
- /opt/Docker-Deployments:/opt/Docker-Deployments
environment:
- COMPOSE_DIR=/opt/Docker-Deployments
- DATA_DIR=/app/data
arr-dashboard:
image: khak1s/arr-dashboard:latest
container_name: arr-dashboard
environment:
- TZ=${TZ}
- PUID=${PUID}
- PGID=${PGID}
# Paste the output of 'openssl rand -hex 32' here
- SECRET_ENCRYPTION_KEY=a7f4b8d9e210c436587fa012b39c84e12d5e6f890123456789abcdef01234567
# Persistent Storage & Integration Access
volumes:
# Critical data path: API keys, SQLite DB, TRaSH profile caches
- /opt/Docker-Deployments/arrdashboard/config:/config
# Optional: Read-only access to host docker socket
# Allows arr-dashboard to read container health/states
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- 3000:3000
restart: unless-stopped
volumes: volumes:
gluetun_volume: gluetun_volume:
qbittorrent_volume: qbittorrent_volume:
@@ -441,4 +431,4 @@ volumes:
listenarr_volume: listenarr_volume:
audiobookshelf_volume: audiobookshelf_volume:
navidrome_volume: navidrome_volume:
watchtower_volume: watchtower_volume:
+18
View File
@@ -0,0 +1,18 @@
# Application Settings
APP_URL=https://book.mikemcfetridge.com
APP_KEY=base64:k1BQQ5IB+TDD4XOmDtOdxupfvBECi+Z1Ay9C12/5YgA=
BOOKSTACK_PORT=6875
# System Settings
TZ=America/New_York
PUID=1000
PGID=1000
DATA_DIR=/opt/Docker-Deployments/Bookstack
# Database Credentials
DB_HOST=db
DB_PORT=3306
DB_DATABASE=bookstack
DB_USERNAME=bookstack
DB_PASSWORD=3OSyIgZjyV4Tze
MYSQL_ROOT_PASSWORD=3OSyIgZjyV4Tze
+53
View File
@@ -0,0 +1,53 @@
services:
db:
image: mariadb:11
container_name: bookstack-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
volumes:
# Persist database files
- ${DATA_DIR}/db:/var/lib/mysql
networks:
- internal
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
restart: unless-stopped
depends_on:
- db
ports:
# Web interface
- "${BOOKSTACK_PORT}:80"
environment:
# Application URL
- APP_URL=${APP_URL}
# Session encryption key
- APP_KEY=${APP_KEY}
# Database connection
- DB_HOST=${DB_HOST}
- DB_PORT=${DB_PORT}
- DB_DATABASE=${DB_DATABASE}
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
# Timezone
- TZ=${TZ}
# User/group IDs for file permissions
- PUID=${PUID}
- PGID=${PGID}
volumes:
# Application configuration
- ${DATA_DIR}/config:/config
networks:
- external
- internal
networks:
internal:
external: true
external:
external: true
+22
View File
@@ -0,0 +1,22 @@
# General Settings
TZ=America/New_York
PUID=1000
PGID=1000
DATA_DIR=/opt/Docker-Deployments/Mealie
MEALIE_PORT=9200
MEMORY_LIMIT=1000M
# Mealie Application Settings
ALLOW_SIGNUP=false
MAX_WORKERS=1
WEB_CONCURRENCY=1
BASE_URL=https://mealie.mikemcfetridge.com
# SMTP Email Configuration
SMTP_HOST=mail.mmcfetridge.net
SMTP_PORT=465
SMTP_FROM_NAME=miker@mmcfetridge.net
SMTP_FROM_EMAIL=miker@mmcfetridge.net
SMTP_USER=miker@mmcfetridge.net
SMTP_PASSWORD=!Sucyetat123
SMTP_AUTH_STRATEGY=SSL
+23 -24
View File
@@ -1,36 +1,35 @@
services: services:
mealie: mealie:
image: ghcr.io/mealie-recipes/mealie:latest # Specifies the Mealie Docker i> image: ghcr.io/mealie-recipes/mealie:latest
container_name: mealie # Names the container for easier> container_name: mealie
restart: unless-stopped
ports: ports:
- "9200:9000" # Maps port 9925 on the host to > - "${MEALIE_PORT}:9000"
deploy: deploy:
resources: resources:
limits: limits:
memory: 1000M # Limits the container to use a > memory: ${MEMORY_LIMIT}
volumes: volumes:
- /opt/Docker-Deployments/Mealie/data:/app/data/ # Persists data in> - ${DATA_DIR}/data:/app/data/
- /opt/Docker-Deployments/Mealie/config/addons_config/mealie/config.yaml:/config/config.yanl - ${DATA_DIR}/config/addons_config/mealie/config.yaml:/config/config.yaml
environment: environment:
- ALLOW_SIGNUP=false # Allows new user signups on the> - ALLOW_SIGNUP=${ALLOW_SIGNUP}
- PUID=1000 # Sets the user ID for the conta> - PUID=${PUID}
- PGID=1000 # Sets the group ID for the cont> - PGID=${PGID}
- TZ=America/New_York # Sets the timezone for the cont> - TZ=${TZ}
- MAX_WORKERS=1 # Limits the number of workers t> - MAX_WORKERS=${MAX_WORKERS}
- WEB_CONCURRENCY=1 # Sets the concurrency level for> - WEB_CONCURRENCY=${WEB_CONCURRENCY}
- BASE_URL=mealie.mikemcfetridge.com # The base URL where Mealie is a> - BASE_URL=${BASE_URL}
# Email Settings # Email Settings
- SMTP_HOST=mail.mmcfetridge.net - SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=465 - SMTP_PORT=${SMTP_PORT}
- SMTP_FROM_NAME=miker@mmcfetridge.net - SMTP_FROM_NAME=${SMTP_FROM_NAME}
- SMTP_AUTH_STRATEGY=TLS - SMTP_AUTH_STRATEGY=${SMTP_AUTH_STRATEGY}
- SMTP_FROM_EMAIL=miker@mmcfetridge.net - SMTP_FROM_EMAIL=${SMTP_FROM_EMAIL}
- SMTP_USER=miker@mmcfetridge.net - SMTP_USER=${SMTP_USER}
- SMTP_PASSWORD="!Sucyetat123" - SMTP_PASSWORD=${SMTP_PASSWORD}
networks: networks:
- external - external
restart: unless-stopped
healthcheck: healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000"] test: ["CMD", "curl", "-f", "http://localhost:9000"]
interval: 10s interval: 10s
@@ -40,4 +39,4 @@ services:
networks: networks:
external: external:
external: true # Tells Compose not to create this network external: true
+14
View File
@@ -0,0 +1,14 @@
services:
myspeed:
container_name: MySpeed
image: germannewsmaker/myspeed:latest
ports:
- '5216:5216'
volumes:
- /opt/Docker-Deployments/MySpeed/data:/myspeed/data
restart: unless-stopped
networks:
- external
networks:
external:
external: true # Tells Compose not to create this network
+26
View File
@@ -0,0 +1,26 @@
# General System Settings
PUID=1000
PGID=1000
SEMAPHORE_PORT=3020
ANSIBLE_HOST_KEY_CHECKING=False
DOCKER_HOST=tcp://docker_proxy:2375
# Semaphore Admin User
SEMAPHORE_ADMIN=mmcfetridge
SEMAPHORE_ADMIN_NAME=Mike McFetridge
SEMAPHORE_ADMIN_EMAIL=mmcfetridg@aol.com
SEMAPHORE_ADMIN_PASSWORD=Dy7zxAyDqdYN443g4pI3
# Security & Storage
SEMAPHORE_DB_DIALECT=sqlite
SEMAPHORE_ACCESS_KEY_ENCRYPTION=mrmKv7EztqRCnlGo34IvlvoilXqvDKYnFIWX2lg+hZc=
# Email Settings
SEMAPHORE_EMAIL_ALERT=true
SEMAPHORE_EMAIL_HOST=mail.mmcfetridge.net
SEMAPHORE_EMAIL_PORT=465
SEMAPHORE_EMAIL_SENDER=miker@mmcfetridge.net
SEMAPHORE_EMAIL_USERNAME=miker@mmcfetridge.net
SEMAPHORE_EMAIL_PASSWORD=!Sucyetat123
SEMAPHORE_EMAIL_SECURE=true
SEMAPHORE_EMAIL_TLS=false
+25 -26
View File
@@ -2,50 +2,49 @@ volumes:
semaphore_data: semaphore_data:
semaphore_config: semaphore_config:
semaphore_tmp: semaphore_tmp:
services: services:
semaphore: semaphore:
image: semaphoreui/semaphore:latest image: semaphoreui/semaphore:latest
container_name: semaphore container_name: semaphore
restart: unless-stopped
ports: ports:
- "3020:3020" # Web UI accessed via port 3020 - "${SEMAPHORE_PORT}:${SEMAPHORE_PORT}"
environment: environment:
- PUID=1000 - PUID=${PUID}
- PGID=1000 - PGID=${PGID}
- SEMAPHORE_DB_DIALECT=sqlite - SEMAPHORE_DB_DIALECT=${SEMAPHORE_DB_DIALECT}
- SEMAPHORE_ADMIN_PASSWORD=Dy7zxAyDqdYN443g4pI3 # Change this on first boot! - SEMAPHORE_ADMIN_PASSWORD=${SEMAPHORE_ADMIN_PASSWORD}
- SEMAPHORE_ADMIN_NAME=Mike McFetridge - SEMAPHORE_ADMIN_NAME=${SEMAPHORE_ADMIN_NAME}
- SEMAPHORE_ADMIN_EMAIL=mmcfetridg@aol.com - SEMAPHORE_ADMIN_EMAIL=${SEMAPHORE_ADMIN_EMAIL}
- SEMAPHORE_ADMIN=mmcfetridge - SEMAPHORE_ADMIN=${SEMAPHORE_ADMIN}
# Point Semaphore to our secure local Docker Proxy instead of raw socket # Docker Proxy endpoint
- DOCKER_HOST=tcp://docker_proxy:2375 - DOCKER_HOST=${DOCKER_HOST}
- SEMAPHORE_PORT=3020 - SEMAPHORE_PORT=${SEMAPHORE_PORT}
- ANSIBLE_HOST_KEY_CHECKING=False - ANSIBLE_HOST_KEY_CHECKING=${ANSIBLE_HOST_KEY_CHECKING}
- SEMAPHORE_ACCESS_KEY_ENCRYPTION=mrmKv7EztqRCnlGo34IvlvoilXqvDKYnFIWX2lg+hZc= - SEMAPHORE_ACCESS_KEY_ENCRYPTION=${SEMAPHORE_ACCESS_KEY_ENCRYPTION}
# Email Configuration # Email Configuration
- SEMAPHORE_EMAIL_ALERT=True - SEMAPHORE_EMAIL_ALERT=${SEMAPHORE_EMAIL_ALERT}
- SEMAPHORE_EMAIL_HOST=mail.mmcfetridge.net - SEMAPHORE_EMAIL_HOST=${SEMAPHORE_EMAIL_HOST}
- SEMAPHORE_EMAIL_PORT=465 - SEMAPHORE_EMAIL_PORT=${SEMAPHORE_EMAIL_PORT}
- SEMAPHORE_EMAIL_SENDER=miker@mmcfetridge.net - SEMAPHORE_EMAIL_SENDER=${SEMAPHORE_EMAIL_SENDER}
- SEMAPHORE_EMAIL_USERNAME=miker@mmcfetridge.net - SEMAPHORE_EMAIL_USERNAME=${SEMAPHORE_EMAIL_USERNAME}
- SEMAPHORE_EMAIL_PASSWORD="!Sucyetat123" - SEMAPHORE_EMAIL_PASSWORD=${SEMAPHORE_EMAIL_PASSWORD}
- SEMAPHORE_EMAIL_SECURE=true - SEMAPHORE_EMAIL_SECURE=${SEMAPHORE_EMAIL_SECURE}
- SEMAPHORE_EMAIL_TLS=true - SEMAPHORE_EMAIL_TLS=${SEMAPHORE_EMAIL_TLS}
volumes: volumes:
- semaphore_data:/var/lib/semaphore - semaphore_data:/var/lib/semaphore
- semaphore_config:/etc/semaphore - semaphore_config:/etc/semaphore
- semaphore_tmp:/tmp/semaphore - semaphore_tmp:/tmp/semaphore
networks: networks:
- external - external
restart: unless-stopped
healthcheck: healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3020"] test: ["CMD", "curl", "-f", "http://localhost:3020"]
interval: 10s interval: 10s
retries: 3 retries: 3
timeout: 10s timeout: 10s
start_period: 30s start_period: 30s
networks: networks:
external: external:
external: true # Tells Compose not to create this network external: true
+1 -1
View File
@@ -8,7 +8,7 @@ services:
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- /opt/Docker-Deployments/Sencho/data:/app/data - /opt/Docker-Deployments/Sencho/data:/app/data
# Change this line so the container path matches the host path: # Change this line so the container path matches the host path:
- /opt/Docker-Deployments:/opt/Docker-Deployments - /opt/Docker-Deployments:/opt/Docker-Deployments
environment: environment:
- COMPOSE_DIR=/opt/Docker-Deployments - COMPOSE_DIR=/opt/Docker-Deployments
+4 -4
View File
@@ -1,11 +1,13 @@
TZ=America/New_York TZ=America/New_York
PUID=1000
PGID=1000
WATCHTOWER_CLEANUP=true WATCHTOWER_CLEANUP=true
WATCHTOWER_INCLUDE_RESTARTING=true WATCHTOWER_INCLUDE_RESTARTING=true
WATCHTOWER_ROLLING_RESTARTING=true WATCHTOWER_ROLLING_RESTARTING=true
WATCHTOWER_SCHEDULE=0 0 4 * * * WATCHTOWER_SCHEDULE="0 0 4 * * *"
WATCHTOWER_INCLUDE_STOPPED=true WATCHTOWER_INCLUDE_STOPPED=true
WATCHTOWER_NOTIFICATIONS=email WATCHTOWER_NOTIFICATIONS=email
WATCHTOWER_NOTIFICATIONS_HOSTNAME=Docker-Deply # Add Server Name or IP Address WATCHTOWER_NOTIFICATIONS_HOSTNAME=Docker-01
WATCHTOWER_NOTIFICATION_EMAIL_FROM=miker@mmcfetridge.net WATCHTOWER_NOTIFICATION_EMAIL_FROM=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_TO=miker@mmcfetridge.net WATCHTOWER_NOTIFICATION_EMAIL_TO=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.mmcfetridge.net WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.mmcfetridge.net
@@ -13,5 +15,3 @@ WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=miker@mmcfetridge.net WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=miker@mmcfetridge.net
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=!Sucyetat123 WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=!Sucyetat123
WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2
PUID=1000
PGID=1000
+22 -20
View File
@@ -1,28 +1,29 @@
services: services:
watchtower: watchtower:
image: containrrr/watchtower image: nickfedor/watchtower:latest
container_name: watchtower container_name: watchtower
restart: unless-stopped restart: unless-stopped
env_file: .env env_file:
- .env
environment: environment:
- DOCKER_API_VERSION=1.44 - DOCKER_API_VERSION=1.44
- TZ=America/New_York - TZ=${TZ}
- PUID:=1000 # Reference PUID from .env - PUID=${PUID}
- PGID=1000 # Reference PGID from .env - PGID=${PGID}
- WATCHTOWER_CLEANUP=true - WATCHTOWER_CLEANUP=${WATCHTOWER_CLEANUP}
- WATCHTOWER_INCLUDE_RESTARTING=true - WATCHTOWER_INCLUDE_RESTARTING=${WATCHTOWER_INCLUDE_RESTARTING}
- WATCHTOWER_ROLLING_RESTARTING=true - WATCHTOWER_ROLLING_RESTARTING=${WATCHTOWER_ROLLING_RESTARTING}
- WATCHTOWER_SCHEDULE=0 0 4 * * * - WATCHTOWER_SCHEDULE=${WATCHTOWER_SCHEDULE}
- WATCHTOWER_INCLUDE_STOPPED=true - WATCHTOWER_INCLUDE_STOPPED=${WATCHTOWER_INCLUDE_STOPPED}
- WATCHTOWER_NOTIFICATIONS=email - WATCHTOWER_NOTIFICATIONS=${WATCHTOWER_NOTIFICATIONS}
- WATCHTOWER_NOTIFICATIONS_HOSTNAME=Docker-Deployment # Add Server Name or IP Address - WATCHTOWER_NOTIFICATIONS_HOSTNAME=${WATCHTOWER_NOTIFICATIONS_HOSTNAME}
- WATCHTOWER_NOTIFICATION_EMAIL_FROM=miker@mmcfetridge.net - WATCHTOWER_NOTIFICATION_EMAIL_FROM=${WATCHTOWER_NOTIFICATION_EMAIL_FROM}
- WATCHTOWER_NOTIFICATION_EMAIL_TO=miker@mmcfetridge.net - WATCHTOWER_NOTIFICATION_EMAIL_TO=${WATCHTOWER_NOTIFICATION_EMAIL_TO}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.mmcfetridge.net - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465 - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=miker@mmcfetridge.net - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=!Sucyetat123 - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD}
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2 - WATCHTOWER_NOTIFICATION_EMAIL_DELAY=${WATCHTOWER_NOTIFICATION_EMAIL_DELAY}
security_opt: security_opt:
- no-new-privileges:true - no-new-privileges:true
volumes: volumes:
@@ -31,6 +32,7 @@ services:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
networks: networks:
- external - external
networks: networks:
external: external:
external: true # Tells Compose not to create this network. external: true