Add full homelab inventory and remaining home services.
UniFi, Joplin, Glance, Uptime Kuma, Whoogle, Synology packages docs, Proxmox LXC inventory, Portainer stacks, and INVENTORY.md master list. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+33
-39
@@ -1,55 +1,49 @@
|
||||
# Apps — overzicht
|
||||
|
||||
Elke map = **één applicatie**. Bevat `docker-compose.yml`, `.env`, en/of `config/` waar van toepassing.
|
||||
**Volledige inventaris:** [INVENTORY.md](../INVENTORY.md)
|
||||
|
||||
Elke map = één applicatie (`docker-compose.yml`, `.env`, `config/`).
|
||||
|
||||
**NAS-repo:** `/volume1/docker/homelab-configs`
|
||||
**Starten:** `cd apps/<naam> && docker compose up -d`
|
||||
|
||||
## Docker op Synology (192.168.1.211)
|
||||
|
||||
| App | Map | Poort | Container | Data op NAS |
|
||||
|-----|-----|-------|-----------|-------------|
|
||||
| PostgreSQL | [postgres](postgres/) | 5433 | postgres-homelab | `/volume1/docker/postgres/data` |
|
||||
| pgAdmin | [pgadmin](pgadmin/) | 5434 | pgadmin | volume |
|
||||
| Gitea | [gitea](gitea/) | 3000 | gitea | docker volumes |
|
||||
| AdGuard Home | [adguard](adguard/) | 53, 3001 | Adguard | config in repo → `/volume1/docker/Configs/adguard` |
|
||||
| DuckDNS | [duckdns](duckdns/) | — | duckdns | — |
|
||||
| Neo4j | [neo4j](neo4j/) | 49153–49155 | neo4j | `/volume1/docker/neo4j` |
|
||||
| Homarr | [homarr](homarr/) | 4755 | homarr | `/volume1/docker/homarr` |
|
||||
| Portainer | [portainer](portainer/) | 9000 | portainer | `/volume1/docker/portainer` |
|
||||
| Remotely | [remotely](remotely/) | 8080 | remotely | `/volume1/docker/remotely` |
|
||||
| Excalidraw | [excalidraw](excalidraw/) | 3765 | Excalidraw | — |
|
||||
| Guacamole | [guacamole](guacamole/) | 8348 | Guacamole | `/volume1/docker/guacamole` |
|
||||
| Wazuh | [wazuh](wazuh/) | — | — | `/volume1/docker/wazuh` |
|
||||
| HA Voice MCP | [ha-voice-control](ha-voice-control/) | 8765 | ha-voice-control | build |
|
||||
| Monitoring | [monitoring](monitoring/) | 9090, 3002, 9187 | prometheus, grafana, exporter | volumes |
|
||||
| Homelab Command | [homelab-command](homelab-command/) | 8765 | homelab-command | aparte repo |
|
||||
| App | Poort | Map |
|
||||
|-----|-------|-----|
|
||||
| [postgres](postgres/) | 5433 | DB |
|
||||
| [pgadmin](pgadmin/) | 5434 | DB UI |
|
||||
| [gitea](gitea/) | 3000 | Git |
|
||||
| [adguard](adguard/) | 53, 3001 | DNS |
|
||||
| [duckdns](duckdns/) | — | DDNS |
|
||||
| [neo4j](neo4j/) | 49153+ | Graph |
|
||||
| [homarr](homarr/) | 4755 | Dashboard |
|
||||
| [portainer](portainer/) | 9000 | Docker UI |
|
||||
| [remotely](remotely/) | 8080 | Remote |
|
||||
| [excalidraw](excalidraw/) | 3765 | Whiteboard |
|
||||
| [guacamole](guacamole/) | 8348 | Remote desktop |
|
||||
| [monitoring](monitoring/) | 9090, 3002 | Prometheus/Grafana |
|
||||
| [homelab-command](homelab-command/) | 8765 | aparte repo |
|
||||
| [wazuh](wazuh/) | — | SIEM |
|
||||
| [ha-voice-control](ha-voice-control/) | 8765 | HA MCP |
|
||||
| [unifi](unifi/) | 8443 | UniFi (+ 192.168.1.24) |
|
||||
| [joplin](joplin/) | 22300 | Notes |
|
||||
| [glance](glance/) | 8081 | Dashboard |
|
||||
| [uptime-kuma](uptime-kuma/) | 3001 | Uptime |
|
||||
| [whoogle](whoogle/) | 5000 | Search |
|
||||
|
||||
## Media / automation (configs, draaien op Proxmox LXC)
|
||||
## Media / HA (config)
|
||||
|
||||
| App | Map | Config-bron op NAS |
|
||||
|-----|-----|-------------------|
|
||||
| Sonarr | [sonarr](sonarr/) | `/volume1/docker/Configs/Sonarr` |
|
||||
| Radarr | [radarr](radarr/) | `/volume1/docker/Configs/Radarr` |
|
||||
| Prowlarr | [prowlarr](prowlarr/) | `/volume1/docker/Configs/Prowlarr` |
|
||||
| qBittorrent | [qbittorrent](qbittorrent/) | `/volume1/docker/Configs/QBitTorrent` |
|
||||
| SABnzbd | [sabnzbd](sabnzbd/) | `/volume1/docker/Configs/Sabnzb` |
|
||||
| Home Assistant | [home-assistant](home-assistant/) | `/volume1/docker/Configs/HA/config` |
|
||||
[sonarr](sonarr/) · [radarr](radarr/) · [prowlarr](prowlarr/) · [qbittorrent](qbittorrent/) · [sabnzbd](sabnzbd/) · [home-assistant](home-assistant/)
|
||||
|
||||
## Proxmox hosts
|
||||
## Proxmox
|
||||
|
||||
| Host | Map | IP |
|
||||
|------|-----|-----|
|
||||
| pve (RTX 3090, PVE 9) | [proxmox/hosts/pve](proxmox/hosts/pve/) | 192.168.1.216 |
|
||||
| dell-proxmox (Dell, PVE 8) | [proxmox/hosts/dell-proxmox](proxmox/hosts/dell-proxmox/) | 192.168.1.56 |
|
||||
[proxmox/](proxmox/) — hosts `pve` + `dell-proxmox`, [LXC-overzicht](proxmox/lxc-inventory.md)
|
||||
|
||||
Zie [proxmox/README.md](proxmox/README.md).
|
||||
## Synology packages
|
||||
|
||||
## Reverse proxy
|
||||
[synology/](synology/) — Jellyfin, Plex, Tailscale, …
|
||||
|
||||
Nginx-configs: [../infrastructure/nginx/](../infrastructure/nginx/)
|
||||
## Infra
|
||||
|
||||
## Aparte Gitea-repos
|
||||
|
||||
- **homelab-command** — dashboard, Grafana-build, NATS mesh
|
||||
- **ha-voice-control-mcp** — MCP server
|
||||
[../infrastructure/nginx/](../infrastructure/nginx/)
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
# Glance
|
||||
|
||||
Dashboard. NAS-map `Configs/glance` was leeg — voeg `config/glance.yml` toe wanneer je Glance deployt.
|
||||
|
||||
Poort: **8081** (standaard in compose).
|
||||
@@ -0,0 +1,12 @@
|
||||
# Glance — dashboard (config map nog leeg op NAS)
|
||||
services:
|
||||
glance:
|
||||
image: glanceapp/glance:latest
|
||||
container_name: glance
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${GLANCE_PORT:-8081}:8080"
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Brussels}
|
||||
@@ -0,0 +1,5 @@
|
||||
# Joplin Server
|
||||
|
||||
Notes server. Bestaande data: `/volume1/docker/joplin` (beperkte toegang uid 999).
|
||||
|
||||
Poort: **22300**. Gebruikt PostgreSQL — kan `postgres-homelab` hergebruiken i.p.v. aparte `joplin-db`.
|
||||
@@ -0,0 +1,33 @@
|
||||
# Joplin Server — data op NAS (map /volume1/docker/joplin, uid 999)
|
||||
services:
|
||||
joplin:
|
||||
image: joplin/server:latest
|
||||
container_name: joplin
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${JOPLIN_PORT:-22300}:22300"
|
||||
environment:
|
||||
APP_PORT: 22300
|
||||
APP_BASE_URL: ${JOPLIN_BASE_URL:-http://192.168.1.211:22300}
|
||||
DB_CLIENT: pg
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-WaQTUw2t}
|
||||
POSTGRES_DATABASE: ${JOPLIN_DB:-joplin}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-mo}
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_HOST: postgres-homelab
|
||||
depends_on:
|
||||
- joplin-db
|
||||
|
||||
joplin-db:
|
||||
image: postgres:16-alpine
|
||||
container_name: joplin-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-WaQTUw2t}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-mo}
|
||||
POSTGRES_DB: ${JOPLIN_DB:-joplin}
|
||||
volumes:
|
||||
- joplin-db-data:/var/lib/postgresql/data
|
||||
|
||||
volumes:
|
||||
joplin-db-data:
|
||||
@@ -1,8 +1,19 @@
|
||||
# portainer
|
||||
# Portainer
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Poort** | 9000 |
|
||||
| **Start** | `docker compose up -d` |
|
||||
| **UI** | http://192.168.1.211:9000 |
|
||||
| **Data** | `/volume1/docker/portainer` |
|
||||
|
||||
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## Portainer stacks (compose in Portainer beheerd)
|
||||
|
||||
| Stack | Bestand | Container |
|
||||
|-------|---------|-----------|
|
||||
| Excalidraw | [stacks/excalidraw.yml](stacks/excalidraw.yml) | Excalidraw :3765 |
|
||||
| Guacamole | [stacks/guacamole.yml](stacks/guacamole.yml) | Guacamole :8348 |
|
||||
|
||||
Zie ook [apps/excalidraw](../excalidraw/) en [apps/guacamole](../guacamole/).
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
version: "3.9"
|
||||
services:
|
||||
excalidraw:
|
||||
container_name: Excalidraw
|
||||
healthcheck:
|
||||
test: curl -f http://localhost:80/ || exit 1
|
||||
image: excalidraw/excalidraw:latest
|
||||
ports:
|
||||
- 3765:80
|
||||
restart: on-failure:5
|
||||
stdin_open: true
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
@@ -0,0 +1,20 @@
|
||||
services:
|
||||
guacamole:
|
||||
container_name: Guacamole
|
||||
image: jwetzell/guacamole
|
||||
|
||||
healthcheck:
|
||||
test: curl -f http://localhost:8080/ || exit 1
|
||||
mem_limit: 6g
|
||||
cpu_shares: 1024
|
||||
security_opt:
|
||||
- no-new-privileges:false
|
||||
restart: on-failure:5
|
||||
ports:
|
||||
- 8348:8080
|
||||
volumes:
|
||||
- /volume1/docker/guacamole:/config:rw
|
||||
environment:
|
||||
PUID: 1026
|
||||
PGID: 100
|
||||
TZ: Europe/Bucharest
|
||||
@@ -0,0 +1,62 @@
|
||||
# Proxmox — LXC & VM overzicht
|
||||
|
||||
Configs: `hosts/<naam>/lxc/*.conf` en `qemu-server/*.conf`
|
||||
|
||||
## Host: pve (192.168.1.216)
|
||||
|
||||
### VMs
|
||||
| VMID | Naam |
|
||||
|------|------|
|
||||
| 101 | W11 |
|
||||
| 111 | Syno-latest |
|
||||
|
||||
### LXCs
|
||||
| VMID | Hostname |
|
||||
|------|----------|
|
||||
| 100 | autocaliweb |
|
||||
| 102 | clawbot |
|
||||
| 103 | CrowdSec |
|
||||
| 104 | vaultwarden |
|
||||
| 105 | linkwarden |
|
||||
| 106 | kimai |
|
||||
| 107 | pve-scripts-local |
|
||||
| 108 | tunarr |
|
||||
| 109 | nextcloudpi |
|
||||
| 110 | passbolt |
|
||||
| 112 | immich |
|
||||
| 113 | metube |
|
||||
| 114 | endurain |
|
||||
| 115 | passbolt |
|
||||
| 116 | opencloud |
|
||||
| 117 | Proxy |
|
||||
| 118 | paymenter |
|
||||
| 119 | nodecast-tv |
|
||||
|
||||
## Host: dell-proxmox (192.168.1.56)
|
||||
|
||||
### VMs
|
||||
| VMID | Naam |
|
||||
|------|------|
|
||||
| 101 | opnsense |
|
||||
| 102 | Postgress |
|
||||
| 103 | Synology |
|
||||
| 104 | kassa-dev |
|
||||
| 105 | docker |
|
||||
|
||||
### LXCs
|
||||
| VMID | Hostname |
|
||||
|------|----------|
|
||||
| 100 | n8n |
|
||||
| 106 | vdi.el-kadi.nl |
|
||||
| 107 | Virtualmin |
|
||||
| 108 | n8n |
|
||||
| 109 | nginxproxymanager |
|
||||
| 110 | nextcloudpi |
|
||||
| 112 | iventoy |
|
||||
| 113 | traccar |
|
||||
| 115 | kasm |
|
||||
| 116 | runtipi |
|
||||
| 118 | changedetection |
|
||||
| 119 | n8n |
|
||||
|
||||
> App-configs binnen LXCs: backup via `pct enter <id>` of volume mount. Proxmox container-definitie staat al in git.
|
||||
@@ -0,0 +1,22 @@
|
||||
# Synology DSM — native packages
|
||||
|
||||
Geïnstalleerd als **Synology Package** (niet Docker). Geen compose; backup via DSM of Hyper Backup.
|
||||
|
||||
| Package | Doel | Config-locatie (typisch) |
|
||||
|---------|------|---------------------------|
|
||||
| Docker | Container engine | DSM Package Center |
|
||||
| UniFi SDN Controller | Oud/alternatief UniFi | `@apphome/UniFiSDNController` |
|
||||
| Jellyfin | Media server | `@apphome/jellyfin` |
|
||||
| Plex Media Server | Media | `@apphome/PlexMediaServer` |
|
||||
| Tailscale | VPN mesh | `@appdata/Tailscale` |
|
||||
| Surveillance Station | Camera's | `@apphome/SurveillanceStation` |
|
||||
| Synology Photos | Foto's | `@apphome/SynologyPhotos` |
|
||||
| Synology Drive | Bestanden sync | `@apphome/SynologyDrive` |
|
||||
| Hyper Backup | Backups | `@apphome/HyperBackup` |
|
||||
| Active Backup | PC backup | `@apphome/ActiveBackup` |
|
||||
| Web Station | Web hosting | `@apphome/WebStation` |
|
||||
| MariaDB | Database | `@apphome/MariaDB10` |
|
||||
| VPN Center | VPN server | `@apphome/VPNCenter` |
|
||||
| Virtualization | VMM | `@apphome/Virtualization` |
|
||||
|
||||
> Paden onder `/volume1/@apphome/` — alleen leesbaar met root. Documenteer instellingen handmatig of via DSM export.
|
||||
@@ -0,0 +1,7 @@
|
||||
PUID=1026
|
||||
PGID=100
|
||||
TZ=Europe/Brussels
|
||||
MONGO_USER=unifi
|
||||
MONGO_PASS=WaQTUw2t
|
||||
UNIFI_DATA_DIR=/volume1/docker/unifi
|
||||
UNIFI_MONGO_DIR=/volume1/docker/Configs/Unifi/data/db
|
||||
@@ -0,0 +1,13 @@
|
||||
# UniFi Network
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Controller** | https://192.168.1.24 (primair) |
|
||||
| **NAS data** | `/volume1/docker/unifi`, `Configs/Unifi` |
|
||||
| **Login** | zie `.env` / homelab-command `UNIFI_*` |
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Config: `config/system.properties`
|
||||
@@ -0,0 +1,44 @@
|
||||
## system.properties
|
||||
#
|
||||
# each unifi instance requires a set of ports:
|
||||
#
|
||||
## device inform
|
||||
# unifi.http.port=8080
|
||||
## controller UI / API
|
||||
# unifi.https.port=8443
|
||||
## portal redirect port for HTTP
|
||||
# portal.http.port=8880
|
||||
## portal redirect port for HTTPs
|
||||
# portal.https.port=8843
|
||||
## local-bound port for DB server
|
||||
# unifi.db.port=27117
|
||||
## UDP port used for STUN
|
||||
# unifi.stun.port=3478
|
||||
#
|
||||
## the IP devices should be talking to for inform
|
||||
# system_ip=a.b.c.d
|
||||
## disable mongodb journaling
|
||||
# unifi.db.nojournal=false
|
||||
## extra mongod args
|
||||
# unifi.db.extraargs
|
||||
#
|
||||
## HTTPS options
|
||||
# unifi.https.ciphers=TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA
|
||||
# unifi.https.sslEnabledProtocols=TLSv1,SSLv2Hello
|
||||
# unifi.https.hsts=false
|
||||
# unifi.https.hsts.max_age=31536000
|
||||
# unifi.https.hsts.preload=false
|
||||
# unifi.https.hsts.subdomain=false
|
||||
#
|
||||
# Ports reserved for device redirector. There is no need to open
|
||||
# firewall for these ports on controller, however do NOT set
|
||||
# controller to use these ports.
|
||||
#
|
||||
# portal.redirector.port=8881
|
||||
# portal.redirector.port.wired=8882
|
||||
#
|
||||
# Port used for throughput measurement.
|
||||
# unifi.throughput.port=6789
|
||||
#
|
||||
#Tue Feb 25 23:34:10 UTC 2025
|
||||
uuid=a274df25-fe33-4c8a-ad32-8232a8ecdab4
|
||||
@@ -0,0 +1,36 @@
|
||||
# UniFi Network Application
|
||||
# Data: /volume1/docker/unifi
|
||||
# Live controller ook op https://192.168.1.24 (apart apparaat/VM)
|
||||
|
||||
services:
|
||||
unifi:
|
||||
image: lscr.io/linuxserver/unifi-network-application:latest
|
||||
container_name: unifi
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
environment:
|
||||
PUID: ${PUID:-1026}
|
||||
PGID: ${PGID:-100}
|
||||
TZ: ${TZ:-Europe/Brussels}
|
||||
MONGO_HOST: unifi-db
|
||||
MONGO_PORT: 27017
|
||||
MONGO_USER: ${MONGO_USER:-unifi}
|
||||
MONGO_PASS: ${MONGO_PASS:-WaQTUw2t}
|
||||
MONGO_DBNAME: ${MONGO_DBNAME:-unifi}
|
||||
MONGO_AUTHSOURCE: admin
|
||||
MEM_LIMIT: 1024
|
||||
MEM_STARTUP: 1024
|
||||
volumes:
|
||||
- ${UNIFI_DATA_DIR:-/volume1/docker/unifi}:/config
|
||||
depends_on:
|
||||
- unifi-db
|
||||
|
||||
unifi-db:
|
||||
image: docker.io/mongo:4.4
|
||||
container_name: unifi-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER:-unifi}
|
||||
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASS:-WaQTUw2t}
|
||||
volumes:
|
||||
- ${UNIFI_MONGO_DIR:-/volume1/docker/Configs/Unifi/data/db}:/data/db
|
||||
@@ -0,0 +1,5 @@
|
||||
# Uptime Kuma
|
||||
|
||||
Monitoring / statuspagina. Data: `/volume1/docker/Configs/uptime-kuma`
|
||||
|
||||
Poort: **3001** (let op: conflict met AdGuard web UI op 3001 — pas poort aan in `.env`).
|
||||
@@ -0,0 +1,11 @@
|
||||
services:
|
||||
uptime-kuma:
|
||||
image: louislam/uptime-kuma:1
|
||||
container_name: uptime-kuma
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${UPTIME_KUMA_PORT:-3001}:3001"
|
||||
volumes:
|
||||
- ${UPTIME_KUMA_DATA:-/volume1/docker/Configs/uptime-kuma}:/app/data
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Brussels}
|
||||
@@ -0,0 +1,5 @@
|
||||
# Whoogle
|
||||
|
||||
Privacy-vriendelijke Google-proxy. Config-map op NAS was leeg.
|
||||
|
||||
Poort: **5000**
|
||||
@@ -0,0 +1,12 @@
|
||||
services:
|
||||
whoogle:
|
||||
image: benbusby/whoogle-search:latest
|
||||
container_name: whoogle
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${WHOOGLE_PORT:-5000}:5000"
|
||||
environment:
|
||||
TZ: ${TZ:-Europe/Brussels}
|
||||
WHOOGLE_CONFIG_DIR: /config
|
||||
volumes:
|
||||
- ./config:/config
|
||||
Reference in New Issue
Block a user