Skip to content

⚙️ Services — Core Homelab Megastack

Host: Homelab · Compose: Homelab/Docker/services/compose.yaml
Stack name: services

[!NOTE] Update Available: Updates for this stack are pending in: renovate/docker-dependencies, renovate/major-docker-dependencies.

1. Overview

The largest compose file in the homelab. This is the main services megastack containing general-purpose applications: a homepage dashboard, document management, automation, databases, monitoring tools, developer tools, and various utilities. All services share common external Docker networks and are routed through Traefik or Cloudflare Tunnel.


2. Architecture & Services

Service Image Port Role
code-server ghcr.io/linuxserver/code-server:4.137.0 8443 Browser-based VS Code IDE
dad_magicmirror karsten13/magicmirror:v2.37.0 MagicMirror display for Dad
database mariadb:11.8.9 3306
database_mysql mysql:5.7 3307 Legacy MySQL 5.7 instance
epicgames-freegames charlocharlie/epicgames-freegames:c64d897b9ca8113ea4933ff18d86a3b0f726827a Auto-claim Epic Games free games
ftp delfer/alpine-ftp-server:latest@sha256:60bb774d8408d9d4d5c74d05d1c086a34ce192c6c1a142ffac268cac0dbc6fac 21, 21000-21010 FTP server for Paperless intake
gatus twinproduction/gatus:v5.36.0 8081 Service health monitoring dashboard
gatus_db 11notes/postgres:17@sha256:6860d92d13eabd73703220ebc9ee401c12922d4eb7715e70adf3b2041768a486 PostgreSQL for Gatus
grafana grafana/grafana:13.2.2 Metrics visualisation (OAuth via Authentik)
granna_magicmirror karsten13/magicmirror:v2.37.0 MagicMirror display for Granna
guacd guacamole/guacd:latest@sha256:2d266a525a72ad55d8ea7cd4ca8342a1b44075759b03660d8684821b3636a922 4822 Apache Guacamole daemon (for Termix)
hass_db 11notes/postgres:17@sha256:6860d92d13eabd73703220ebc9ee401c12922d4eb7715e70adf3b2041768a486 5431 PostgreSQL for Home Assistant
homehub ghcr.io/surajverma/homehub:0.2.3.4 5372 Home management hub
homepage ghcr.io/gethomepage/homepage:v1.13.2 3022 Primary homelab dashboard
influxdb_peanut influxdb:2.9.1 InfluxDB for UPS metrics
it-tools ghcr.io/corentinth/it-tools:2024.10.22-7ca5933 8075 Online IT tools collection
meilisearch getmeili/meilisearch:v1.53.2 7700 Full-text search engine
n8n n8nio/n8n:2.40.3 5678 Workflow automation
node-red nodered/node-red:4.1.15-20 1880 Visual flow programming
omni-tools iib0011/omni-tools:0.6.0 38080 All-in-one web tools
open-webui ghcr.io/open-webui/open-webui:latest@sha256:1a6399d237dc392a2313e0ca826020b3fd5d22536357840eb63393d18dc8b924 AI chat UI (Ollama frontend)
paperless-ng ghcr.io/paperless-ngx/paperless-ngx:3.1.3 8839 Document management system
peanut brandawg93/peanut:6.0.0 28080 UPS monitoring dashboard
pgadmin dpage/pgadmin4:9.18.0 PostgreSQL admin UI (OAuth via Authentik)
postgres postgres:17 5432 General-purpose PostgreSQL
pulse rcourtman/pulse:6.4.2 7655 Proxmox monitoring dashboard
recipes vabene1111/recipes:2.6.15 8181 Recipe manager (Mealie alternative)
recipes_db 11notes/postgres:17@sha256:6860d92d13eabd73703220ebc9ee401c12922d4eb7715e70adf3b2041768a486 PostgreSQL for Recipes
redis redis:6.2 6379 General-purpose Redis cache
remmina lscr.io/linuxserver/remmina:1.4.35dfsg-0ubuntu5.1-ls165 Remote desktop client (browser-based)
scrutiny ghcr.io/analogj/scrutiny:master-web@sha256:192656ce791dc3e5bda7f7bf81cd3cb9f77ab2cde42a9bd0d8cac442b7e8bee1 8180 SMART disk health monitoring
simple-dash busybox:1.38.0 34566 Minimal HTTP static file server (homelab dash)
speedtest_db 11notes/postgres:17@sha256:6860d92d13eabd73703220ebc9ee401c12922d4eb7715e70adf3b2041768a486 PostgreSQL for Speedtest Tracker
speedtest-tracker lscr.io/linuxserver/speedtest-tracker:1.15.0 8448, 8870 Scheduled internet speed tests
stirling-pdf frooodle/s-pdf:2.14.3 8085 PDF manipulation tools
termix ghcr.io/lukegus/termix:release-2.7.1 Web-based terminal / remote desktop (Guacamole-based)
whatsupdocker getwud/wud:8.4.0 3000

