commit ed2bc98981005269f054f1e60cd89b2096fafbd6 Author: jrodriiguezg Date: Sat Aug 15 15:30:59 2026 +0200 Subir archivos a "/" diff --git a/README.md b/README.md new file mode 100644 index 0000000..04257c3 --- /dev/null +++ b/README.md @@ -0,0 +1,137 @@ +# 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-composes/ +│ +├── 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 +├── rtc_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 + ├── navidrome2_compose.yaml + └── arcane_compose.yaml +``` + +--- + +## Services + +### Elitedesk — Primary Server + +| Compose File | Service | Port | Public URL | Description | +|---|---|---|---|---| +| `gitea_compose.yaml` | **Gitea** | 3000 | [git.jrodriiguezg.link](https://git.jrodriiguezg.link) | Self-hosted Git service | +| `homeassistant_compose.yaml` | **Home Assistant** | 8123 | [hamaca.jrodriiguezg.link](https://hamaca.jrodriiguezg.link) | Home automation platform | +| `jellyfin_compose.yaml` | **Jellyfin** | 8096 | [jellyfin.jrodriiguezg.link](https://jellyfin.jrodriiguezg.link) | Media server | +| `odoo_compose.yaml` | **Odoo** | 8072 | [jotarcloud.jrodriiguezg.link](https://jotarcloud.jrodriiguezg.link) | ERP / test instance | +| `synapse_compose.yaml` | **Synapse** | 8008 | [macarron.jrodriiguezg.link](https://macarron.jrodriiguezg.link) | Matrix homeserver | +| `jwt_compose.yaml` | **JWT** | 8083 | [jwt.jrodriiguezg.link](https://jwt.jrodriiguezg.link) | JWT auth service (Synapse calls) | +| `navidrome_compose.yaml` | **Navidrome** | 4533 | [navidrome.jrodriiguezg.link](https://navidrome.jrodriiguezg.link) | Music streaming server | +| `rtc_compose.yaml` | **RTC** | 8083 | [rtc.jrodriiguezg.link](https://rtc.jrodriiguezg.link) | WebRTC service (Matrix coturn) | +| `kroki_compose.yaml` | **Kroki** | 8079 | — | Diagram-as-code rendering | +| `drawio_compose.yaml` | **Draw.io** | 8091 | [drawio.jrodriiguezg.link](https://drawio.jrodriiguezg.link) | Self-hosted diagram editor | +| `excalidraw_compose.yaml` | **Excalidraw** | 8071 | [excal.jrodriiguezg.link](https://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](https://vauwar.jrodriiguezg.link) | Self-hosted Bitwarden-compatible vault | + +### 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](https://hmrr.jrodriiguezg.link) | Home lab dashboard | +| `adguard_compose.yaml` | **AdGuard Home** | 4533 | — | Network-wide DNS ad blocker | +| `navidrome2_compose.yaml` | **Navidrome 2** | 7575 | — | Secondary Navidrome instance | +| `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: + +```bash +git clone https://github.com/jrodriiguezg/docker-composes +cd docker-composes + +# 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](https://jrodriiguezg.link) · [GitHub](https://github.com/jrodriiguezg) + +--- + +© 2026 Juan Raul Rodriguez Gil