refactor again
This commit is contained in:
@@ -0,0 +1,97 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# Torrent Stack - Environment Variables
|
||||||
|
# Copy this file to .env and fill in your values.
|
||||||
|
# NEVER commit .env to version control.
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# ----- Time & Location -----
|
||||||
|
TIMEZONE=America/Los_Angeles
|
||||||
|
|
||||||
|
# ----- Host -----
|
||||||
|
LOCAL_IPV4=192.168.50.0 # of your device
|
||||||
|
EXTERNAL_IPV4=123.156.178.190
|
||||||
|
SERVER_NAME=your-server # most likely, set this to be the same as your local ipv4, unless you use tailscale or any sort of mDNS on your machine. homepage relies on this for hyperlinks, but not api calls.
|
||||||
|
WEB_NAME=your-server.com
|
||||||
|
TAILNET_NAME=tasty-food.ts.net
|
||||||
|
WEB_PROTOCOL=http
|
||||||
|
|
||||||
|
# ----- Storage -----
|
||||||
|
DISK1=/mnt/media
|
||||||
|
DISK2=/mnt/11tb_ext
|
||||||
|
DISK3=/mnt/shaimpy
|
||||||
|
|
||||||
|
# ----- Gluetun (VPN) -----
|
||||||
|
GLUETUN_KEY=YHotvxxNsRHa4YLu2j6ENL
|
||||||
|
VPN_PRIVATE_KEY="kGfvaULQs1KBWJ4KXD1LiX8sHNZ7hnCm/W45uBj4P1k="
|
||||||
|
|
||||||
|
# ----- Service Ports -----
|
||||||
|
PLEX_PORT=32400
|
||||||
|
PLEX_PFWD_PORT=32401 # PLEX PORT FORWARDED PORT. only if you manually specified
|
||||||
|
TAUTULLI_PORT=8181
|
||||||
|
HOMEPAGE_PORT=3000
|
||||||
|
GLANCES_PORT=61208 # this is hardcoded, please do not change
|
||||||
|
SEERR_PORT=5055
|
||||||
|
MYSPEED_PORT=5216
|
||||||
|
PROWLARR_PORT=9696
|
||||||
|
SONARR_PORT=8989
|
||||||
|
RADARR_PORT=7878
|
||||||
|
LIDARR_PORT=8686
|
||||||
|
QBITTORRENT_PORT=2161
|
||||||
|
TDARR_PORT=8265
|
||||||
|
TDARR_NODE_PORT=8266
|
||||||
|
ODYSSEUS_PORT=7001
|
||||||
|
PORTAINER_PORT=9443
|
||||||
|
SCRUTINY_PORT=4545
|
||||||
|
SCRUTINY_ADMIN_PORT=4646
|
||||||
|
PIHOLE_PORT=6060
|
||||||
|
KARAKEEP_PORT=4621
|
||||||
|
KARAKEEP_CHROME_PORT=9222
|
||||||
|
MEILI_PORT=7700
|
||||||
|
LLAMA_PORT=8079
|
||||||
|
TDARR_NODE_ID=ShaanNode
|
||||||
|
|
||||||
|
# ----- API Keys (for homepage widgets & service integrations) -----
|
||||||
|
PLEX_KEY=
|
||||||
|
PROWLARR_KEY=
|
||||||
|
RADARR_KEY=
|
||||||
|
SONARR_KEY=
|
||||||
|
LIDARR_KEY=
|
||||||
|
TAUTULLI_KEY=
|
||||||
|
SEERR_KEY=
|
||||||
|
QBITTORRENT_KEY=
|
||||||
|
TAILSCALE_KEY=
|
||||||
|
TAILSCALE_DEVICE_KEY=
|
||||||
|
CLOUDFLARED_KEY=
|
||||||
|
|
||||||
|
# ----- Cloudflare (for homepage widget) -----
|
||||||
|
CLOUDFLARED_ACCOUNT_ID=
|
||||||
|
CLOUDFLARED_TUNNEL_ID=
|
||||||
|
CLOUDFLARED_API_KEY=
|
||||||
|
|
||||||
|
# ----- Portainer (for homepage widget) -----
|
||||||
|
PORTAINER_API_KEY=
|
||||||
|
|
||||||
|
# ----- Pi-hole -----
|
||||||
|
PIHOLE_WEBPASSWORD=
|
||||||
|
|
||||||
|
# ----- Glances -----
|
||||||
|
GLANCES_USERNAME=
|
||||||
|
GLANCES_PASSWORD=
|
||||||
|
|
||||||
|
# ----- Karakeep -----
|
||||||
|
# KARAKEEP
|
||||||
|
|
||||||
|
DATA_DIR=/karakeep-data
|
||||||
|
MEILI_ADDR=http://127.0.0.1:${MEILI_PORT}
|
||||||
|
MEILI_MASTER_KEY=
|
||||||
|
NEXTAUTH_URL=http://localhost:3001
|
||||||
|
NEXTAUTH_SECRET=
|
||||||
|
|
||||||
|
OPENAI_API_KEY=ollama
|
||||||
|
OPENAI_BASE_URL=http://${LOCAL_IPV4}:${LLAMA_PORT}/v1
|
||||||
|
INFERENCE_TEXT_MODEL=Qwen3.6
|
||||||
|
INFERENCE_IMAGE_MODEL=Qwen3.6
|
||||||
|
EMBEDDING_TEXT_MODEL=Qwen3-Embedding
|
||||||
|
EMBEDDING_DIMENSIONS=2048
|
||||||
|
EMBEDDING_CONTEXT_LENGTH=4096
|
||||||
|
EMBEDDING_ENABLE_AUTO_INDEXING=true
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
# Ignore the environment file containing secrets
|
# Ignore the environment file containing secrets
|
||||||
.env*
|
.env*
|
||||||
|
!.env.example
|
||||||
*.bak
|
*.bak
|
||||||
*.log
|
*.log
|
||||||
|
|
||||||
@@ -20,6 +21,12 @@ config/
|
|||||||
conf/
|
conf/
|
||||||
torrents.csv
|
torrents.csv
|
||||||
torrents-csv-data/
|
torrents-csv-data/
|
||||||
|
env/*
|
||||||
|
meilisearch/
|
||||||
|
portainer-data/
|
||||||
|
scrutiny
|
||||||
|
karakeep-data
|
||||||
|
SECURITY.md
|
||||||
init-database.*
|
init-database.*
|
||||||
etc*
|
etc*
|
||||||
!odysseus/.*
|
!odysseus/.*
|
||||||
|
|||||||
+12
-1
@@ -1,7 +1,18 @@
|
|||||||
|
# Caddy reverse proxy for Seerr
|
||||||
|
# When Anubis is enabled (uncomment seerr-anubis in compose.yml),
|
||||||
|
# change the proxy target to http://seerr-anubis:55055
|
||||||
|
|
||||||
seerr.shaan-server, seerr.shaan-server.cc {
|
seerr.shaan-server, seerr.shaan-server.cc {
|
||||||
tls internal
|
tls internal
|
||||||
reverse_proxy http://anubis-seerr:55055 {
|
reverse_proxy http://seerr:5055 {
|
||||||
header_up X-Real-Ip {remote_host}
|
header_up X-Real-Ip {remote_host}
|
||||||
header_up X-Http-Version {http.request.proto}
|
header_up X-Http-Version {http.request.proto}
|
||||||
}
|
}
|
||||||
|
header {
|
||||||
|
# Security headers
|
||||||
|
X-Content-Type-Options nosniff
|
||||||
|
X-Frame-Options DENY
|
||||||
|
Referrer-Policy no-referrer
|
||||||
|
-Server
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+267
-111
@@ -11,20 +11,20 @@ networks:
|
|||||||
name: portainer_network
|
name: portainer_network
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
meilisearch:
|
#caddy_config:
|
||||||
karakeep-data:
|
#caddy_data:
|
||||||
caddy_config:
|
# external: true
|
||||||
caddy_data:
|
|
||||||
external: true
|
|
||||||
myspeed:
|
myspeed:
|
||||||
external: true
|
external: true
|
||||||
portainer_data:
|
portainer_data:
|
||||||
|
name: portainer_data
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Key ordering per service:
|
# Key ordering per service:
|
||||||
# image → container_name → env_file → networks/network_mode → cap_add
|
# image → container_name → env_file → networks/network_mode
|
||||||
# → ports → volumes → environment → labels → healthcheck
|
# → depends_on → cap_add → ports → volumes → environment
|
||||||
# → extra_hosts → devices → pid → restart
|
# → labels → healthcheck → security_opt → mem_limit → cpus
|
||||||
|
# → devices → restart
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
services:
|
services:
|
||||||
@@ -35,6 +35,9 @@ services:
|
|||||||
gluetun:
|
gluetun:
|
||||||
image: qmcgaw/gluetun:latest
|
image: qmcgaw/gluetun:latest
|
||||||
container_name: gluetun
|
container_name: gluetun
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
- ./env/.gluetun.env
|
||||||
cap_add:
|
cap_add:
|
||||||
- NET_ADMIN
|
- NET_ADMIN
|
||||||
ports:
|
ports:
|
||||||
@@ -46,12 +49,12 @@ services:
|
|||||||
- ${LIDARR_PORT}:${LIDARR_PORT}
|
- ${LIDARR_PORT}:${LIDARR_PORT}
|
||||||
volumes:
|
volumes:
|
||||||
- ./gluetun-data:/tmp/gluetun:rw
|
- ./gluetun-data:/tmp/gluetun:rw
|
||||||
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- VPN_SERVICE_PROVIDER=protonvpn
|
- VPN_SERVICE_PROVIDER=protonvpn
|
||||||
- VPN_TYPE=wireguard
|
- VPN_TYPE=wireguard
|
||||||
- HTTP_CONTROL_SERVER=ON
|
- HTTP_CONTROL_SERVER=ON
|
||||||
- HTTP_CONTROL_SERVER_AUTH_DEFAULT_ROLE='{"auth":"apikey","apikey":"${GLUETUN_KEY}"}'
|
|
||||||
- WIREGUARD_PRIVATE_KEY=${VPN_PRIVATE_KEY}
|
|
||||||
- WIREGUARD_MTU=1280
|
- WIREGUARD_MTU=1280
|
||||||
- VPN_PORT_FORWARDING=on
|
- VPN_PORT_FORWARDING=on
|
||||||
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
|
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
|
||||||
@@ -61,11 +64,15 @@ services:
|
|||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
- DNS_UPSTREAM_RESOLVER_TYPE=doh
|
- DNS_UPSTREAM_RESOLVER_TYPE=doh
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: wget --spider -q http://1.1.1.1 || exit 1
|
test: ["CMD-SHELL", "wget --spider -q http://1.1.1.1 || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 15s
|
timeout: 15s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 1m
|
start_period: 1m
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
devices:
|
devices:
|
||||||
@@ -84,8 +91,8 @@ services:
|
|||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
- ./gluetun-data:/tmp/gluetun
|
- ./gluetun-data:/tmp/gluetun
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
- PGID=${HOST_PGID:-1000}
|
- PGID=${HOST_PGID:-1000}
|
||||||
@@ -94,11 +101,19 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "autoheal=true"
|
- "autoheal=true"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "wget --spider -q https://1.1.1.1 || exit 1"]
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"curl -sf http://localhost:${QBITTORRENT_PORT}/api/v2/app/version || exit 1",
|
||||||
|
]
|
||||||
interval: 1m
|
interval: 1m
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 30s
|
start_period: 30s
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 512m
|
||||||
|
cpus: 2.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
port-updater:
|
port-updater:
|
||||||
@@ -135,12 +150,19 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "autoheal=true"
|
- "autoheal=true"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "curl -f https://1.1.1.1 || exit 1"]
|
test: ["CMD-SHELL", "curl -sf https://1.1.1.1 || exit 1"]
|
||||||
interval: 1m
|
interval: 1m
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 30s
|
start_period: 30s
|
||||||
restart: always
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
read_only: true
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
mem_limit: 64m
|
||||||
|
cpus: 0.25
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# *arr Stack
|
# *arr Stack
|
||||||
@@ -156,8 +178,8 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./prowlarr:/config
|
- ./prowlarr:/config
|
||||||
- ./notify.sh:/notify.sh:ro
|
- ./notify.sh:/notify.sh:ro
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
- PGID=${HOST_PGID:-1000}
|
- PGID=${HOST_PGID:-1000}
|
||||||
@@ -165,12 +187,20 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "autoheal=true"
|
- "autoheal=true"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "wget --spider -q https://google.com || exit 1"]
|
test:
|
||||||
interval: 5m
|
[
|
||||||
timeout: 60s
|
"CMD-SHELL",
|
||||||
|
"curl -sf http://localhost:${PROWLARR_PORT}/ping || exit 1",
|
||||||
|
]
|
||||||
|
interval: 1m
|
||||||
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 30s
|
start_period: 30s
|
||||||
restart: always
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
sonarr:
|
sonarr:
|
||||||
image: lscr.io/linuxserver/sonarr:latest
|
image: lscr.io/linuxserver/sonarr:latest
|
||||||
@@ -183,8 +213,8 @@ services:
|
|||||||
- /var/lib/sonarr:/config
|
- /var/lib/sonarr:/config
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
- PGID=${HOST_PGID:-1000}
|
- PGID=${HOST_PGID:-1000}
|
||||||
@@ -192,12 +222,17 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "autoheal=true"
|
- "autoheal=true"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "curl -f http://1.1.1.1 || exit 1"]
|
test:
|
||||||
interval: 5m
|
["CMD-SHELL", "curl -sf http://localhost:${SONARR_PORT}/ping || exit 1"]
|
||||||
timeout: 60s
|
interval: 1m
|
||||||
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 60s
|
start_period: 60s
|
||||||
restart: always
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
radarr:
|
radarr:
|
||||||
image: lscr.io/linuxserver/radarr:latest
|
image: lscr.io/linuxserver/radarr:latest
|
||||||
@@ -210,8 +245,8 @@ services:
|
|||||||
- /var/lib/radarr:/config
|
- /var/lib/radarr:/config
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
- PGID=${HOST_PGID:-1000}
|
- PGID=${HOST_PGID:-1000}
|
||||||
@@ -219,12 +254,17 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "autoheal=true"
|
- "autoheal=true"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "curl -f http://1.1.1.1 || exit 1"]
|
test:
|
||||||
|
["CMD-SHELL", "curl -sf http://localhost:${RADARR_PORT}/ping || exit 1"]
|
||||||
interval: 1m
|
interval: 1m
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 30s
|
start_period: 30s
|
||||||
restart: always
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
lidarr:
|
lidarr:
|
||||||
image: lscr.io/linuxserver/lidarr:latest
|
image: lscr.io/linuxserver/lidarr:latest
|
||||||
@@ -238,8 +278,8 @@ services:
|
|||||||
- /var/lib/lidarr:/config
|
- /var/lib/lidarr:/config
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
- PGID=${HOST_PGID:-1000}
|
- PGID=${HOST_PGID:-1000}
|
||||||
@@ -247,11 +287,16 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "autoheal=true"
|
- "autoheal=true"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "curl -f http://1.1.1.1 || exit 1"]
|
test:
|
||||||
|
["CMD-SHELL", "curl -sf http://localhost:${LIDARR_PORT}/ping || exit 1"]
|
||||||
interval: 1m
|
interval: 1m
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 30s
|
start_period: 30s
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -267,10 +312,16 @@ services:
|
|||||||
- ${TAUTULLI_PORT}:${TAUTULLI_PORT}
|
- ${TAUTULLI_PORT}:${TAUTULLI_PORT}
|
||||||
volumes:
|
volumes:
|
||||||
- ./tautulli:/config
|
- ./tautulli:/config
|
||||||
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
- PGID=${HOST_PGID:-1000}
|
- PGID=${HOST_PGID:-1000}
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
tdarr:
|
tdarr:
|
||||||
@@ -287,12 +338,18 @@ services:
|
|||||||
- ./tdarr/temp:/temp
|
- ./tdarr/temp:/temp
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
- PGID=${HOST_PGID:-100}
|
- PGID=${HOST_PGID:-1000}
|
||||||
- UMASK_SET=002
|
- UMASK_SET=002
|
||||||
- serverIP=0.0.0.0
|
- serverIP=0.0.0.0
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 512m
|
||||||
|
cpus: 2.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
tdarr-node:
|
tdarr-node:
|
||||||
@@ -306,6 +363,8 @@ services:
|
|||||||
- ./tdarr/temp:/temp
|
- ./tdarr/temp:/temp
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
@@ -314,8 +373,12 @@ services:
|
|||||||
- nodeIP=0.0.0.0
|
- nodeIP=0.0.0.0
|
||||||
- serverIP=tdarr
|
- serverIP=tdarr
|
||||||
- serverPort=${TDARR_NODE_PORT}
|
- serverPort=${TDARR_NODE_PORT}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 2g
|
||||||
|
cpus: 4.0
|
||||||
devices:
|
devices:
|
||||||
- /dev/dri/:/dev/dri/
|
- /dev/dri:/dev/dri
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
seerr:
|
seerr:
|
||||||
@@ -327,11 +390,11 @@ services:
|
|||||||
- ${SEERR_PORT}:${SEERR_PORT}
|
- ${SEERR_PORT}:${SEERR_PORT}
|
||||||
volumes:
|
volumes:
|
||||||
- ./seerr:/app/config
|
- ./seerr:/app/config
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- LOG_LEVEL=debug
|
- LOG_LEVEL=info
|
||||||
- TZ=America/Los_Angeles
|
- TZ=${TIMEZONE}
|
||||||
- PUID=${HOST_PUID:-1000}
|
- PUID=${HOST_PUID:-1000}
|
||||||
- PGID=${HOST_PGID:-1000}
|
- PGID=${HOST_PGID:-1000}
|
||||||
labels:
|
labels:
|
||||||
@@ -339,22 +402,35 @@ services:
|
|||||||
init: true
|
init: true
|
||||||
working_dir: "/app"
|
working_dir: "/app"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "wget --spider -q http://1.1.1.1 || exit 1"]
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"wget -qO- http://127.0.0.1:${SEERR_PORT}/api/v1/status || exit 1",
|
||||||
|
]
|
||||||
interval: 1m
|
interval: 1m
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 60s
|
start_period: 60s
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
seerr-anubis:
|
# Anubis anti-bot proxy for Seerr (uncomment to enable):
|
||||||
image: ghcr.io/techarohq/anubis:latest
|
#seerr-anubis:
|
||||||
container_name: seerr_anubis
|
# image: ghcr.io/techarohq/anubis:latest
|
||||||
networks:
|
# container_name: seerr-anubis
|
||||||
- caddy_net
|
# networks:
|
||||||
environment:
|
# - caddy_net
|
||||||
- BIND=:55055
|
# environment:
|
||||||
- TARGET=http://seerr:${SEERR_PORT}
|
# - BIND=:55055
|
||||||
restart: unless-stopped
|
# - TARGET=http://seerr:${SEERR_PORT}
|
||||||
|
# security_opt:
|
||||||
|
# - no-new-privileges:true
|
||||||
|
# mem_limit: 128m
|
||||||
|
# cpus: 0.5
|
||||||
|
# restart: unless-stopped
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Monitoring
|
# Monitoring
|
||||||
@@ -363,6 +439,9 @@ services:
|
|||||||
homepage:
|
homepage:
|
||||||
image: ghcr.io/gethomepage/homepage:latest
|
image: ghcr.io/gethomepage/homepage:latest
|
||||||
container_name: homepage
|
container_name: homepage
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
- ./env/.homepage.env
|
||||||
networks:
|
networks:
|
||||||
- caddy_net
|
- caddy_net
|
||||||
ports:
|
ports:
|
||||||
@@ -372,8 +451,8 @@ services:
|
|||||||
- ./homepage/images:/app/public/images
|
- ./homepage/images:/app/public/images
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
- ./gluetun-data:/tmp/gluetun:ro
|
- ./gluetun-data:/tmp/gluetun:ro
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- "HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,${LOCAL_IPV4}:${HOMEPAGE_PORT},${SERVER_NAME}:${HOMEPAGE_PORT},${SERVER_NAME}.${TAILNET_NAME}:${HOMEPAGE_PORT}"
|
- "HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,${LOCAL_IPV4}:${HOMEPAGE_PORT},${SERVER_NAME}:${HOMEPAGE_PORT},${SERVER_NAME}.${TAILNET_NAME}:${HOMEPAGE_PORT}"
|
||||||
- "HOMEPAGE_VAR_DISK1=${DISK1}"
|
- "HOMEPAGE_VAR_DISK1=${DISK1}"
|
||||||
@@ -382,16 +461,6 @@ services:
|
|||||||
- "HOMEPAGE_VAR_WEB_PROTOCOL=${WEB_PROTOCOL}"
|
- "HOMEPAGE_VAR_WEB_PROTOCOL=${WEB_PROTOCOL}"
|
||||||
- "HOMEPAGE_VAR_LOCAL_IPV4=${LOCAL_IPV4}"
|
- "HOMEPAGE_VAR_LOCAL_IPV4=${LOCAL_IPV4}"
|
||||||
- "HOMEPAGE_VAR_SERVER_NAME=${SERVER_NAME}"
|
- "HOMEPAGE_VAR_SERVER_NAME=${SERVER_NAME}"
|
||||||
- "HOMEPAGE_VAR_PLEX_KEY=${PLEX_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_PROWLARR_KEY=${PROWLARR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_RADARR_KEY=${RADARR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_SONARR_KEY=${SONARR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_LIDARR_KEY=${LIDARR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_TAUTULLI_KEY=${TAUTULLI_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_SEERR_KEY=${SEERR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_QBITTORRENT_KEY=${QBITTORRENT_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_TAILSCALE_KEY=${TAILSCALE_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_TAILSCALE_DEVICE_KEY=${TAILSCALE_DEVICE_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_PLEX_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PLEX_PORT}"
|
- "HOMEPAGE_VAR_PLEX_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PLEX_PORT}"
|
||||||
- "HOMEPAGE_VAR_QBITTORRENT_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${QBITTORRENT_PORT}"
|
- "HOMEPAGE_VAR_QBITTORRENT_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${QBITTORRENT_PORT}"
|
||||||
- "HOMEPAGE_VAR_PROWLARR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PROWLARR_PORT}"
|
- "HOMEPAGE_VAR_PROWLARR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PROWLARR_PORT}"
|
||||||
@@ -404,8 +473,11 @@ services:
|
|||||||
- "HOMEPAGE_VAR_GLANCES_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${GLANCES_PORT}"
|
- "HOMEPAGE_VAR_GLANCES_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${GLANCES_PORT}"
|
||||||
- "HOMEPAGE_VAR_SEERR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SEERR_PORT}"
|
- "HOMEPAGE_VAR_SEERR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SEERR_PORT}"
|
||||||
- "HOMEPAGE_VAR_MYSPEED_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${MYSPEED_PORT}"
|
- "HOMEPAGE_VAR_MYSPEED_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${MYSPEED_PORT}"
|
||||||
- "HOMEPAGE_VAR_TERMIX_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${TERMIX_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_ODYSSEUS_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${ODYSSEUS_PORT}"
|
- "HOMEPAGE_VAR_ODYSSEUS_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${ODYSSEUS_PORT}"
|
||||||
|
- "HOMEPAGE_VAR_PIHOLE_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PIHOLE_PORT}"
|
||||||
|
- "HOMEPAGE_VAR_PORTAINER_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PORTAINER_PORT}"
|
||||||
|
- "HOMEPAGE_VAR_SCRUTINY_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SCRUTINY_PORT}"
|
||||||
|
- "HOMEPAGE_VAR_KARAKEEP_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${KARAKEEP_PORT}"
|
||||||
- "HOMEPAGE_VAR_PLEX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PLEX_PORT}"
|
- "HOMEPAGE_VAR_PLEX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PLEX_PORT}"
|
||||||
- "HOMEPAGE_VAR_QBITTORRENT_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${QBITTORRENT_PORT}"
|
- "HOMEPAGE_VAR_QBITTORRENT_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${QBITTORRENT_PORT}"
|
||||||
- "HOMEPAGE_VAR_PROWLARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PROWLARR_PORT}"
|
- "HOMEPAGE_VAR_PROWLARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PROWLARR_PORT}"
|
||||||
@@ -418,45 +490,74 @@ services:
|
|||||||
- "HOMEPAGE_VAR_GLANCES_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${GLANCES_PORT}"
|
- "HOMEPAGE_VAR_GLANCES_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${GLANCES_PORT}"
|
||||||
- "HOMEPAGE_VAR_SEERR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${SEERR_PORT}"
|
- "HOMEPAGE_VAR_SEERR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${SEERR_PORT}"
|
||||||
- "HOMEPAGE_VAR_MYSPEED_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${MYSPEED_PORT}"
|
- "HOMEPAGE_VAR_MYSPEED_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${MYSPEED_PORT}"
|
||||||
- "HOMEPAGE_VAR_TERMIX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TERMIX_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_ODYSSEUS_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${ODYSSEUS_PORT}"
|
- "HOMEPAGE_VAR_ODYSSEUS_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${ODYSSEUS_PORT}"
|
||||||
|
- "HOMEPAGE_VAR_PIHOLE_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PIHOLE_PORT}"
|
||||||
|
- "HOMEPAGE_VAR_PORTAINER_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PORTAINER_PORT}"
|
||||||
|
- "HOMEPAGE_VAR_SCRUTINY_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${SCRUTINY_PORT}"
|
||||||
|
- "HOMEPAGE_VAR_KARAKEEP_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${KARAKEEP_PORT}"
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
restart: always
|
|
||||||
|
|
||||||
glances:
|
|
||||||
image: nicolargo/glances:latest-full
|
|
||||||
container_name: glances
|
|
||||||
network_mode: host
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- /etc/os-release:/etc/os-release:ro
|
|
||||||
- /:/host:ro
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
environment:
|
|
||||||
- GLANCES_OPT=-w
|
|
||||||
- PUID=${HOST_PUID:-1000}
|
|
||||||
- PGID=${HOST_PGID:-1000}
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
devices:
|
|
||||||
- /dev/dri:/dev/dri
|
|
||||||
pid: host
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# glances:
|
||||||
|
# image: nicolargo/glances:latest-full
|
||||||
|
# container_name: glances
|
||||||
|
# network_mode: host
|
||||||
|
# volumes:
|
||||||
|
# - /etc/os-release:/etc/os-release:ro
|
||||||
|
# - /:/host:ro
|
||||||
|
# #- /etc/localtime:/etc/localtime:ro
|
||||||
|
# #- /etc/timezone:/etc/timezone:ro
|
||||||
|
# environment:
|
||||||
|
# - "GLANCES_OPT=-w --password ${GLANCES_PASSWORD}"
|
||||||
|
# - PUID=${HOST_PUID:-1000}
|
||||||
|
# - PGID=${HOST_PGID:-1000}
|
||||||
|
# - TZ=${TIMEZONE}
|
||||||
|
# healthcheck:
|
||||||
|
# test:
|
||||||
|
# ["CMD", "curl", "-f", "http://localhost:${GLANCES_PORT}/api/4/status"]
|
||||||
|
# interval: 1m
|
||||||
|
# timeout: 10s
|
||||||
|
# retries: 3
|
||||||
|
# start_period: 60s
|
||||||
|
# security_opt:
|
||||||
|
# - no-new-privileges:true
|
||||||
|
# mem_limit: 256m
|
||||||
|
# cpus: 1.0
|
||||||
|
# devices:
|
||||||
|
# - /dev/dri:/dev/dri
|
||||||
|
# restart: unless-stopped
|
||||||
|
# # Uncomment to protect Glances WebUI by a login/password (add --password to GLANCES_OPT)
|
||||||
|
# secrets:
|
||||||
|
# - source: glances_password
|
||||||
|
# target: /root/.config/glances/<login>.pwd
|
||||||
|
# secrets:
|
||||||
|
# glances_password:
|
||||||
|
# file: ./secrets/glances_password
|
||||||
|
|
||||||
autoheal:
|
autoheal:
|
||||||
image: willfarrell/autoheal:latest
|
image: willfarrell/autoheal:latest
|
||||||
container_name: autoheal
|
container_name: autoheal
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- AUTOHEAL_CONTAINER_LABEL=all
|
- AUTOHEAL_CONTAINER_LABEL=all
|
||||||
- AUTOHEAL_INTERVAL=30
|
- AUTOHEAL_INTERVAL=30
|
||||||
- AUTOHEAL_START_PERIOD=60
|
- AUTOHEAL_START_PERIOD=60
|
||||||
restart: always
|
- TZ=${TIMEZONE}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
read_only: true
|
||||||
|
mem_limit: 64m
|
||||||
|
cpus: 0.25
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
myspeed:
|
myspeed:
|
||||||
image: germannewsmaker/myspeed
|
image: germannewsmaker/myspeed
|
||||||
@@ -465,10 +566,14 @@ services:
|
|||||||
- ${MYSPEED_PORT}:${MYSPEED_PORT}/tcp
|
- ${MYSPEED_PORT}:${MYSPEED_PORT}/tcp
|
||||||
volumes:
|
volumes:
|
||||||
- myspeed:/myspeed/data
|
- myspeed:/myspeed/data
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
scrutiny:
|
scrutiny:
|
||||||
@@ -477,12 +582,20 @@ services:
|
|||||||
cap_add:
|
cap_add:
|
||||||
- SYS_RAWIO
|
- SYS_RAWIO
|
||||||
ports:
|
ports:
|
||||||
- ${SCRUTINY_PORT:-54321}:8080
|
- ${SCRUTINY_PORT}:8080
|
||||||
- ${SCRUTINY_ADMIN_PORT:-12345}:8086
|
- ${SCRUTINY_ADMIN_PORT}:8086
|
||||||
volumes:
|
volumes:
|
||||||
- /run/udev:/run/udev:ro
|
- /run/udev:/run/udev:ro
|
||||||
- ./config:/opt/scrutiny/config
|
- ./scrutiny/config:/opt/scrutiny/config
|
||||||
- ./influxdb:/opt/scrutiny/influxdb
|
- ./scrutiny/influxdb:/opt/scrutiny/influxdb
|
||||||
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
|
environment:
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 512m
|
||||||
|
cpus: 1.0
|
||||||
devices:
|
devices:
|
||||||
- /dev/nvme0n1
|
- /dev/nvme0n1
|
||||||
- /dev/sda
|
- /dev/sda
|
||||||
@@ -496,28 +609,40 @@ services:
|
|||||||
image: pihole/pihole:latest
|
image: pihole/pihole:latest
|
||||||
container_name: pihole
|
container_name: pihole
|
||||||
cap_add:
|
cap_add:
|
||||||
- NET_ADMIN
|
- NET_ADMIN # Allows managing network interfaces & sockets
|
||||||
|
- NET_BIND_SERVICE # Allows non-root users to bind to ports < 1024 (port 53 & 123)
|
||||||
|
- SYS_TIME # Resolves the NTP system time warning
|
||||||
network_mode: host
|
network_mode: host
|
||||||
ports:
|
ports:
|
||||||
- 53:53/tcp
|
- 53:53/tcp
|
||||||
- 53:53/udp
|
- 53:53/udp
|
||||||
- 67:67/udp
|
- 67:67/udp
|
||||||
- 6060:6060/tcp
|
- ${PIHOLE_PORT}:${PIHOLE_PORT}/tcp
|
||||||
volumes:
|
volumes:
|
||||||
- ./etc-pihole:/etc/pihole
|
- ./etc-pihole:/etc/pihole
|
||||||
- ./etc-dnsmasq.d:/etc/dnsmasq.d
|
- ./etc-dnsmasq.d:/etc/dnsmasq.d
|
||||||
- /etc/localtime:/etc/localtime:ro
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
- /etc/timezone:/etc/timezone:ro
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- TZ=America/Los_Angeles
|
- TZ=${TIMEZONE}
|
||||||
- WEBPASSWORD=password123
|
|
||||||
- FTLCONF_misc_etc_dnsmasq_d=true
|
- FTLCONF_misc_etc_dnsmasq_d=true
|
||||||
|
# security_opt:
|
||||||
|
# - no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
cloudflared:
|
cloudflared:
|
||||||
image: cloudflare/cloudflared:latest
|
image: cloudflare/cloudflared:latest
|
||||||
container_name: cloudflared
|
container_name: cloudflared
|
||||||
command: tunnel --no-autoupdate run --token ${CLOUDFLARED_KEY}
|
env_file:
|
||||||
|
- ./env/.cloudflared.env
|
||||||
|
command: tunnel --no-autoupdate run # --token ${CLOUDFLARED_KEY}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
read_only: true
|
||||||
|
mem_limit: 128m
|
||||||
|
cpus: 0.5
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
portainer:
|
portainer:
|
||||||
@@ -528,7 +653,15 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- portainer_data:/data
|
- portainer_data:/data
|
||||||
restart: always
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
|
environment:
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 1.0
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
caddy:
|
caddy:
|
||||||
image: caddy:latest
|
image: caddy:latest
|
||||||
@@ -539,11 +672,18 @@ services:
|
|||||||
- 80:80
|
- 80:80
|
||||||
- 443:443
|
- 443:443
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||||
- ./caddy/site:/srv
|
- ./caddy/site:/srv
|
||||||
- ./caddy/caddy_data:/data
|
- ./caddy/caddy_data:/data
|
||||||
- ./caddy/caddy_config:/config
|
- ./caddy/caddy_config:/config
|
||||||
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
|
environment:
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 128m
|
||||||
|
cpus: 0.5
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -554,15 +694,21 @@ services:
|
|||||||
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
|
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
|
||||||
container_name: karakeep
|
container_name: karakeep
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- ./env/.karakeep.env
|
||||||
ports:
|
ports:
|
||||||
- 4621:3000
|
- ${KARAKEEP_PORT}:3000 # must be 3000 as per the dev
|
||||||
volumes:
|
volumes:
|
||||||
- karakeep-data:/data
|
- ./karakeep-data:/data
|
||||||
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- MEILI_ADDR=http://meilisearch:7700
|
- MEILI_ADDR=http://meilisearch:${MEILI_PORT}
|
||||||
- BROWSER_WEB_URL=http://chrome:9222
|
- BROWSER_WEB_URL=http://chrome:${KARAKEEP_CHROME_PORT}
|
||||||
- DATA_DIR=/data
|
- DATA_DIR=/data
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 512m
|
||||||
|
cpus: 2.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
chrome:
|
chrome:
|
||||||
@@ -573,10 +719,14 @@ services:
|
|||||||
- --disable-gpu
|
- --disable-gpu
|
||||||
- --disable-dev-shm-usage
|
- --disable-dev-shm-usage
|
||||||
- --remote-debugging-address=0.0.0.0
|
- --remote-debugging-address=0.0.0.0
|
||||||
- --remote-debugging-port=9222
|
- --remote-debugging-port=${KARAKEEP_CHROME_PORT}
|
||||||
- --hide-scrollbars
|
- --hide-scrollbars
|
||||||
- --disable-blink-features=AutomationControlled
|
- --disable-blink-features=AutomationControlled
|
||||||
- --window-size=1440,900
|
- --window-size=1440,900
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 512m
|
||||||
|
cpus: 1.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
meilisearch:
|
meilisearch:
|
||||||
@@ -585,7 +735,13 @@ services:
|
|||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
volumes:
|
volumes:
|
||||||
- meilisearch:/meili_data
|
- ./meilisearch:/meili_data
|
||||||
|
#- /etc/localtime:/etc/localtime:ro
|
||||||
|
#- /etc/timezone:/etc/timezone:ro
|
||||||
environment:
|
environment:
|
||||||
- MEILI_NO_ANALYTICS="true"
|
- MEILI_NO_ANALYTICS=true
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 512m
|
||||||
|
cpus: 1.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
@@ -1,604 +0,0 @@
|
|||||||
services:
|
|
||||||
gluetun:
|
|
||||||
image: qmcgaw/gluetun:latest
|
|
||||||
container_name: gluetun
|
|
||||||
cap_add:
|
|
||||||
- NET_ADMIN
|
|
||||||
devices:
|
|
||||||
- /dev/net/tun:/dev/net/tun
|
|
||||||
environment:
|
|
||||||
- VPN_SERVICE_PROVIDER=protonvpn # Or mullvad, protonvpn, surfshark, etc.
|
|
||||||
- VPN_TYPE=wireguard # WireGuard, openvpn
|
|
||||||
- HTTP_CONTROL_SERVER=ON
|
|
||||||
- HTTP_CONTROL_SERVER_AUTH_DEFAULT_ROLE='{"auth":"apikey","apikey":"${GLUETUN_KEY}"}' # generate by running `docker run --rm qmcgaw/gluetun genkey`, then adding this to your `.env` file
|
|
||||||
- WIREGUARD_PRIVATE_KEY=${VPN_PRIVATE_KEY}
|
|
||||||
- WIREGUARD_MTU=1280
|
|
||||||
- VPN_PORT_FORWARDING=on
|
|
||||||
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
|
|
||||||
#- OPENVPN_USER=user
|
|
||||||
#- OPENVPN_PASSWORD=password
|
|
||||||
- SERVER_COUNTRIES=Netherlands # choose fast P2P friendly countries
|
|
||||||
- NETWORK_LOCAL_ADDRESSES=192.168.50.0/24,172.16.0.0/12
|
|
||||||
- FIREWALL_OUTBOUND_SUBNETS=192.168.50.0/24
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
- DNS_UPSTREAM_RESOLVER_TYPE=doh # DNS over TLS is an extra layer of security so your isp can not look at what you're doing through your DNS requests, even if your using a vpn (very vague, I don't know how this syustem works with a vpn).
|
|
||||||
ports: # YOU MUST SPECIFY A PORT PER SERVICE ROUTED THROUGH GLUETUN!
|
|
||||||
- 8888:8000/tcp # gluetun control server, i dont think you should change this
|
|
||||||
- ${QBITTORRENT_PORT}:${QBITTORRENT_PORT} # qBittorrent Web UI
|
|
||||||
- ${PROWLARR_PORT}:${PROWLARR_PORT} # Prowlarr
|
|
||||||
- ${SONARR_PORT}:${SONARR_PORT} # Sonarr
|
|
||||||
- ${RADARR_PORT}:${RADARR_PORT} # Radarr
|
|
||||||
- ${LIDARR_PORT}:${LIDARR_PORT} # Lidarr
|
|
||||||
#- ${SEERR_PORT}:${SEERR_PORT}/tcp # Seerr # took this out of gluetun, as it could cause issues with starting the container, and it was unecessary
|
|
||||||
healthcheck:
|
|
||||||
test: wget --spider -q http://1.1.1.1 || exit 1
|
|
||||||
interval: 30s
|
|
||||||
timeout: 15s
|
|
||||||
retries: 3
|
|
||||||
start_period: 1m
|
|
||||||
volumes:
|
|
||||||
- ./gluetun-data:/tmp/gluetun:rw
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway" # host-gateway is a docker variable that automatically grabs the 172.XX.0.1 address, this is to be used by prowlarr to communicate with sonarr and radarr.
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
qbittorrent:
|
|
||||||
image: lscr.io/linuxserver/qbittorrent:latest
|
|
||||||
container_name: qbittorrent
|
|
||||||
network_mode: "container:gluetun" # vpn bunker
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
- WEBUI_PORT=${QBITTORRENT_PORT}
|
|
||||||
volumes:
|
|
||||||
- ./qbittorrent:/config
|
|
||||||
- ${DISK1}:${DISK1}
|
|
||||||
- ${DISK2}:${DISK2}
|
|
||||||
- ./gluetun-data:/tmp/gluetun
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
labels:
|
|
||||||
- "autoheal=true"
|
|
||||||
depends_on:
|
|
||||||
gluetun:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck: # if gluetun is slow to start, it's over
|
|
||||||
test: ["CMD-SHELL", wget --spider -q https://1.1.1.1 || exit 1] # use 1.1.1.1, we don't need dns around here
|
|
||||||
interval: 1m
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 30s
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
port-updater:
|
|
||||||
# use an image that already has curl/wget to skip the 'apk add' step
|
|
||||||
image: curlimages/curl:latest
|
|
||||||
container_name: port-updater
|
|
||||||
volumes:
|
|
||||||
- ./gluetun-data:/tmp/gluetun:ro
|
|
||||||
# using 'exec' format and 'trap' allows the container to stop instantly
|
|
||||||
entrypoint: ["/bin/sh", "-c"]
|
|
||||||
command: # loololloloolol gemini did this for me
|
|
||||||
- |
|
|
||||||
trap 'exit 0' SIGTERM;
|
|
||||||
while true; do
|
|
||||||
# 1. Wait for Gluetun to actually create the file with a number
|
|
||||||
while [ ! -s /tmp/gluetun/forwarded_port ]; do
|
|
||||||
echo "Waiting for Gluetun to provide a port..."
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
# 2. Read and clean the port
|
|
||||||
read -r PORT_VAL < /tmp/gluetun/forwarded_port;
|
|
||||||
CLEAN_PORT=$$(echo "$$PORT_VAL" | tr -d '\r\n ');
|
|
||||||
|
|
||||||
# 3. Only update if the port isn't empty
|
|
||||||
if [ -n "$$CLEAN_PORT" ]; then
|
|
||||||
echo "Updating qBit to port: $$CLEAN_PORT";
|
|
||||||
sleep 10;
|
|
||||||
echo "Updated to $$CLEAN_PORT"
|
|
||||||
curl -s -X POST -d "json={\"listen_port\":$$CLEAN_PORT}" http://localhost:${QBITTORRENT_PORT}/api/v2/app/setPreferences;
|
|
||||||
|
|
||||||
# 4. Success! Now sleep for a long time (e.g., 1 hour)
|
|
||||||
sleep 3600 & wait $$!;
|
|
||||||
else
|
|
||||||
# If for some reason it's still blank, retry quickly
|
|
||||||
sleep 10
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
labels:
|
|
||||||
- "autoheal=true"
|
|
||||||
network_mode: "container:gluetun"
|
|
||||||
depends_on:
|
|
||||||
gluetun:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "curl -f https://1.1.1.1 || exit 1"]
|
|
||||||
interval: 1m
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 30s
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
prowlarr:
|
|
||||||
image: lscr.io/linuxserver/prowlarr:latest
|
|
||||||
container_name: prowlarr
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
volumes:
|
|
||||||
- ./prowlarr:/config
|
|
||||||
- ./notify.sh:/notify.sh:ro
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
labels:
|
|
||||||
- "autoheal=true"
|
|
||||||
network_mode: "container:gluetun"
|
|
||||||
depends_on:
|
|
||||||
gluetun:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", wget --spider -q https://google.com || exit 1] # needs DNS
|
|
||||||
interval: 5m
|
|
||||||
timeout: 60s
|
|
||||||
retries: 3
|
|
||||||
start_period: 30s
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
sonarr:
|
|
||||||
image: lscr.io/linuxserver/sonarr:latest
|
|
||||||
container_name: sonarr
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
volumes:
|
|
||||||
- /var/lib/sonarr:/config # had migrated into docker compose
|
|
||||||
- ${DISK1}:${DISK1}
|
|
||||||
- ${DISK2}:${DISK2}
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
labels:
|
|
||||||
- "autoheal=true"
|
|
||||||
network_mode: "container:gluetun"
|
|
||||||
depends_on:
|
|
||||||
gluetun:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "curl -f http://1.1.1.1 || exit 1"]
|
|
||||||
interval: 5m
|
|
||||||
timeout: 60s
|
|
||||||
retries: 3
|
|
||||||
start_period: 60s
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
radarr:
|
|
||||||
image: lscr.io/linuxserver/radarr:latest
|
|
||||||
container_name: radarr
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
volumes:
|
|
||||||
- /var/lib/radarr:/config # had migrated into docker compose
|
|
||||||
- ${DISK1}:${DISK1}
|
|
||||||
- ${DISK2}:${DISK2}
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
labels:
|
|
||||||
- "autoheal=true"
|
|
||||||
network_mode: "container:gluetun"
|
|
||||||
depends_on:
|
|
||||||
gluetun:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "curl -f http://1.1.1.1 || exit 1"]
|
|
||||||
interval: 1m
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 30s
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
lidarr:
|
|
||||||
image: lscr.io/linuxserver/lidarr:latest
|
|
||||||
container_name: lidarr
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
volumes:
|
|
||||||
- /home/shaan/torrent-stack/lidarr:/music
|
|
||||||
- /var/lib/lidarr:/config
|
|
||||||
- ${DISK1}:${DISK1}
|
|
||||||
- ${DISK2}:${DISK2}
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
labels:
|
|
||||||
- "autoheal=true"
|
|
||||||
network_mode: "container:gluetun"
|
|
||||||
depends_on:
|
|
||||||
gluetun:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "curl -f http://1.1.1.1 || exit 1"]
|
|
||||||
interval: 1m
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 30s
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
tautulli: # has no network bridge between containers. this is fine, as it only needs to get from plex, which is outside this container
|
|
||||||
image: ghcr.io/tautulli/tautulli
|
|
||||||
container_name: tautulli
|
|
||||||
volumes:
|
|
||||||
#- /mnt/media/media:/config
|
|
||||||
- ./tautulli:/config
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
ports:
|
|
||||||
- ${TAUTULLI_PORT}:${TAUTULLI_PORT}
|
|
||||||
networks:
|
|
||||||
- caddy_net
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
tdarr:
|
|
||||||
container_name: tdarr
|
|
||||||
image: haveagitgat/tdarr:latest
|
|
||||||
networks:
|
|
||||||
- tdarr-net
|
|
||||||
ports:
|
|
||||||
- ${TDARR_PORT}:${TDARR_PORT} # WebUI
|
|
||||||
- ${TDARR_NODE_PORT}:${TDARR_NODE_PORT} # local tdarr-node
|
|
||||||
environment:
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- UMASK_SET=002
|
|
||||||
- serverIP=0.0.0.0
|
|
||||||
volumes:
|
|
||||||
- ./tdarr/server:/app/server
|
|
||||||
- ./tdarr/configs:/app/configs
|
|
||||||
- ./tdarr/temp:/temp
|
|
||||||
- ${DISK1}:${DISK1}
|
|
||||||
- ${DISK2}:${DISK2}
|
|
||||||
# dont put temp files onto a HARD DISK DRIVE! > - ${DISK1}/tdarr-temp:/temp
|
|
||||||
devices:
|
|
||||||
- /dev/dri:/dev/dri # Intel UHD Graphics 710
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
tdarr-node:
|
|
||||||
container_name: tdarr-node
|
|
||||||
image: haveagitgat/tdarr_node:latest
|
|
||||||
networks:
|
|
||||||
- tdarr-net
|
|
||||||
environment:
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- nodeID=${TDARR_NODE_ID}
|
|
||||||
- nodeIP=0.0.0.0
|
|
||||||
- serverIP=tdarr # Points to the server container
|
|
||||||
- serverPort=${TDARR_NODE_PORT}
|
|
||||||
volumes:
|
|
||||||
- ./tdarr/configs:/app/configs
|
|
||||||
- ./tdarr/logs:/app/logs
|
|
||||||
- /home/shaan/torrent-stack/tdarr/temp:/temp
|
|
||||||
- ${DISK1}:${DISK1}
|
|
||||||
- ${DISK2}:${DISK2}
|
|
||||||
devices:
|
|
||||||
- /dev/dri:/dev/dri # only works if user 'shaan' is a part of the 'video' or 'render' group.
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
homepage:
|
|
||||||
image: ghcr.io/gethomepage/homepage:latest
|
|
||||||
container_name: homepage
|
|
||||||
ports:
|
|
||||||
- ${HOMEPAGE_PORT}:${HOMEPAGE_PORT}
|
|
||||||
volumes:
|
|
||||||
- ./homepage:/app/config
|
|
||||||
- ./homepage/images:/app/public/images
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations
|
|
||||||
- ./gluetun-data:/tmp/gluetun:ro # get the port from port-updater
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
environment:
|
|
||||||
#- "HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,${LOCAL_IPV4}:${HOMEPAGE_PORT},${SERVER_NAME}:${HOMEPAGE_PORT},100.76.249.110:${HOMEPAGE_PORT},${SERVER_NAME}.tail:${HOMEPAGE_PORT},${EXTERNAL_IPV4}:${HOMEPAGE_PORT},${WEB_NAME}:${HOMEPAGE_PORT},${WEB_NAME},172.17.0.1:${HOMEPAGE_PORT},${SERVER_NAME}:80,${SERVER_NAME}:443,shaan-server:443" # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
|
||||||
- "HOMEPAGE_ALLOWED_HOSTS=*"
|
|
||||||
- "HOMEPAGE_VAR_DISK1=${DISK1}"
|
|
||||||
- "HOMEPAGE_VAR_DISK2=${DISK2}"
|
|
||||||
- "HOMEPAGE_VAR_DISK3=${DISK3}"
|
|
||||||
- "HOMEPAGE_VAR_WEB_PROTOCOL=${WEB_PROTOCOL}"
|
|
||||||
- "HOMEPAGE_VAR_LOCAL_IPV4=${LOCAL_IPV4}"
|
|
||||||
- "HOMEPAGE_VAR_SERVER_NAME=${SERVER_NAME}"
|
|
||||||
- "HOMEPAGE_VAR_PLEX_KEY=${PLEX_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_PROWLARR_KEY=${PROWLARR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_RADARR_KEY=${RADARR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_SONARR_KEY=${SONARR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_LIDARR_KEY=${LIDARR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_TAUTULLI_KEY=${TAUTULLI_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_SEERR_KEY=${SEERR_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_QBITTORRENT_KEY=${QBITTORRENT_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_TAILSCALE_KEY=${TAILSCALE_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_TAILSCALE_DEVICE_KEY=${TAILSCALE_DEVICE_KEY}"
|
|
||||||
- "HOMEPAGE_VAR_PLEX_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PLEX_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_QBITTORRENT_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${QBITTORRENT_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_PROWLARR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PROWLARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_SONARR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SONARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_RADARR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${RADARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_LIDARR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${LIDARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_TAUTULLI_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${TAUTULLI_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_TDARR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${TDARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_HOMEPAGE_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${HOMEPAGE_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_GLANCES_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${GLANCES_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_SEERR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SEERR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_MYSPEED_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${MYSPEED_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_TERMIX_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${TERMIX_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_ODYSSEUS_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${ODYSSEUS_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_PLEX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PLEX_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_QBITTORRENT_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${QBITTORRENT_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_PROWLARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${PROWLARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_SONARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${SONARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_RADARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${RADARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_LIDARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${LIDARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_TAUTULLI_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TAUTULLI_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_TDARR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TDARR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_HOMEPAGE_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${HOMEPAGE_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_GLANCES_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${GLANCES_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_SEERR_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${SEERR_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_MYSPEED_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${MYSPEED_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_TERMIX_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${TERMIX_PORT}"
|
|
||||||
- "HOMEPAGE_VAR_ODYSSEUS_HOST=${WEB_PROTOCOL}://${SERVER_NAME}:${ODYSSEUS_PORT}"
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
extra_hosts:
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
networks:
|
|
||||||
- caddy_net
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
glances:
|
|
||||||
image: nicolargo/glances:latest-full
|
|
||||||
container_name: glances
|
|
||||||
pid: host
|
|
||||||
network_mode: host
|
|
||||||
devices:
|
|
||||||
- /dev/dri:/dev/dri
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- /etc/os-release:/etc/os-release:ro
|
|
||||||
- /:/host:ro
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
environment:
|
|
||||||
- GLANCES_OPT=-w
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
autoheal:
|
|
||||||
image: willfarrell/autoheal:latest
|
|
||||||
container_name: autoheal
|
|
||||||
environment:
|
|
||||||
- AUTOHEAL_CONTAINER_LABEL=all
|
|
||||||
- AUTOHEAL_INTERVAL=30
|
|
||||||
- AUTOHEAL_START_PERIOD=60
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
seerr:
|
|
||||||
image: ghcr.io/seerr-team/seerr:latest
|
|
||||||
init: true
|
|
||||||
container_name: seerr
|
|
||||||
ports:
|
|
||||||
- ${SEERR_PORT}:${SEERR_PORT}
|
|
||||||
environment:
|
|
||||||
- LOG_LEVEL=debug
|
|
||||||
- TZ=America/Los_Angeles
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
volumes:
|
|
||||||
- "./seerr:/app/config"
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
working_dir: "/app"
|
|
||||||
labels:
|
|
||||||
- "autoheal=true"
|
|
||||||
networks:
|
|
||||||
- caddy_net
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "wget --spider -q http://1.1.1.1 || exit 1"]
|
|
||||||
interval: 1m
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 60s
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
anubis-seerr:
|
|
||||||
image: ghcr.io/techarohq/anubis:latest
|
|
||||||
environment:
|
|
||||||
BIND: ":55055"
|
|
||||||
TARGET: http://seerr:${SEERR_PORT}
|
|
||||||
networks:
|
|
||||||
- caddy_net
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
MySpeed:
|
|
||||||
command:
|
|
||||||
- "node"
|
|
||||||
- "server"
|
|
||||||
container_name: "MySpeed"
|
|
||||||
entrypoint:
|
|
||||||
- "docker-entrypoint.sh"
|
|
||||||
environment:
|
|
||||||
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
||||||
- "NODE_VERSION=18.20.3"
|
|
||||||
- "YARN_VERSION=1.22.19"
|
|
||||||
- "NODE_ENV=production"
|
|
||||||
- TZ=${TIMEZONE}
|
|
||||||
hostname: "4b5e3178fcc4"
|
|
||||||
image: "germannewsmaker/myspeed"
|
|
||||||
ipc: "private"
|
|
||||||
logging:
|
|
||||||
driver: "json-file"
|
|
||||||
options: {}
|
|
||||||
mac_address: "02:42:ac:11:00:03"
|
|
||||||
network_mode: "bridge"
|
|
||||||
ports:
|
|
||||||
- "${MYSPEED_PORT}:${MYSPEED_PORT}/tcp"
|
|
||||||
volumes:
|
|
||||||
- "myspeed:/myspeed/data"
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
working_dir: "/myspeed"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
termix:
|
|
||||||
image: ghcr.io/lukegus/termix:latest
|
|
||||||
container_name: termix
|
|
||||||
cap_add:
|
|
||||||
- NET_ADMIN
|
|
||||||
- SYS_ADMIN
|
|
||||||
ports:
|
|
||||||
- "${TERMIX_PORT}:${TERMIX_PORT}"
|
|
||||||
volumes:
|
|
||||||
- termix-data:/app/data
|
|
||||||
environment:
|
|
||||||
- "PORT: ${TERMIX_PORT}"
|
|
||||||
- "TZ: {TIMEZONE}"
|
|
||||||
networks:
|
|
||||||
- termix-net
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
pihole:
|
|
||||||
container_name: pihole
|
|
||||||
image: pihole/pihole:latest
|
|
||||||
network_mode: "host"
|
|
||||||
ports:
|
|
||||||
- "53:53/tcp"
|
|
||||||
- "53:53/udp"
|
|
||||||
- "67:67/udp"
|
|
||||||
- "6060:6060/tcp"
|
|
||||||
environment:
|
|
||||||
TZ: "America/Los_Angeles"
|
|
||||||
WEBPASSWORD: "password123"
|
|
||||||
FTLCONF_misc_etc_dnsmasq_d: "true"
|
|
||||||
volumes:
|
|
||||||
- "./etc-pihole:/etc/pihole"
|
|
||||||
- "./etc-dnsmasq.d:/etc/dnsmasq.d"
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
cap_add:
|
|
||||||
- NET_ADMIN
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
cloudflared:
|
|
||||||
container_name: cloudflared-tunnel
|
|
||||||
image: cloudflare/cloudflared:latest
|
|
||||||
restart: always
|
|
||||||
command: tunnel --no-autoupdate run --token ${CLOUDFLARED_KEY}
|
|
||||||
|
|
||||||
torrents-csv:
|
|
||||||
image: dessalines/torrents-csv-server:latest
|
|
||||||
restart: unless-stopped
|
|
||||||
ports:
|
|
||||||
- "8902:8902"
|
|
||||||
environment:
|
|
||||||
TORRENTS_CSV_DB_HOST: "postgres://postgres:password@db"
|
|
||||||
TORRENTS_CSV_FRONT_END_DIR: /app/dist
|
|
||||||
RUST_LOG: DEBUG
|
|
||||||
TIMEZONE: ${TIMEZONE}
|
|
||||||
depends_on:
|
|
||||||
- db # search at 'http://shaan-server:8902/service/search?q={SEARCH_TERM'
|
|
||||||
|
|
||||||
db:
|
|
||||||
image: pgautoupgrade/pgautoupgrade:17-alpine
|
|
||||||
shm_size: 1gb
|
|
||||||
volumes:
|
|
||||||
- ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh
|
|
||||||
- ./init-database.sql:/var/lib/postgresql/init-database.sql
|
|
||||||
- ./torrents.csv:/var/lib/postgresql/torrents.csv
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
ports:
|
|
||||||
- "127.0.0.1:5433:5432"
|
|
||||||
environment:
|
|
||||||
POSTGRES_PASSWORD: password
|
|
||||||
POSTGRES_USER: postgres
|
|
||||||
TIMEZONE: ${TIMEZONE}
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
portainer:
|
|
||||||
container_name: portainer
|
|
||||||
image: portainer/portainer-ce:lts
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- portainer_data:/data
|
|
||||||
ports:
|
|
||||||
- ${PORTAINER_PORT}:${PORTAINER_PORT}
|
|
||||||
|
|
||||||
caddy:
|
|
||||||
image: caddy:latest
|
|
||||||
restart: unless-stopped
|
|
||||||
container_name: caddy
|
|
||||||
ports:
|
|
||||||
- 80:80
|
|
||||||
- 443:443
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- /home/shaan/torrent-stack/caddy/Caddyfile:/etc/caddy/Caddyfile
|
|
||||||
- /home/shaan/torrent-stack/caddy/site:/srv
|
|
||||||
- /home/shaan/torrent-stack/caddy/caddy_data:/data
|
|
||||||
- /home/shaan/torrent-stack/caddy/caddy_config:/config
|
|
||||||
networks:
|
|
||||||
- caddy_net
|
|
||||||
|
|
||||||
scrutiny:
|
|
||||||
restart: unless-stopped
|
|
||||||
container_name: scrutiny
|
|
||||||
image: ghcr.io/analogj/scrutiny:nightly-omnibus
|
|
||||||
cap_add:
|
|
||||||
- SYS_RAWIO
|
|
||||||
ports:
|
|
||||||
- "${SCRUTINY_PORT:-54321}:8080" # webapp
|
|
||||||
- "${SCRUTINY_ADMIN_PORT:-12345}:8086" # influxDB admin
|
|
||||||
volumes:
|
|
||||||
- /run/udev:/run/udev:ro
|
|
||||||
- ./config:/opt/scrutiny/config
|
|
||||||
- ./influxdb:/opt/scrutiny/influxdb
|
|
||||||
devices:
|
|
||||||
- "/dev/nvme0n1"
|
|
||||||
- "/dev/sda"
|
|
||||||
- "/dev/sdb"
|
|
||||||
|
|
||||||
networks:
|
|
||||||
caddy_net:
|
|
||||||
external: true
|
|
||||||
tdarr-net:
|
|
||||||
driver: bridge
|
|
||||||
termix-net:
|
|
||||||
driver: bridge
|
|
||||||
staticaddress:
|
|
||||||
ipam:
|
|
||||||
config:
|
|
||||||
- subnet: "172.200.0.0/16"
|
|
||||||
default:
|
|
||||||
name: portainer_network
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
caddy_data:
|
|
||||||
external: true
|
|
||||||
caddy_config:
|
|
||||||
myspeed:
|
|
||||||
external: true # docker compose will fail creating myspeed if the volume hasn't been manually created, which we have done. unless you deleted it...
|
|
||||||
termix-data:
|
|
||||||
driver: local
|
|
||||||
portainer_data:
|
|
||||||
name: portainer_data
|
|
||||||
+67
-65
@@ -2,69 +2,74 @@
|
|||||||
# For configuration options and examples, please see:
|
# For configuration options and examples, please see:
|
||||||
# https://gethomepage.dev/configs/bookmarks
|
# https://gethomepage.dev/configs/bookmarks
|
||||||
|
|
||||||
- "Apps":
|
- "User":
|
||||||
- "Plex":
|
- "Plex":
|
||||||
- icon: si-plex-#EBAF00
|
- icon: si-plex-#EBAF00
|
||||||
href: "{{HOMEPAGE_VAR_PLEX_HOST}}"
|
href: "{{HOMEPAGE_VAR_PLEX_HOST}}"
|
||||||
- "Odysseus":
|
- "Seerr":
|
||||||
- icon: http://shaan-server:7001/static/icons/icon-192.png
|
- icon: sh-seerr
|
||||||
href: https://shaan-server.cc
|
href: "{{HOMEPAGE_VAR_SEERR_HOST}}"
|
||||||
- "Sonarr":
|
- "Odysseus":
|
||||||
- icon: sh-sonarr
|
- icon: http://shaan-server:7001/static/icons/icon-192.png
|
||||||
href: "{{HOMEPAGE_VAR_SONARR_HOST}}"
|
href: https://shaan-server.cc
|
||||||
- "Radarr":
|
- "Karakeep":
|
||||||
- icon: sh-radarr
|
- icon: sh-karakeep-light
|
||||||
href: "{{HOMEPAGE_VAR_RADARR_HOST}}"
|
href: "{{HOMEPAGE_VAR_KARAKEEP_HOST}}"
|
||||||
- "Lidarr":
|
|
||||||
- icon: sh-lidarr
|
- "Admin":
|
||||||
href: "{{HOMEPAGE_VAR_LIDARR_HOST}}"
|
- "Sonarr":
|
||||||
- "Tautulli":
|
- icon: sh-sonarr
|
||||||
- icon: sh-tautulli
|
href: "{{HOMEPAGE_VAR_SONARR_HOST}}"
|
||||||
href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}"
|
- "Radarr":
|
||||||
- "Tdarr":
|
- icon: sh-radarr
|
||||||
- icon: sh-tdarr
|
href: "{{HOMEPAGE_VAR_RADARR_HOST}}"
|
||||||
href: "{{HOMEPAGE_VAR_TDARR_HOST}}"
|
- "Lidarr":
|
||||||
- "qBittorrent":
|
- icon: sh-lidarr
|
||||||
- icon: sh-qbittorrent
|
href: "{{HOMEPAGE_VAR_LIDARR_HOST}}"
|
||||||
href: http://shaan-server:2161
|
- "Prowlarr":
|
||||||
- "Seerr":
|
- icon: sh-prowlarr
|
||||||
- icon: sh-seerr
|
href: "{{HOMEPAGE_VAR_PROWLARR_HOST}}"
|
||||||
href: "{{HOMEPAGE_VAR_SEERR_HOST}}"
|
- "Tautulli":
|
||||||
- "Prowlarr":
|
- icon: sh-tautulli
|
||||||
- icon: sh-prowlarr
|
href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}"
|
||||||
href: "{{HOMEPAGE_VAR_PROWLARR_HOST}}"
|
- "Tdarr":
|
||||||
- "Portainer":
|
- icon: sh-tdarr
|
||||||
- icon: sh-portainer-light
|
href: "{{HOMEPAGE_VAR_TDARR_HOST}}"
|
||||||
href: https://shaan-server:9443
|
- "qBittorrent":
|
||||||
- "Pi-Hole":
|
- icon: sh-qbittorrent
|
||||||
- icon: sh-pi-hole
|
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
||||||
href: http://shaan-server:6060/admin
|
- "Speedtest":
|
||||||
- "Router Gateway":
|
- icon: sh-speedtest-light
|
||||||
- icon: "http://192.168.50.1/images/favicon.png"
|
href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}"
|
||||||
href: http://192.168.50.1
|
- "Scrutiny":
|
||||||
- "llama.cpp":
|
- icon: sh-scrutiny-light
|
||||||
- icon: sh-llama-cpp
|
href: "{{HOMEPAGE_VAR_SCRUTINY_HOST}}"
|
||||||
href: http://192.168.50.6:5078
|
- "Router Gateway":
|
||||||
- "Tailscale":
|
- icon: "http://192.168.50.1/images/favicon.png"
|
||||||
- icon: sh-tailscale-light
|
href: http://192.168.50.1
|
||||||
href: https://login.tailscale.com
|
- "Tailscale":
|
||||||
- "Speedtest":
|
- icon: sh-tailscale-light
|
||||||
- icon: sh-speedtest-light
|
href: https://login.tailscale.com
|
||||||
href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}"
|
- "Portainer":
|
||||||
- "Scrutiny":
|
- icon: sh-portainer-light
|
||||||
- icon: sh-scrutiny-light
|
href: "{{HOMEPAGE_VAR_PORTAINER_HOST}}"
|
||||||
href: http://shaan-server:54321
|
- "Pi-Hole":
|
||||||
- "Cloudflare":
|
- icon: sh-pi-hole
|
||||||
- icon: sh-cloudflare
|
href: "{{HOMEPAGE_VAR_PIHOLE_HOST}}/admin"
|
||||||
href: https://dash.cloudflare.com
|
- "Cloudflare":
|
||||||
|
- icon: sh-cloudflare
|
||||||
|
href: https://dash.cloudflare.com
|
||||||
|
- Monitorix:
|
||||||
|
- icon: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_LOCAL_IPV4}}:4000/monitorix/monitorixico.png"
|
||||||
|
href: http://{{HOMEPAGE_VAR_SERVER_NAME}}:4000/monitorix
|
||||||
|
|
||||||
- Bookmarks:
|
- Bookmarks:
|
||||||
- "Youtube":
|
- "Youtube":
|
||||||
- icon: sh-youtube
|
- icon: sh-youtube
|
||||||
href: https://www.youtube.com
|
href: https://www.youtube.com
|
||||||
- "Gmail":
|
- "Gmail":
|
||||||
- icon: sh-gmail
|
- icon: sh-gmail
|
||||||
href: https://mail.google.com
|
href: https://mail.google.com
|
||||||
# - github/dhaan7/torrent-stack:
|
# - github/dhaan7/torrent-stack:
|
||||||
# - icon: sh-github-light
|
# - icon: sh-github-light
|
||||||
# href: https://github.com/dhaan7/torrent-stack
|
# href: https://github.com/dhaan7/torrent-stack
|
||||||
@@ -74,7 +79,4 @@
|
|||||||
# href: "{{HOMEPAGE_VAR_TERMIX_HOST}}"
|
# href: "{{HOMEPAGE_VAR_TERMIX_HOST}}"
|
||||||
# description: Terminal emulator in your web browser
|
# description: Terminal emulator in your web browser
|
||||||
#
|
#
|
||||||
# - Monitorix:
|
#
|
||||||
# - icon: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_LOCAL_IPV4}}:4000/monitorix/monitorixico.png"
|
|
||||||
# href: http://{{HOMEPAGE_VAR_SERVER_NAME}}:4000/monitorix
|
|
||||||
# description: Generate and review system reports
|
|
||||||
|
|||||||
+412
-452
@@ -3,461 +3,421 @@
|
|||||||
# https://gethomepage.dev/configs/services/
|
# https://gethomepage.dev/configs/services/
|
||||||
|
|
||||||
- "Top":
|
- "Top":
|
||||||
- "Cloudflared Tunnel":
|
- "Cloudflared Tunnel":
|
||||||
icon: sh-cloudflare
|
icon: sh-cloudflare
|
||||||
href: "https://dash.cloudflare.com/"
|
href: "https://dash.cloudflare.com/"
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: cloudflared-tunnel
|
container: cloudflared
|
||||||
description:
|
description:
|
||||||
widget:
|
widget:
|
||||||
type: cloudflared
|
type: cloudflared
|
||||||
accountid: 252f471fd316e89626f13c25c6012bc7 # from zero trust dashboard url e.g. https://one.dash.cloudflare.com/<accountid>/home/quick-start
|
accountid: "{{HOMEPAGE_VAR_CLOUDFLARED_ACCOUNT_ID}}"
|
||||||
tunnelid: 5aa02e6a-4166-4a2d-95c9-0af0f7237b23 # found in tunnels dashboard under the tunnel name
|
tunnelid: "{{HOMEPAGE_VAR_CLOUDFLARED_TUNNEL_ID}}"
|
||||||
key: cfut_2i9bGXfbFuu0XkDEcCClXvVu0x1wYuwn7sTztLLGd5469df7
|
key: "{{HOMEPAGE_VAR_CLOUDFLARED_API_KEY}}"
|
||||||
- "VPN Address >":
|
- "VPN Address >":
|
||||||
icon: sh-gluetun
|
icon: sh-gluetun
|
||||||
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: gluetun
|
container: gluetun
|
||||||
widget:
|
widget:
|
||||||
type: customapi
|
type: customapi
|
||||||
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
|
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
|
||||||
mappings:
|
mappings:
|
||||||
- field: server_state.last_external_address_v4
|
- field: server_state.last_external_address_v4
|
||||||
label: "Address"
|
label: "Address"
|
||||||
format: string
|
format: string
|
||||||
- "Tailscale >":
|
- "Tailscale >":
|
||||||
icon: sh-tailscale-light
|
icon: sh-tailscale-light
|
||||||
href: https://login.tailscale.com
|
href: https://login.tailscale.com
|
||||||
siteMonitor: https://tailscale.com
|
siteMonitor: https://tailscale.com
|
||||||
widget:
|
widget:
|
||||||
type: tailscale
|
type: tailscale
|
||||||
deviceid: "{{HOMEPAGE_VAR_TAILSCALE_DEVICE_KEY}}"
|
deviceid: "{{HOMEPAGE_VAR_TAILSCALE_DEVICE_KEY}}"
|
||||||
key: "{{HOMEPAGE_VAR_TAILSCALE_KEY}}"
|
key: "{{HOMEPAGE_VAR_TAILSCALE_KEY}}"
|
||||||
fields: [address]
|
fields: [address]
|
||||||
- "Speedtest Results >":
|
- "Speedtest Results >":
|
||||||
icon: sh-speedtest-light
|
icon: sh-speedtest-light
|
||||||
href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}"
|
href: "{{HOMEPAGE_VAR_MYSPEED_HOST}}"
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: MySpeed
|
container: myspeed
|
||||||
widget:
|
widget:
|
||||||
type: myspeed
|
type: myspeed
|
||||||
url: "{{HOMEPAGE_VAR_MYSPEED_ADDRESS}}"
|
url: "{{HOMEPAGE_VAR_MYSPEED_ADDRESS}}"
|
||||||
fields: [download, upload]
|
fields: [download, upload]
|
||||||
- "Media":
|
- "Media":
|
||||||
- "Media_1":
|
- "Media_1":
|
||||||
- "llama.cpp (shaan-pc)":
|
- "Odysseus":
|
||||||
icon: sh-llama-cpp
|
icon: "{{HOMEPAGE_VAR_ODYSSEUS_HOST}}/static/icons/icon-192.png"
|
||||||
href: "http://192.168.50.6:5078"
|
href: "{{HOMEPAGE_VAR_ODYSSEUS_HOST}}"
|
||||||
#siteMonitor: http://192.168.50.6:5078/v1/health
|
siteMonitor: "{{HOMEPAGE_VAR_ODYSSEUS_HOST}}"
|
||||||
description: 32GB VRAM + 64GB RAM
|
description: Local AI Models
|
||||||
- "Odysseus":
|
- "Port Updater":
|
||||||
icon: sh-ollama
|
icon: sh-docker
|
||||||
href: "{{HOMEPAGE_VAR_ODYSSEUS_HOST}}"
|
description: Shell
|
||||||
siteMonitor: "{{HOMEPAGE_VAR_ODYSSEUS_HOST}}"
|
server: my-docker
|
||||||
description: Local AI Models
|
container: port-updater
|
||||||
- "Github":
|
- "Monitorix":
|
||||||
icon: sh-github-light
|
icon: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_LOCAL_IPV4}}:4000/monitorix/monitorixico.png"
|
||||||
href: https://github.com/dhaan7/torrent-stack
|
href: http://{{HOMEPAGE_VAR_SERVER_NAME}}:4000/monitorix
|
||||||
description: Repository
|
description: System
|
||||||
- "Port Updater":
|
- "Media_2":
|
||||||
icon: sh-docker
|
- "Plex >":
|
||||||
description: Shell
|
icon: sh-plex
|
||||||
server: my-docker
|
#icon: sh-plex-dark
|
||||||
container: port-updater
|
href: "{{HOMEPAGE_VAR_PLEX_HOST}}"
|
||||||
- "Termix":
|
description: Watch
|
||||||
icon: "{{HOMEPAGE_VAR_TERMIX_ADDRESS}}/favicon.ico"
|
siteMonitor: "{{HOMEPAGE_VAR_PLEX_ADDRESS}}"
|
||||||
href: "{{HOMEPAGE_VAR_TERMIX_HOST}}"
|
widget:
|
||||||
description: Terminal
|
type: plex
|
||||||
server: my-docker
|
url: "{{HOMEPAGE_VAR_PLEX_ADDRESS}}"
|
||||||
container: termix
|
key: "{{HOMEPAGE_VAR_PLEX_KEY}}"
|
||||||
- "Monitorix":
|
fields: [albums, movies, tv]
|
||||||
icon: "{{HOMEPAGE_VAR_WEB_PROTOCOL}}://{{HOMEPAGE_VAR_LOCAL_IPV4}}:4000/monitorix/monitorixico.png"
|
- "Tautulli >":
|
||||||
href: http://{{HOMEPAGE_VAR_SERVER_NAME}}:4000/monitorix
|
icon: sh-tautulli
|
||||||
description: System
|
href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}"
|
||||||
- "Media_2":
|
description: Monitor
|
||||||
- "Plex >":
|
server: my-docker
|
||||||
icon: sh-plex
|
container: tautulli
|
||||||
#icon: sh-plex-dark
|
widget:
|
||||||
href: "{{HOMEPAGE_VAR_PLEX_HOST}}"
|
type: tautulli
|
||||||
description: Watch
|
url: "{{HOMEPAGE_VAR_TAUTULLI_ADDRESS}}"
|
||||||
siteMonitor: "{{HOMEPAGE_VAR_PLEX_ADDRESS}}"
|
key: "{{HOMEPAGE_VAR_TAUTULLI_KEY}}"
|
||||||
widget:
|
enableUser: false
|
||||||
type: plex
|
expandOneStreamToTwoRows: false
|
||||||
url: "{{HOMEPAGE_VAR_PLEX_ADDRESS}}"
|
- "Sonarr >":
|
||||||
key: "{{HOMEPAGE_VAR_PLEX_KEY}}"
|
icon: sh-sonarr
|
||||||
fields: [albums, movies, tv]
|
href: "{{HOMEPAGE_VAR_SONARR_HOST}}"
|
||||||
- "Tautulli >":
|
description: Shows
|
||||||
icon: sh-tautulli
|
server: my-docker
|
||||||
href: "{{HOMEPAGE_VAR_TAUTULLI_HOST}}"
|
container: sonarr
|
||||||
description: Monitor
|
widget:
|
||||||
server: my-docker
|
type: sonarr
|
||||||
container: tautulli
|
url: "{{HOMEPAGE_VAR_SONARR_ADDRESS}}"
|
||||||
widget:
|
key: "{{HOMEPAGE_VAR_SONARR_KEY}}"
|
||||||
type: tautulli
|
enableQueue: false # shows a long list of queued items. looks ugly unless you reorder the page yourself
|
||||||
url: "{{HOMEPAGE_VAR_TAUTULLI_ADDRESS}}"
|
fields: [wanted, queued]
|
||||||
key: "{{HOMEPAGE_VAR_TAUTULLI_KEY}}"
|
highlight:
|
||||||
enableUser: false
|
queued:
|
||||||
expandOneStreamToTwoRows: false
|
numeric:
|
||||||
- "Sonarr >":
|
- level: warn
|
||||||
icon: sh-sonarr
|
when: gt
|
||||||
href: "{{HOMEPAGE_VAR_SONARR_HOST}}"
|
value: 0
|
||||||
description: Shows
|
- Upcoming TV Episodes:
|
||||||
server: my-docker
|
icon: sh-sonarr
|
||||||
container: sonarr
|
server: my-docker
|
||||||
widget:
|
container: sonarr
|
||||||
type: sonarr
|
widget:
|
||||||
url: "{{HOMEPAGE_VAR_SONARR_ADDRESS}}"
|
type: calendar
|
||||||
key: "{{HOMEPAGE_VAR_SONARR_KEY}}"
|
firstDayInWeek: sunday # optional - defaults to monday
|
||||||
enableQueue: false # shows a long list of queued items. looks ugly unless you reorder the page yourself
|
view: agenda # optional - possible values monthly, agenda
|
||||||
fields: [wanted, queued]
|
maxEvents: 2 # optional - defaults to 10
|
||||||
highlight:
|
showTime: true # optional - show time for event happening today - defaults to false
|
||||||
queued:
|
timezone: America/Los_Angeles
|
||||||
numeric:
|
integrations: # optional
|
||||||
- level: warn
|
- type: sonarr
|
||||||
when: gt
|
service_name: "Sonarr >"
|
||||||
value: 0
|
baseUrl: "{{HOMEPAGE_VAR_SONARR_HOST}}"
|
||||||
- Upcoming TV Episodes:
|
unmonitored: true
|
||||||
icon: sh-sonarr
|
- "Radarr >":
|
||||||
server: my-docker
|
icon: sh-radarr
|
||||||
container: sonarr
|
href: "{{HOMEPAGE_VAR_RADARR_HOST}}"
|
||||||
widget:
|
description: Movies
|
||||||
type: calendar
|
server: my-docker
|
||||||
firstDayInWeek: sunday # optional - defaults to monday
|
container: radarr
|
||||||
view: agenda # optional - possible values monthly, agenda
|
widget:
|
||||||
maxEvents: 2 # optional - defaults to 10
|
type: radarr
|
||||||
showTime: true # optional - show time for event happening today - defaults to false
|
url: "{{HOMEPAGE_VAR_RADARR_ADDRESS}}"
|
||||||
timezone: America/Los_Angeles
|
key: "{{HOMEPAGE_VAR_RADARR_KEY}}"
|
||||||
integrations: # optional
|
fields: [wanted, queued]
|
||||||
- type: sonarr
|
highlight:
|
||||||
service_name: "Sonarr >"
|
queued:
|
||||||
baseUrl: "{{HOMEPAGE_VAR_SONARR_HOST}}"
|
numeric:
|
||||||
unmonitored: true
|
- level: warn
|
||||||
- "Radarr >":
|
when: gt
|
||||||
icon: sh-radarr
|
value: 0
|
||||||
href: "{{HOMEPAGE_VAR_RADARR_HOST}}"
|
- Upcoming Movies:
|
||||||
description: Movies
|
icon: sh-radarr
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: radarr
|
container: radarr
|
||||||
widget:
|
widget:
|
||||||
type: radarr
|
type: calendar
|
||||||
url: "{{HOMEPAGE_VAR_RADARR_ADDRESS}}"
|
firstDayInWeek: sunday # optional - defaults to monday
|
||||||
key: "{{HOMEPAGE_VAR_RADARR_KEY}}"
|
view: agenda # optional - possible values monthly, agenda
|
||||||
fields: [wanted, queued]
|
maxEvents: 2 # optional - defaults to 10
|
||||||
highlight:
|
showTime: true # optional - show time for event happening today - defaults to false
|
||||||
queued:
|
timezone: America/Los_Angeles
|
||||||
numeric:
|
integrations: # optional
|
||||||
- level: warn
|
- type: radarr
|
||||||
when: gt
|
service_name: "Radarr >"
|
||||||
value: 0
|
baseUrl: "{{HOMEPAGE_VAR_RADARR_HOST}}"
|
||||||
- Upcoming Movies:
|
unmonitored: true
|
||||||
icon: sh-radarr
|
- "Lidarr >":
|
||||||
server: my-docker
|
icon: sh-lidarr
|
||||||
container: radarr
|
href: "{{HOMEPAGE_VAR_LIDARR_HOST}}"
|
||||||
widget:
|
description: Music
|
||||||
type: calendar
|
server: my-docker
|
||||||
firstDayInWeek: sunday # optional - defaults to monday
|
container: lidarr
|
||||||
view: agenda # optional - possible values monthly, agenda
|
widget:
|
||||||
maxEvents: 2 # optional - defaults to 10
|
type: lidarr
|
||||||
showTime: true # optional - show time for event happening today - defaults to false
|
url: "{{HOMEPAGE_VAR_LIDARR_ADDRESS}}"
|
||||||
timezone: America/Los_Angeles
|
key: "{{HOMEPAGE_VAR_LIDARR_KEY}}"
|
||||||
integrations: # optional
|
fields: [wanted, queued]
|
||||||
- type: radarr
|
highlight:
|
||||||
service_name: "Radarr >"
|
queued:
|
||||||
baseUrl: "{{HOMEPAGE_VAR_RADARR_HOST}}"
|
numeric:
|
||||||
unmonitored: true
|
- level: warn
|
||||||
- "Lidarr >":
|
when: gt
|
||||||
icon: sh-lidarr
|
value: 0
|
||||||
href: "{{HOMEPAGE_VAR_LIDARR_HOST}}"
|
- "Seerr >":
|
||||||
description: Music
|
icon: sh-overseerr
|
||||||
server: my-docker
|
href: "{{HOMEPAGE_VAR_SEERR_HOST}}"
|
||||||
container: lidarr
|
description: Request
|
||||||
widget:
|
server: my-docker
|
||||||
type: lidarr
|
container: seerr
|
||||||
url: "{{HOMEPAGE_VAR_LIDARR_ADDRESS}}"
|
widget:
|
||||||
key: "{{HOMEPAGE_VAR_LIDARR_KEY}}"
|
type: seerr
|
||||||
fields: [wanted, queued]
|
url: "{{HOMEPAGE_VAR_SEERR_ADDRESS}}"
|
||||||
highlight:
|
key: "{{HOMEPAGE_VAR_SEERR_KEY}}"
|
||||||
queued:
|
fields: [completed, pending]
|
||||||
numeric:
|
highlight:
|
||||||
- level: warn
|
pending:
|
||||||
when: gt
|
numeric:
|
||||||
value: 0
|
- level: warn
|
||||||
- "Seerr >":
|
when: gt
|
||||||
icon: sh-overseerr
|
value: 0
|
||||||
href: "{{HOMEPAGE_VAR_SEERR_HOST}}"
|
- "Tdarr Node (Intel Arc Pro B70)":
|
||||||
description: Request
|
icon: sh-tdarr
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: seerr
|
container: tdarr-node
|
||||||
widget:
|
- "Tdarr Node (Intel Graphics UHD 710)":
|
||||||
type: seerr
|
icon: sh-tdarr
|
||||||
url: "{{HOMEPAGE_VAR_SEERR_ADDRESS}}"
|
server: my-docker
|
||||||
key: "{{HOMEPAGE_VAR_SEERR_KEY}}"
|
container: tdarr-node
|
||||||
fields: [completed, pending]
|
- "Media_Bottom":
|
||||||
highlight:
|
- "Tdarr >":
|
||||||
pending:
|
icon: sh-tdarr
|
||||||
numeric:
|
href: "{{HOMEPAGE_VAR_TDARR_HOST}}"
|
||||||
- level: warn
|
description: Transcode
|
||||||
when: gt
|
server: my-docker
|
||||||
value: 0
|
container: tdarr
|
||||||
- "Media_Bottom":
|
widget:
|
||||||
- "Tdarr Node (Intel Graphics UHD 710)":
|
type: tdarr
|
||||||
icon: sh-tdarr
|
url: "{{HOMEPAGE_VAR_TDARR_ADDRESS}}"
|
||||||
server: my-docker
|
key: "{{HOMEPAGE_VAR_TDARR_KEY}}"
|
||||||
container: tdarr-node
|
highlight:
|
||||||
- "Tdarr >":
|
queue:
|
||||||
icon: sh-tdarr
|
numeric:
|
||||||
href: "{{HOMEPAGE_VAR_TDARR_HOST}}"
|
- level: warn
|
||||||
description: Transcode
|
when: gt
|
||||||
server: my-docker
|
value: 0
|
||||||
container: tdarr
|
errored:
|
||||||
widget:
|
numeric:
|
||||||
type: tdarr
|
- level: danger
|
||||||
url: "{{HOMEPAGE_VAR_TDARR_ADDRESS}}"
|
when: gt
|
||||||
key: "{{HOMEPAGE_VAR_TDARR_KEY}}"
|
value: 0
|
||||||
highlight:
|
|
||||||
queue:
|
|
||||||
numeric:
|
|
||||||
- level: warn
|
|
||||||
when: gt
|
|
||||||
value: 0
|
|
||||||
errored:
|
|
||||||
numeric:
|
|
||||||
- level: danger
|
|
||||||
when: gt
|
|
||||||
value: 0
|
|
||||||
# - "Media_Tdarr_Nodes":
|
|
||||||
# - "Intel UHD 710":
|
|
||||||
# icon: sh-tdarr
|
|
||||||
# server: my-docker
|
|
||||||
# container: tdarr-node
|
|
||||||
- "Network":
|
- "Network":
|
||||||
- "Network_1":
|
- "Network_1":
|
||||||
- "Portainer":
|
- "Portainer":
|
||||||
icon: sh-portainer-light
|
icon: sh-portainer-light
|
||||||
href: https://shaan-server:9443
|
href: https://shaan-server:9443
|
||||||
description: Containers
|
description: Containers
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: portainer
|
container: portainer
|
||||||
widget:
|
widget:
|
||||||
type: portainer
|
type: portainer
|
||||||
url: https://shaan-server:9443
|
url: https://shaan-server:9443
|
||||||
env: 3
|
env: 3
|
||||||
key: ptr_dR3wQa568otBJzfZz5FET+IQKXee7K6O+VO301iY6x4=
|
key: "{{HOMEPAGE_VAR_PORTAINER_KEY}}"
|
||||||
- "Pi-Hole Adblocker":
|
- "Pi-Hole Adblocker":
|
||||||
icon: sh-pi-hole
|
icon: sh-pi-hole
|
||||||
href: "http://192.168.50.2:6060/admin/login"
|
href: "http://192.168.50.2:6060/admin/login"
|
||||||
description: DNS
|
description: DNS
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: pihole
|
container: pihole
|
||||||
widget:
|
widget:
|
||||||
type: pihole
|
type: pihole
|
||||||
url: http://shaan-server:6060
|
url: http://shaan-server:6060
|
||||||
version: 6 # required if running v6 or higher, defaults to 5
|
version: 6 # required if running v6 or higher, defaults to 5
|
||||||
key: password # optional, in v6 can be your password or app password
|
key: "{{HOMEPAGE_VAR_PIHOLE_PASSWORD}}"
|
||||||
- "Network_qbit":
|
- "Network_2":
|
||||||
- "Prowlarr >":
|
- "Scrutiny":
|
||||||
icon: sh-prowlarr
|
icon: sh-scrutiny
|
||||||
href: "{{HOMEPAGE_VAR_PROWLARR_HOST}}"
|
href: http://192.168.50.2:4545 #"{{HOMEPAGE_VAR_SCRUTINY_ADDRESS}}""
|
||||||
description: Indexers
|
description: S.M.A.R.T.
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: prowlarr
|
container: scrutiny
|
||||||
widget:
|
widget:
|
||||||
type: prowlarr
|
type: scrutiny
|
||||||
url: "{{HOMEPAGE_VAR_PROWLARR_ADDRESS}}"
|
url: http://192.168.50.2:4545 #"{{HOMEPAGE_VAR_SCRUTINY_ADDRESS}}"
|
||||||
key: "{{HOMEPAGE_VAR_PROWLARR_KEY}}"
|
- "Karakeep":
|
||||||
#fields: ["numberOfGrabs"]
|
icon: sh-karakeep-light
|
||||||
highlight:
|
href: http://192.168.50.2:4545 #"{{HOMEPAGE_VAR_SCRUTINY_ADDRESS}}""
|
||||||
"numberOfGrabs":
|
description: Bookmarks
|
||||||
numeric:
|
server: my-docker
|
||||||
- level: warn
|
container: karakeep
|
||||||
when: lte
|
widget:
|
||||||
value: 0
|
type: karakeep
|
||||||
"numberOfQueries":
|
url: http://shaan-server:4621
|
||||||
numeric:
|
key: ak2_bfee1806ec533a9557bd_940feeb8fbe798d465ab6f90a3562c43
|
||||||
- level: warn
|
- "Network_qbit":
|
||||||
when: lte
|
- "Prowlarr >":
|
||||||
value: 0
|
icon: sh-prowlarr
|
||||||
"numberOfFailGrabs":
|
href: "{{HOMEPAGE_VAR_PROWLARR_HOST}}"
|
||||||
numeric:
|
description: Indexers
|
||||||
- level: warn
|
server: my-docker
|
||||||
when: gt
|
container: prowlarr
|
||||||
value: 0
|
widget:
|
||||||
"numberOfFailQueries":
|
type: prowlarr
|
||||||
numeric:
|
url: "{{HOMEPAGE_VAR_PROWLARR_ADDRESS}}"
|
||||||
- level: warn
|
key: "{{HOMEPAGE_VAR_PROWLARR_KEY}}"
|
||||||
when: gt
|
#fields: ["numberOfGrabs"]
|
||||||
value: 0
|
highlight:
|
||||||
|
"numberOfGrabs":
|
||||||
|
numeric:
|
||||||
|
- level: warn
|
||||||
|
when: lte
|
||||||
|
value: 0
|
||||||
|
"numberOfQueries":
|
||||||
|
numeric:
|
||||||
|
- level: warn
|
||||||
|
when: lte
|
||||||
|
value: 0
|
||||||
|
"numberOfFailGrabs":
|
||||||
|
numeric:
|
||||||
|
- level: warn
|
||||||
|
when: gt
|
||||||
|
value: 0
|
||||||
|
"numberOfFailQueries":
|
||||||
|
numeric:
|
||||||
|
- level: warn
|
||||||
|
when: gt
|
||||||
|
value: 0
|
||||||
|
|
||||||
- "qBittorrent Active >":
|
- "qBittorrent Active >":
|
||||||
icon: sh-qbittorrent
|
icon: sh-qbittorrent
|
||||||
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: qbittorrent
|
container: qbittorrent
|
||||||
#description:
|
#description:
|
||||||
widget:
|
widget:
|
||||||
type: customapi
|
type: customapi
|
||||||
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/torrents/info?filter=seeding"
|
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/torrents/info?filter=seeding"
|
||||||
mappings:
|
mappings:
|
||||||
#- field:
|
#- field:
|
||||||
- field: _count
|
- field: _count
|
||||||
label: "Active"
|
label: "Active"
|
||||||
format: integer
|
format: integer
|
||||||
scale: 1
|
scale: 1
|
||||||
highlight:
|
highlight:
|
||||||
"Active":
|
"Active":
|
||||||
numeric:
|
numeric:
|
||||||
- level: danger
|
- level: danger
|
||||||
when: lte
|
when: lte
|
||||||
value: 20
|
value: 20
|
||||||
|
|
||||||
- "qBittorrent Status >":
|
- "qBittorrent Status >":
|
||||||
icon: sh-qbittorrent
|
icon: sh-qbittorrent
|
||||||
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: qbittorrent
|
container: qbittorrent
|
||||||
widget:
|
widget:
|
||||||
type: customapi
|
type: customapi
|
||||||
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
|
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
|
||||||
mappings:
|
mappings:
|
||||||
- field: server_state.connection_status
|
- field: server_state.connection_status
|
||||||
label: "status"
|
label: "status"
|
||||||
format: string
|
format: string
|
||||||
- field: server_state.dht_nodes
|
- field: server_state.dht_nodes
|
||||||
label: "DHT"
|
label: "DHT"
|
||||||
format: integer
|
format: integer
|
||||||
scale: 1
|
scale: 1
|
||||||
- field: server_state.last_external_address_v4
|
- field: server_state.last_external_address_v4
|
||||||
label: "Address"
|
label: "Address"
|
||||||
format: string
|
format: string
|
||||||
highlight:
|
highlight:
|
||||||
"status":
|
"status":
|
||||||
string:
|
string:
|
||||||
- level: danger
|
- level: danger
|
||||||
when: equals
|
when: equals
|
||||||
value: connected
|
value: connected
|
||||||
negate: true
|
negate: true
|
||||||
"DHT":
|
"DHT":
|
||||||
#valueOnly: true
|
#valueOnly: true
|
||||||
numeric:
|
numeric:
|
||||||
- level: danger
|
- level: danger
|
||||||
when: lte
|
when: lte
|
||||||
value: 0
|
value: 0
|
||||||
- level: warn
|
- level: warn
|
||||||
when: lte
|
when: lte
|
||||||
value: 200
|
value: 200
|
||||||
|
|
||||||
- "qBittorrent Stats >":
|
- "qBittorrent Stats >":
|
||||||
icon: sh-qbittorrent
|
icon: sh-qbittorrent
|
||||||
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: qbittorrent
|
container: qbittorrent
|
||||||
widget:
|
widget:
|
||||||
type: customapi
|
type: customapi
|
||||||
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
|
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
|
||||||
mappings:
|
mappings:
|
||||||
- field: server_state.alltime_dl
|
- field: server_state.alltime_dl
|
||||||
label: "T. Down"
|
label: "T. Down"
|
||||||
format: bytes
|
format: bytes
|
||||||
scale: 0.862
|
scale: 0.862
|
||||||
- field: server_state.alltime_ul
|
- field: server_state.alltime_ul
|
||||||
label: "T. Up"
|
label: "T. Up"
|
||||||
format: bytes
|
format: bytes
|
||||||
scale: 0.862
|
scale: 0.862
|
||||||
- field: server_state.global_ratio
|
- field: server_state.global_ratio
|
||||||
label: "Ratio"
|
label: "Ratio"
|
||||||
format: percent
|
format: percent
|
||||||
scale: 100
|
scale: 100
|
||||||
#suffix: "%"
|
#suffix: "%"
|
||||||
highlight:
|
highlight:
|
||||||
"Ratio":
|
"Ratio":
|
||||||
numeric:
|
numeric:
|
||||||
- level: warn
|
- level: warn
|
||||||
when: lt
|
when: lt
|
||||||
value: 100
|
value: 100
|
||||||
- level: danger
|
- level: danger
|
||||||
when: lte
|
when: lte
|
||||||
value: 60
|
value: 60
|
||||||
|
|
||||||
- "qBittorrent Session >":
|
- "qBittorrent Session >":
|
||||||
icon: sh-qbittorrent
|
icon: sh-qbittorrent
|
||||||
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: qbittorrent
|
container: qbittorrent
|
||||||
widget:
|
widget:
|
||||||
type: customapi
|
type: customapi
|
||||||
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
|
url: "{{HOMEPAGE_VAR_QBITTORRENT_ADDRESS}}/api/v2/sync/maindata"
|
||||||
key: "{{HOMEPAGE_VAR_QBITTORRENT_KEY}}"
|
key: "{{HOMEPAGE_VAR_QBITTORRENT_KEY}}"
|
||||||
mappings:
|
mappings:
|
||||||
- field: server_state.dl_info_speed
|
- field: server_state.dl_info_speed
|
||||||
label: Down
|
label: Down
|
||||||
format: bitrate
|
format: bitrate
|
||||||
scale: 0.862
|
scale: 0.862
|
||||||
- field: server_state.dl_info_data
|
- field: server_state.dl_info_data
|
||||||
label: T. Down
|
label: T. Down
|
||||||
format: bytes
|
format: bytes
|
||||||
scale: 0.862
|
scale: 0.862
|
||||||
- field: server_state.up_info_speed
|
- field: server_state.up_info_speed
|
||||||
label: Up
|
label: Up
|
||||||
format: bitrate
|
format: bitrate
|
||||||
scale: 0.862
|
scale: 0.862
|
||||||
- field: server_state.up_info_data
|
- field: server_state.up_info_data
|
||||||
label: T. Up
|
label: T. Up
|
||||||
format: bytes
|
format: bytes
|
||||||
scale: 0.862
|
scale: 0.862
|
||||||
highlight:
|
highlight:
|
||||||
#"T. Down":
|
"Down":
|
||||||
# numeric:
|
numeric:
|
||||||
# - level: good
|
- level: good
|
||||||
# when: gt
|
when: gt
|
||||||
# value: 0
|
value: 0
|
||||||
"Down":
|
"Up":
|
||||||
numeric:
|
numeric:
|
||||||
- level: good
|
- level: good
|
||||||
when: gt
|
when: gt
|
||||||
value: 0
|
value: 0
|
||||||
#"T. Up":
|
|
||||||
# numeric:
|
|
||||||
# - level: good
|
|
||||||
# when: gt
|
|
||||||
# value: 0
|
|
||||||
"Up":
|
|
||||||
numeric:
|
|
||||||
- level: good
|
|
||||||
when: gt
|
|
||||||
value: 0
|
|
||||||
# - "Minecraft":
|
|
||||||
# icon: sh-minecraft-creeper
|
|
||||||
# description: Game Server Instance
|
|
||||||
# server: my-docker
|
|
||||||
# container: mc
|
|
||||||
# #siteMonitor: "udp://localhost:25575"
|
|
||||||
# widget:
|
|
||||||
# type: minecraft
|
|
||||||
# url: http://localhost:25565
|
|
||||||
# highlight:
|
|
||||||
# status:
|
|
||||||
# valueOnly: true
|
|
||||||
# string:
|
|
||||||
# - level: good
|
|
||||||
# when: equals
|
|
||||||
# value: "connected"
|
|
||||||
# - level: warn
|
|
||||||
# when: equals
|
|
||||||
# value: "connected"
|
|
||||||
# negate: true
|
|
||||||
# players:
|
|
||||||
# numeric:
|
|
||||||
# - level: warn
|
|
||||||
# when: lte
|
|
||||||
# value: 0
|
|
||||||
- "Network_2":
|
|
||||||
- "Scrutiny":
|
|
||||||
icon: sh-scrutiny
|
|
||||||
href: http://192.168.50.2:4545 #"{{HOMEPAGE_VAR_SCRUTINY_ADDRESS}}""
|
|
||||||
description: S.M.A.R.T.
|
|
||||||
server: my-docker
|
|
||||||
container: scrutiny
|
|
||||||
widget:
|
|
||||||
type: scrutiny
|
|
||||||
url: http://192.168.50.2:4545 #"{{HOMEPAGE_VAR_SCRUTINY_ADDRESS}}"
|
|
||||||
|
|||||||
+76
-69
@@ -6,11 +6,11 @@ instanceName: torrent-stack
|
|||||||
|
|
||||||
# Aesthetics
|
# Aesthetics
|
||||||
background:
|
background:
|
||||||
image: /images/wallhaven-pk997m.jpg
|
image: /images/wallhaven-pk997m.jpg
|
||||||
#blur: sm # Options: sm, md, lg, xl
|
#blur: sm # Options: sm, md, lg, xl
|
||||||
#saturate: 10
|
#saturate: 10
|
||||||
#brightness: 10
|
#brightness: 10
|
||||||
opacity: 30
|
opacity: 30
|
||||||
|
|
||||||
cardBlur: md
|
cardBlur: md
|
||||||
theme: dark
|
theme: dark
|
||||||
@@ -27,12 +27,12 @@ showActivity: false
|
|||||||
#bookmarksStyle: icons
|
#bookmarksStyle: icons
|
||||||
|
|
||||||
quicklaunch:
|
quicklaunch:
|
||||||
searchDescriptions: true
|
searchDescriptions: true
|
||||||
hideInternetSearch: false
|
hideInternetSearch: false
|
||||||
showSearchSuggestions: true
|
showSearchSuggestions: true
|
||||||
hideVisitURL: true
|
hideVisitURL: true
|
||||||
provider: google # google, duckduckgo, bing, baidu, brave or custom
|
provider: google # google, duckduckgo, bing, baidu, brave or custom
|
||||||
mobileButtonPosition: bottom-right
|
mobileButtonPosition: bottom-right
|
||||||
|
|
||||||
# Organization
|
# Organization
|
||||||
groupsInitiDetailedyCollapsed: false
|
groupsInitiDetailedyCollapsed: false
|
||||||
@@ -40,61 +40,68 @@ headerStyle: boxed #underlined
|
|||||||
useEqualHeights: true
|
useEqualHeights: true
|
||||||
|
|
||||||
layout:
|
layout:
|
||||||
"Apps":
|
"User":
|
||||||
tab: Apps
|
tab: Apps
|
||||||
iconsOnly: false
|
iconsOnly: false
|
||||||
header: true
|
header: true
|
||||||
disableCollapse: true
|
disableCollapse: true
|
||||||
style: row
|
style: row
|
||||||
columns: 3
|
columns: 3
|
||||||
"Top":
|
"Admin":
|
||||||
tab: Detailed
|
tab: Apps
|
||||||
header: false
|
iconsOnly: false
|
||||||
style: row
|
header: true
|
||||||
columns: 4
|
disableCollapse: true
|
||||||
"Media":
|
style: row
|
||||||
tab: Detailed
|
columns: 3
|
||||||
header: false
|
"Bookmarks":
|
||||||
style: column
|
tab: Apps
|
||||||
columns: 1
|
header: true
|
||||||
"Media_1":
|
initiallyCollapsed: true
|
||||||
tab: Detailed
|
style: row
|
||||||
header: false
|
columns: 3
|
||||||
style: row
|
"Top":
|
||||||
columns: 3
|
tab: Detailed
|
||||||
"Media_2":
|
header: false
|
||||||
tab: Detailed
|
style: row
|
||||||
header: false
|
columns: 4
|
||||||
style: row
|
"Media":
|
||||||
columns: 2
|
tab: Detailed
|
||||||
"Media_Bottom":
|
header: false
|
||||||
tab: Detailed
|
style: column
|
||||||
header: false
|
columns: 1
|
||||||
style: row
|
"Media_1":
|
||||||
columns: 1
|
tab: Detailed
|
||||||
"Network":
|
header: false
|
||||||
tab: Detailed
|
style: row
|
||||||
header: false
|
columns: 3
|
||||||
style: column
|
"Media_2":
|
||||||
columns: 1
|
tab: Detailed
|
||||||
"Network_1":
|
header: false
|
||||||
tab: Detailed
|
style: row
|
||||||
header: false
|
columns: 2
|
||||||
style: row
|
"Media_Bottom":
|
||||||
columns: 2
|
tab: Detailed
|
||||||
"Network_qbit":
|
header: false
|
||||||
tab: Detailed
|
style: row
|
||||||
header: false
|
columns: 1
|
||||||
style: row
|
"Network":
|
||||||
columns: 1
|
tab: Detailed
|
||||||
"Network_2":
|
header: false
|
||||||
tab: Detailed
|
style: column
|
||||||
header: false
|
columns: 1
|
||||||
style: row
|
"Network_1":
|
||||||
columns: 2
|
tab: Detailed
|
||||||
"Bookmarks":
|
header: false
|
||||||
tab: Apps
|
style: row
|
||||||
header: true
|
columns: 2
|
||||||
initiallyCollapsed: true
|
"Network_qbit":
|
||||||
style: row
|
tab: Detailed
|
||||||
columns: 3
|
header: false
|
||||||
|
style: row
|
||||||
|
columns: 1
|
||||||
|
"Network_2":
|
||||||
|
tab: Detailed
|
||||||
|
header: false
|
||||||
|
style: row
|
||||||
|
columns: 2
|
||||||
|
|||||||
+47
-34
@@ -3,44 +3,57 @@
|
|||||||
# https://gethomepage.dev/configs/info-widgets/
|
# https://gethomepage.dev/configs/info-widgets/
|
||||||
|
|
||||||
- greeting:
|
- greeting:
|
||||||
text_size: 3xl
|
text_size: 3xl
|
||||||
text: shaan-server
|
text: shaan-server
|
||||||
|
|
||||||
- datetime:
|
- datetime:
|
||||||
text_size: xl
|
text_size: xl
|
||||||
locale: en
|
locale: en
|
||||||
format:
|
format:
|
||||||
timeStyle: medium
|
timeStyle: medium
|
||||||
dateStyle: medium
|
dateStyle: medium
|
||||||
hour12: true
|
hour12: true
|
||||||
|
|
||||||
- openmeteo:
|
- openmeteo:
|
||||||
#label: Sacramento, CA
|
#label: Sacramento, CA
|
||||||
latitude: 38.58
|
latitude: 38.58
|
||||||
longitude: -121.49
|
longitude: -121.49
|
||||||
units: imperial # Uses Fahrenheit and mph for Roseville
|
units: imperial # Uses Fahrenheit and mph for Roseville
|
||||||
|
|
||||||
- glances:
|
- resources:
|
||||||
url: http://host.docker.internal:61208
|
cpu: true
|
||||||
href: "{{HOMEPAGE_VAR_GLANCES_HOST}}"
|
memory: true
|
||||||
username: user # optional if auth enabled in Glances
|
#disk: {{HOMEPAGE_VAR_DISK1}}
|
||||||
password: pass # optional if auth enabled in Glances
|
cputemp: true
|
||||||
version: 4 # required only if running glances v4 or higher, defaults to 3
|
tempmin: 0 # optional, minimum cpu temp
|
||||||
cpu: true # optional, enabled by default, disable by setting to false
|
tempmax: 100 # optional, maximum cpu temp
|
||||||
cputemp: false # disabled by default
|
uptime: true
|
||||||
mem: true # optional, enabled by default, disable by setting to false
|
units: metric # only used by cpu temp, options: 'imperial' or 'metric'
|
||||||
cpuSensorLabel: Package id # optional additional cputemp sensor label prefix
|
refresh: 2000 # optional, in ms
|
||||||
unit: imperial # optional for temp, default is metric
|
diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
|
||||||
uptime: true # disabled by default
|
network: false # optional, uses 'default' if true or specify a network interface name
|
||||||
disk: # disabled by default, use mount point of disk(s) in glances. Can also be a list (see below)
|
|
||||||
- /
|
# - glances:
|
||||||
- "/host{{HOMEPAGE_VAR_DISK1}}"
|
# url: http://host.docker.internal:61208
|
||||||
- "/host{{HOMEPAGE_VAR_DISK2}}"
|
# href: "{{HOMEPAGE_VAR_GLANCES_HOST}}"
|
||||||
- "/host{{HOMEPAGE_VAR_DISK3}}"
|
# username: "{{HOMEPAGE_VAR_GLANCES_USERNAME}}"
|
||||||
diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
|
# password: "{{HOMEPAGE_VAR_GLANCES_PASSWORD}}"
|
||||||
expanded: true # show the expanded view
|
# version: 4 # required only if running glances v4 or higher, defaults to 3
|
||||||
#label: MyMachine # optional
|
# cpu: true # optional, enabled by default, disable by setting to false
|
||||||
|
# cputemp: false # disabled by default
|
||||||
|
# mem: true # optional, enabled by default, disable by setting to false
|
||||||
|
# cpuSensorLabel: Package id # optional additional cputemp sensor label prefix
|
||||||
|
# unit: imperial # optional for temp, default is metric
|
||||||
|
# uptime: true # disabled by default
|
||||||
|
# disk: # disabled by default, use mount point of disk(s) in glances. Can also be a list (see below)
|
||||||
|
# - /
|
||||||
|
# - "/host{{HOMEPAGE_VAR_DISK1}}"
|
||||||
|
# - "/host{{HOMEPAGE_VAR_DISK2}}"
|
||||||
|
# - "/host{{HOMEPAGE_VAR_DISK3}}"
|
||||||
|
# diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
|
||||||
|
# expanded: true # show the expanded view
|
||||||
|
# #label: MyMachine # optional
|
||||||
|
|
||||||
- search:
|
- search:
|
||||||
provider: google
|
provider: google
|
||||||
target: _blank
|
target: _blank
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
psql -v ON_ERROR_STOP=1 -U postgres -f init-database.sql
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
-- Create a temp table
|
|
||||||
CREATE TABLE torrent_tmp (
|
|
||||||
infohash text NOT NULL,
|
|
||||||
name text NOT NULL,
|
|
||||||
size_bytes bigint NOT NULL,
|
|
||||||
created_unix bigint NOT NULL,
|
|
||||||
seeders integer NOT NULL,
|
|
||||||
leechers integer NOT NULL,
|
|
||||||
completed integer NOT NULL,
|
|
||||||
scraped_date bigint NOT NULL,
|
|
||||||
published bigint NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Copy from csv
|
|
||||||
COPY torrent_tmp
|
|
||||||
FROM
|
|
||||||
'../torrents.csv' WITH (
|
|
||||||
FORMAT csv,
|
|
||||||
HEADER);
|
|
||||||
|
|
||||||
-- default sort by seeders
|
|
||||||
CREATE TABLE torrent AS
|
|
||||||
SELECT
|
|
||||||
*
|
|
||||||
FROM
|
|
||||||
torrent_tmp
|
|
||||||
ORDER BY
|
|
||||||
seeders DESC;
|
|
||||||
|
|
||||||
-- Add the identity column
|
|
||||||
ALTER TABLE torrent
|
|
||||||
ADD COLUMN id int GENERATED ALWAYS AS IDENTITY,
|
|
||||||
ADD COLUMN name_search tsvector GENERATED ALWAYS AS (to_tsvector('english', name)) STORED;
|
|
||||||
|
|
||||||
CREATE INDEX idx_name ON torrent USING gin (name_search);
|
|
||||||
|
|
||||||
DROP TABLE torrent_tmp;
|
|
||||||
|
|
||||||
Submodule torrents-csv-data deleted from a48af42e1f
@@ -1 +0,0 @@
|
|||||||
torrents-csv-data/torrents.csv
|
|
||||||
|
Reference in New Issue
Block a user