3. Networking

  • backend — —
  • cloudflare-net — —
  • database — —
  • gatus-net — —
  • internal — —
  • servers — —
  • termix-net — —
  • traefik — —

4. Persistent Storage

| Container | Host Path / Volume | Description | |---|---|---|| | code-server | /docker | — | | code-server | /docker/services/code/config | VS Code settings and extensions | | dad_magicmirror | /docker/data/services/magicmirror/dad/config | — | | dad_magicmirror | /docker/data/services/magicmirror/dad/images | — | | dad_magicmirror | /docker/data/services/magicmirror/shared/css | — | | dad_magicmirror | /docker/data/services/magicmirror/shared/modules | — | | database | /docker/services/mariadb | MariaDB data | | database_mysql | /docker/services/mysql | — | | epicgames-freegames | /docker/services/epicgames/config/ | — | | ftp | /docker/services/paperless-ng/consume | — | | gatus | /docker/data/services/gatus | — | | gatus_db | /backup/database/services/gatus | — | | gatus_db | gatus.postgres.etc | — | | gatus_db | gatus.postgres.var | — | | grafana | /docker/services/grafana | Grafana dashboards and datasources | | granna_magicmirror | /docker/data/services/magicmirror/granna/config | — | | granna_magicmirror | /docker/data/services/magicmirror/granna/images | — | | granna_magicmirror | /docker/data/services/magicmirror/shared/css | — | | granna_magicmirror | /docker/data/services/magicmirror/shared/modules | — | | hass_db | /backup/database/services/hass | — | | hass_db | hass.postgres.etc | — | | hass_db | hass.postgres.var | — | | homehub | /docker/data/services/homehub/config.yml | — | | homehub | /docker/data/services/homehub/data | — | | homehub | /docker/data/services/homehub/media | — | | homehub | /docker/data/services/homehub/pdfs | — | | homehub | /docker/data/services/homehub/uploads | — | | homepage | /Storage | — | | homepage | /docker/services/homepage/homepage-conf | Homepage config (YAML) | | homepage | /docker/services/homepage/icons/ | — | | homepage | /docker/services/homepage/images/ | — | | homepage | /var/run/docker.sock | — | | influxdb_peanut | /docker/services/penut/influxdb | — | | meilisearch | /docker/services/meilisearch | Search index | | n8n | /docker/services/n8n | Workflows and credentials | | node-red | /docker/services/nodered/data | Flow definitions | | open-webui | open-webui | — | | paperless-ng | /docker/services/paperless-ng/consume | — | | paperless-ng | /docker/services/paperless-ng/data | — | | paperless-ng | /docker/services/paperless-ng/export | — | | paperless-ng | /docker/services/paperless-ng/media | — | | peanut | /docker/services/penut/config | — | | pgadmin | /docker/gui/obsidian/files | — | | pgadmin | pgadmin-data | — | | postgres | /docker/services/database/postgres | Main PostgreSQL data | | pulse | /docker/data/services/pulse | — | | recipes | /docker/data/services/recipes/mediafiles | — | | recipes | /docker/data/services/recipes/staticfiles | — | | recipes_db | /backup/database/services/recipes | — | | recipes_db | recipes.postgres.etc | — | | recipes_db | recipes.postgres.var | — | | remmina | /docker/data/services/remmina/config | — | | scrutiny | /docker/services/scrutiny/config | Disk health history | | simple-dash | /docker/data/services/dash | — | | speedtest_db | /backup/database/services/speedtest | — | | speedtest_db | speedtest.postgres.etc | — | | speedtest_db | speedtest.postgres.var | — | | speedtest-tracker | /docker/services/speedtest-tracker/config | Speed test history | | speedtest-tracker | /docker/services/speedtest-tracker/ssl-keys | — | | stirling-pdf | /docker/stirling/extraConfigs | — | | stirling-pdf | /docker/stirling/trainingData | — | | termix | /docker/data/services/termix | — | | whatsupdocker | /var/run/docker.sock | — |


5. Environment Variables

