⚙️ Services — Core Homelab Megastack
Host: Homelab · Compose:
Homelab/Docker/services/compose.yaml
Stack name:services
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 |
linuxserver/code-server:4.123.0 |
8443 |
Browser-based VS Code IDE |
dad_magicmirror |
karsten13/magicmirror:v2.36.0 |
— | MagicMirror display for Dad |
database (MariaDB) |
mariadb:11.8.8 |
3306 |
General MariaDB database |
database_mysql |
mysql:5.7 |
3307 |
Legacy MySQL 5.7 instance |
epicgames-freegames |
charlocharlie/epicgames-freegames |
— | Auto-claim Epic Games free games |
ftp |
delfer/alpine-ftp-server |
21 |
FTP server for Paperless intake |
gatus |
twinproduction/gatus:v5.36.0 |
8081 |
Service health monitoring dashboard |
gatus_db |
11notes/postgres:17 |
— | PostgreSQL for Gatus |
grafana |
grafana/grafana:13.0.2 |
— | Metrics visualisation (OAuth via Authentik) |
granna_magicmirror |
karsten13/magicmirror:v2.36.0 |
— | MagicMirror display for Granna |
guacd |
guacamole/guacd |
4822 |
Apache Guacamole daemon (for Termix) |
hass_db |
11notes/postgres:17 |
5431 |
PostgreSQL for Home Assistant |
homehub |
surajverma/homehub:0.2.3.3 |
5372 |
Home management hub |
homepage |
gethomepage/homepage:v1.13.2 |
3022 |
Primary homelab dashboard |
influxdb_peanut |
influxdb:2.9.1 |
— | InfluxDB for UPS metrics |
it-tools |
corentinth/it-tools:2024.10.22 |
8075 |
Online IT tools collection |
meilisearch |
getmeili/meilisearch:v1.46.1 |
7700 |
Full-text search engine |
n8n |
n8nio/n8n:2.26.3 |
5678 |
Workflow automation |
node-red |
nodered/node-red:4.1.11 |
1880 |
Visual flow programming |
omni-tools |
iib0011/omni-tools:0.6.0 |
38080 |
All-in-one web tools |
open-webui |
open-webui/open-webui |
— | AI chat UI (Ollama frontend) |
paperless-ng |
paperless-ngx/paperless-ngx:2.20.15 |
8839 |
Document management system |
peanut |
brandawg93/peanut:6.0.0 |
28080 |
UPS monitoring dashboard |
pgadmin |
dpage/pgadmin4:9.15.0 |
— | PostgreSQL admin UI (OAuth via Authentik) |
postgres |
postgres:17 |
5432 |
General-purpose PostgreSQL |
pulse |
rcourtman/pulse:5.1.35 |
7655 |
Proxmox monitoring dashboard |
recipes |
vabene1111/recipes:2.6.9 |
8181 |
Recipe manager (Mealie alternative) |
recipes_db |
11notes/postgres:17 |
— | PostgreSQL for Recipes |
redis |
redis:6.2 |
6379 |
General-purpose Redis cache |
remmina |
linuxserver/remmina:1.4.35 |
— | Remote desktop client (browser-based) |
scrutiny |
analogj/scrutiny:master-web |
8180 |
SMART disk health monitoring |
simple-dash |
busybox:1.38.0 |
34566 |
Minimal HTTP static file server (homelab dash) |
speedtest-tracker |
linuxserver/speedtest-tracker:1.14.3 |
8448/8870 |
Scheduled internet speed tests |
speedtest_db |
11notes/postgres:17 |
— | PostgreSQL for Speedtest Tracker |
stirling-pdf |
frooodle/s-pdf:2.12.0 |
8085 |
PDF manipulation tools |
termix |
lukegus/termix:release-2.3.2 |
— | Web-based terminal / remote desktop (Guacamole-based) |
whatsupdocker (wud) |
getwud/wud:8.2.2 |
3000 |
Docker image update notifier |
3. Networking
External networks used by this stack:
| Network | Purpose |
|---|---|
traefik |
Traefik reverse proxy routing |
database |
Shared PostgreSQL/MariaDB access |
internal |
General internal service-to-service |
backend |
Metrics/monitoring access (Prometheus, Grafana) |
cloudflare-net |
Cloudflare Tunnel access |
gatus-net |
Gatus health monitor federation |
termix-net |
Guacd ↔ Termix communication |
4. Persistent Storage
Key paths (see compose for complete list):
| Service | Host Path | Description |
|---|---|---|
code-server |
/docker/services/code/config |
VS Code settings and extensions |
grafana |
/docker/services/grafana |
Grafana dashboards and datasources |
homepage |
/docker/services/homepage/homepage-conf |
Homepage config (YAML) |
meilisearch |
/docker/services/meilisearch |
Search index |
n8n |
/docker/services/n8n |
Workflows and credentials |
node-red |
/docker/services/nodered/data |
Flow definitions |
paperless-ng |
/docker/services/paperless-ng/ |
Documents, media, consume folder |
postgres |
/docker/services/database/postgres |
Main PostgreSQL data |
scrutiny |
/docker/services/scrutiny/config |
Disk health history |
speedtest-tracker |
/docker/services/speedtest-tracker/config |
Speed test history |
MariaDB |
/docker/services/mariadb |
MariaDB data |
5. Environment Variables
Loaded from .env alongside the compose file. Key variables:
| Variable | Service | Description |
|---|---|---|
DB_PASS |
MariaDB, MySQL | Root database passwords |
GATUS_POSTGRES_PASSWORD |
gatus_db |
Gatus DB password |
HASS_POSTGRES_PASSWORD |
hass_db |
Home Assistant DB password |
RECIPES_POSTGRES_PASSWORD |
recipes_db |
Recipes DB password |
SPEEDTEST_POSTGRES_PASSWORD |
speedtest_db |
Speedtest DB password |
FTP_USER |
ftp |
FTP user credentials |
SECRET_KEY |
homehub |
Flask secret key |
MEILI_MASTER_KEY |
meilisearch |
Search engine admin key |
GF_AUTH_GENERIC_OAUTH_* |
grafana |
Authentik OAuth settings |
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/