Files
2026-08-15 16:11:27 +02:00

7.5 KiB

🐳 Self-Hosted Docker Composes

A collection of Docker Compose files for every service running across my home lab infrastructure. Each file is standalone and ready to deploy.

Infrastructure: 2 nodes — HP EliteDesk (primary) · Raspberry Pi 4B (secondary)
Reverse Proxy: Nginx Proxy Manager (NPM)
Tunnel: Cloudflare Tunnel → public *.jrodriiguezg.link domains


Repository Structure

docker-compose/
│
├── README.md
│
├── # ── Elitedesk (primary server) ──────────────────────────
├── gitea_compose.yaml
├── homeassistant_compose.yaml
├── jellyfin_compose.yaml
├── odoo_compose.yaml
├── synapse_compose.yaml
├── jwt_compose.yaml
├── navidrome_compose.yaml
├── kroki_compose.yaml
├── drawio_compose.yaml
├── excalidraw_compose.yaml
├── guacamole_compose.yaml
├── element_compose.yaml
├── picard_compose.yaml
├── lidarr_compose.yaml
├── beets_compose.yaml
├── transmission_compose.yaml
├── vaultwarden_compose.yaml
│
└── # ── Raspberry Pi 4B (secondary node) ────────────────────
    ├── npm_compose.yaml
    ├── homarr_compose.yaml
    ├── adguard_compose.yaml
    └── arcane_compose.yaml

Services

🖥️ Elitedesk — Primary Server

Compose File Service Port Public URL Description
gitea_compose.yaml Gitea 3000 git.jrodriiguezg.link Self-hosted Git service
homeassistant_compose.yaml Home Assistant 8123 hamaca.jrodriiguezg.link Home automation platform
jellyfin_compose.yaml Jellyfin 8096 jellyfin.jrodriiguezg.link Media server
odoo_compose.yaml Odoo 8072 jotarcloud.jrodriiguezg.link ERP / test instance
synapse_compose.yaml Synapse 8008 macarron.jrodriiguezg.link Matrix homeserver
jwt_compose.yaml JWT + RTC 8083 jwt.jrodriiguezg.link · rtc.jrodriiguezg.link JWT auth + WebRTC/coturn (Matrix auxiliaries)
navidrome_compose.yaml Navidrome 4533 navidrome.jrodriiguezg.link Music streaming server
kroki_compose.yaml Kroki 8079 Diagram-as-code rendering
drawio_compose.yaml Draw.io 8091 drawio.jrodriiguezg.link Self-hosted diagram editor
excalidraw_compose.yaml Excalidraw 8071 excal.jrodriiguezg.link Collaborative whiteboard
guacamole_compose.yaml Guacamole 8087 Browser-based remote desktop gateway
element_compose.yaml Element Web 8086 Matrix web client
picard_compose.yaml Picard Web 80 MusicBrainz Picard web UI
lidarr_compose.yaml Lidarr 8686 Music collection manager
beets_compose.yaml Beets 8337 Music library organizer
transmission_compose.yaml Transmission 9091 BitTorrent client
vaultwarden_compose.yaml Vaultwarden 8383 vauwar.jrodriiguezg.link Self-hosted Bitwarden-compatible vault
'vscode_docker_compose.yaml' Vscode + Docker in Docker 8443 Visual studio code web with docker

🍓 Raspberry Pi 4B — Secondary Node

Compose File Service Port Public URL Description
npm_compose.yaml Nginx Proxy Manager 81 Reverse proxy management UI
homarr_compose.yaml Homarr 7575 hmrr.jrodriiguezg.link Home lab dashboard
adguard_compose.yaml AdGuard Home 4533 Network-wide DNS ad blocker
arcane_compose.yaml Arcane 9443

Infrastructure Overview

Internet
    │
    ▼
Cloudflare Tunnel
    │
    ▼
Nginx Proxy Manager (RPI :81)
    │
    ├──► Elitedesk services  (192.168.1.135)
    └──► RPI services        (192.168.1.229)
Node Hardware LAN IP VPN IP
Elitedesk HP EliteDesk 192.168.1.135 100.85.176.113
Raspberry Pi 4B RPi 4B 192.168.1.229 100.75.198.29

Usage

Each compose file is self-contained. Clone the repo and run any service individually:

git clone https://git.jrodriiguezg.link/jrodriiguezg/docker-compose
cd docker-compose

# Example: start Gitea
docker compose -f gitea_compose.yaml up -d

# Example: start NPM on the RPI
docker compose -f npm_compose.yaml up -d

Note

Some services require environment variables or volume paths adjusted to your system. Check the comments inside each compose file before deploying.

Warning

Files may reference Cloudflare Tunnel tokens, secrets, or local paths. Never commit real credentials — use .env files and add them to .gitignore.


Author

Juan Raul Rodriguez Gil — SysAdmin & Infrastructure Engineer
jrodriiguezg.link · GitHub


© 2026 Juan Raul Rodriguez Gil