Variable Service Description
PGID code-server
PROXY_DOMAIN code-server
PUID code-server
TZ code-server
MYSQL_DATABASE database
MYSQL_PASSWORD database
MYSQL_ROOT_PASSWORD database
MYSQL_USER database
MYSQL_ROOT_PASSWORD database_mysql
TZ epicgames-freegames
ADDRESS ftp
USERS ftp
POSTGRES_BACKUP_RETENTION gatus_db
POSTGRES_BACKUP_SCHEDULE gatus_db
POSTGRES_PASSWORD gatus_db
TZ gatus_db
GF_AUTH_GENERIC_OAUTH_API_URL grafana
GF_AUTH_GENERIC_OAUTH_AUTH_URL grafana
GF_AUTH_GENERIC_OAUTH_CLIENT_ID grafana
GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET grafana
GF_AUTH_GENERIC_OAUTH_ENABLED grafana
GF_AUTH_GENERIC_OAUTH_NAME grafana
GF_AUTH_GENERIC_OAUTH_SCOPES grafana
GF_AUTH_GENERIC_OAUTH_SKIP_ORG_ROLE_SYNC grafana
GF_AUTH_GENERIC_OAUTH_TOKEN_URL grafana
GF_AUTH_OAUTH_AUTO_LOGIN grafana
GF_AUTH_SIGNOUT_REDIRECT_URL grafana
GF_SERVER_ROOT_URL grafana
POSTGRES_BACKUP_RETENTION hass_db
POSTGRES_BACKUP_SCHEDULE hass_db
POSTGRES_PASSWORD hass_db
TZ hass_db
FLASK_ENV homehub
SECRET_KEY homehub Flask secret key
HOMEPAGE_ALLOWED_HOSTS homepage
HOMEPAGE_PROXY_DISABLE_IPV6 homepage
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN influxdb_peanut
DOCKER_INFLUXDB_INIT_BUCKET influxdb_peanut
DOCKER_INFLUXDB_INIT_MODE influxdb_peanut
DOCKER_INFLUXDB_INIT_ORG influxdb_peanut
DOCKER_INFLUXDB_INIT_PASSWORD influxdb_peanut
DOCKER_INFLUXDB_INIT_USERNAME influxdb_peanut
MEILI_MASTER_KEY meilisearch Search engine admin key
GENERIC_TIMEZONE n8n
N8N_HOST n8n
N8N_PORT n8n
N8N_PROTOCOL n8n
NODE_ENV n8n
WEBHOOK_URL n8n
TZ node-red
PAPERLESS_REDIS paperless-ng
PAPERLESS_TIME_ZONE paperless-ng
PAPERLESS_URL paperless-ng
AUTH_DISABLED peanut
INFLUX_BUCKET peanut
INFLUX_HOST peanut
INFLUX_INTERVAL peanut
INFLUX_ORG peanut
INFLUX_TOKEN peanut
WEB_PORT peanut
PGADMIN_CONFIG_AUTHENTICATION_SOURCES pgadmin
PGADMIN_CONFIG_MASTER_PASSWORD_HOOK pgadmin
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED pgadmin
PGADMIN_CONFIG_OAUTH2_AUTO_CREATE_USER pgadmin
PGADMIN_CONFIG_OAUTH2_CONFIG pgadmin
PGADMIN_DEFAULT_EMAIL pgadmin
PGADMIN_DEFAULT_PASSWORD pgadmin
POSTGRES_DB postgres
POSTGRES_PASSWORD postgres
POSTGRES_USER postgres
TZ pulse
POSTGRES_BACKUP_RETENTION recipes_db
POSTGRES_BACKUP_SCHEDULE recipes_db
POSTGRES_PASSWORD recipes_db
TZ recipes_db
AUDIO remmina
PGID remmina
PUID remmina
TZ remmina
SCRUTINY_WEB_INFLUXDB_HOST scrutiny
POSTGRES_BACKUP_RETENTION speedtest_db
POSTGRES_BACKUP_SCHEDULE speedtest_db
POSTGRES_PASSWORD speedtest_db
TZ speedtest_db
APP_KEY speedtest-tracker
APP_URL speedtest-tracker
DB_CONNECTION speedtest-tracker
DB_DATABASE speedtest-tracker
DB_HOST speedtest-tracker
DB_PASSWORD speedtest-tracker
DB_PORT speedtest-tracker
DB_USERNAME speedtest-tracker
DISPLAY_TIMEZONE speedtest-tracker
PGID speedtest-tracker
PUID speedtest-tracker
SPEEDTEST_SCHEDULE speedtest-tracker
DOCKER_ENABLE_SECURITY stirling-pdf
INSTALL_BOOK_AND_ADVANCED_HTML_OPS stirling-pdf
LANGS stirling-pdf
PORT termix

6. Access & Usage

Service URL
Homepage https://home-lab.micky.id.au or https://lab.m1ckyb.com
Gatus https://gatus.home-lab.micky.id.au
Grafana https://grafana.m1ckyb.com
Code Server https://code.home-lab.micky.id.au
Paperless https://paperless.home-lab.micky.id.au
N8N https://n8n.m1ckyb.com
Speedtest https://speedtest.home-lab.micky.id.au
Scrutiny https://scrutiny.home-lab.micky.id.au
IT Tools https://tools.home-lab.micky.id.au
Pulse (Proxmox) https://pulse.home-lab.micky.id.au
# Start
docker compose -f Homelab/Docker/services/compose.yaml up -d

# Check specific service
docker compose -f Homelab/Docker/services/compose.yaml logs -f grafana

7. Maintenance & Backup

# Update
docker compose -f Homelab/Docker/services/compose.yaml pull
docker compose -f Homelab/Docker/services/compose.yaml up -d

# Backup (use backup=services label to identify containers)
rsync -av /docker/services/ /backup/services/

# Database backups (gatus, hass, recipes, speedtest run auto-backups every 2h)
ls /backup/database/services/