= Homelab-overzicht
Jasper <you@example.com>
:toc:

Dit document beschrijft de huidige homelab-indeling: Proxmox hosts, netwerksegmenten, LXC-containers en hun IP-adressen / rollen.

== Netwerk

=== VLAN-indeling

[cols="1,2,2,4",options="header"]
|===
| VLAN | Subnet           | Voorbeeld gateway | Doel

| LAN
| 192.168.2.0/24
| 192.168.2.1
| Primair LAN voor clients, servers, beheer, management-interfaces.

| IoT (VLAN 50)
| 10.0.50.0/24
| 10.0.50.1
| IoT-apparaten (lampen, sensoren, etc.). Beperkte toegang richting LAN.

| DMZ (VLAN 60)
| 10.0.60.0/24
| 10.0.60.1
| Publiek toegankelijke services (o.a. Helium HNT miner).

| Guest
| (bijv. 10.0.70.0/24)
| 10.0.70.1
| Gasten-WiFi, volledig gescheiden van LAN/IoT.
|===

=== Belangrijke netwerk-apparatuur

[cols="2,2,3,5",options="header"]
|===
| Apparaat         | IP-adres       | Locatie / VLAN | Opmerking

| OPNsense VM
| 192.168.2.1
| LAN              | Default gateway, VLAN-routing, firewall, DNS (via AdGuard).

| UniFi Controller
| 192.168.2.8
| LAN              | Beheer UniFi AP’s en switches (traefik: `unifi.japnet.nl` → https://192.168.2.8:8443).

| Periphery host (japloader)
| 192.168.2.80
| LAN              | Docker host voor Komodo Periphery (`8120/tcp`).
|===

== Proxmox hosts

[cols="2,2,3,5",options="header"]
|===
| Hostnaam | Platform | Opslag             | Rol

| N5105-mini
| Proxmox VE
| NVMe + evt. SSD  | Draait o.a. OPNsense-VM, Traefik, (toekomst) SSO / Authentik.

| fast (i3)
| Proxmox VE 9
| ZFS pool `octopus` | Hoofdserver voor LXC-containers (NAS, media, arr-stack, tools).
|===

== LXC-containers (services)

Onderstaande tabel beschrijft de belangrijkste LXC’s, hun IP-adressen en de services die erin draaien.

[cols="2,2,2,3,5",options="header"]
|===
| Naam LXC | Host     | IP-adres       | Dataset / mounts                         | Belangrijkste services / rol

| japnas
| fast
| 192.168.2.xx
| `/octopus/media` en `/octopus/documents` als SMB/NFS
| Centrale NAS: SMB-shares voor clients, NFS voor Proxmox/LXC’s (bijv. `/octopus/documents/appdata`).

| japmedia
| fast
| 192.168.2.71
| 
* `/rpool/appdata/japmedia` → `/srv/appdata`
* `/octopus/media/movies` → `/srv/media/movies`
* `/octopus/media/series` → `/srv/media/series`
* `/octopus/media/music` → `/srv/media/music`
* `/octopus/media/recordings` → `/srv/media/recordings`
|
Media-server LXC:
* Jellyfin (traefik: `jellyfin.japnet.nl` → http://192.168.2.71:8096)
* TVHeadend (HDHomeRun input)
* (optioneel) Zigbee2MQTT / Home Assistant integraties
* iGPU passthrough voor hardware transcoding

| japarr
| fast
| 192.168.2.72
|
* `/rpool/appdata/japarr` → `/srv/appdata`
* `/octopus/media/downloads` → `/srv/downloads` (bijv. `/srv/downloads/complete`, `/srv/downloads/incomplete`)
|
Download- en Arr-stack LXC:
* Sonarr, Radarr, Prowlarr, (SabNZBd/NZBGet), Transmission
* Gluetun / andere VPN-container voor usenet/torrent-verkeer
* Traefik-router bestand `arr.yml` (bijv. `sonarr.japnet.nl`, `radarr.japnet.nl`, `prowlarr.japnet.nl`)

| japloader
| fast
| 192.168.2.80
|
* `/srv/stacks` → Komodo stacks
* `/srv/appdata` → Komodo & Periphery data
|
Infra-/orchestratie LXC:
* Komodo Periphery (exposed op `8120/tcp`)
* Overige helper-services/tools voor deploy (bijv. scripts, kleine utils).

| japops
| fast
| 192.168.2.xx
|
* `/srv/appdata/komodo` → Komodo core
* `/srv/appdata/monitoring` (optioneel)
|
“Ops”-LXC:
* Komodo Core (stacks orchestratie)
* Monitoring / observability (bijv. Prometheus, Grafana)
* Ntfy/Smtp bridge voor alerts (toekomst).

| japgit
| fast
| 192.168.2.xx
|
* `/srv/appdata/gitea` → Gitea data
|
Git- en CI-omgeving:
* Gitea (traefik: `git.japnet.nl` of `gitea.japnet.nl`)
* (optioneel) Drone CI / Woodpecker
* Repos voor infra (`infra-auth`, `infra-media`, `infra-arr`, …).

| japauth
| N5105-mini
| 192.168.2.xx
|
* `/srv/appdata/authentik`
|
Authenticatie LXC (gepland):
* Authentik voor OIDC / SSO
* Integratie met traefik (forwardAuth) en apps (Jellyfin, Gitea, etc.).
|===

== Traefik & DNS

Traefik draait op de N5105-host en stuurt verkeer vanuit Cloudflare / internet naar de juiste backend (LXC of VM) op het LAN.

=== Voorbeelden hostnames

[cols="2,3,5",options="header"]
|===
| Hostname              | Backend                        | Opmerking

| `unifi.japnet.nl`
| https://192.168.2.8:8443
| UniFi controller, TLS passthrough / re-encrypt.

| `jellyfin.japnet.nl`
| http://192.168.2.71:8096
| Jellyfin in `japmedia` LXC.

| `sonarr.japnet.nl`
| http://192.168.2.72:8989
| Sonarr in `japarr` LXC.

| `radarr.japnet.nl`
| http://192.168.2.72:7878
| Radarr in `japarr` LXC.

| `prowlarr.japnet.nl`
| http://192.168.2.72:9696
| Prowlarr in `japarr` LXC.

| `git.japnet.nl`
| http://192.168.2.xx:3000
| Gitea in `japgit` LXC.

| `komodo.japnet.nl`
| http://192.168.2.xx:port
| Komodo Core in `japops` LXC.
|===

== Naming-conventies

* **LXC-namen** beginnen met `jap…` en geven de functie aan (`japmedia`, `japarr`, `japnas`, `japops`, …).
* **Data** per LXC in ZFS datasets onder `/rpool/appdata/<lxc-naam>` en in de container gemount op `/srv/appdata`.
* **Media** centraal in ZFS pool `octopus` (bijv. `/octopus/media/movies`, `/octopus/media/series`, …) en read-only gemount in de relevante LXC’s.
* **Compose-stacks** in `/srv/stacks/<stacknaam>` binnen de LXC, met `.env`-bestanden en traefik dynamic config onder `/etc/traefik/dynamic/`.

== TODO / nog bijwerken

* Exacte IP-adressen invullen voor `japnas`, `japops`, `japgit`, `japauth`.
* Overzicht toevoegen van gebruikte Docker-netwerken per LXC.
* Schema toevoegen (diagram) van verkeer: internet → Cloudflare → Traefik → LXC/VM.