Compare commits
18
Commits
b8a799eb9a
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eb4884e4fd | ||
|
|
2cb5d5b7cf | ||
|
|
e6b0da4f19 | ||
|
|
6264b22363 | ||
|
|
6f80a2f62a | ||
|
|
cbca7f9866 | ||
|
|
2de1929975 | ||
|
|
54a91045a4 | ||
|
|
0da0fba8ac | ||
|
|
f27d9d93ec | ||
|
|
e53c827cf6 | ||
|
|
47b3d10b01 | ||
|
|
90d18452e9 | ||
|
|
a9d31a6012 | ||
|
|
22e933bd09 | ||
|
|
0a4a19652a | ||
|
|
7b27c85938 | ||
|
|
11331023ca |
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
@@ -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
|
|
||||||
+66
-76
@@ -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
|
||||||
@@ -392,16 +344,18 @@ services:
|
|||||||
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:
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
@@ -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
|
||||||
+22
-23
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -7,38 +7,37 @@ 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
|
||||||
@@ -48,4 +47,4 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
external:
|
external:
|
||||||
external: true # Tells Compose not to create this network
|
external: true
|
||||||
|
|||||||
+4
-4
@@ -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
|
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user