1 Commits

Author SHA1 Message Date
3c4cbe8615 Update README.md
Removed duplicate service and update description of Newt
2025-09-24 22:39:59 +12:00
2 changed files with 87 additions and 187 deletions

View File

@@ -29,10 +29,10 @@ docker compose up -d
- **Lidarr** (8686) - Music management - **Lidarr** (8686) - Music management
- **Lidarr Importer API** (5110) - API of Maloja DB for Lidarr Import - **Lidarr Importer API** (5110) - API of Maloja DB for Lidarr Import
- **Maloja** (42010) - Music Statistics - **Maloja** (42010) - Music Statistics
- **MBID-Poller** - Polls Lidar API with Scrobbled artists then auto adds once found.
- **Multi-Scrobbler** (9078) - Music Scrobbling - **Multi-Scrobbler** (9078) - Music Scrobbling
- **Maloja to Lidarr Importer** - Scrobble Artist List for Custom Import - **Pinchflat** (8945) - Youtube Content Downloader
- **Soulseek** (5030) - P2P Filesharer - **Soulseek** (5030) - P2P Filesharer
- **Soularr** - Intermediary between Lidarr and Soulseek
### 📄 Document Management ### 📄 Document Management
- **Gotenberg** - Document Conversion - **Gotenberg** - Document Conversion
@@ -48,7 +48,7 @@ docker compose up -d
- **AdventureLog Frontend** (8015) - Adventure tracking interface - **AdventureLog Frontend** (8015) - Adventure tracking interface
- **AdventureLog Backend** (8016) - Adventure tracking API - **AdventureLog Backend** (8016) - Adventure tracking API
- **AdventureLog Database** - PostgreSQL database - **AdventureLog Database** - PostgreSQL database
- **Gramps** (5511 & 5512) - Genealogy management - **Gramps** (5511) - Genealogy management
- **Gramps Celery** - Background task processing - **Gramps Celery** - Background task processing
- **Gramps Redis** - Task queue - **Gramps Redis** - Task queue
- **KitchenOwl** - (8081) Recipe and Grocery Manager - **KitchenOwl** - (8081) Recipe and Grocery Manager
@@ -59,7 +59,6 @@ docker compose up -d
- **Syncthing** (8384) - File synchronization - **Syncthing** (8384) - File synchronization
### 🛠️ System Utilities ### 🛠️ System Utilities
- **Bytestash** (5661) - Private Pastebin
- **Docker Proxy** (2375) - Docker API proxy - **Docker Proxy** (2375) - Docker API proxy
- **FileBrowser** (6633) - Web file manager - **FileBrowser** (6633) - Web file manager
- **FoundryVTT Watcher** (30000) - FoundryVTT player login watcher - **FoundryVTT Watcher** (30000) - FoundryVTT player login watcher
@@ -68,25 +67,11 @@ docker compose up -d
- **iPerf3 Server** (5201) - LAN Network Speedtest server - **iPerf3 Server** (5201) - LAN Network Speedtest server
- **RustDesk (hbbr)** - Remote desktop relay - **RustDesk (hbbr)** - Remote desktop relay
- **RustDesk (hbbs)** - Remote desktop signaling - **RustDesk (hbbs)** - Remote desktop signaling
- **Newt** - Notification service - **Newt** - Tunneloing service to offaite reverse proxy
- **RackNerd API Converter** (5000) - VPS monitoring API - **RackNerd API Converter** (5000) - VPS monitoring API
- **Speedtest Database** - MariaDB for speedtest - **Speedtest Database** - MariaDB for speedtest
- **Speedtest Tracker** (8180) - Network monitoring - **Speedtest Tracker** (8180) - Network monitoring
- **Watchtower** - Container updates - **Watchtower** - Container updates
- **Whisper** - Speech Recognition System
### 💻 Proxmox Host
The core of this environment is a Proxmox host that orchestrates multiple services using both VMs and LXCs for resource isolation and management. The services currently running include:
- **AdGuard** - Network-wide ad and tracker blocking service.
- **Vaultwarden** - Self-hosted Bitwarden server for secure password management.
- **Immich** - Self-hosted, open-source photo and video backup solution.
- **n8n** - Workflow automation tool for connecting apps and services.
- **HAOS (Home Assistant)** - VM dedicated to home automation.
- **Wordpress** - Content management system for website hosting.
- **FoundryVTT** - Self-hosted virtual tabletop for role-playing games.
- **Crafty Controller** - Server manager for Minecraft.
- **Nextcloud OS** - Platform for private file hosting and collaboration.
## 🏗️ Architecture ## 🏗️ Architecture
@@ -97,7 +82,7 @@ The stack is organized into logical service groups:
├── docker-compose.yml # Main orchestration for ephemeral services ├── docker-compose.yml # Main orchestration for ephemeral services
├── .env # Environment variables ├── .env # Environment variables
├── .env.template # Template for new deployments ├── .env.template # Template for new deployments
├── services/ ├── Services/
│ ├── filebrowser/ │ ├── filebrowser/
│ ├── homepage/ │ ├── homepage/
│ └── ... # Other stateless services │ └── ... # Other stateless services

