WIP
This commit is contained in:
+1
-1
@@ -47,7 +47,7 @@ BAZARR_PORT=8787
|
|||||||
VLLM_PORT=5081
|
VLLM_PORT=5081
|
||||||
SPOTIZERR_PORT=7171
|
SPOTIZERR_PORT=7171
|
||||||
SPOTIZERR_REDIS_PORT=6379
|
SPOTIZERR_REDIS_PORT=6379
|
||||||
TDARR_NODE_ID=ShaanNode
|
TDARR_NODE_ID=TdarrTranscoder
|
||||||
|
|
||||||
# ----- Docker Images -----
|
# ----- Docker Images -----
|
||||||
# get with command:
|
# get with command:
|
||||||
|
|||||||
@@ -43,3 +43,7 @@ homepage/*
|
|||||||
!homepage/*.css
|
!homepage/*.css
|
||||||
!homepage/*.js
|
!homepage/*.js
|
||||||
!homepage/images/
|
!homepage/images/
|
||||||
|
|
||||||
|
# Firecrawl (self-hosted web scraper for Hermes) — reference repo clone + app data
|
||||||
|
firecrawl/
|
||||||
|
firecrawl-data/
|
||||||
|
|||||||
@@ -29,3 +29,4 @@ include:
|
|||||||
- media.yml
|
- media.yml
|
||||||
- infra.yml
|
- infra.yml
|
||||||
- web.yml
|
- web.yml
|
||||||
|
- firecrawl.yml
|
||||||
|
|||||||
+233
@@ -0,0 +1,233 @@
|
|||||||
|
# =============================================================================
|
||||||
|
# Firecrawl — self-hosted web scraper for Hermes (scrape/extract) + vLLM (AI)
|
||||||
|
# Runs entirely on a private `firecrawl-net` bridge; only the API port
|
||||||
|
# (FIRECRAWL_PORT=3002) is published to the host. The homepage's host :3000 is
|
||||||
|
# untouched: playwright binds 3000 INTERNALLY only (firecrawl-net), and the
|
||||||
|
# api's in-container workers bind the api container's own namespace — so
|
||||||
|
# nothing firecrawl runs can collide with host :3000. No docker volumes: all
|
||||||
|
# state lives under ./firecrawl-data/<service>. Images are pulled (never
|
||||||
|
# built) — see the FIRECRAWL_*_IMAGE digest pins in .env.
|
||||||
|
#
|
||||||
|
# Port layout:
|
||||||
|
# host :3002 -> api container :3002 (the ONLY published port)
|
||||||
|
# container-internal (firecrawl-net):
|
||||||
|
# api (express) :3002
|
||||||
|
# playwright-service :3000
|
||||||
|
# extract-worker :3004
|
||||||
|
# queue-worker (liveness) :3005
|
||||||
|
# nuq-worker x5 :3006-3010
|
||||||
|
# nuq-prefetch-worker :3011
|
||||||
|
# nuq-reconciler-worker :3012
|
||||||
|
# cclog-worker :3013
|
||||||
|
# postgres :5432 / rabbitmq :5672 / redis :6380 — internal, not published
|
||||||
|
#
|
||||||
|
# Env: each firecrawl service loads ONLY its own env file — NEVER the global
|
||||||
|
# stack .env (it would leak spotizerr's REDIS_PASSWORD into firecrawl-redis,
|
||||||
|
# whose entrypoint turns it into requirepass and break the passwordless
|
||||||
|
# REDIS_URL). .firecrawl.env carries the api+postgres contract; the two keys
|
||||||
|
# needing ${} interpolation (OPENAI_BASE_URL -> vLLM on the LAN,
|
||||||
|
# SEARXNG_ENDPOINT -> SearXNG on the LAN) live in `environment:` because
|
||||||
|
# env_file does not interpolate. LAN reach: extra_hosts host-gateway.
|
||||||
|
#
|
||||||
|
# Key ordering per service (matches compose.yml):
|
||||||
|
# image → container_name → env_file → networks/network_mode
|
||||||
|
# → depends_on → cap_add → ports → volumes → environment
|
||||||
|
# → labels → healthcheck → security_opt → mem_limit → cpus
|
||||||
|
# → devices → restart
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
networks:
|
||||||
|
firecrawl-net:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# API + in-container workers (api, queue-worker, extract-worker, nuq workers)
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
firecrawl-api:
|
||||||
|
image: ${FIRECRAWL_IMAGE}
|
||||||
|
container_name: firecrawl-api
|
||||||
|
env_file:
|
||||||
|
- ./env/.firecrawl.env
|
||||||
|
networks:
|
||||||
|
- firecrawl-net
|
||||||
|
depends_on:
|
||||||
|
firecrawl-postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
firecrawl-rabbitmq:
|
||||||
|
condition: service_healthy
|
||||||
|
firecrawl-redis:
|
||||||
|
condition: service_healthy
|
||||||
|
firecrawl-playwright:
|
||||||
|
condition: service_healthy
|
||||||
|
ulimits:
|
||||||
|
nofile:
|
||||||
|
soft: 65535
|
||||||
|
hard: 65535
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
ports:
|
||||||
|
- "${FIRECRAWL_PORT}:3002"
|
||||||
|
# ${} expansion (env_file does not interpolate): vLLM is host-networked, so
|
||||||
|
# LAN IP + VLLM_PORT reach it from inside; same for SearXNG.
|
||||||
|
environment:
|
||||||
|
- "OPENAI_BASE_URL=http://${LOCAL_IPV4}:${VLLM_PORT}/v1"
|
||||||
|
- "SEARXNG_ENDPOINT=http://${LOCAL_IPV4}:${SEARXNG_PORT}"
|
||||||
|
labels:
|
||||||
|
- "autoheal=true"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-sf", "http://127.0.0.1:3002/v0/health/liveness"]
|
||||||
|
interval: 15s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 60s
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
compress: "true"
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 6g
|
||||||
|
memswap_limit: 8g
|
||||||
|
cpus: 2.0
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Playwright browser microservice — internal only (port 3000 on firecrawl-net)
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
firecrawl-playwright:
|
||||||
|
image: ${FIRECRAWL_PLAYWRIGHT_IMAGE}
|
||||||
|
container_name: firecrawl-playwright
|
||||||
|
env_file:
|
||||||
|
- ./env/.firecrawl-playwright.env
|
||||||
|
networks:
|
||||||
|
- firecrawl-net
|
||||||
|
cap_drop:
|
||||||
|
- ALL
|
||||||
|
labels:
|
||||||
|
- "autoheal=true"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3000/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 30s
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
compress: "true"
|
||||||
|
tmpfs:
|
||||||
|
- /tmp/.cache:noexec,nosuid,size=1g
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 4g
|
||||||
|
memswap_limit: 4g
|
||||||
|
cpus: 1.0
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Redis — BullMQ job queues + rate limiting (internal, not host-published)
|
||||||
|
# Port 6380 (not 6379) so it can never be confused with spotizerr's redis.
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
firecrawl-redis:
|
||||||
|
image: ${FIRECRAWL_REDIS_IMAGE}
|
||||||
|
container_name: firecrawl-redis
|
||||||
|
networks:
|
||||||
|
- firecrawl-net
|
||||||
|
command: redis-server --bind 0.0.0.0 --port 6380 --maxmemory 256mb --maxmemory-policy noeviction
|
||||||
|
# NOTE: no `cap_drop: ALL` here — the entrypoint must chown the bind
|
||||||
|
# mount on first boot (same reason postgres has no cap_drop). Dropping ALL
|
||||||
|
# strips CAP_CHOWN/DAC_OVERRIDE and makes the root entrypoint fail with EPERM.
|
||||||
|
volumes:
|
||||||
|
- ./firecrawl-data/redis:/data
|
||||||
|
labels:
|
||||||
|
- "autoheal=true"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "redis-cli", "-p", "6380", "ping"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 3s
|
||||||
|
retries: 5
|
||||||
|
start_period: 5s
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: "5m"
|
||||||
|
max-file: "2"
|
||||||
|
compress: "true"
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 256m
|
||||||
|
cpus: 0.5
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# RabbitMQ — NUQ transport (internal, not host-published). Default guest/guest
|
||||||
|
# works cross-container on the bridge (verified); no env file needed.
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
firecrawl-rabbitmq:
|
||||||
|
image: ${FIRECRAWL_RABBITMQ_IMAGE}
|
||||||
|
container_name: firecrawl-rabbitmq
|
||||||
|
networks:
|
||||||
|
- firecrawl-net
|
||||||
|
command: rabbitmq-server
|
||||||
|
# NOTE: no `cap_drop: ALL` — entrypoint chowns the bind mount on boot
|
||||||
|
# (same reason postgres has none). Dropping ALL causes EPERM on chown.
|
||||||
|
volumes:
|
||||||
|
- ./firecrawl-data/rabbitmq:/var/lib/rabbitmq
|
||||||
|
labels:
|
||||||
|
- "autoheal=true"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 20s
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: "5m"
|
||||||
|
max-file: "2"
|
||||||
|
compress: "true"
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 512m
|
||||||
|
cpus: 0.5
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Postgres (NUQ queue store, pg_cron) — internal, not host-published.
|
||||||
|
# DB must stay named 'postgres' (see .firecrawl.env note: the baked
|
||||||
|
# pg_cron extension in this image is configured for cron.database_name='postgres').
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
firecrawl-postgres:
|
||||||
|
image: ${FIRECRAWL_POSTGRES_IMAGE}
|
||||||
|
container_name: firecrawl-postgres
|
||||||
|
env_file:
|
||||||
|
- ./env/.firecrawl.env
|
||||||
|
networks:
|
||||||
|
- firecrawl-net
|
||||||
|
volumes:
|
||||||
|
- ./firecrawl-data/postgres:/var/lib/postgresql/data
|
||||||
|
labels:
|
||||||
|
- "autoheal=true"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
start_period: 20s
|
||||||
|
logging:
|
||||||
|
driver: json-file
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
compress: "true"
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
mem_limit: 512m
|
||||||
|
cpus: 0.5
|
||||||
|
restart: unless-stopped
|
||||||
@@ -44,15 +44,12 @@
|
|||||||
- "qBittorrent":
|
- "qBittorrent":
|
||||||
- icon: sh-qbittorrent
|
- icon: sh-qbittorrent
|
||||||
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
href: "{{HOMEPAGE_VAR_QBITTORRENT_HOST}}"
|
||||||
- "Scrutiny":
|
- "Spotizerr":
|
||||||
- icon: sh-scrutiny-light
|
- icon: sh-spotify-light
|
||||||
href: "{{HOMEPAGE_VAR_SCRUTINY_HOST}}"
|
href: http://shaan-server:7171
|
||||||
- "Router Gateway":
|
- "Router Gateway":
|
||||||
- icon: "http://192.168.50.1/images/favicon.png"
|
- icon: "http://192.168.50.1/images/favicon.png"
|
||||||
href: http://192.168.50.1
|
href: http://192.168.50.1
|
||||||
- "Tailscale":
|
|
||||||
- icon: sh-tailscale-light
|
|
||||||
href: https://login.tailscale.com
|
|
||||||
- "Portainer":
|
- "Portainer":
|
||||||
- icon: sh-portainer-light
|
- icon: sh-portainer-light
|
||||||
href: "{{HOMEPAGE_VAR_PORTAINER_HOST}}"
|
href: "{{HOMEPAGE_VAR_PORTAINER_HOST}}"
|
||||||
@@ -62,6 +59,9 @@
|
|||||||
- "Cloudflare":
|
- "Cloudflare":
|
||||||
- icon: sh-cloudflare
|
- icon: sh-cloudflare
|
||||||
href: https://dash.cloudflare.com
|
href: https://dash.cloudflare.com
|
||||||
|
- "Tailscale":
|
||||||
|
- icon: sh-tailscale-light
|
||||||
|
href: https://login.tailscale.com
|
||||||
|
|
||||||
- Bookmarks:
|
- Bookmarks:
|
||||||
- "Youtube":
|
- "Youtube":
|
||||||
@@ -85,3 +85,6 @@
|
|||||||
- "Discord":
|
- "Discord":
|
||||||
- icon: sh-discord
|
- icon: sh-discord
|
||||||
href: https://discord.com/channels/@me
|
href: https://discord.com/channels/@me
|
||||||
|
- "Spotify":
|
||||||
|
- icon: sh-spotify
|
||||||
|
href: https://open.spotify.com
|
||||||
|
|||||||
@@ -34,6 +34,11 @@
|
|||||||
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]
|
||||||
|
- "Caddy":
|
||||||
|
icon: sh-caddy
|
||||||
|
widget:
|
||||||
|
type: caddy
|
||||||
|
url: "http://localhost:2019"
|
||||||
- "Media":
|
- "Media":
|
||||||
- "Media_1":
|
- "Media_1":
|
||||||
- "Open WebUI":
|
- "Open WebUI":
|
||||||
@@ -195,8 +200,8 @@
|
|||||||
when: gt
|
when: gt
|
||||||
value: 0
|
value: 0
|
||||||
- "Spotizerr":
|
- "Spotizerr":
|
||||||
icon: sh-spotify
|
icon: sh-spotify-light
|
||||||
href: http://shaan-server:7171
|
href: http://shaan-server:7171 # "{{HOMEPAGE_VAR_SPOTIZERR_HOST}}"
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: spotizerr
|
container: spotizerr
|
||||||
- "Media_Bottom":
|
- "Media_Bottom":
|
||||||
@@ -226,13 +231,13 @@
|
|||||||
- "Network_1":
|
- "Network_1":
|
||||||
- "Portainer":
|
- "Portainer":
|
||||||
icon: sh-portainer-light
|
icon: sh-portainer-light
|
||||||
href: https://shaan-server:9443
|
href: "{{HOMEPAGE_VAR_PORTAINER_HOST}}"
|
||||||
description: Containers
|
description: Containers
|
||||||
server: my-docker
|
server: my-docker
|
||||||
container: portainer
|
container: portainer
|
||||||
widget:
|
widget:
|
||||||
type: portainer
|
type: portainer
|
||||||
url: https://portainer:9443
|
url: https://localhost:9443
|
||||||
env: 3
|
env: 3
|
||||||
key: "{{HOMEPAGE_VAR_PORTAINER_KEY}}"
|
key: "{{HOMEPAGE_VAR_PORTAINER_KEY}}"
|
||||||
- "Pi-Hole Adblocker":
|
- "Pi-Hole Adblocker":
|
||||||
|
|||||||
@@ -10,19 +10,12 @@
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
#caddy_net:
|
|
||||||
# external: true
|
|
||||||
tdarr-net:
|
tdarr-net:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
default:
|
default:
|
||||||
name: portainer_network
|
name: portainer_network
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
#caddy_config:
|
|
||||||
#caddy_data:
|
|
||||||
# external: true
|
|
||||||
#myspeed:
|
|
||||||
# external: true
|
|
||||||
portainer_data:
|
portainer_data:
|
||||||
name: portainer_data
|
name: portainer_data
|
||||||
|
|
||||||
@@ -72,8 +65,6 @@ services:
|
|||||||
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/timezone:/etc/timezone:ro
|
|
||||||
environment:
|
environment:
|
||||||
- AUTOHEAL_CONTAINER_LABEL=all
|
- AUTOHEAL_CONTAINER_LABEL=all
|
||||||
- AUTOHEAL_INTERVAL=30
|
- AUTOHEAL_INTERVAL=30
|
||||||
@@ -98,8 +89,6 @@ services:
|
|||||||
- /run/udev:/run/udev:ro
|
- /run/udev:/run/udev:ro
|
||||||
- ./scrutiny/config:/opt/scrutiny/config
|
- ./scrutiny/config:/opt/scrutiny/config
|
||||||
- ./scrutiny/influxdb:/opt/scrutiny/influxdb
|
- ./scrutiny/influxdb:/opt/scrutiny/influxdb
|
||||||
#- /etc/localtime:/etc/localtime:ro
|
|
||||||
#- /etc/timezone:/etc/timezone:ro
|
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
security_opt:
|
security_opt:
|
||||||
@@ -126,14 +115,10 @@ services:
|
|||||||
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/timezone:/etc/timezone:ro
|
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
- FTLCONF_misc_etc_dnsmasq_d=true
|
- FTLCONF_misc_etc_dnsmasq_d=true
|
||||||
- FTLCONF_webserver_port=${PIHOLE_PORT:-80}
|
- FTLCONF_webserver_port=${PIHOLE_PORT:-80}
|
||||||
# security_opt:
|
|
||||||
# - no-new-privileges:true
|
|
||||||
mem_limit: 256m
|
mem_limit: 256m
|
||||||
cpus: 1.0
|
cpus: 1.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -146,8 +131,6 @@ 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
|
||||||
#- /etc/localtime:/etc/localtime:ro
|
|
||||||
#- /etc/timezone:/etc/timezone:ro
|
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
security_opt:
|
security_opt:
|
||||||
|
|||||||
@@ -10,19 +10,12 @@
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
#caddy_net:
|
|
||||||
# external: true
|
|
||||||
tdarr-net:
|
tdarr-net:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
default:
|
default:
|
||||||
name: portainer_network
|
name: portainer_network
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
#caddy_config:
|
|
||||||
#caddy_data:
|
|
||||||
# external: true
|
|
||||||
#myspeed:
|
|
||||||
# external: true
|
|
||||||
portainer_data:
|
portainer_data:
|
||||||
name: portainer_data
|
name: portainer_data
|
||||||
redis-data:
|
redis-data:
|
||||||
@@ -51,8 +44,6 @@ services:
|
|||||||
- ${BAZARR_PORT}:${BAZARR_PORT}
|
- ${BAZARR_PORT}:${BAZARR_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
|
||||||
@@ -97,8 +88,6 @@ services:
|
|||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
- ./gluetun-data:/tmp/gluetun
|
- ./gluetun-data:/tmp/gluetun
|
||||||
#- /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}
|
||||||
@@ -188,8 +177,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./prowlarr:/config
|
- ./prowlarr:/config
|
||||||
- ./notify.sh:/notify.sh:ro
|
- ./notify.sh:/notify.sh:ro
|
||||||
#- /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}
|
||||||
@@ -223,8 +210,6 @@ services:
|
|||||||
- ./sonarr:/config
|
- ./sonarr:/config
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
#- /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}
|
||||||
@@ -258,8 +243,6 @@ services:
|
|||||||
- ./radarr:/config
|
- ./radarr:/config
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
#- /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}
|
||||||
@@ -294,8 +277,6 @@ services:
|
|||||||
- ./lidarr:/config
|
- ./lidarr:/config
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
#- /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}
|
||||||
@@ -329,8 +310,6 @@ services:
|
|||||||
- ./bazarr:/config
|
- ./bazarr:/config
|
||||||
- ${DISK1}:${DISK1}
|
- ${DISK1}:${DISK1}
|
||||||
- ${DISK2}:${DISK2}
|
- ${DISK2}:${DISK2}
|
||||||
#- /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}
|
||||||
@@ -360,14 +339,10 @@ services:
|
|||||||
tautulli:
|
tautulli:
|
||||||
image: ${TAUTULLI_IMAGE}
|
image: ${TAUTULLI_IMAGE}
|
||||||
container_name: tautulli
|
container_name: tautulli
|
||||||
#networks:
|
|
||||||
# - caddy_net
|
|
||||||
ports:
|
ports:
|
||||||
- ${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}
|
||||||
@@ -392,8 +367,6 @@ 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}
|
||||||
@@ -417,8 +390,6 @@ 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}
|
||||||
@@ -438,14 +409,10 @@ services:
|
|||||||
seerr:
|
seerr:
|
||||||
image: ${SEERR_IMAGE}
|
image: ${SEERR_IMAGE}
|
||||||
container_name: seerr
|
container_name: seerr
|
||||||
# networks:
|
|
||||||
# - caddy_net
|
|
||||||
ports:
|
ports:
|
||||||
- ${SEERR_PORT}:${SEERR_PORT}
|
- ${SEERR_PORT}:${SEERR_PORT}
|
||||||
volumes:
|
volumes:
|
||||||
- ./seerr:/app/config
|
- ./seerr:/app/config
|
||||||
#- /etc/localtime:/etc/localtime:ro
|
|
||||||
#- /etc/timezone:/etc/timezone:ro
|
|
||||||
environment:
|
environment:
|
||||||
- LOG_LEVEL=info
|
- LOG_LEVEL=info
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
|
|||||||
+2
-2
@@ -2,5 +2,5 @@
|
|||||||
sleep 15
|
sleep 15
|
||||||
|
|
||||||
cd /home/shaan/torrent-stack || exit
|
cd /home/shaan/torrent-stack || exit
|
||||||
docker compose config ||> /tmp/startup.log && exit 1
|
/usr/bin/docker compose config || >/tmp/startup.log && exit 1
|
||||||
docker compose up -d 2>&1 | tee /tmp/startup.log
|
/usr/bin/docker compose up -d 2>&1 | tee /tmp/startup.log
|
||||||
|
|||||||
@@ -38,8 +38,7 @@ services:
|
|||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
- ./env/.homepage.env
|
- ./env/.homepage.env
|
||||||
#networks:
|
network_mode: host
|
||||||
# - caddy_net
|
|
||||||
ports:
|
ports:
|
||||||
- ${HOMEPAGE_PORT}:${HOMEPAGE_PORT}
|
- ${HOMEPAGE_PORT}:${HOMEPAGE_PORT}
|
||||||
volumes:
|
volumes:
|
||||||
@@ -49,7 +48,7 @@ services:
|
|||||||
#- /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},host.docker.internal:{HOMEPAGE_PORT}"
|
- "HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,${LOCAL_IPV4}:${HOMEPAGE_PORT},${SERVER_NAME}:${HOMEPAGE_PORT},${SERVER_NAME}.${TAILNET_NAME}:${HOMEPAGE_PORT},host.docker.internal:{HOMEPAGE_PORT},${SERVER_NAME}.local:${HOMEPAGE_PORT},${SERVER_NAME}.local"
|
||||||
- "HOMEPAGE_VAR_DISK1=${DISK1}"
|
- "HOMEPAGE_VAR_DISK1=${DISK1}"
|
||||||
- "HOMEPAGE_VAR_DISK2=${DISK2}"
|
- "HOMEPAGE_VAR_DISK2=${DISK2}"
|
||||||
- "HOMEPAGE_VAR_DISK3=${DISK3}"
|
- "HOMEPAGE_VAR_DISK3=${DISK3}"
|
||||||
@@ -70,7 +69,7 @@ services:
|
|||||||
- "HOMEPAGE_VAR_SEERR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SEERR_PORT}"
|
- "HOMEPAGE_VAR_SEERR_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SEERR_PORT}"
|
||||||
- "HOMEPAGE_VAR_OPENWEBUI_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${OPENWEBUI_PORT}"
|
- "HOMEPAGE_VAR_OPENWEBUI_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${OPENWEBUI_PORT}"
|
||||||
- "HOMEPAGE_VAR_PIHOLE_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PIHOLE_PORT}"
|
- "HOMEPAGE_VAR_PIHOLE_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PIHOLE_PORT}"
|
||||||
- "HOMEPAGE_VAR_PORTAINER_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${PORTAINER_PORT}"
|
- "HOMEPAGE_VAR_PORTAINER_ADDRESS=${WEB_PROTOCOL}s://${LOCAL_IPV4}:${PORTAINER_PORT}"
|
||||||
- "HOMEPAGE_VAR_SCRUTINY_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SCRUTINY_PORT}"
|
- "HOMEPAGE_VAR_SCRUTINY_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${SCRUTINY_PORT}"
|
||||||
- "HOMEPAGE_VAR_KARAKEEP_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${KARAKEEP_PORT}"
|
- "HOMEPAGE_VAR_KARAKEEP_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${KARAKEEP_PORT}"
|
||||||
- "HOMEPAGE_VAR_VLLM_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${VLLM_PORT}"
|
- "HOMEPAGE_VAR_VLLM_ADDRESS=${WEB_PROTOCOL}://${LOCAL_IPV4}:${VLLM_PORT}"
|
||||||
@@ -97,8 +96,6 @@ services:
|
|||||||
- no-new-privileges:true
|
- no-new-privileges:true
|
||||||
mem_limit: 256m
|
mem_limit: 256m
|
||||||
cpus: 1
|
cpus: 1
|
||||||
# extra_hosts:
|
|
||||||
# - "host.docker.internal:${LOCAL_IPV4}"
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -225,6 +222,8 @@ services:
|
|||||||
--enable-prefix-caching \
|
--enable-prefix-caching \
|
||||||
--enable-chunked-prefill
|
--enable-chunked-prefill
|
||||||
restart: on-failure:5
|
restart: on-failure:5
|
||||||
|
cpus: 4.0
|
||||||
|
mem_limit: 16g
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Karakeep
|
# Karakeep
|
||||||
|
|||||||
Reference in New Issue
Block a user