View File

@@ -9,7 +9,7 @@ services:
- TZ=${TZ} - TZ=${TZ}
volumes: volumes:
- /docker-local/Arrs/Bazarr/config:/config - /docker-local/Arrs/Bazarr/config:/config
- /data/media:/data/media - /data/:/data/
ports: ports:
- 6767:6767 - 6767:6767
networks: networks:
@@ -51,8 +51,6 @@ services:
image: fallenbagel/jellyseerr:latest image: fallenbagel/jellyseerr:latest
container_name: jellyseerr container_name: jellyseerr
environment: environment:
- PUID=1000
- PGID=1000
- LOG_LEVEL=debug - LOG_LEVEL=debug
- TZ=${TZ} - TZ=${TZ}
volumes: volumes:
@@ -65,22 +63,22 @@ services:
ipv4_address: 172.20.0.14 ipv4_address: 172.20.0.14
restart: unless-stopped restart: unless-stopped
lidarr-plugins: lidarr:
image: ghcr.io/hotio/lidarr:pr-plugins image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr-plugins container_name: lidarr
environment: environment:
- PUID:1000 - PUID=1000
- PGID:1000 - PGID=1000
- TZ:${TZ} - TZ=${TZ}
volumes: volumes:
- /docker-local/Arrs/Lidarr-Plugins/config:/config - /docker-local/Arrs/Lidarr/config:/config
- /data/torrents:/data/torrents - /data/:/data/
- /data/music:/data/music - /data/torrents/:/downloads
ports: ports:
- 8687:8686 - 8686:8686
networks: networks:
arr_network: arr_network:
ipv4_address: 172.20.0.17 ipv4_address: 172.20.0.7
restart: unless-stopped restart: unless-stopped
prowlarr: prowlarr:
@@ -109,7 +107,7 @@ services:
- WEBUI_PORT=8080 - WEBUI_PORT=8080
volumes: volumes:
- ./services/qBittorrent/config:/config - ./services/qBittorrent/config:/config
- /data/torrents:/data/torrents - /data/torrents:/downloads
ports: ports:
- 7070:8080 - 7070:8080
- 56881:6881 - 56881:6881
@@ -128,7 +126,8 @@ services:
- PGID=1000 - PGID=1000
volumes: volumes:
- /docker-local/Arrs/Radarr/config:/config - /docker-local/Arrs/Radarr/config:/config
- /data:/data - /data/:/data/
- /data/torrents/:/downloads
ports: ports:
- 7878:7878 - 7878:7878
networks: networks:
@@ -146,6 +145,7 @@ services:
volumes: volumes:
- /docker-local/Arrs/Sonarr/config:/config - /docker-local/Arrs/Sonarr/config:/config
- /data:/data - /data:/data
- /data/torrents:/downloads
ports: ports:
- 8989:8989 - 8989:8989
networks: networks:
@@ -154,6 +154,21 @@ services:
restart: unless-stopped restart: unless-stopped
# Music & Scrobbling # Music & Scrobbling
beets:
image: lscr.io/linuxserver/beets:latest
container_name: beets
environment:
- PUID=1000
- PGID=1000
- TZ=${TZ}
volumes:
- /docker-local/beets/config:/config
- /data/music:/music
- /data/downloads:/downloads
ports:
- 8337:8337
restart: unless-stopped
maloja: maloja:
image: "krateng/maloja:latest" image: "krateng/maloja:latest"
container_name: maloja container_name: maloja
@@ -199,7 +214,7 @@ services:
image: gitea.kansaigaijin.com/kansaigaijin/majola-lidarr-importer:latest image: gitea.kansaigaijin.com/kansaigaijin/majola-lidarr-importer:latest
container_name: maloja-lidarr-importer-api container_name: maloja-lidarr-importer-api
volumes: volumes:
- ./services/maloja_lidarr_api/logs:/app/logs - ./logs:/app/logs
ports: ports:
- "5110:5000" - "5110:5000"
environment: environment:
@@ -207,10 +222,22 @@ services:
- SOURCE_API_KEY=${SOURCE_API_KEY} - SOURCE_API_KEY=${SOURCE_API_KEY}
restart: "unless-stopped" restart: "unless-stopped"
pinchflat:
image: ghcr.io/kieraneglin/pinchflat:latest
container_name: pinchflat
environment:
- TZ=${TZ}
ports:
- '8945:8945'
volumes:
- /docker-local/pinchflat/config:/config
- /data/torrents/:/downloads
slskd: slskd:
image: slskd/slskd image: slskd/slskd
container_name: slskd container_name: slskd
hostname: slskd hostname: slskd
# user: 1000:1000
environment: environment:
- TZ=${TZ} - TZ=${TZ}
- SLSKD_REMOTE_CONFIGURATION=true - SLSKD_REMOTE_CONFIGURATION=true
@@ -223,11 +250,21 @@ services:
volumes: volumes:
- /docker-local/slskd:/app - /docker-local/slskd:/app
- /data:/data - /data:/data
- /data/torrents/complete/SLSKD:/data/downloads - /data/torrents/slskd_downloads:/downloads
- /data/torrents/incomplete:/incomplete - /data/torrents/incomplete:/incomplete
networks: restart: unless-stopped
arr_network:
ipv4_address: 172.20.0.10 soularr:
image: mrusse08/soularr:latest
container_name: soularr
hostname: soularr
user: 1000:1000
environment:
- TZ=${TZ}
- SCRIPT_INTERVAL=300
volumes:
- /data/torrents/slskd_downloads:/downloads
- ./Services/soularr:/data
restart: unless-stopped restart: unless-stopped
# Document Management # Document Management
@@ -266,54 +303,6 @@ services:
- "--chromium-allow-list=file:///tmp/.*" - "--chromium-allow-list=file:///tmp/.*"
restart: unless-stopped restart: unless-stopped
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
volumes:
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
shm_size: 128mb
restart: always
onlyoffice: onlyoffice:
image: onlyoffice/documentserver:latest image: onlyoffice/documentserver:latest
container_name: onlyoffice container_name: onlyoffice
@@ -398,10 +387,10 @@ services:
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000
PAPERLESS_TIKA_ENDPOINT: http://tika:9998 PAPERLESS_TIKA_ENDPOINT: http://tika:9998
volumes: volumes:
- ./services/paperless/data:/usr/src/paperless/data - ./Services/paperless/data:/usr/src/paperless/data
- ./services/paperless/media:/usr/src/paperless/media - ./Services/paperless/media:/usr/src/paperless/media
- ./services/paperless/export:/usr/src/paperless/export - ./Services/paperless/export:/usr/src/paperless/export
- ./services/paperless/consume:/usr/src/paperless/consume - ./Services/paperless/consume:/usr/src/paperless/consume
ports: ports:
- "8100:8000" - "8100:8000"
depends_on: depends_on:
@@ -464,52 +453,29 @@ services:
- adventurelogserver - adventurelogserver
restart: unless-stopped restart: unless-stopped
grampsweb-jamie: &grampsweb grampsweb: &grampsweb
image: ghcr.io/gramps-project/grampsweb:latest image: ghcr.io/gramps-project/grampsweb:latest
container_name: grampsweb-jamie container_name: Gramps
environment: environment:
- GRAMPSWEB_TREE=Miller Tree GRAMPSWEB_TREE: "Gramps Web"
- GRAMPSWEB_CELERY_CONFIG__broker_url=redis://grampsweb_redis:6379/0 GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://grampsweb_redis:6379/0"
- GRAMPSWEB_CELERY_CONFIG__result_backend=redis://grampsweb_redis:6379/0 GRAMPSWEB_CELERY_CONFIG__result_backend: "redis://grampsweb_redis:6379/0"
- GRAMPSWEB_RATELIMIT_STORAGE_URI=redis://grampsweb_redis:6379/1 GRAMPSWEB_RATELIMIT_STORAGE_URI: redis://grampsweb_redis:6379/1
volumes: volumes:
- /docker-local/gramps-jamie/gramps_users:/app/users - /docker-local/gramps/gramps_users:/app/users
- /docker-local/gramps-jamie/gramps_index:/app/indexdir - /docker-local/gramps/gramps_index:/app/indexdir
- /docker-local/gramps-jamie/gramps_thumb_cache:/app/thumbnail_cache - /docker-local/gramps/gramps_thumb_cache:/app/thumbnail_cache
- /docker-local/gramps-jamie/gramps_cache:/app/cache - /docker-local/gramps/gramps_cache:/app/cache
- /docker-local/gramps-jamie/gramps_secret:/app/secret - /docker-local/gramps/gramps_secret:/app/secret
- /docker-local/gramps-jamie/gramps_db:/app/data/.gramps/grampsdb - /docker-local/gramps/gramps_db:/root/.gramps/grampsdb
- /docker-local/gramps-jamie/gramps_media:/app/media - /docker-local/gramps/gramps_media:/app/media
- /docker-local/gramps-jamie/gramps_tmp:/tmp - /docker-local/gramps/gramps_tmp:/tmp
ports: ports:
- "5511:5000" - "5511:5000"
depends_on: depends_on:
- grampsweb_redis - grampsweb_redis
restart: always restart: always
grampsweb-helen: &grampsweb
image: ghcr.io/gramps-project/grampsweb:latest
container_name: grampsweb-helen
environment:
- GRAMPSWEB_TREE=Heta Tree
- GRAMPSWEB_CELERY_CONFIG__broker_url=redis://grampsweb_redis:6379/0
- GRAMPSWEB_CELERY_CONFIG__result_backend=redis://grampsweb_redis:6379/0
- GRAMPSWEB_RATELIMIT_STORAGE_URI=redis://grampsweb_redis:6379/1
volumes:
- /docker-local/gramps-helen/gramps_users:/app/users
- /docker-local/gramps-helen/gramps_index:/app/indexdir
- /docker-local/gramps-helen/gramps_thumb_cache:/app/thumbnail_cache
- /docker-local/gramps-helen/gramps_cache:/app/cache
- /docker-local/gramps-helen/gramps_secret:/app/secret
- /docker-local/gramps-helen/gramps_db:/root/.gramps/grampsdb
- /docker-local/gramps-helen/gramps_media:/app/media
- /docker-local/gramps-helen/gramps_tmp:/tmp
ports:
- "5512:5000"
depends_on:
- grampsweb_redis
restart: always
grampsweb_celery: grampsweb_celery:
<<: *grampsweb <<: *grampsweb
container_name: grampsweb_celery container_name: grampsweb_celery
@@ -551,8 +517,8 @@ services:
ports: ports:
- "4000:4000" - "4000:4000"
volumes: volumes:
- ./services/litellm/config.yaml:/app/config.yaml - ./services/litellm/litellm-config.yaml:/app/config.yaml
- ./services/litellm/logs:/app/logs - ./services/litellm/litellm-logs:/app/logs
environment: environment:
- LITELLM_CONFIG=/app/config.yaml - LITELLM_CONFIG=/app/config.yaml
- GROQ_API_KEY=${GROQ_API_KEY} - GROQ_API_KEY=${GROQ_API_KEY}
@@ -618,23 +584,6 @@ services:
restart: unless-stopped restart: unless-stopped
# System Utilities # System Utilities
bytestash:
image: "ghcr.io/jordan-dalby/bytestash:latest"
container_name: bytestash
restart: always
volumes:
- /docker-local/bytestash/snippets:/data/snippets
ports:
- "5661:5000"
environment:
BASE_PATH: ""
JWT_SECRET: ${BYTE_JWT_SECRET}
TOKEN_EXPIRY: 24h
ALLOW_NEW_ACCOUNTS: "false"
DEBUG: "true"
DISABLE_ACCOUNTS: "false"
DISABLE_INTERNAL_ACCOUNTS: "false"
dockerproxy: dockerproxy:
image: ghcr.io/tecnativa/docker-socket-proxy:latest image: ghcr.io/tecnativa/docker-socket-proxy:latest
container_name: dockerproxy container_name: dockerproxy
@@ -667,7 +616,7 @@ services:
restart: unless-stopped restart: unless-stopped
foundry: foundry:
build: ./services/foundry-login build: ./Services/foundry-login
container_name: foundry-login container_name: foundry-login
environment: environment:
- SSH_HOST=${FOUNDRY_SSH_HOST} - SSH_HOST=${FOUNDRY_SSH_HOST}
@@ -765,7 +714,7 @@ services:
restart: unless-stopped restart: unless-stopped
racknerd-api-converter: racknerd-api-converter:
build: ./services/racknerd-converter build: ./Services/racknerd-converter
container_name: RacknerdConverter container_name: RacknerdConverter
environment: environment:
- RACKNERD_API_KEY=${RACKNERD_API_KEY} - RACKNERD_API_KEY=${RACKNERD_API_KEY}
@@ -838,37 +787,6 @@ services:
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
whisper:
container_name: subgen
tty: true
image: mccloud/subgen:latest
environment:
- WHISPER_MODEL=large-v3-turbo
- WHISPER_THREADS=4
- JELLYFINTOKEN=${JELLYFIN_APIKEY}
- JELLYFINSERVER=${JELLYFIN_URL}
- WEBHOOKPORT=9000
- DEBUG=True
- TRANSCRIBE_OR_TRANSLATE=translate
- NAMESUBLANG=en
- TRANSCRIBE_DEVICE=cpu
- CLEAR_VRAM_ON_COMPLETE=True
- PROCADDEDMEDIA=True
- PROCMEDIAONPLAY=False
- UPDATE=True
- HF_HUB_DISABLE_SYMLINKS_WARNING=1
- HF_HUB_DISABLE_SYMLINKS_SUPPORT=1
- XDG_CACHE_HOME=/subgen/models
volumes:
- /data/tv:/data/tv
- /data/movies:/data/movies
- ./services/subgen/models:/subgen/models
ports:
- 9666:9000
networks:
arr_network:
ipv4_address: 172.20.0.15
networks: networks:
arr_network: arr_network:
driver: bridge driver: bridge
@@ -890,6 +808,3 @@ volumes:
adventurelog_adventurelog_media: adventurelog_adventurelog_media:
external: true external: true
onlyoffice: onlyoffice:
soulsync:
driver: local
model-cache: