KB: magitek-ops
← All workspaces9213 results — page 4 of 185
| Title | Domain | Type | Severity | Source | Freshness | Updated |
|---|---|---|---|---|---|---|
| Brukerkontoer | operations/magitek-server-ops | knowledge | medium | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Brukerkontoer
| Server | Bruker | Metode | Merknad |
|--------|--------|--------|---------|
| laravelserver-v11 | heine | Lokal | Primær bruker |
| laravelserver-v11 | www-data | Lokal | Apache/PHP prosesser |
| laravelserver-v11 | root | sudo fra heine | Ikke direkte SSH |
| ssh-server (VM 113) | heine | SSH | Jump host kontoret |
| px1 | root | SSH key / passord | TODO: bekreft |
| px5 (192.168.86.116) | root | SSH via tunnel | ProxyJump nødvendig |
| npm (172.20.0.42) | root | SSH | Host key issue |
| wp-01 (192.168.86.166) | root | SSH (direkte fra hjemme) | OK fra HERMES |
| ub-sshtunnel (192.168.86.192) | heine | SSH | Jump host hjemme |
| nextcloud (192.168.86.233) | heine | SSH (direkte/tunnel) | Avhenger av kontekst |
| pfsense kontoret (172.20.0.1) | root | SSH nøkkel OK | `ssh root@172.20.0.1` |
| pfsense hjemme (192.168.86.1) | root | SSH nøkkel OK | Dobbel-jump via px5: `-J ...,root@192.168.86.116` |
| truenas (192.168.86.120) | root | SSH via tunnel (nøkkel OK) | TrueNAS 13.0-U2, FreeBSD |
| pbsm (192.168.86.137) | root | SSH via tunnel (nøkkel OK) | PBS 3.4.8, Debian 12, ZFS ONLINE |
| pmox2 (192.168.86.123) | root | SSH via px5 (dobbel-hop) | Dell R620, PVE 8.4.1, 180 GB RAM |
| px3 (192.168.86.124) | root | SSH via px5 (dobbel-hop) | Dell R620, PVE 8.4.1, 251 GB RAM |
### Credentials Vault
**Alle credentials er sentralisert i:** `CURRENT-credentials.md`
Les den filen for SSH-passord, WebGUI-innlogging, API-credentials, DB-brukere, osv.
---
## Domener og DNS
| Domene | Peker til | Tjeneste | SSL |
|--------|-----------|----------|-----|
| reportmaker.magitek.no | NPM (172.20.0.42) → 172.20.0.94:80 | ReportMaker | Let's Encrypt via NPM |
| zyxel1920.nativja.no | NPM (172.20.0.42) → stunnel (172.20.0.5:8443) → switch (172.20.0.3) | ZyXEL switch kontoret | Let's Encrypt via NPM |
| freshtomato.nativja.no | NPM (172.20.0.42) → http://172.20.0.2:80 | FreshTomato AP WebGUI | Let's Encrypt via NPM (cert #20) |
| zyxel1920.magitek.no | NPM hjemme (192.168.86.16) → stunnel (192.168.86.188:8443) → switch (192.168.86.5) | ZyXEL switch hjemme | Let's Encrypt via NPM hjemme |
| vpn.magitek.no | NPM hjemme (192.168.86.16) → pfSense (192.168.86.1:443) | pfSense WebGUI (WireGuard management) | Let's Encrypt via NPM hjemme (ID 322) |
| px1.nativja.no | 172.20.0.1 (?) | Proxmox VE admin | ? |
| px5.magitek.no | 81.167.27.54 (offentlig) / 192.168.86.? (LAN) | Proxmox VE admin | ? |
| *.magitek.no | Varierer | Diverse tjenester | Varierer |
| *.nativja.no | 62.97.227.206 (wildcard) | Diverse tjenester | Varierer |
**DNS Provider:** webhuset.no (wildcard *.nativja.no → 62.97.227.206) — se CURRENT-webhuset-dns.md
**Lokal DNS kontoret:** Pi-hole (CT 108, 172.20.0.6:53) + Unbound rekursiv resolver (172.20.0.6:5335 → root servers) + pfSense Unbound host overrides (zyxel1920.nativja.no → 172.20.0.42, freshtomato.nativja.no → 172.20.0.42, freshtomato.magitek.no → 172.20.0.42)
**Lokal DNS hjemme:** pfSense Unbound host overrides (zyxel1920.magitek.no → 192.168.86.16, vpn.magitek.no → 192.168.86.16)
**DNS-strategi:** Anbefaler migrering fra Webhuset til Cloudflare Free for domenestyring (API-tilgang, Terraform, gratis) — se gotcha I-09
---
|
||||||
| SSH Jump Host-arkitektur | operations/magitek-server-ops | knowledge | medium | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### SSH Jump Host-arkitektur
Hver lokasjon har en **ssh-server** eksponert via pfsense NAT på port 12322:
| Lokasjon | Public endpoint | pfsense NAT → | Jump host | LAN IP |
|----------|-----------------|---------------|-----------|--------|
| Kontoret | 62.97.227.206:12322 | VM 113:22 | ssh-server | 172.20.0.95 |
| Hjemme | 81.167.27.54:12322 | ub-sshtunnel:22 | ub-sshtunnel | 192.168.86.192 |
### Fra denne serveren til kontoret (direkte)
```bash
ssh heine@172.20.0.95 "kommando" # ssh-server (VM 113)
ssh heine@172.20.0.42 "kommando" # NPM (OBS: host key verification kan feile)
ssh heine@172.20.0.104 "kommando" # docker1
```
### Fra denne serveren til hjemme (via tunnel)
```bash
ssh -J heine@81.167.27.54:12322 root@192.168.86.116 "kommando" # px5
ssh -J heine@81.167.27.54:12322 root@192.168.86.166 "kommando" # wp-01
ssh -J heine@81.167.27.54:12322 heine@192.168.86.233 "kommando" # nextcloud
ssh -J heine@81.167.27.54:12322 heine@192.168.86.192 "kommando" # ub-sshtunnel
ssh -J heine@81.167.27.54:12322 root@192.168.86.137 "kommando" # PBS (pbsm)
# pfSense hjemme (krever dobbel-jump via px5!)
ssh -J heine@81.167.27.54:12322,root@192.168.86.116 root@192.168.86.1 "kommando"
# Proxmox containere hjemme via px5
ssh -J heine@81.167.27.54:12322 root@192.168.86.116 "pct exec CTID -- kommando"
```
**Nøkler på denne serveren:**
- `/home/heine/.ssh/id_ed25519` (ED25519, primær)
- `/home/heine/.ssh/id_rsa` (RSA, backup)
- Ingen SSH config fil ennå (TODO: opprett)
### Brukerens maskiner (referanse — ikke relevant for agentens kommandoer)
Brukeren har to maskiner med SSH config:
- **ORION** (arbeidsstasjon, kontoret) — direkte til kontor-LAN, tunnel til hjemme
- **HERMES** (laptop, hjemme) — direkte til hjemme-LAN, tunnel til kontoret
Begge kobler til laravelserver-v11 via SSH for å bruke Claude Code.
### SSH-status (kartlagt 2026-02-28)
| Mål | Fra | Resultat | Merknad |
|-----|-----|----------|---------|
| heine@172.20.0.42 (NPM) | Server | Host key verification failed | Key ikke i known_hosts |
| root@172.20.0.34 (px1) | Server | **OK** | Nøkkel OK, kartlagt 2026-03-01 |
| root@172.20.0.32 (pmox10) | Server | **OK** | Nøkkel OK, kartlagt 2026-03-01 |
| root@172.20.0.33 (pmox15) | Server | **OK** | Nøkkel OK, kartlagt 2026-03-01 |
| root@172.20.0.1 (pfSense) | Server | **OK** | Nøkkel OK, aktivert 2026-03-01 |
| root@px5.magitek.no | Server | Connection timed out | Port 22 ikke NATet — bruk :12322 tunnel |
| heine@62.97.227.206:12322 | Laptop | OK | Jump til kontoret fungerer |
| heine@81.167.27.54:12322 → root@px5 | Server | **OK** | Tunnel til hjemme fungerer (testet 2026-02-28) |
| root@192.168.86.1 (pfSense hjemme) | Server | **OK** | Dobbel-jump via px5, nøkkel OK, kartlagt 2026-03-01 |
| root@192.168.86.137 (PBS) | Server | **OK** | Tunnel, nøkkel OK, kartlagt 2026-03-01 |
| root@172.20.0.134 (infra-tools) | Server | **OK** | Nøkkel OK, CT 134, kartlagt 2026-03-01 |
| root@172.20.0.2 (FreshTomato R7000) | Server | **OK** | Dropbear SSH, rate-limited (4/60s), kartlagt 2026-03-01 |
| root@192.168.86.123 (pmox2) | Server (via px5) | **OK** | Dobbel-hop via px5, kartlagt 2026-03-01 |
| root@192.168.86.124 (px3) | Server (via px5) | **OK** | Dobbel-hop via px5, kartlagt 2026-03-01 |
| admin@192.168.86.5 (ZyXEL hjemme) | Server (via px5+pexpect) | **OK** | Legacy SSH via pexpect på px5, kartlagt 2026-03-01 |
| admin@192.168.86.8 (Dell 5548) | Server (via px5+pexpect) | **OK** | Legacy SSH (DSA/RSA), aktivert 2026-03-01, pexpect på px5 |
**GOTCHA:** `px5.magitek.no` resolves til 81.167.27.54, men port 22 er IKKE åpen eksternt.
SSH til px5 krever tunnel: `-J heine@81.167.27.54:12322` → ub-sshtunnel → px5 LAN.
|
||||||
| Nettverksutstyr — Hjemme | operations/magitek-server-ops | knowledge | medium | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Nettverksutstyr — Hjemme
| Enhet | IP | Type | Porter aktive | Rolle |
|-------|-----|------|---------------|-------|
| **ZyXEL XS1920-12** | 192.168.86.5 | 12-port 10G managed switch | 6/12 (3x10G, 2x1G) | Primær switch (vaskerom), se `CURRENT-zyxel-xs1920-hjemme.md` |
| **Netgear MS510TX** | 192.168.86.7 | 8-port multi-gig + 2x 10G managed switch | 2/10 (gi1@100M, te9@10G) | Sekundær multi-gig switch, se `CURRENT-netgear-ms510tx-hjemme.md` |
| **Dell 5548 PowerConnect** | 192.168.86.8 | 48-port 1GbE + 2x 10G SFP+ managed switch | 9/50 (8x1G, 1x10G) | Distribusjonsswitch, VLAN 10 corosync, se `CURRENT-dell5548-hjemme.md` |
### Tjenester — Hjemme
| Tjeneste | IP:Port | Beskrivelse |
|----------|---------|-------------|
| WordPress (wp-01) | 192.168.86.166:80 | Live nettsider |
| Nextcloud (nc.magitek.no) | 192.168.86.233:443 | Fillagring/samarbeid |
| NPM hjemme (VM 131) | 192.168.86.16:81 | Nginx Proxy Manager admin (153 proxy hosts) |
| kursteam.magitek.no | 192.168.86.203 | Kursteam |
| Proxmox Backup Server | 192.168.86.137:8007 | PBS 3.4.8, fysisk, ZFS mirror 2x4TB **ONLINE**, 6 datastores + archive (45 gjester fra pmox2+px3), se `CURRENT-pbs-hjemme.md` |
| TrueNAS WebGUI | 192.168.86.120:443 | Storage management (VM 100 på px5) |
| Proxmox WebGUI (px5) | 192.168.86.116:8006 | Proxmox VE admin |
| Plex | 192.168.86.228:32400 | Medieserver |
| ZyXEL XS1920 WebGUI | `https://zyxel1920.magitek.no` | **Anbefalt** — NPM→stunnel→switch (LE-cert, ingen advarsel) |
| ZyXEL XS1920 (direkte) | 192.168.86.5:80/443 | Legacy — Chrome blokkerer pga gammel TLS |
| Legacy TLS Proxy hjemme | 192.168.86.188:8443 | stunnel proxy (CT 188) — backup-tilgang |
---
## SSH-tilgang
### FAST FAKTA: Claude Code kjører ALLTID på laravelserver-v11
Claude Code kjører på **laravelserver-v11 (172.20.0.94)** på kontoret (LAN 172.20.0.0/24).
Brukeren kobler til serveren via SSH — oftest fra ORION (arbeidsstasjon, kontoret), noen ganger fra HERMES (laptop, hjemme).
**Brukerens maskin er irrelevant for SSH-kommandoer agenten kjører.** Alt utføres fra serveren.
| Mål | Tilkobling fra serveren |
|-----|------------------------|
| **Kontoret** (172.20.0.x) | Direkte — samme LAN |
| **Hjemme** (192.168.86.x) | Via tunnel: `-J heine@81.167.27.54:12322` |
|
||||||
| Proxmox Host: pmox2 (Dell PowerEdge R620) | operations/magitek-server-ops | knowledge | medium | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Proxmox Host: pmox2 (Dell PowerEdge R620)
| Egenskap | Verdi |
|----------|-------|
| **Hostname** | pmox2 |
| **LAN IP** | 192.168.86.123 |
| **PVE versjon** | 8.4.1 (kernel 6.8.12-11-pve, 6.8.12-19 neste boot) |
| **CPU** | 48 threads (2x Xeon E5-2697 v2 @ 2.70GHz) |
| **RAM** | 180 GB (177 GB ledig) |
| **Disker** | 168 GB SSD boot (15%) + 888 GB ZFS "zfsa" (tom, ny pool 2026-03-04) |
| **VMs/CTs** | **0 VMs + 1 CT** (CT 220 phpstan-worker, running). 29 gjester arkivert til PBS 2026-03-04 |
| **Rolle** | Nesten tom, klar for nye workloads |
| **SSH** | `ssh pmox2` / `ssh TU-pmox2` (SSH config lagt til 2026-03-04) |
| **Sub-ekspert** | `CURRENT-pmox2.md` |
### Proxmox Host: px3 (Dell PowerEdge R620)
| Egenskap | Verdi |
|----------|-------|
| **Hostname** | px3 |
| **LAN IP** | 192.168.86.124 |
| **PVE versjon** | 8.4.1 (kernel 6.8.12-11-pve) |
| **CPU** | 48 threads (2x Xeon E5-2697 v2 @ 2.70GHz) |
| **RAM** | 251 GB (248 GB ledig) |
| **Disker** | 233 GB SSD (boot) + 394 GB ZFS "zfsa" (tom) |
| **VMs/CTs** | **0 VMs + 0 CTs** — HELT TOM. 20 gjester arkivert til PBS 2026-03-04 |
| **LAN** | **10GbE TP-Link** (bridge vmbr0) — kraftigste node |
| **Rolle** | Helt tom, klar for nye workloads |
| **SSH** | `ssh px3` / `ssh TU-px3` (SSH config lagt til 2026-03-04) |
| **Sub-ekspert** | `CURRENT-px3.md` |
### VM/Containere på px5 (kartlagt 2026-02-28)
**Totalt: 47 VMs + 23 CTs = 70 VM/CT-er (17 running, 53 stopped)**
Se komplett liste: `coordination/experts/operations/magitek-server-ops/CURRENT-px5.md`
**Kjørende VMs (10):**
| VMID | Navn | RAM (MB) | Disk (GB) | Rolle |
|------|------|----------|-----------|-------|
| 100 | TrueNAS | 16000 | 32 | Storage (ZFS) |
| 108 | nextcloud-hsal | 4000 | 60 | Nextcloud (hsal) |
| 117 | prod-lan-webserver | 12000 | 32 | Produksjon webserver |
| 131 | nginx-proxy-manager-ub-vm | 4000 | 60 | NPM hjemme |
| 142 | plex-ubuntu | 8000 | 100 | Plex medieserver |
| 153 | postiz | 8000 | 60 | Postiz |
| 183 | mautic | 1000 | 60 | Mautic marketing |
| 185 | nextcloud-magitek | 8000 | 62 | Nextcloud (magitek.no) |
| 208 | nextcloud-nativja | 12000 | 60 | Nextcloud (nativja) |
| 214 | ub-sshtunnel | 1500 | 32 | SSH jump host hjemme |
**Kjørende CTs (8):**
| CTID | Navn | Rolle |
|------|------|-------|
| 101 | pihole-hjemme | Pi-hole v6.4 + Unbound (192.168.86.2) — **RUNNING** |
| 106 | wp01 | WordPress produksjon |
| 111 | tkl-dockbox02 | Docker (Turnkey) |
| 112 | tkl-dockbox03 | Docker (Turnkey) |
| 155 | tkl-dockbox9-zfs | Docker ZFS (Turnkey) |
| 164 | bookstack-ny | BookStack wiki |
| 188 | legacy-tls-proxy-hjemme | **stunnel TLS proxy** for ZyXEL hjemme (Ubuntu 20.04) |
| 212 | Duplicati | Backup |
**Stoppede CTs:**
| CTID | Navn | Status |
|------|------|--------|
| 132 | tkl-pihole | **STOPPED** — old Pi-hole v5.7, erstattet av CT 101 |
**KJENT:** pfsense NAT: 81.167.27.54:12322 → VM 214 ub-sshtunnel (192.168.86.192):22
|
||||||
| Lokasjon 2: Hjemme / Vaskerommet (Skeisstøa 37c) | operations/magitek-server-ops | knowledge | low | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Lokasjon 2: Hjemme / Vaskerommet (Skeisstøa 37c)
**Rolle:** Produksjon
**LAN:** 192.168.86.0/24 + VLANs: 10.10.10.0/24 (Corosync), 192.168.20.0/24 (WiFi), 192.168.30.0/24 (Privat)
**Proxmox URL:** https://px5.magitek.no
### pfSense Brannmur — 192.168.86.1
- **Type:** Fysisk maskin (gammel consumer-PC — i7-3770K, 16 GB RAM, 211 GB ZFS)
- **Versjon:** pfSense Plus 23.05.1-RELEASE — eldre enn kontoret
- **IP:** 192.168.86.1 (bridge0 LAN_BRIDGE, default gateway)
- **WAN:** 81.167.27.54/25 (ix0, DHCP fra ISP, gw 81.167.27.1)
- **WebGUI:** https://192.168.86.1 (port 80+443)
- **SSH:** Via dobbel-jump: `-J heine@81.167.27.54:12322,root@192.168.86.116 root@192.168.86.1`
- **Interfaces:** 11 stk — WAN (ix0) + 4 LAN bridget + 3 VLANs (Corosync, WiFi, Privat)
- **VLANs:** VLAN10 (10.10.10.0/24 Corosync), VLAN20 (192.168.20.0/24 WiFi), VLAN30 (192.168.30.0/24 Privat)
- Gateway for 192.168.86.0/24, 99 statiske DHCP-reservasjoner
- **NAT:** 10 port forwards (HTTP/HTTPS→NPM, :12322→SSH, :32400→Plex, :8007→PBS, etc.)
- **FW:** WAN deny-default, alle LAN/VLAN allow-all
- **VPN:** WireGuard site-to-site (tun_wg0, 10.0.0.1/24, UDP 51820) → pfSense kontoret + road-warrior peer
- **Uptime:** 358+ dager — bør planlegge vedlikehold
- Se komplett: `CURRENT-pfsense-hjemme.md`
### Proxmox Cluster "magitek"
3 aktive noder per 2026-03-01 (bekreftet via `pvecm nodes`):
| Host | Node ID | Votes | IP (LAN) | IP (Corosync) | Hardware | Status |
|------|---------|-------|-----------|---------------|----------|--------|
| pmox5 (px5) | 1 | 3 | 192.168.86.116 | 10.10.10.5 | (se CURRENT-px5.md) | **Aktiv** (quorum master) |
| pmox2 | 4 | 1 | 192.168.86.123 | 10.10.10.2 | Dell R620, 2x E5-2697v2, 180 GB | **Online** |
| px3 | 5 | 1 | 192.168.86.124 | 10.10.10.3 | Dell R620, 2x E5-2697v2, 251 GB, 10GbE LAN | **Online** |
Quorum: 5 expected votes (px5 har 3 = kan operere alene).
Corosync: knet transport, VLAN10 (10.10.10.0/24) + LAN (192.168.86.0/24).
**Tidligere antatte cluster-noder (IKKE i cluster per 2026-03-01):**
- pmox21v (192.168.86.121), pmox22v (192.168.86.122) — ikke i corosync.conf
- pmox10/11 (laptoper .171/.172), HP-prodesk-proxmox15 (.173) — ikke i corosync.conf
- Disse kan ha vart fjernet fra clusteret eller aldri lagt til
|
||||||
| Nettverkstjenester — Kontoret | operations/magitek-server-ops | knowledge | low | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Nettverkstjenester — Kontoret
| Tjeneste | IP:Port | Beskrivelse |
|----------|---------|-------------|
| Apache (ReportMaker) | 172.20.0.94:80 | Laravel 12 app |
| Laravel Reverb | 172.20.0.94:8081 | WebSocket server |
| Puppeteer | 172.20.0.94:3001 | Headless Chrome |
| NPM Dashboard | 172.20.0.42:81 | Nginx Proxy Manager admin |
| NPM Proxy | 172.20.0.42:80/443 | Reverse proxy (SSL termination) |
| Pi-hole DNS | 172.20.0.6:53 | DNS + annonseblokkering (CT 108 pa pmox15, Pi-hole v6.4 + Unbound) |
| Pi-hole WebGUI | 172.20.0.6:80 | Pi-hole administrasjon |
| pfsense WebGUI | 172.20.0.1:8080 | Brannmur-admin (HTTP, nginx frontend) |
| Proxmox WebGUI | px1-IP:8006 | Proxmox VE admin |
| ZyXEL XS1920 WebGUI | `https://zyxel1920.nativja.no` | **Anbefalt** — NPM→stunnel→switch (LE-cert, ingen advarsel) |
| ZyXEL XS1920 (direkte) | 172.20.0.3:80/443 | Legacy — Chrome blokkerer pga gammel TLS |
| Legacy TLS Proxy | 172.20.0.5:8443 | stunnel proxy (CT 133) — backup-tilgang |
| FreshTomato WebGUI | `https://freshtomato.nativja.no` | Netgear R7000 WiFi AP (LE-cert via NPM) |
| FreshTomato WiFi 2.4G | — | SSID: Nativja24 + Magitek24 (WPA2, kanal 6) |
| FreshTomato WiFi 5G | — | SSID: Nativja50 + Magitek50 (WPA2, kanal 36) |
### NPM (Nginx Proxy Manager) — 172.20.0.42
Håndterer:
- SSL-terminering (Let's Encrypt, Force SSL + HTTP/2)
- `reportmaker.magitek.no` → `http://172.20.0.94:80`
- WebSocket `/app` → `http://172.20.0.94:8081` (upgrade headers)
- `zyxel1920.nativja.no` → `https://172.20.0.5:8443` (stunnel→ZyXEL switch, LE-cert)
- `freshtomato.nativja.no` → `http://172.20.0.2:80` (FreshTomato AP WebGUI, LE-cert)
- `packages.magitek.no` → `http://172.20.0.42:8088` (Packeton)
- `todo.magitek.no` → `http://172.20.0.94:80` (Todo App, migrert 2026-03-10)
### pfSense Brannmur — 172.20.0.1
- **Type:** Fysisk maskin (gjenbrukt enterprise-brannmur, ukjent merke — Q9400, 4 GB RAM, 27 GB disk)
- **Versjon:** pfSense 2.7.2-RELEASE (FreeBSD 14.0) — 2.8.1 tilgjengelig
- **IP:** 172.20.0.1 (bridge0 LAN_BRIDGE, default gateway)
- **WAN:** 62.97.227.206/30 (em0, DHCP fra ISP, gw 62.97.227.205)
- **WebGUI:** http://172.20.0.1:8080 (nginx frontend)
- **SSH:** `ssh root@172.20.0.1` (aktivert 2026-03-01, nøkkel OK)
- **Interfaces:** 10 stk — WAN (em0) + 7 LAN (em1-em7 bridget til bridge0)
- **Kun em3 har aktiv link** (1000baseT) — resten ledige porter
- Gateway for 172.20.0.0/24, DHCP pool .62-.90, 26 statiske reservasjoner
- **NAT:** :12322→VM113:22, :80→NPM:80, :443→NPM:443
- **FW:** WAN deny-default, LAN_BRIDGE allow-all
- **VPN:** WireGuard site-to-site (tun_wg0, 10.0.0.3/24, UDP 51820) → pfSense hjemme
- **DNS:** Unbound lokal resolver, ISP upstream, DHCP serverer 8.8.8.8+1.1.1.1
- **DNS Host Overrides:** zyxel1920.nativja.no → 172.20.0.42, freshtomato.nativja.no → 172.20.0.42, freshtomato.magitek.no → 172.20.0.42
- Se komplett: `CURRENT-pfsense.md`
---
|
||||||
| Lokasjon 1: Kontoret (Kolskogheiane 12) | operations/magitek-server-ops | knowledge | medium | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Lokasjon 1: Kontoret (Kolskogheiane 12)
**Rolle:** Development / staging
**LAN:** 172.20.0.0/24
**Proxmox URL:** https://px1.nativja.no
### Proxmox Host: px1
| Egenskap | Verdi |
|----------|-------|
| **Hostname** | px1 |
| **Management URL** | https://172.20.0.34:8006 (også https://px1.nativja.no) |
| **LAN IP** | 172.20.0.34 |
| **PVE versjon** | 8.4.14 (kernel 6.8.12-16-pve) |
| **CPU / RAM** | 24 cores / 94 GB |
| **Rolle** | Primær hypervisor, development |
| **Cluster** | Nei — standalone |
| **SSH** | `ssh root@172.20.0.34` (nøkkel OK) |
| **Status** | Aktiv (32+ dager uptime) |
### Kjente VM/Containere på px1
Se komplett liste: `CURRENT-px1.md` (25 VMs + 10 CTs)
**Kjørende VMs (2):**
| VMID | Navn | Type | RAM (GB) | IP | Rolle | Status |
|------|------|------|----------|-----|-------|--------|
| 112 | laravel-v11 | VM | 80 | 172.20.0.94 | **ReportMaker** (Apache+PHP-FPM 8.3) | Running |
| 113 | ssh-server | VM | 2 | 172.20.0.95 | **SSH jump host** (pfsense NAT :12322→:22) | Running |
**Kjørende CTs (3):**
| CTID | Navn | RAM (MB) | IP | Rolle | Status |
|------|------|----------|-----|-------|--------|
| 133 | legacy-tls-proxy | 256 | 172.20.0.5 | **stunnel TLS proxy** for legacy devices (ZyXEL etc) | Running |
| 134 | infra-tools | 256 | 172.20.0.134 | **Infrastruktur-verktøy** (SNMP, nettverksadmin) | Running |
| 135 | duplicati-kontoret | 2048 | 172.20.0.69 | **Duplicati backup** (GDrive, NFS from laravel-v11) | Running |
**Andre kjente enheter (ikke på px1):**
| Host | VMID | Navn | IP | Kjører på | Status |
|------|------|------|----|-----------|--------|
| pmox15 | 104 | NginxPM-ub2404 | 172.20.0.42 | pmox15 (172.20.0.33) | Running |
| pmox15 | 108 | pihole-kontoret | 172.20.0.6 | pmox15 (172.20.0.33) | Running |
| — | — | pfSense | 172.20.0.1 | Fysisk (enterprise-brannmur, Q9400, 4GB) | Running |
| — | — | FreshTomato-AP R7000 | 172.20.0.2 | Fysisk (Netgear R7000, WiFi AP, bridge-modus) | Running |
**Andre Proxmox-noder på kontoret:**
| Hostname | IP | PVE | RAM | Running | Rolle |
|----------|-----|-----|-----|---------|-------|
| pmox10 | 172.20.0.32 | 8.4.1 | 18 GB | 0 | Idle |
| pmox15 | 172.20.0.33 | 8.4.1 | 7.7 GB | 2 | Hoster NPM |
|
||||||
| SECURITY WARNING | operations/magitek-server-ops | knowledge | medium | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## SECURITY WARNING
This file contains sensitive infrastructure details (IPs, hostnames, credentials).
It is intended for LLM agent consumption within this private repository ONLY.
NEVER expose this file publicly. NEVER commit credentials to a public repo.
---
## Network Topology Overview
```
┌──────────────────────────────────────────────────────────────────────┐
│ INTERNET │
│ │ │
│ Cloudflare / DNS │
│ │ │ │
│ ┌───────────────┘ └──────────────────┐ │
│ ▼ ▼ │
│ ┌──────────────────────────┐ ┌──────────────────────────┐ │
│ │ LOKASJON 1: KONTORET │ │ LOKASJON 2: HJEMME │ │
│ │ Kolskogheiane 12 │ │ Skeisstøa 37c │ │
│ │ LAN: 172.20.0.0/24 │ │ LAN: 192.168.86.0/24 │ │
│ │ Public: 62.97.227.206 │ │ Public: 81.167.27.54 │ │
│ │ pfsense FW │ │ pfsense FW │ │
│ │ │ │ │ │
│ │ NAT :12322 → VM113:22 │ │ NAT :12322 → ssh-srv:22 │ │
│ │ (ssh-server 172.20.0.95) │ │ (ub-sshtunnel .86.192) │ │
│ └──────────────────────────┘ └──────────────────────────┘ │
│ │ │ │
│ ├──── SSH TUNNELS (ProxyJump) ─┤ │
│ │ │ │
│ └══ WireGuard VPN (UDP 51820) ═┘ │
│ tun_wg0: 10.0.0.0/24 │
│ Kontor=10.0.0.3 ↔ Hjemme=10.0.0.1 │
│ + Road warrior: 10.0.0.2 │
│ │
│ HERMES (laptop, hjemme) ──ProxyJump 62.97.227.206:12322──► Kontoret │
│ ORION (arbeidsstasjon) ──ProxyJump 81.167.27.54:12322───► Hjemme │
│ laravelserver-v11 ──ProxyJump 81.167.27.54:12322───► Hjemme │
│ Mobil/laptop (ute) ──WireGuard 81.167.27.54:51820───► Begge │
└──────────────────────────────────────────────────────────────────────┘
```
---
|
||||||
| Expert Knowledge: Infrastructure & Server Management | operations/magitek-server-ops | knowledge | medium | CURRENT.md | 100 | 2026-03-20 02:00:44 |
|
Body:
# Expert Knowledge: Infrastructure & Server Management
**Version:** 1.0
**Date:** 2026-02-28
**Scope:** Multi-site Proxmox infrastructure, networking, SSH access, services, containers, VMs
**Load:** `coordination/experts/operations/magitek-server-ops/CURRENT.md`
**Sub-Experts:** Per-server/tjeneste kunnskap — last `CURRENT-{navn}.md` basert på oppgave:
- `CURRENT-px1.md` — Proxmox host kontoret (172.20.0.34, 25 VMs, 10 CTs)
- `CURRENT-pmox2.md` — Proxmox host hjemme (192.168.86.123, Dell R620, 48 cores, 180 GB, cluster "magitek", 0 VMs + 1 CT running, arkivert 2026-03-04)
- `CURRENT-px3.md` — Proxmox host hjemme (192.168.86.124, Dell R620, 48 cores, 251 GB, cluster "magitek", 10GbE LAN, HELT TOM, arkivert 2026-03-04)
- `CURRENT-pmox10.md` — Proxmox host kontoret (172.20.0.32, idle, Ryzen 5 laptop)
- `CURRENT-pmox15.md` — Proxmox host kontoret (172.20.0.33, hoster NPM, i5-7500T)
- `CURRENT-px5.md` — Proxmox host hjemme
- `CURRENT-npm-kontoret.md` — Nginx Proxy Manager (kontoret, 172.20.0.42, nginxpm-ub2404)
- `CURRENT-npm-hjemme.md` — Nginx Proxy Manager (hjemme, VM 131, 192.168.86.16)
- `CURRENT-pfsense.md` — pfSense kontoret (fysisk Netgate, 172.20.0.1, CE 2.7.2, 26 DHCP statics)
- `CURRENT-pfsense-hjemme.md` — pfSense hjemme (fysisk Netgate, 192.168.86.1, Plus 23.05.1, 99 DHCP statics, 3 VLANs)
- `CURRENT-nextcloud.md` — Nextcloud-instanser
- `CURRENT-wp01.md` — WordPress produksjonsserver (CT 106, OpenLiteSpeed, MariaDB)
- `CURRENT-magitek-no.md` — www.magitek.no WP-installasjon (WP 6.8.3, Linoor/Elementor, 7 tjenester, full sideoppbygning)
- `CURRENT-truenas.md` — TrueNAS storage (192.168.86.120, 32.7 TB + 1 TB NVMe, 5 brukere, 20 SMB + 14 NFS)
- `CURRENT-reportmaker.md` — Denne serveren (laravelserver-v11)
- `CURRENT-laravelserver1.md` — Laravel dev-server (VM 111, px1, 172.20.0.93, Todo App + Pro2/LMS)
- `CURRENT-todo-app.md` — Todo App (GTD Laravel-app, migrert til laravel-v11, https://todo.magitek.no)
- `CURRENT-ssh-server.md` — SSH jump hosts (VM 113 kontoret + ub-sshtunnel hjemme)
- `CURRENT-duplicati.md` — Duplicati backup system (3-lags strategi, CT 135 duplicati-kontoret 172.20.0.69)
- `CURRENT-pbs-hjemme.md` — Proxmox Backup Server (fysisk, 192.168.86.137, PBS 3.4.8, ZFS mirror 2x4TB ONLINE, 7 datastores + archive-pmox2 (25) + archive-px3 (20))
- `CURRENT-zyxel-xs1920.md` — ZyXEL XS1920-12 managed switch kontoret (172.20.0.3, 12-port 10G, 8/12 aktive, flat VLAN)
- `CURRENT-zyxel-xs1920-hjemme.md` — ZyXEL XS1920-12 managed switch hjemme (192.168.86.5, 12-port 10G, 6/12 aktive, VLAN trunking)
- `CURRENT-legacy-tls-proxy.md` — CT 133, stunnel TLS-proxy for legacy-enheter kontoret (172.20.0.5, Ubuntu 20.04)
- `CURRENT-legacy-tls-proxy-hjemme.md` — CT 188, stunnel TLS-proxy for legacy-enheter hjemme (192.168.86.188, Ubuntu 20.04)
- `CURRENT-infra-tools.md` — CT 134, infrastruktur-verktøy SNMP/nettverksadmin (172.20.0.134, Ubuntu 22.04)
- `CURRENT-freshtomato.md` — FreshTomato R7000 trådløs AP kontoret (172.20.0.2, Netgear R7000, bridge-modus, 4 SSID WPA2)
- `CURRENT-pve-host-backup.md` — PVE host OS backup-system (tre-lags: PVE→PBS→Google Drive, deploy-prosedyre, gjenoppretting)
- `CURRENT-dell5548-hjemme.md` — Dell PowerConnect 5548 managed switch hjemme (192.168.86.8, 48-port 1GbE + 2x 10G SFP+, distribusjonsswitch, VLAN 10 corosync)
- `CURRENT-netgear-ms510tx-hjemme.md` — Netgear MS510TX managed switch hjemme (192.168.86.7, 8-port multi-gig + 2x 10G, 2/10 aktive, VLAN 1+10, RSTP root)
- `CURRENT-wireguard.md` — WireGuard VPN site-to-site (kontoret↔hjemme, 10.0.0.0/24) + road-warrior peer
- `CURRENT-pihole-kontoret.md` — Pi-hole DNS kontoret (CT 108 pa pmox15, 172.20.0.6, Pi-hole v6.4 + Unbound, annonseblokkering + lokal DNS)
- `CURRENT-pihole-hjemme.md` — Pi-hole hjemme (CT 101, px5, 192.168.86.2, Ubuntu 24.04, Pi-hole v6.4 + Unbound)
- `CURRENT-webhuset-dns.md` — DNS & domener: Webhuset (4 kontoer, 25 domener), One.com (5), PRO ISP (2), Domeneshop (1), Cloudflare (1)
- `CURRENT-cloudflare.md` — Cloudflare-soner, API-mønstre og offentlige CNAME-tjenester (shared/)
- `CURRENT-credentials.md` — Sensitiv credentials-vault for infra og tjenester (shared/)
- `CURRENT-monitoring-ha.md` — Dual-site Prometheus/Grafana/Alertmanager stack (shared/, CT 221 + CT 137)
- `CURRENT-orion.md` — Windows 11 Pro workstation kontoret (172.20.0.22, i5-11600KF, 48 GB RAM, GTX 1070, 2 TB NVMe, Heines kontormaskin)
- `CURRENT-hermes.md` — Windows 11 Pro laptop hjemme (192.168.86.148, MSI Modern 14, Ryzen 5 5500U, 16 GB RAM, 512 GB NVMe, Heines bærbare)
- `CURRENT-calibre-server.md` — Calibre Content Server + Calibre-Web (hjemme, CT 102, px5, 192.168.86.154, 35 biblioteker, calibre.hsal.no + books.hsal.no)
- `CURRENT-calibre-opds-plugin.md` — Patched OPDS Reader plugin for Calibre desktop (pa ORION, 9 bugfixes mot upstream v2.3.0, WORKING — browse + download confirmed, kobler til calibre.hsal.no/opds)
- `CURRENT-trubadurheine.md` — trubadurheine.no (ekstern Webstudio Cloud-side, Cloudflare DNS, IKKE på Magitek-infra)
- `CURRENT-security-baseline.md` — Security baseline, audit policy, hardening checklists, severity ratings (shared/)
- `CURRENT-kali-pentest.md` — Kali pentest-lab (kontoret, VM 136, px1, 10.99.0.10, isolert vmbr99 bridge, AI-drevet pentesting)
- `CURRENT-suitecrm.md` — SuiteCRM 8.9.2 (kontoret, VM 122, px1, 172.20.0.102, Apache/PHP 8.3/MySQL 8.0, dual NPM proxy)
- `CURRENT-mcp-servers.md` — MCP Servers monorepo (kontoret, /var/www/mcp-servers/, FastMCP 3.1.0 Python + TS SDK, planlagte: suitecrm/truenas/bookstack/duplicati)
- `CURRENT-mcp-ecosystem.md` — MCP-okosystem: byggverktoy (FastMCP, SDKer, generators), ferdige servere for Magitek-infra, hybrid-strategi (shared/)
---
|
||||||
| Changelog | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-credentials.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Changelog
| Dato | Endring |
|------|---------|
| 2026-03-18 | Lagt til postiz (VM 153) credentials — SSH, sudo, Docker, Postgres |
| 2026-03-13 | Lagt til kali-pentest (VM 136) credentials |
| 2026-03-01 | v1.0 — Opprettet sentral credentials-fil, samlet fra alle ekspertfiler |
|
||||||
| Grafana (monitoring stack) | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-credentials.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Grafana (monitoring stack)
| Instans | URL | Bruker | Passord |
|---------|-----|--------|---------|
| mon-hjemme | `https://monitoring.magitek.no` / `http://192.168.86.162:3000` | `admin` | `Ansjos123` |
| mon-kontoret | `https://monitoring-k.magitek.no` / `http://172.20.0.76:3000` | `admin` | `Ansjos123` |
**Merk:** Bootstrap-passordene fra installasjonen ble rotert til standardpassordet i samme sesjon.
Grafana gir tilgang til dashboards, alert-regler og Alertmanager-innstillinger.
---
## E-postadresser brukt i tjenester
| Tjeneste | E-post |
|----------|--------|
| NPM (begge) | `heine.salbu@gmail.com` |
| PBS | `heine.salbu@gmail.com` |
| Let's Encrypt | `heine.salbu@gmail.com` |
---
### Cloudflare DNS
| Egenskap | Verdi |
|----------|-------|
| Dashboard | https://dash.cloudflare.com/ |
| Konto-epost | `heine.salbu@gmail.com` |
| Account ID | `ca050e4d4c4162a5e851b8b86b961035` |
| Global API Key | `5da6a4bed4bd8a26a57deccf06bbe18264e06` |
| Plan | Free |
**Zone IDs:**
| Domene | Zone ID | Status |
|--------|---------|--------|
| trubadurheine.no | `0c5c757300aa3d8b8f46aa927e69e69e` | **Active** |
| digibits.no | `829c08c586d00538101e3cbbd7b2c45c` | **Active** |
| heinesalbu.no | `4b272051a750b75534199ac5f75208db` | NS byttet |
| hsal.no | `bf428f6f01343585f5eabdda242c5be6` | NS byttet |
| kaaral.no | `cfae215d2a4ce41e8d5335e12589fd04` | NS byttet |
| magitek.no | `51a104147fb258f316b7b214106c9997` | NS byttet |
| nativja.no | `850961b82492abc103b8b78af250de57` | NS byttet |
| osreklame.no | `2715294edc0c9d5adb566b65166800e1` | NS byttet |
**API-bruk:**
```bash
# List zones
curl -s "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: heine.salbu@gmail.com" \
-H "X-Auth-Key: 5da6a4bed4bd8a26a57deccf06bbe18264e06"
# List DNS records for a zone
curl -s "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records" \
-H "X-Auth-Email: heine.salbu@gmail.com" \
-H "X-Auth-Key: 5da6a4bed4bd8a26a57deccf06bbe18264e06"
```
### kali-pentest (VM 136, px1, 10.99.0.10)
| Tjeneste | Bruker | Passord |
|----------|--------|---------|
| SSH (primary) | `root` | SSH-nøkkel (`pentest_ed25519`) |
| SSH (fallback) | `root` | `Ansjos123` |
| VNC (emergency) | — | Proxmox WebGUI > VM 136 > Console |
**SSH-config:** `ssh kali-pentest` fra laravelserver (key: `~/.ssh/pentest_ed25519`)
---
|
||||||
| Legacy TLS Proxy (stunnel) | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-credentials.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Legacy TLS Proxy (stunnel)
| Instans | IP | Bruker | Passord |
|---------|----|--------|---------|
| Kontoret (CT 133) | 172.20.0.5 | `root` | `Ansjos123` |
| Hjemme (CT 188) | 192.168.86.188 | `root` | `Ansjos123` |
### Infra-tools (CT)
| Instans | Bruker | Passord |
|---------|--------|---------|
| infra-tools | `root` | `Ansjos123` |
### Duplicati Backup (CT 135 duplicati-kontoret, 172.20.0.69)
| Tjeneste | URL | Passord |
|----------|-----|---------|
| Duplicati WebUI (kontoret) | https://duplicati-kolsk.magitek.no | `Ansjos123` |
| Duplicati WebUI (hjemme CT 212) | http://192.168.86.133:8200 | `Ansjos123` |
| Backup-kryptering (AES) | — | `Ansjos123` |
| Settings encryption key | DAEMON_OPTS | `DittHemmeligenøkkel123` |
| MariaDB (reportmaker) | — | user=`reportmaker`, pass=`Ansjos123` |
**Reset Duplicati-passord (pa CT 135):**
```bash
ssh root@172.20.0.69 "sudo /usr/lib/duplicati/duplicati-server-util change-password 'Ansjos123'"
```
**NB:** laravelserver-v11 Duplicati er DEAKTIVERT (migrert til CT 135, 2026-03-05).
### ReportMaker (denne serveren)
| Tjeneste | Bruker | Passord |
|----------|--------|---------|
| SSH | `heine` | SSH-nokkel (fra laravelserver-v11) |
| MariaDB | `reportmaker` | `Ansjos123` |
### Packeton (packages.magitek.no)
| Egenskap | Verdi |
|----------|-------|
| Admin user | `admin` |
| Admin pass | `Ansjos123` |
| Admin email | `heine@magitek.no` |
| API token | `9nv1B6f1y7iLL4nFjSJw` |
| HTTP Basic auth | `admin` / `Ansjos123` |
```bash
composer config --global http-basic.packages.magitek.no admin Ansjos123
```
### SkyMirror DB
| Tjeneste | Bruker | Passord |
|----------|--------|---------|
| MariaDB | `skymirror` | `Skymirror2026` |
---
### postiz (VM 153, px5, 192.168.86.177)
| Tjeneste | Bruker | Passord | Notat |
|----------|--------|---------|-------|
| SSH | `heine` | `Ansjos123` | Sudo MED passord (ikke NOPASSWD) |
| SSH root | — | — | Ikke tilgjengelig (kun publickey, ingen root-nøkkel) |
| Docker | `heine` | — | Medlem av docker-gruppen |
| Postgres (Postiz) | `postiz-user` | `postiz-password` | DB: `postiz-db-local` |
| Postgres (Temporal) | `temporal` | `temporal` | DB: `temporal` |
**SSH-config:** `ssh postiz` eller `ssh TU-postiz` fra laravelserver
**Sudo:** `echo 'Ansjos123' | sudo -S <cmd>` (krever passord via stdin)
|
||||||
| pfSense | operations/magitek-server-ops/shared | knowledge | info | CURRENT-credentials.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### pfSense
| Instans | IP | Bruker | Passord | WebGUI |
|---------|----|--------|---------|--------|
| pfSense Kontoret | 172.20.0.1 | `root`/`admin` | Se passordmanager | https://172.20.0.1 |
| pfSense Hjemme | 192.168.86.1 | `root`/`admin` | Se passordmanager | https://192.168.86.1 |
### ZyXEL XS1920-12 Switcher
| Instans | IP | Bruker | Passord | Merknad |
|---------|----|--------|---------|---------|
| Kontoret | 172.20.0.3 | `admin` | `1234` | Standardpassord, bor endres |
| Hjemme | 192.168.86.5 | `admin` | `1234` | Standardpassord, bor endres |
**SSH krever legacy krypto:** `-oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-rsa`
**Enable-passord:** Ukjent (ikke det samme som admin-passord)
### PBS (Proxmox Backup Server)
| Instans | IP | Bruker | WebGUI |
|---------|----|--------|--------|
| PBS Hjemme | — | `root@pam` | HTTPS (email: heine.salbu@gmail.com) |
### iDRAC (Dell servere)
| Server | iDRAC IP | MAC | Bruker | Passord |
|--------|----------|-----|--------|---------|
| IDRAC-RPX3 (R620) | 192.168.86.134 | e0:db:55:06:89:7a | `root` | `Ansjos123` (bekreftet WebGUI) |
| IDRAC-PX6 (R620) | 192.168.86.81 | 24:b6:fd:f5:62:80 | `root` | `Ansjos123` (antatt) |
| R610 | 192.168.86.130 | 14:fe:b5:d7:94:6d | `root` | `Ansjos123` eller `calvin` |
**Tilgang:** SSH med racadm fungerer fra px5 (krever sshpass):
```bash
sshpass -p 'Ansjos123' ssh -o StrictHostKeyChecking=no root@192.168.86.134 'racadm getsysinfo'
sshpass -p 'Ansjos123' ssh -o StrictHostKeyChecking=no root@192.168.86.81 'racadm getsysinfo'
```
**Server-tilknytning:**
- .134 IDRAC-RPX3 → pmox2 (192.168.86.123), Service Tag 59LLB5J
- .81 IDRAC-PX6 → px3 (192.168.86.124), Service Tag 79LLB5J
- .130 R610 → ukjent, mulig avslått
### FreshTomato R7000 (WiFi AP)
| Instans | IP | Bruker | Passord | WebGUI |
|---------|-----|--------|---------|--------|
| FreshTomato-AP | 172.20.0.2 | `root` | `Ansjos123` | `https://freshtomato.nativja.no` (LE) / `https://172.20.0.2` (self-signed) |
**WiFi-passord (alle 4 SSID-er):** `Zardo$76`
**SSID-er:** Nativja24 (2.4G), Nativja50 (5G), Magitek24 (2.4G), Magitek50 (5G)
|
||||||
| Standard-mønster | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-credentials.md | 100 | 2026-03-20 02:00:44 |
|
Body:
# Magitek Credentials Vault
> **Versjon:** 1.2 | **Dato:** 2026-03-18
> **SIKKERHET:** Denne filen inneholder sensitive credentials. ALDRI del offentlig.
> **Sources:** Session b6bb8896-9d33-442f-8a99-22e0e3a6628d (2026-03-18), MP-0011
---
## Standard-mønster
De fleste enheter bruker varianter av samme credentials-skjema:
| Type | Brukernavn | Passord | Merknader |
|------|-----------|---------|-----------|
| LXC Containere | `root` | `Ansjos123` | Nesten alltid |
| VMs (Ubuntu) | `heine` | `Ansjos123` | Oftest; noen ganger `root` |
| Proxmox-hoster | `root` | `Ansjos123` | px1, px5, pmox-serien |
| Nettverksutstyr | `admin` | `1234` eller `admin` | Noen ganger `Admin` / `Administrator` |
**Passord-varianter** (prøv i rekkefølge ved feil):
1. `Ansjos123`
2. `Ansjos123456`
3. `Ansjos12345678`
4. `Ansjos123!`
5. `Ansjos123456!`
---
## Per-host credentials
### Proxmox-hoster
| Host | IP | Bruker | Passord | WebGUI |
|------|----|--------|---------|--------|
| px1 | 172.20.0.91 | `root` | `Ansjos123` | https://172.20.0.91:8006 |
| px5 | 192.168.86.116 | `root` | `Ansjos123` | https://192.168.86.116:8006 |
| pmox10 | — | `root` | `Ansjos123` | — |
| pmox15 | — | `root` | `Ansjos123` | — |
### NPM (Nginx Proxy Manager)
| Instans | IP | SSH | WebGUI URL | WebGUI Login | WebGUI Passord |
|---------|----|-----|-----------|-------------|---------------|
| NPM Kontoret | 172.20.0.42 | `heine` / `Ansjos123` | http://172.20.0.42:81 | `heine.salbu@gmail.com` | `Ansjos123` (original) eller `MagitekNPM2026!` (agent-endret, ubekreftet) |
| NPM Hjemme | 192.168.86.16 | `heine` / `Ansjos123` | http://192.168.86.16:81 | `heine.salbu@gmail.com` | `Ansjos123` |
**NPM API-innlogging:**
```bash
curl -s -X POST http://<NPM-IP>:81/api/tokens \
-H 'Content-Type: application/json' \
-d '{"identity":"heine.salbu@gmail.com","secret":"Ansjos123"}'
```
**NPM DB credentials (begge):** user=npm, pass=npm, db=npm, root_pass=npm
**GOTCHA NPM Kontoret:** En agent endret passordet til `MagitekNPM2026!` via bcrypt-hash i SQLite. Prøv original `Ansjos123` først.
|
||||||
| v1.0 - 2026-03-04 | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### v1.0 - 2026-03-04
- Initial versjon — Cloudflare DNS management ekspert-fil
- Konto, API-tilgang og zone-oversikt dokumentert
- Komplett migrasjonsprosedyre med 5 steg
- DNS-records for alle 3 zoner dokumentert
- 4 gotchas identifisert (DNSSEC-rekkefolgje, proxied mode, e-post, heinesalbu IP-endring)
- Migreringsprioritet for gjenstfaende domener
|
||||||
| v1.7 - 2026-03-13 | operations/magitek-server-ops/shared | knowledge | info | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### v1.7 - 2026-03-13
- Gotcha CF-07: Recurring CPU-spin-bug — MCP-server DEAKTIVERT
- MCP-seksjon oppdatert: markert som deaktivert med referanse til CF-07
### v1.6 - 2026-03-13
- Gotcha CF-05: Cloudflare MCP krever `run` subcommand + Wrangler config (uten = 100% CPU spinloop)
- Gotcha CF-06: API Token vs Global API Key — MCP bruker Bearer, ikke X-Auth-Key
- Oppdatert MCP-seksjon med API Token-info og wrangler-krav
### v1.5 - 2026-03-13
- **Cloudflare MCP-server lagt til** i Claude Code (.mcp.json)
- MCP foretrekkes over manuelle curl-kall for DNS-operasjoner
- Ny seksjon: MCP-server med verktøyoversikt
### v1.4 - 2026-03-04
- **16 interne CNAME-records SLETTET** fra Cloudflare (px1, pmox10, pmox15, pfsense-kolsk, npm-kolsk, zyxel1920, freshtomato, mainwp, todo, pihole-kolsk, reportmaker, packages, skymirror, suitecrm, hostclone, duplicati.reportmaker)
- Interne tjenester nå KUN tilgjengelig via Pi-hole DNS (172.20.0.6 kontoret / 192.168.86.2 hjemme)
- SSL byttet fra individuelle HTTP-01 LE-sertifikater til **wildcard `*.magitek.no` via DNS-01 challenge**
- certbot-dns-cloudflare installert i NPM-container, credentials i /data/cloudflare.ini
- Custom cert ID 48 i NPM, brukes av alle 16 magitek.no proxy hosts
- Auto-renewal cron: mandager kl 03:00 via `tools/ssl-renewal/renew-magitek-wildcard.sh`
- MERK: certbot-dns-cloudflare plugin forsvinner ved container-restart — renewal-scriptet reinstallerer automatisk
### v1.3 - 2026-03-04
- pihole-kolsk.magitek.no CNAME lagt til (Pi-hole kontoret admin via NPM)
### v1.2 - 2026-03-04
- 9 nye CNAME-records for kontoret-tjenester (px1, pmox10, pmox15, pfsense-kolsk, npm-kolsk, zyxel1920, freshtomato, mainwp, todo)
- Alle peker til px10.magitek.no (62.97.227.206 = kontoret WAN)
- Navnekonvensjon: -kolsk (kontoret) / -skeis (hjemme) for dupliserte tjenester
- pfsense.magitek.no IKKE opprettet (finnes allerede på NPM hjemme)
- Zoner fortsatt pending — NS-bytte hos Webhuset ikke propagert ennå
### v1.1 - 2026-03-04
- Alle 8 domener fra Webhuset gmail-konto migrert til Cloudflare
- Zone-tabell oppdatert med kaaral, magitek, nativja, osreklame
- magitek.no: 24 records inkl Google Workspace MX, DKIM, DMARC, 6 CNAME-tjenester
- nativja.no: 15 records inkl Google Workspace MX, DMARC, Nextcloud CNAMEs
- WAN-IP-mapping korrigert: 81.167.27.54=hjemme, 62.97.227.206=kontoret
- hostclone.magitek.no CNAME lagt til (manglet i forste runde)
|
||||||
| CF-08: Wildcard-cert og split-horizon krav for nye subdomener | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### CF-08: Wildcard-cert og split-horizon krav for nye subdomener
- **Problem:** Nye `*.magitek.no`-subdomener antar at wildcard custom cert ID 48 i NPM kontoret er gyldig og dekker dem. Per 2026-03-18 er cert ID 48 utløpt.
- **Konsekvens:** Nye subdomener (`monitoring.magitek.no`, `monitoring-k.magitek.no`) fikk dedikerte LE-serts (ID 56, 57). Wildcard kan ikke lenger antas å dekke nye hosts.
- **Løsning:** Verifiser alltid aktive cert-IDer i NPM kontoret med `curl -s http://npm-api/nginx/certificates` før du oppretter nye proxy-hosts. Husk at split-horizon-oppsettet (CF-03) krever matchende proxy + gyldig cert på BEGGE NPM-instanser (kontoret og hjemme) for intern tilgang. Sjekk også at `tools/ssl-renewal/renew-magitek-wildcard.sh` faktisk fornyer cert ID 48 eller at wildcard-dekning er re-etablert.
- **Oppdaget:** 2026-03-18 (audit-0012)
### CF-07: Cloudflare MCP recurring CPU-spin-bug — PERMANENT DEAKTIVERT
- **Problem:** `@cloudflare/mcp-server-cloudflare` node-prosesser spinner til 99%+ CPU — selv etter CF-05-fixen
- **Symptom:** 6 prosesser spawnes, én eller flere entrer CPU-spinloop
- **Historikk:** Inntruffet 3 ganger — 2026-03-13 (2x), 2026-03-15 (1x)
- **Beslutning (2026-03-15):** MCP er **PERMANENT DEAKTIVERT** og fjernet fra `.mcp.json`. Ingen plan om egen MCP — curl + ekspertfil er tilstrekkelig for DNS-operasjonsfrekvensen
- **Re-aktivering:** Kun hvis upstream bekrefter fix, ELLER DNS-endringsfrekvens øker vesentlig
### CF-04: heinesalbu.no IP-endring
- **Problem:** heinesalbu.no ble endret fra Webhuset webhotell (51.175.5.93) til kontor WAN (62.97.227.206)
- **Konsekvens:** Krever NPM proxy host for heinesalbu.no pa NPM kontoret (172.20.0.42)
- **Status:** NPM proxy host IKKE opprettet enna — gjor dette for NS propagerer
## Changelog
### v1.8 - 2026-03-15
- **MCP PERMANENT DEAKTIVERT** — fjernet fra `.mcp.json` etter tredje CF-07-hendelse
- Strategisk beslutning: ingen egen MCP, curl + ekspertfil er tilstrekkelig
- CF-07 oppdatert med 3-gangers historikk og permanent status
- API-kall-seksjon endret fra "fallback" til "primær metode"
|
||||||
| CF-01: DNSSEC-rekkefolgje | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### CF-01: DNSSEC-rekkefolgje
- **Problem:** Aktivering av DNSSEC hos registrar (Webhuset) for Cloudflare er klar vil bryte DNS
- **Losning:** ALLTID aktiver i Cloudflare forst, deretter legg DS-record hos registrar
- **Status:** DNSSEC ikke aktivert for noen migrerte domener enna
### CF-02: Proxied mode og NPM
- **Problem:** Hvis `proxied: true` settes pa A-records, vil Cloudflare terminere SSL og sende trafikk til NPM
- **Konsekvens:** NPM sin Let's Encrypt-validering kan feile (HTTP-01 challenge)
- **Losning:** Bruk `proxied: false` for alle records som peker til NPM
### CF-03: Monitoring CNAMEs er split-horizon
- **Problem:** `monitoring.magitek.no` og `monitoring-k.magitek.no` kan lande pa ulik NPM avhengig av intern/public DNS-resolusjon
- **Konsekvens:** Et domene kan vise `ERR_SSL_UNRECOGNIZED_NAME` selv om den andre veien fungerer
- **Losning:** Begge FQDNs ma ha gyldig cert + proxy host pa bade NPM kontoret og NPM hjemme
### CF-04: Webhuset e-post ved migrering
- **Problem:** Domener med Webhuset MX (hsal.no, heinesalbu.no) ma beholde MX/SPF-records
- **Losning:** Alltid kopier MX, SPF, autoconfig/autodiscover-records til Cloudflare
- **Referanse:** Se gotcha WH-DNS-06 i CURRENT-webhuset-dns.md
### CF-05: Cloudflare MCP krever `run` subcommand + Wrangler config
- **Problem:** `@cloudflare/mcp-server-cloudflare` kaster `Unknown command: undefined` uten `run` argument, og krever Wrangler config-fil
- **Symptom:** MCP-prosessen spinner på 100% CPU i en uncaught exception-loop uten å registrere verktøy
- **Løsning:** (1) Legg til `"run"` i args i `.mcp.json`, (2) Opprett `/home/heine/.config/.wrangler/config/default.toml` (kan være tom)
- **Oppdaget:** 2026-03-13 — 3 zombie-prosesser brukte 300% CPU totalt
### CF-06: API Token vs Global API Key
- **Problem:** MCP-serveren krever **API Token** (Bearer-auth), ikke Global API Key (X-Auth-Key + X-Auth-Email)
- **Symptom:** Token verification feiler med "Invalid format for Authorization header"
- **Løsning:** Opprett dedikert API Token i Cloudflare (dash.cloudflare.com/profile/api-tokens) eller via API
- **Nåværende token:** Zone Read + DNS Write permissions, opprettet via API 2026-03-13
|
||||||
| Steg 3: Bytt nameservere hos registrar (Webhuset) | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Steg 3: Bytt nameservere hos registrar (Webhuset)
1. Logg inn pa https://webhuset.no/kundesenter/nb-NO/domene
2. Velg domenet → Registry-fane → Navnetjenere
3. Sett: `casey.ns.cloudflare.com` og `gracie.ns.cloudflare.com`
4. Lagre
### Steg 4: Verifiser
```bash
# Sjekk NS-propagasjon
dig NS domene.no +short
# Trigger Cloudflare aktiveringssjekk
curl -s -X PUT "$CF_API/zones/<ZONE_ID>/activation_check" \
-H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY"
# Sjekk zone-status
curl -s "$CF_API/zones/<ZONE_ID>" \
-H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY" | python3 -c "
import json,sys; d=json.load(sys.stdin)['result']; print(f\"Status: {d['status']}\")"
```
### Steg 5: DNSSEC (etter zone er Active)
1. Aktiver DNSSEC i Cloudflare: DNS → DNSSEC → Enable
2. Cloudflare gir en DS-record
3. Legg inn DS-recorden hos Webhuset (Registry → DNSSEC)
4. **ALDRI aktiver DNSSEC hos Webhuset forst** — det bryter DNS!
## Proxied vs DNS-only
| Mode | Proxied | Trafikk | Bruk |
|------|---------|---------|------|
| DNS-only (grey cloud) | `false` | Direkte til origin IP | **Standard for oss** — NPM handterer SSL/proxy |
| Proxied (orange cloud) | `true` | Via Cloudflare CDN | Bare hvis Cloudflare-proxy onskes (DDoS-skydd, CDN) |
**Anbefaling:** Bruk `proxied: false` for alle records som peker til NPM. NPM handterer allerede SSL (Let's Encrypt) og reverse proxy. Cloudflare-proxy ville kreve Origin Certificates og dobbel-proxy-oppsett.
## Domener som venter pa migrering
Se `CURRENT-webhuset-dns.md` for komplett oversikt. Prioritert rekkefolgje:
1. ~~digibits.no~~ — Migrert (test-domene)
2. ~~heinesalbu.no~~ — Migrert
3. hsal.no — Enkel (Webhuset e-post, samme WAN-IP-moenster)
4. kaaral.no — Ukjent oppsett, undersok forst
5. osreklame.no — Ukjent oppsett
6. nativja.no — Google Workspace MX, DKIM, DMARC — forsiktighet
7. magitek.no — Mest komplekst (Google Workspace + Webhuset e-post + mange CNAME-tjenester)
## Kjente Gotchas
|
||||||
| magitek.no (NS byttet) | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### magitek.no (NS byttet)
#### SLETTET: Interne CNAME-records (2026-03-04)
**16 CNAME-records for interne tjenester SLETTET fra Cloudflare** for å unngå offentlig eksponering.
Disse løses nå KUN internt via Pi-hole DNS → NPM kontoret (172.20.0.42).
Slettede domener: px1, pmox10, pmox15, pfsense-kolsk, npm-kolsk, zyxel1920, freshtomato,
mainwp, todo, pihole-kolsk, reportmaker, packages, skymirror, suitecrm, hostclone,
duplicati.reportmaker — alle .magitek.no
**SSL:** Wildcard-sertifikat `*.magitek.no` via DNS-01 challenge (Cloudflare API).
Custom cert ID 48 i NPM kontoret — **UTLØPT per 2026-03-18**. Nye subdomener (`monitoring.magitek.no`, `monitoring-k.magitek.no`) bruker dedikerte LE-certs (ID 56, 57). Verifiser alltid aktive cert-IDer i NPM før du antar wildcard-dekning.
Auto-renewal cron (mandager kl 03:00): `/var/www/magitek-ops/tools/ssl-renewal/renew-magitek-wildcard.sh` — **sjekk at denne faktisk fornyer cert 48**.
#### Aktive CNAME-records (offentlig, for LE SSL-validering / monitoring)
| Type | Navn | Verdi | Formaal |
|------|------|-------|---------|
| CNAME | duplicati-kolsk.magitek.no | px10.magitek.no | Duplicati kontoret CT 135 (lagt til 2026-03-05) |
| CNAME | monitoring.magitek.no | px10.magitek.no | Monitoring hjemme Grafana, offentlig inngang via NPM kontoret, backend til `192.168.86.162:3000` |
| CNAME | monitoring-k.magitek.no | px10.magitek.no | Monitoring kontoret Grafana, offentlig inngang via NPM kontoret, backend til `172.20.0.76:3000` |
**Navnekonvensjon:** `-kolsk` = Kolskogheiane/kontoret, `-skeis` = hjemme (Skeisveien)
## Migreringsprosedyre (for nye domener)
### Steg 1: Opprett zone via API
```bash
curl -s -X POST "$CF_API/zones" \
-H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY" \
-H "Content-Type: application/json" \
--data '{"name":"domene.no","type":"full","account":{"id":"ca050e4d4c4162a5e851b8b86b961035"}}'
```
Notfar zone ID og tildelte nameservere fra responsen.
### Steg 2: Opprett DNS-records
Gjenskape alle records fra Webhuset. Viktig:
**KRITISK — WAN-IP-MAPPING (verifisert 2026-03-04):**
- `81.167.27.54` = **HJEMME WAN** → pfSense hjemme → NPM hjemme (192.168.86.16)
- `62.97.227.206` = **KONTORET WAN** → pfSense kontoret → NPM kontoret (172.20.0.42)
- Sjekk ALLTID hvor tjenesten kjorer for a velge riktig IP!
- Domener med Nextcloud, WordPress (wp01), etc → hjemme = `81.167.27.54`
- Domener med ReportMaker, Packeton, SkyMirror, etc → kontoret = `62.97.227.206`
Andre regler:
- **proxied: false** for A-records (DNS-only, trafikk rett til NPM)
- **MX/SPF:** Behold Webhuset-verdier hvis e-post er aktiv
- **CNAME autoconfig/autodiscover:** Behold `mailconfig.webhuset.no` hvis Webhuset e-post brukes
|
||||||
| DNS-records per zone | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## DNS-records per zone
### trubadurheine.no (Active)
| Type | Navn | Verdi | TTL | Proxied |
|------|------|-------|-----|---------|
| CNAME | trubadurheine.no | nomis-umob-ekan.customers.wstd.io | 3600 | No |
| CNAME | www.trubadurheine.no | trubadurheine.no | 1 (auto) | Yes |
| TXT | _webstudio_is.trubadurheine.no | 5afded0f-4ad0-4f0a-a035-30fced4f08da | 3600 | — |
### digibits.no (Pending)
| Type | Navn | Verdi | TTL | Proxied |
|------|------|-------|-----|---------|
| A | digibits.no | 62.97.227.206 | 600 | No |
| A | *.digibits.no | 62.97.227.206 | 600 | No |
| A | www.digibits.no | 62.97.227.206 | 600 | No |
| CNAME | autoconfig.digibits.no | mailconfig.webhuset.no | 600 | No |
| CNAME | autodiscover.digibits.no | mailconfig.webhuset.no | 600 | No |
| MX | digibits.no | mx.webhuset.no (pri 10) | 600 | — |
| TXT | digibits.no | v=spf1 include:spf.webhuset.no -all | 600 | — |
### heinesalbu.no (Pending)
| Type | Navn | Verdi | TTL | Proxied |
|------|------|-------|-----|---------|
| A | heinesalbu.no | 81.167.27.54 | 600 | No |
| A | *.heinesalbu.no | 81.167.27.54 | 600 | No |
| A | www.heinesalbu.no | 81.167.27.54 | 600 | No |
| CNAME | autoconfig.heinesalbu.no | mailconfig.webhuset.no | 600 | No |
| CNAME | autodiscover.heinesalbu.no | mailconfig.webhuset.no | 600 | No |
| MX | heinesalbu.no | mx.webhuset.no (pri 10) | 600 | — |
| TXT | heinesalbu.no | v=spf1 include:spf.webhuset.no -all | 600 | — |
**IP-endring:** heinesalbu.no endret fra Webhuset webhotell (51.175.5.93) til hjemme WAN (81.167.27.54). Krever NPM proxy host pa NPM hjemme.
### hsal.no (Pending)
| Type | Navn | Verdi | TTL | Proxied |
|------|------|-------|-----|---------|
| A | hsal.no | 81.167.27.54 | 600 | No |
| A | *.hsal.no | 81.167.27.54 | 600 | No |
| CNAME | autoconfig.hsal.no | mailconfig.webhuset.no | 600 | No |
| CNAME | autodiscover.hsal.no | mailconfig.webhuset.no | 600 | No |
| MX | hsal.no | mx.webhuset.no (pri 10) | 600 | — |
| TXT | hsal.no | v=spf1 include:spf.webhuset.no -all | 600 | — |
**Viktige subdomener:** nc.hsal.no (Nextcloud hjemme, via wildcard → NPM hjemme)
|
||||||
| Vanlige API-kall (primær metode — MCP er permanent deaktivert) | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Vanlige API-kall (primær metode — MCP er permanent deaktivert)
```bash
# Variabler (les fra .env eller bruk direkte)
AUTH_EMAIL="heine.salbu@gmail.com"
AUTH_KEY="$(grep CLOUDFLARE_API_KEY /var/www/magitek-ops/.env | cut -d= -f2)"
CF_API="https://api.cloudflare.com/client/v4"
# List alle zoner
curl -s "$CF_API/zones" -H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY"
# List DNS-records for en zone
curl -s "$CF_API/zones/<ZONE_ID>/dns_records" -H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY"
# Opprett DNS-record
curl -s -X POST "$CF_API/zones/<ZONE_ID>/dns_records" \
-H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"sub.domene.no","content":"62.97.227.206","ttl":600,"proxied":false}'
# Oppdater DNS-record
curl -s -X PUT "$CF_API/zones/<ZONE_ID>/dns_records/<RECORD_ID>" \
-H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"sub.domene.no","content":"ny.ip","ttl":600,"proxied":false}'
# Slett DNS-record
curl -s -X DELETE "$CF_API/zones/<ZONE_ID>/dns_records/<RECORD_ID>" \
-H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY"
# Opprett ny zone (domene)
curl -s -X POST "$CF_API/zones" \
-H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY" \
-H "Content-Type: application/json" \
--data '{"name":"domene.no","type":"full","account":{"id":"ca050e4d4c4162a5e851b8b86b961035"}}'
# Trigger aktiveringssjekk (etter NS-bytte hos registrar)
curl -s -X PUT "$CF_API/zones/<ZONE_ID>/activation_check" \
-H "X-Auth-Email: $AUTH_EMAIL" -H "X-Auth-Key: $AUTH_KEY"
```
## Zoner (domener)
| Domene | Zone ID | Status | Records | Merknad |
|--------|---------|--------|---------|---------|
| trubadurheine.no | `0c5c757300aa3d8b8f46aa927e69e69e` | **Active** | 3 | Web Studio-app, migrert 2022 |
| digibits.no | `829c08c586d00538101e3cbbd7b2c45c` | **Active** | 7 | Migrert 2026-03-04, bekreftet aktiv |
| heinesalbu.no | `4b272051a750b75534199ac5f75208db` | NS byttet | 7 | IP endret 51.175.5.93→81.167.27.54 (hjemme WAN) |
| hsal.no | `bf428f6f01343585f5eabdda242c5be6` | NS byttet | 6 | 81.167.27.54 (hjemme WAN), nc.hsal.no = Nextcloud |
| kaaral.no | `cfae215d2a4ce41e8d5335e12589fd04` | NS byttet | 3 | 81.167.27.54 (hjemme WAN), enkel |
| magitek.no | `51a104147fb258f316b7b214106c9997` | NS byttet | 24 | Blandet IP, Google Workspace MX+DKIM+DMARC, 6 CNAME-tjenester |
| nativja.no | `850961b82492abc103b8b78af250de57` | NS byttet | 15 | Blandet IP, Google Workspace MX+DMARC, Nextcloud CNAMEs |
| osreklame.no | `2715294edc0c9d5adb566b65166800e1` | NS byttet | 7 | IP endret 46.226.10.72→81.167.27.54 (hjemme WAN) |
|
||||||
| Oversikt | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-cloudflare.md | 100 | 2026-03-20 02:00:44 |
|
Body:
# Infrastructure Sub-Expert: Cloudflare DNS Management
**Version:** 1.1
**Date:** 2026-03-18
**Parent:** coordination/experts/operations/magitek-server-ops/CURRENT.md
**Load:** coordination/experts/operations/magitek-server-ops/shared/CURRENT-cloudflare.md
**Sources:** Session b6bb8896-9d33-442f-8a99-22e0e3a6628d (2026-03-18), MP-0011
---
## Oversikt
Cloudflare (Free plan) brukes som DNS-provider for Magitek-domener. Migrering fra Webhuset DNS pagfar (2026-03-04). Cloudflare gir API-tilgang, rask propagasjon, DNSSEC og analytics — alt som mangler hos Webhuset.
**Domeneregistrering forblir hos Webhuset** — kun nameservere (DNS-styring) flyttes til Cloudflare.
## Konto
| Egenskap | Verdi |
|----------|-------|
| Dashboard | https://dash.cloudflare.com/ |
| Konto-epost | `heine.salbu@gmail.com` |
| Account ID | `ca050e4d4c4162a5e851b8b86b961035` |
| Plan | Free |
| Nameservere | `casey.ns.cloudflare.com` / `gracie.ns.cloudflare.com` |
**Credentials:** Se `shared/CURRENT-credentials.md` → Cloudflare DNS
## MCP-server — PERMANENT DEAKTIVERT
**⛔ PERMANENT DEAKTIVERT (2026-03-15)** — Cloudflare MCP (`@cloudflare/mcp-server-cloudflare`) er fjernet fra `.mcp.json`.
**Begrunnelse:** CPU-spin-bug CF-07 har inntruffet 3 ganger (2026-03-13, 2026-03-13, 2026-03-15). Upstream har ikke fikset problemet. DNS-operasjoner skjer sjeldent nok til at curl + denne ekspertfilen dekker behovet.
**Strategisk beslutning:** Ingen plan om å bygge egen Cloudflare MCP. Re-aktivering vurderes KUN hvis:
1. Upstream bekrefter fix på CF-07 (CPU-spin-bug)
2. Behovet for hyppige DNS-endringer øker vesentlig
**Wildcard SSL:** Fornyes allerede automatisk via cron/curl-script (`tools/ssl-renewal/renew-magitek-wildcard.sh`) — ingen MCP nødvendig.
**Historisk referanse:** API Token (Zone Read + DNS Write) og Wrangler config (`/home/heine/.config/.wrangler/config/default.toml`) eksisterer fortsatt, men brukes ikke. Se CF-05, CF-06 for detaljer.
---
## API-tilgang
**Global API Key** lagret i `/var/www/magitek-ops/.env`:
```
CLOUDFLARE_API_KEY=<key>
CLOUDFLARE_EMAIL=heine.salbu@gmail.com
CLOUDFLARE_ACCOUNT_ID=ca050e4d4c4162a5e851b8b86b961035
```
|
||||||
| v1.0 - 2026-03-14 | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-mcp-ecosystem.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### v1.0 - 2026-03-14
- Initial versjon basert paa EX-0014 research
- Dokumentert 3-lags byggverktoy (SDK, frameworks, generators)
- Kartlagt 15+ ferdige MCP-servere for Magitek-infrastruktur
- 6 gotchas (MCP-01 til MCP-06)
- Anbefalt hybrid-strategi (fase 1-3)
|
||||||
| MCP-03: Python externally-managed paa Ubuntu 24.04 | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-mcp-ecosystem.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### MCP-03: Python externally-managed paa Ubuntu 24.04
- **Symptom:** `pip install fastmcp` feiler med "externally-managed-environment"
- **Aarsak:** PEP 668 — Ubuntu 24.04 blokkerer system-wide pip install
- **Loesning:** Bruk `uvx fastmcp` (allerede installert v0.9.8) eller Python venv
### MCP-04: Tool Search aktiveres automatisk ved mange MCP-verktoy
- **Symptom:** Claude Code begynner aa deferred-loade verktoy i stedet for aa vise alle
- **Aarsak:** Naa MCP-verktoy overstiger ~10% av context window, aktiverer Claude Code Tool Search automatisk
- **Loesning:** Ingen handling noedvendig — Tool Search gir 85% token-reduksjon. Verktoy forblir tilgjengelige via ToolSearch-kall
### MCP-05: SSH-tunneler noedvendig for hjemme-tjenester
- **Symptom:** MCP-server kan ikke naa tjenester paa 192.168.86.x-nettet
- **Aarsak:** Hjemme-nettet er kun tilgjengelig via WireGuard/SSH-tunneler fra laravelserver-v11
- **Loesning:** Bruk SSH-tunnel wrapper (moenster fra `tools/mcp-proxmox/start-hjemme.sh`) eller konfigurer MCP-serveren til aa koble via SSH-tunnel
### MCP-06: pfSense MCP krever API v2 pakke
- **Symptom:** pfSense MCP-server kan ikke koble til — API-endepunkter finnes ikke
- **Aarsak:** Standard pfSense har ikke REST API; krever tredjepartspakke "pfSense API v2"
- **Loesning:** Installer pfSense API v2 paa begge pfSense-bokser foer MCP-oppsett. Verifiser at pakken er kompatibel med CE 2.7.2 (kontoret) og Plus 23.05.1 (hjemme)
---
## Referanser
| Ressurs | Plassering |
|---|---|
| Explore-rapport EX-0014 | `coordination/explore/EX-0014-260314-mcp-server-building-strategy/EXPLORE.md` |
| SuiteCRM MCP-analyse EX-0013 | `coordination/explore/EX-0013-260314-suitecrm-mcp-server/EXPLORE.md` |
| Proxmox MCP-kildekode | `tools/mcp-proxmox/` |
| MCP-konfigurasjon | `.mcp.json` |
| Cloudflare MCP gotcha CF-07 | `shared/CURRENT-cloudflare.md` |
| FastMCP GitHub | github.com/prefecthq/fastmcp |
| MCP TS SDK | github.com/modelcontextprotocol/typescript-sdk |
---
## Changelog
|
||||||
| Maa bygges fra scratch | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-mcp-ecosystem.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Maa bygges fra scratch
| Tjeneste | Grunn | Anbefalt metode |
|---|---|---|
| Duplicati | Ingen MCP finnes | FastMCP + Duplicati API |
| SuiteCRM (full) | CData er read-only | FastMCP.from_openapi() med SuiteCRM swagger.json |
| WireGuard | Umodne community-prosjekter | FastMCP custom |
---
## MCP Server Discovery — Hvor finne servere
| Ressurs | URL-segment | Type |
|---|---|---|
| mcp.so | Community-katalog | Soekbar database |
| awesome-mcp-servers | GitHub: punkpeye/awesome-mcp-servers | Kuratert liste |
| mcpservers.org | Alternativ katalog | Soekbar |
| lobehub.com/mcp | LobeHub marketplace | Kategorisert |
| npmjs.com | Soek "mcp-server" | npm-pakker |
| PyPI | Soek "mcp" / "fastmcp" | Python-pakker |
---
## Anbefalt Byggstrategi (Hybrid)
**Fase 1 — Quick wins (installer ferdige):**
1. TrueNAS MCP (offisiell) — storage-management
2. BookStack MCP — dokumentasjon soekbar for agenter
3. MainWP MCP (offisiell) — WordPress-administrasjon
**Fase 2 — Custom builds med FastMCP:**
4. SuiteCRM MCP — `FastMCP.from_openapi()` med swagger.json
5. Duplicati MCP — custom FastMCP mot Duplicati API
**Fase 3 — Evaluer behov:**
6. pfSense MCP — avhenger av API v2 installasjon
7. Pi-hole MCP — avhenger av v6 (bekreftet v6.4 paa begge)
8. Nextcloud MCP — vurder merverdi utover SSH
**Byggverktoy:** FastMCP (Python) for alt custom. Claude Code + Context7 for utviklingen.
---
## Kjente Gotchas
### MCP-01: Ingen "meta-MCP" finnes for aa bygge MCP-servere
- **Symptom:** Soek etter MCP-server som bygger andre MCP-servere gir null relevante resultater
- **Aarsak:** Byggeprosessen er for kreativ/kontekstavhengig for et generisk verktoy
- **Loesning:** Claude Code + Context7 (SDK-docs) er den faktiske "builderen"
### MCP-02: TypeScript MCP — ALDRI bruk console.log()
- **Symptom:** MCP-server krasjer med uleselig output, JSON-RPC-feil
- **Aarsak:** MCP bruker stdio for JSON-RPC; console.log() forurenser stdout-stroemmen
- **Loesning:** Bruk `console.error()` for all debugging/logging i TS MCP-servere
|
||||||
| Lag B — High-Level Frameworks (bygg raskere) | operations/magitek-server-ops/shared | knowledge | high | CURRENT-mcp-ecosystem.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Lag B — High-Level Frameworks (bygg raskere)
### FastMCP (Python) — Industristandard
| Egenskap | Verdi |
|---|---|
| Versjon | v3.1.0 (v3.0 jan 2026) |
| Markedsandel | ~70% av alle MCP-servere |
| Nedlastinger | 1M+ daglig |
| Installasjon | `pip install fastmcp` / `uvx fastmcp` |
| Testing | `fastmcp dev server.py` (interaktiv inspector) |
Noekkelfeatures:
- Decorator-basert: `@mcp.tool` paa vilkaarlig Python-funksjon
- Auto-genererer JSON-schema fra type hints + docstrings
- `FastMCP.from_openapi(url)` — generer server fra Swagger/OpenAPI spec
- `FastMCP.from_fastapi(app)` — generer fra eksisterende FastAPI-app
### mcp-framework (TypeScript)
Alternativt hoeyere-nivaa TS-rammeverk. `npm i mcp-framework`. Mindre utbredt enn FastMCP.
## Lag C — Generators (auto-bygg fra API-spec)
| Generator | Input | Output | Spraak |
|---|---|---|---|
| FastMCP.from_openapi() | OpenAPI/Swagger spec | Full MCP-server | Python |
| Speakeasy | OpenAPI spec | Production MCP bundle | Multi |
| openapi-mcp-generator | OpenAPI 3.x | MCP-server med Zod | TypeScript |
| MCPGen | OpenAPI | Full server scaffold | Go |
**Speakeasy** har bygget 50+ produksjonsservere. Playbooks-skill for automatisert generering.
---
## Tilgjengelige Runtimes paa laravelserver-v11
| Runtime | Versjon | MCP-bruk |
|---|---|---|
| Node.js | v24.11.0 + npm 11.6.1 | Primaer (TS SDK, npx MCP-servere) |
| Python | 3.12.3 + uvx 0.9.8 | FastMCP-ready (Lag B/C) |
| PHP | 8.3.6 | Ikke relevant for MCP |
---
## Ferdige MCP-servere for Magitek-infrastruktur
### Allerede i drift
| Tjeneste | Implementasjon | Status |
|---|---|---|
| Proxmox | Node.js-fork av canvrno/ProxmoxMCP (GitHub) — rewritet fra Python til JS av Claude-agent. Kildekode: `tools/mcp-proxmox/` (6 instanser) | Fullt operativ |
| Docker | mcp-docker-server (npx) | Fullt operativ |
| SQLite | mcp-server-sqlite (uvx) | Fullt operativ |
| Context7 | Upstash (npx) | Fullt operativ |
| Serena | Oraios (uvx) | Fullt operativ |
### Tilgjengelige — ikke installert ennaa
| Tjeneste | MCP-prosjekt | Noekkelinfo | Krav |
|---|---|---|---|
| TrueNAS | truenas/truenas-mcp (offisiell) | Offisiell fra iXsystems | API-tilgang |
| pfSense | gensecaihq/pfsense-mcp-server | Community | pfSense API v2 pakke |
| Pi-hole | aplaceforallmystuff/mcp-pihole | Community | Pi-hole v6+ |
| BookStack | pnocera/bookstack-mcp-server | 47+ verktoy, 4+ implementasjoner | API-token |
| Nextcloud | hithereiamaliff/mcp-nextcloud | 34 verktoy | API-tilgang |
| NPM | b3nw/nginx-proxy-manager-mcp | Nginx Proxy Manager | NPM API |
| MainWP | mainwp/mainwp-mcp (offisiell) | Offisiell fra MainWP | MainWP 6.0+ |
| OPNsense | Pixelworlds / richard-stovall | 88-601 verktoy | API-tilgang |
| WordPress | Via mainwp/mainwp-mcp | Indirekte via MainWP | MainWP 6.0+ |
| SuiteCRM | CData (read-only) | Begrenset — bygg custom | Swagger spec tilgjengelig |
|
||||||
| Oversikt | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-mcp-ecosystem.md | 100 | 2026-03-20 02:00:44 |
|
Body:
# Infrastructure Sub-Expert: MCP Ecosystem — Building Tools & Available Servers
**Version:** 1.0
**Date:** 2026-03-14
**Parent:** coordination/experts/operations/magitek-server-ops/CURRENT.md
**Load:** coordination/experts/operations/magitek-server-ops/shared/CURRENT-mcp-ecosystem.md
**Source:** coordination/explore/EX-0014-260314-mcp-server-building-strategy/EXPLORE.md
---
## Oversikt
Model Context Protocol (MCP) er en open standard (Linux Foundation) for verktoy-integrasjon mellom LLM-agenter og eksterne systemer. Magitek bruker MCP som primaer integrasjonsmekanisme for infrastruktur-styring.
**Status (mars 2026):** 10.000+ aktive MCP-servere globalt, 97 millioner maanedlige SDK-nedlastinger.
## Magiteks MCP-oppsett
Konfigurasjon: `.mcp.json` i workspace root. Deferred loading (0 token-kostnad til foerste bruk).
| MCP Server | Type | Runtime | Dekker |
|---|---|---|---|
| proxmox-px1, proxmox-hjemme, proxmox-pmox10, proxmox-pmox15, proxmox-pmox2, proxmox-px3 | Fork av canvrno/ProxmoxMCP (Node.js rewrite) | Node.js | Alle PVE-noder |
| serena | 3rd party | uvx | Kode-navigasjon |
| context7 | 3rd party | npx | SDK-dokumentasjon |
| dam-sqlite | 3rd party | uvx | SQLite-databaser |
| docker | 3rd party | npx | Docker containers |
**Deaktiverte:** cloudflare (CF-07 CPU-spin bug), playwright (fjernet)
---
## Lag A — Offisielle SDKer (bygg fra scratch)
| SDK | Spraak | Installasjon | Modenhet |
|---|---|---|---|
| @modelcontextprotocol/sdk | TypeScript/JS | `npm i @modelcontextprotocol/sdk` | Stabil, v0.4+ |
| mcp (Python SDK) | Python | `pip install mcp` | Stabil |
| C# SDK | .NET | NuGet | Stabil |
| Go SDK | Go | `go get` | Stabil |
| Ruby SDK | Ruby | gem | Nyere |
**Magiteks oppsett:** Proxmox MCP er en **klon av [gilby125/mcp-proxmox](https://github.com/gilby125/mcp-proxmox)** (Node.js rewrite av canvrno/ProxmoxMCP). Kildekode: `tools/mcp-proxmox/`. Remote er satt til upstream — kan oppgraderes med `git pull`. Våre eneste lokale tilpasninger er tre **untracked** wrapper-scripts (`start-hjemme.sh`, `start-pmox2.sh`, `start-px3.sh`) som setter opp SSH-tunneler og env-variabler for hjemme-noder. Disse rører ikke `index.js` og overlever `git pull`.
|
||||||
| Gotchas section | operations/magitek-server-ops/shared | gotcha | low | CURRENT-monitoring-ha.md | 100 | 2026-03-20 02:00:44 |
|
Body:
MONITORING-01: Split-Horizon Monitoring DNS (RESOLVED 2026-03-19)
- Symptom: `monitoring-k.magitek.no` intermittently returns `ERR_SSL_UNRECOGNIZED_NAME` from kontoret.
- Root cause: Pi-hole kontoret had `dnsmasq address=` override but NOT a `dns.hosts` entry. FTL cache stored CNAME (monitoring-k -> px10.magitek.no), resolved target via dns.hosts (px10.magitek.no -> 192.168.86.16 = NPM hjemme). NPM hjemme has no valid cert -> SSL error.
- Why intermittent: `pihole reloaddns` flushes cache temporarily; CNAME re-enters cache after TTL expiry.
- Permanent fix: Added both monitoring FQDNs to Pi-hole dns.hosts (pihole.toml). dns.hosts returns TTL=0, never overridden by CNAME cache. dnsmasq address= kept as backup.
- Rule: ALL split-horizon domains with Cloudflare CNAMEs MUST use dns.hosts, not just dnsmasq address=.
MONITORING-02: Overview Dashboard Shows No Data
- Symptom: community dashboards render, but `magitek-infra-overview` is empty.
- Cause: repo exports at `coordination/experts/operations/magitek-server-ops/shared/grafana-dashboards/mon-hjemme-magitek-infra-overview.json:23` and `coordination/experts/operations/magitek-server-ops/shared/grafana-dashboards/mon-kontoret-magitek-infra-overview.json:23` still use `${datasource}`.
- Fix: treat live Grafana as source of truth; re-export JSON after replacing datasource refs with the local Prometheus UID.
MONITORING-03: Copied Certs On NPM Hjemme Expire
- Symptom: HTTPS later breaks on hjemme-LAN paths while public access may still work.
- Cause: custom certs copied from NPM kontoret to NPM hjemme are imported certs, not auto-renewed there.
- Fix: renew/copy again before expiry or provision DNS-01 / wildcard automation on NPM hjemme.
MONITORING-04: node_exporter Unit Name Differs By Site
- Symptom: restart or health scripts fail on exactly one monitoring CT.
- Cause: mon-hjemme uses `node_exporter.service`; mon-kontoret uses `prometheus-node-exporter.service`.
- Fix: branch service commands per site.
MONITORING-05: Telegram Alerting Is Still Placeholder-Based
- Symptom: alerts exist in Prometheus but no Telegram messages arrive.
- Cause: `alertmanager.yml` was deployed with placeholder `bot_token` and `chat_id`.
- Fix: create the bot/chat and run `tools/monitoring/setup-telegram-alertmanager.sh:1`.
MONITORING-06: pfSense And TrueNAS Need Manual SNMP Before They Appear
- Symptom: firewall and storage nodes are absent from dashboards and alerts.
- Cause: SNMP is not exposed until WebGUI configuration is enabled on pfSense and TrueNAS.
- Fix: follow `tools/monitoring/MANUAL-STEPS.md:7`, `tools/monitoring/MANUAL-STEPS.md:30`, `tools/monitoring/MANUAL-STEPS.md:45`, then enable `snmp_exporter` per `tools/monitoring/MANUAL-STEPS.md:67`.
MONITORING-07: Prometheus Reload API Is Not Enabled
- Symptom: `/-/reload` workflow does not apply config changes.
- Cause: Prometheus was deployed without `--web.enable-lifecycle`.
- Fix: run `promtool check config` first, then `systemctl restart prometheus`.
MONITORING-08: Prometheus v3 Tarball Has No consoles/ Directory
- Symptom: systemd fails if ExecStart includes `--web.console.templates` or `--web.console.libraries`.
- Cause: Prometheus 3.10.x removed `consoles/` and `console_libraries/` from the release tarball.
- Fix: do NOT use `--web.console.*` flags in systemd unit. Start Prometheus without them.
MONITORING-09: Grafana Dashboard 7587 Uses Non-Standard Datasource Input
- Symptom: Blackbox Exporter dashboard imports successfully but shows no data or wrong datasource.
- Cause: Community dashboard 7587 uses input variable `DS_SIGNCL-PROMETHEUS` instead of standard `DS_PROMETHEUS`.
- Fix: when importing via API, map the input `{"name":"DS_SIGNCL-PROMETHEUS","type":"datasource","pluginId":"prometheus","value":"Prometheus"}`.
MONITORING-10: mon-kontoret skal bruke DHCP-reservert IP
- Symptom: `monitoring-k.magitek.no` eller federation mot `172.20.0.76` bryter etter nettverksendringer pa CT 137.
- Cause: MP-0011 opprettet mon-kontoret med `ip=dhcp`, og et senere statisk-IP-forsok ble rullet tilbake i samme IP-spor.
- Fix: behold `172.20.0.76` som DHCP-reservert adresse og unnga ad-hoc statisk nettverkskonfig inne i CT-en.
MONITORING-11: kontor-pathen avhenger av Pi-hole dns.hosts (IKKE bare dnsmasq)
- Symptom: offentlig og hjemme-LAN tilgang virker, men kontoret treffer ikke `monitoring-k.magitek.no`.
- Cause: kontor-split-horizon krever `dns.hosts` entry i pihole.toml (TTL=0, aldri cachet). dnsmasq address= alene er utilstrekkelig pga FTL CNAME cache-poisoning.
- Fix: verifiser at `monitoring-k.magitek.no` og `monitoring.magitek.no` finnes i pihole.toml dns.hosts med IP `172.20.0.42`. Se PIHOLE-K-01 for full forklaring.
|
||||||
| Hook-beskyttelse (production-safety) | operations/magitek-server-ops/shared | knowledge | low | CURRENT-security-baseline.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Hook-beskyttelse (production-safety)
`~/.claude/hooks/pre-tool-use-production-safety.sh` blokkerer farlige kommandoer:
- `iptables -F` (uten chain-navn) — global flush → **blokkert**
- `iptables -F CHAIN_NAME` (med spesifikk chain) → **tillatt** (regex: `iptables\s+-F(?!\s+\w)`)
- Pakkeinstallasjon på infra-servere → **blokkert**
- Destruktive Proxmox/ZFS-operasjoner → **blokkert**
### Security-spesifikke agenter
- **security-auditor** — bred infrastruktur-audit (SSH, passord, brannmur, SSL, CVE)
- **pentest-operator** — penetrasjonstesting fra isolert Kali VM (CT 138 på px1)
---
## Gotchas
### SEC-01: Shared Password Ecosystem
**Problem:** Nearly all infrastructure uses `Ansjos123` variants.
**Impact:** Compromise of one system = compromise of all.
**Mitigation:** Phase in unique passwords per service class, starting with production (hjemme).
### SEC-02: TrueNAS Password-Only SSH
**Problem:** TrueNAS requires `sshpass` for SSH (no pubkey configured).
**Impact:** Password transmitted in command arguments, visible in process list.
**Mitigation:** Configure SSH key auth on TrueNAS.
### SEC-03: LXC Root Password Login
**Problem:** Most LXC containers allow root login with password.
**Impact:** Brute-force risk if network is compromised.
**Mitigation:** Switch to key-based auth, disable password login.
### SEC-04: Proxmox WebGUI on Default Port
**Problem:** Proxmox WebGUI (8006) accessible from LAN without additional auth.
**Impact:** Anyone on LAN can attempt login.
**Mitigation:** Restrict 8006 access to management IPs via firewall.
|
||||||
| Users & Permissions | operations/magitek-server-ops/shared | knowledge | critical | CURRENT-security-baseline.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Users & Permissions
- [ ] No unused user accounts
- [ ] No users with UID 0 except root
- [ ] sudo configured with specific commands, not blanket NOPASSWD
- [ ] Service accounts use nologin shell
---
## 7. Backup Security
- [ ] Proxmox backups encrypted or on isolated storage
- [ ] PBS (Proxmox Backup Server) access restricted
- [ ] Backup integrity verified (not just "job ran")
- [ ] Offsite backup exists (Duplicati → cloud)
- [ ] Backup credentials separate from server credentials
---
## 8. Network Security
### Internal
- [ ] VLANs properly segmented (hjemme: VLAN 10, 20, 30)
- [ ] Inter-VLAN routing restricted
- [ ] Management interfaces (iDRAC, switch admin) on separate VLAN or ACL-protected
- [ ] No unnecessary SNMP (or SNMPv3 with auth/priv)
### External
- [ ] NPM proxy hosts: only needed domains exposed
- [ ] No direct port forwards to internal services (use reverse proxy)
- [ ] DDoS protection via Cloudflare where applicable
- [ ] DNS records audit: no stale entries pointing to decommissioned services
---
## 9. Monitoring & Logging
- [ ] Failed SSH login attempts logged and alertable
- [ ] Proxmox task logs reviewed
- [ ] Syslog centralized (or at minimum checked per host)
- [ ] Log rotation configured
- [ ] No sensitive data in logs (passwords, tokens)
---
## 10. Severity Ratings
| Severity | Description | Response |
|----------|-------------|----------|
| **CRITICAL** | Active exploit, data exposure, open root access | Fix immediately |
| **HIGH** | Shared passwords, missing patches, weak SSH config | Fix within 1 week |
| **MEDIUM** | Default switch passwords, missing unattended-upgrades | Fix within 1 month |
| **LOW** | Non-ideal config, missing HSTS, verbose banners | Backlog |
| **INFO** | Informational, no action needed | Document |
---
## 11. MCP Tooling for Security Operations (lagt til 2026-03-13)
Claude Code har følgende MCP-servere tilgjengelige for sikkerhetsarbeid:
| MCP Server | Formål | Sikkerhetsrelevans |
|------------|--------|--------------------|
| **proxmox-*** (6 stk) | VM/CT management | Snapshot før endringer, status-sjekk |
| **cloudflare** | DNS, zones, audit logs | DNS-record audit, stale entries, zone review |
| **docker** | Container management (npm-kontoret) | Container image audit, config review. Tilgang via SSH socket-tunnel (`docker-npm-tunnel.service`) |
| **github** | Repos, issues, PRs | Code review, vulnerability tracking |
| ~~pfsense-*~~ | ~~Firewall management~~ | **Droppet** — tredjepartspakke, hjemme pkg ødelagt, lav ROI |
|
||||||
| Target State | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-security-baseline.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Target State
- Unique passwords per service class (infra, apps, network)
- API tokens instead of passwords where possible (Proxmox MCP already uses tokens)
- Password manager for credential storage
### Audit Checks
- [ ] Check for default/empty passwords
- [ ] Check password reuse across services
- [ ] Check for passwords in plaintext config files
- [ ] Check for hardcoded credentials in scripts/code
- [ ] Verify API tokens have minimal required privileges
---
## 4. Firewall Baseline
### pfSense (both locations)
- [ ] Default deny inbound
- [ ] Only required ports forwarded
- [ ] No "any/any" rules
- [ ] WireGuard VPN rules scoped to needed services
- [ ] NAT rules documented and justified
- [ ] Review stale/unused rules
### Host-Level (iptables/nftables/ufw)
- [ ] Proxmox hosts: Only 8006 (API), 22 (SSH), 111/2049 (NFS if needed)
- [ ] Web servers: Only 80, 443, 22
- [ ] Internal services: Restrict to LAN subnet
---
## 5. SSL/TLS Baseline
- [ ] All public-facing services use TLS 1.2+ (prefer 1.3)
- [ ] No expired certificates
- [ ] Certificates auto-renew (Let's Encrypt via NPM)
- [ ] Internal services: Self-signed OK but documented
- [ ] HSTS enabled on production sites
- [ ] No weak ciphers (RC4, DES, 3DES, MD5-based)
### Known DNS Rule
> All `*.magitek.no` subdomains MUST use CNAME → `px10.magitek.no` (62.97.227.206)
> The wildcard A record (81.167.27.54) does NOT support LE SSL.
---
## 6. System Hardening Baseline
### Package Management
- [ ] `unattended-upgrades` installed and enabled (Debian/Ubuntu)
- [ ] No packages from untrusted repos
- [ ] Regular `apt update && apt upgrade` schedule
### File System
- [ ] No world-writable files in system directories
- [ ] Minimal SUID/SGID binaries
- [ ] `/tmp` and `/var/tmp` noexec where possible
- [ ] Log files protected (640 or stricter)
### Services
- [ ] Only required services running
- [ ] No unnecessary listening ports
- [ ] Docker containers: no `--privileged` unless required
- [ ] Docker images: regularly updated, no `latest` tag in production
|
||||||
| 1. Security Zones | operations/magitek-server-ops/shared | knowledge | critical | CURRENT-security-baseline.md | 100 | 2026-03-20 02:00:44 |
|
Body:
# Expert Knowledge: Security Baseline & Audit Policy
**Version:** 1.1
**Date:** 2026-03-13
**Scope:** Security standards, audit checklists, and hardening baselines for all Magitek infrastructure
**Load:** `coordination/experts/operations/magitek-server-ops/shared/CURRENT-security-baseline.md`
---
## 1. Security Zones
| Zone | Network | Risk Level | Policy |
|------|---------|------------|--------|
| **Hjemme** | 192.168.86.x | **PRODUCTION** — live websites, Nextcloud, storage | Strict hardening, no experiments |
| **Kontoret** | 172.20.0.x | **DEVELOPMENT** — dev servers, tooling | Moderate hardening |
| **VPN** | 10.10.10.x | WireGuard site-to-site | Encrypted, trusted |
| **External** | Internet-facing | Highest risk | Minimal surface, WAF/proxy |
---
## 2. SSH Baseline
### Required Settings (all servers)
```
PermitRootLogin prohibit-password # Key-only for root (or "no" on non-infra)
PasswordAuthentication no # Key-only everywhere
PubkeyAuthentication yes
PermitEmptyPasswords no
MaxAuthTries 5
LoginGraceTime 60
Protocol 2
X11Forwarding no # Unless explicitly needed
AllowAgentForwarding no # Unless explicitly needed
```
### Known Deviations (document, don't ignore)
- **TrueNAS** (192.168.86.120): Password auth required (FreeBSD, no pubkey setup)
- **LXC containers**: Root login with password common — flag but accept for now
- **Proxmox hosts**: Root key-based login required for management
### SSH Key Audit Checklist
- [ ] All keys are ED25519 or RSA-4096+
- [ ] No DSA or RSA-1024 keys
- [ ] `authorized_keys` files contain only known keys
- [ ] No wildcard or blank `from=` restrictions missing on critical servers
---
## 3. Password Policy
### Current State (KNOWN ISSUES)
**The Magitek network uses a small set of shared passwords across most infrastructure.**
This is the #1 security risk. Document, flag severity, but don't break access.
| Password | Used On | Risk |
|----------|---------|------|
| `Ansjos123` | LXC root, VM heine, Proxmox WebGUI | HIGH — shared everywhere |
| `Ansjos123456` | Some services | HIGH — predictable variant |
| `Ansjos12345678` | Some services | HIGH — predictable variant |
| `admin`/`1234` | Network switches | MEDIUM — default creds |
|
||||||
| Changelog | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-docker-operations.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Changelog
### v1.0 - 2026-03-18
- Docker disk full feilsøkingsprosedyre dokumentert
- Docker log rotation setup med deploy-mønster
- Live disk-utvidelse Ubuntu LVM+ZFS prosedyre
- 3 gotchas dokumentert (du vs docker, treg daemon, heredoc SSH)
|
||||||
| Deploy-mønster (sudo med passord over SSH) | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-docker-operations.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Deploy-mønster (sudo med passord over SSH)
1. Lag filen lokalt: `cat > /tmp/daemon.json << 'EOF' ... EOF`
2. SCP til server: `scp /tmp/daemon.json <host>:/tmp/daemon.json`
3. Sudo-kopier: `ssh <host> "echo 'Ansjos123' | sudo -S cp /tmp/daemon.json /etc/docker/daemon.json"`
4. Restart Docker: `ssh <host> "echo 'Ansjos123' | sudo -S systemctl restart docker"`
**NB:** Heredoc over SSH med sudo/tee fungerer IKKE pålitelig — bruk scp + sudo cp.
**Gjelder per 2026-03-18:** Postiz (192.168.86.177) har log rotation konfigurert.
---
## Live Disk-utvidelse på Ubuntu VM (LVM + ZFS Backend)
Prosedyre for å utvide disk på en Ubuntu VM med LVM uten nedetid:
### Steg 1: Ta snapshot (obligatorisk)
```bash
ssh TU-px5 "qm snapshot <vmid> pre-diskexpand-$(date +%Y%m%d)"
```
### Steg 2: Resize disk i Proxmox
```bash
ssh TU-px5 "qm resize <vmid> scsi0 <new_size>G"
```
### Steg 3: Utvid partisjon, PV, LV og filsystem (inne i VM)
```bash
growpart /dev/sda 3
pvresize /dev/sda3
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/ubuntu-vg/ubuntu-lv
```
Alt gjøres live uten nedetid eller reboot. Verifiser med `df -h /`.
**Forutsetninger:**
- VM bruker LVM (standard Ubuntu server-installasjon)
- Disk er scsi0 (standard for Proxmox)
- Partisjon 3 er LVM PV (standard layout: sda1=BIOS boot, sda2=EFI, sda3=LVM)
- `growpart` er installert (`apt install cloud-guest-utils` om nødvendig)
---
## Kjente Gotchas
### DOCKER-01: `du` viser ikke Docker overlay2-bruk
- **Symptom:** `du -h --max-depth=1 /` viser lavt forbruk, men disk er full
- **Årsak:** `/var/lib/docker/overlay2/` krever root-tilgang; `du` som vanlig bruker hopper over
- **Fix:** Bruk `docker system df` for komplett oversikt
### DOCKER-02: Docker daemon er svært treg ved full disk
- **Symptom:** Docker-kommandoer timer ut (2+ min)
- **Årsak:** Docker daemon kan ikke skrive metadata når disk er 100% full
- **Fix:** Frigjør plass med `truncate` på store logger, eller utvid disk først
### DOCKER-03: Heredoc over SSH med sudo fungerer ikke
- **Symptom:** `ssh host "sudo tee /etc/file << 'EOF' ... EOF"` gir uventet resultat
- **Årsak:** Shell-ekspansjon og quoting-problemer med heredoc over SSH
- **Fix:** Bruk scp + sudo cp mønsteret (se "Docker Log Rotation Setup" over)
|
||||||
| Docker Disk Full — Feilsøkingsprosedyre | operations/magitek-server-ops/shared | knowledge | medium | CURRENT-docker-operations.md | 100 | 2026-03-20 02:00:44 |
|
Body:
# Infrastructure Sub-Expert: Docker Operations & Disk Management
**Version:** 1.0
**Date:** 2026-03-18
**Parent:** coordination/experts/operations/magitek-server-ops/CURRENT.md
**Load:** coordination/experts/operations/magitek-server-ops/shared/CURRENT-docker-operations.md
**Sources:** Session 2026-03-18 (Postiz VM 153 disk full troubleshooting)
---
## Docker Disk Full — Feilsøkingsprosedyre
### Steg 1: Identifiser diskbruk
```bash
df -h / # Total diskbruk
docker system df # Docker-spesifikk (images, containers, volumes, cache)
docker ps -a --size # Container writable layer størrelse
```
**VIKTIG:** `du -h --max-depth=1 /` viser IKKE Docker overlay2-data fordi `/var/lib/docker/` krever root. Bruk alltid `docker system df`.
### Steg 2: Identifiser problemet
| Symptom | Årsak | Løsning |
|---------|-------|---------|
| Stor "Containers" i `docker system df` | Writable layer (crash-loop, caching) | Steg 3a |
| Stor "Local Volumes" | Database/data-vekst | Manuell opprydding |
| Stor "Build Cache" | Ubrukt build-cache | `docker builder prune` |
| Mange stoppede containere | Gamle containere ikke fjernet | `docker container prune` |
### Steg 3a: Writable layer cleanup
```bash
docker compose down # Stopp stack
docker system prune -f # Fjern stoppede containere, ubrukte nettverk, dangling images
docker compose up -d # Start stack igjen
```
### Steg 3b: Trunker store loggfiler
```bash
# Finn store logger
echo 'Ansjos123' | sudo -S find /var/lib/docker/containers/ -name "*-json.log" -size +10M -exec ls -lh {} \;
# Trunker
echo 'Ansjos123' | sudo -S truncate -s 0 /var/lib/docker/containers/<container-id>/*-json.log
```
### Steg 4: Verifiser
```bash
df -h / # Sjekk frigjort plass
docker system df # Verifiser Docker-bruk
docker ps # Bekreft containere kjører
```
---
## Docker Log Rotation Setup
Konfigurer log rotation for ALLE containere via daemon.json:
**Fil:** `/etc/docker/daemon.json`
```json
{"log-driver": "json-file", "log-opts": {"max-size": "50m", "max-file": "3"}}
```
|
||||||
| Fjern unused disk | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-kali-pentest.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Fjern unused disk
```bash
ssh px1 "qm set 136 --delete unused0"
```
### Gjenskaping fra scratch
1. `ssh px1 "qm stop 136; qm destroy 136"`
2. Last ned QEMU image: `wget https://cdimage.kali.org/kali-<VERSION>/kali-linux-<VERSION>-qemu-amd64.7z`
3. Ekstraher, importer disk med qemu-nbd, konfigurer root/nettverk/SSH
4. Kjor TASK-004 (SSH key copy) og verifiser med TASK-008
5. Se MP-0006 TASK-001/002/003 for komplett prosedyre
## Changelog
### v1.1 - 2026-03-13
- Verifisert mot faktisk kjorende tilstand (alle seksjoner kontrollert via SSH)
- Lagt til kernel-versjon i OS-feltet (6.16.8+kali-amd64)
- Lagt til unused0 disk i identitet-tabellen (vm-136-disk-0, kan slettes)
- Lagt til MAC-adresse i nettverk-seksjonen
- Oppdatert sysctl-detaljer: viser begge innstillinger i 99-pentest.conf eksplisitt
- Oppdatert verktoy-tabellen med faktiske versjonsnumre fra dpkg (19 verktoy)
- Lagt til totalantall pakker (2863)
- Oppdatert SSH-tjeneste: PasswordAuthentication ikke eksplisitt deaktivert
- Oppdatert firewall-tabell: notert ExecStop i systemd service, enabled-status
- 4 nye gotchas: KALI-09 (PasswordAuth), KALI-10 (unused disk), KALI-11 (global ip_forward), KALI-12 (stale VM description path)
- Rettet KALI-03 eksempel-kommando: `root@` (ikke `pentest@`)
### v1.0 - 2026-03-13
- Initial versjon basert pa MP-0006 masterplan (rev 2, score A-)
- Oppdatert med faktisk deployment-data (QEMU image, root user, eth0, 80GB disk, statisk rute)
- Dekker arkitektur, isolering, scope management, agent-integrasjon, 8 gotchas
- Erstatter kontoret/compute/ versjon (flyttet til kontoret/services/)
|
||||||
| KALI-11: Global ip_forward=1 i sysctl pa px1 | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-kali-pentest.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### KALI-11: Global ip_forward=1 i sysctl pa px1
- **Symptom:** Per-interface forwarding alene (`vmbr99.forwarding=1`) er utilstrekkelig
- **Arsak:** Linux krever global `ip_forward=1` i tillegg til per-interface settings
- **Risiko:** Global forwarding er allerede standard pa Proxmox-hosts. `/etc/sysctl.d/99-pentest.conf` setter begge eksplisitt.
### KALI-12: VM-description i Proxmox har stale expert-path
- **Symptom:** `qm config 136` viser `Expert: coordination/experts/.../kontoret/compute/CURRENT-kali-pentest.md`
- **Arsak:** Filen ble flyttet til `kontoret/services/` etter initial opprettelse
- **Losning:** Oppdater VM description: `ssh px1 "qm set 136 --description '...'"` med korrekt path
## Vanlige Operasjoner
### Start pentest-sesjon
```bash
ssh px1 "qm start 136"
ssh px1 "sudo pentest-scope list" # verifiser tom scope
ssh kali-pentest "hostname" # verifiser SSH fungerer
```
### Stopp pentest-sesjon
```bash
ssh px1 "sudo pentest-scope flush" # OBLIGATORISK
ssh px1 "qm stop 136"
```
### Nodstopp (emergency kill)
```bash
ssh px1 "sudo pentest-scope flush && qm stop 136"
```
### Verifiser isolering
```bash
ssh kali-pentest "ping -c 2 -W 3 8.8.8.8" # MA feile
ssh kali-pentest "ping -c 2 -W 3 172.20.0.1" # MA feile
ssh kali-pentest "ping -c 2 -W 3 172.20.0.94" # MA feile
```
### Sjekk firewall-logger
```bash
ssh px1 "dmesg | grep PENTEST_DENIED | tail -10"
```
### Oppdater Kali-verktoy (midlertidig internett)
```bash
# 1. Finn mirror-IP
dig +short A http.kali.org
# 2. Legg til med kort TTL
ssh px1 "sudo pentest-scope add <IP>/32 3600 'kali-apt-update'"
# 3. Oppdater
ssh kali-pentest "apt-get update && apt-get upgrade -y"
# 4. Fjern UMIDDELBART
ssh px1 "sudo pentest-scope flush"
# 5. Verifiser isolering
ssh kali-pentest "ping -c 2 -W 3 8.8.8.8" # MA feile
```
### Sjekk VM-status
```bash
ssh px1 "qm status 136"
```
### Sjekk iptables-regler
```bash
ssh px1 "iptables -L PENTEST_FWD -n -v"
ssh px1 "iptables -L PENTEST_INP -n -v"
ssh px1 "ip6tables -L PENTEST6_FWD -n -v"
```
|
||||||
| KALI-04: Interface-navn ER eth0 (QEMU image) | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-kali-pentest.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### KALI-04: Interface-navn ER eth0 (QEMU image)
- **Symptom:** Forventet ens18/ens3 men finner eth0
- **Arsak:** Pre-built QEMU image bruker tradisjonelle interface-navn, ikke predictable names
- **Losning:** Bruk `eth0` i alle skript og konfig. NetworkManager er deaktivert, statisk konfig i `/etc/network/interfaces`
### KALI-05: ESTABLISHED,RELATED tillater inngaende fra targets
- **Symptom:** Pentest-mal kan initiere tilkoblinger TIL Kali VM
- **Arsak:** Tilsiktet -- reverse shells krever inngaende connectivity
- **Risiko:** Akseptabel fordi (a) targets er eksplisitt scopet, (b) Kali VM er isolert fra alt annet
### KALI-06: Credentials lagret i shared/CURRENT-credentials.md
- **Symptom:** Trenger VNC-tilgang men mangler passord
- **Arsak:** Pentest-brukerens passord dokumenteres under `## kali-pentest`
- **Losning:** Les `shared/CURRENT-credentials.md`
### KALI-07: px1 er eneste trust boundary
- **Symptom:** Isolering feiler helt hvis px1 er kompromittert
- **Arsak:** Alle iptables/ipset-regler kjores pa px1 host-niva
- **Losning:** Ingen -- dette er en arkitektonisk begrensning. Overvak px1 host-integritet.
### KALI-08: laravelserver trenger statisk rute til pentest-subnet
- **Symptom:** `ssh kali-pentest` henger/timeout fra laravelserver
- **Arsak:** Uten statisk rute sendes trafikk til pfSense (default gw) som ikke kjenner 10.99.0.0/24
- **Losning:** Persistent rute i netplan: `10.99.0.0/24 via 172.20.0.34`. Uten denne fungerer ikke SSH til Kali VM.
### KALI-09: PasswordAuthentication er IKKE eksplisitt deaktivert
- **Symptom:** SSH aksepterer passord-innlogging i tillegg til nokkel
- **Arsak:** sshd_config har kun `#PasswordAuthentication yes` (kommentert ut, default=yes)
- **Risiko:** Lav -- VM er isolert pa vmbr99, kun tilgjengelig fra laravelserver. Passord-fallback er bevisst for VNC/nodsituasjoner.
- **Losning:** Hvis hardening onskes: `echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config.d/hardening.conf && systemctl restart sshd`
### KALI-10: unused0 disk tar opp plass i local-lvm
- **Symptom:** `qm config 136` viser `unused0: local-lvm:vm-136-disk-0`
- **Arsak:** Opprinnelig disk fra QEMU image-import ble erstattet av scsi0 (vm-136-disk-1)
- **Losning:** Fjern med `ssh px1 "qm set 136 --delete unused0"` for a frigjore plass
|
||||||
| Nettverk | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-kali-pentest.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Nettverk
- **IP-tildeling:** Statisk (10.99.0.10/24 i `/etc/network/interfaces`)
- **DNS:** Ingen -- VM har ingen internettilgang. Kan bruke 10.99.0.1 som forwarder om nodvendig
- **Bridge:** vmbr99 (intern, `bridge-ports none`, IP 10.99.0.1/24 pa px1)
- **IPv6:** Deaktivert via sysctl (`/etc/sysctl.d/99-disable-ipv6.conf`: `all.disable_ipv6=1`, `default.disable_ipv6=1`)
- **Interface:** `eth0` (QEMU pre-built image bruker tradisjonelle navn, NetworkManager deaktivert)
- **Statisk rute:** laravelserver krever `10.99.0.0/24 via 172.20.0.34` -- verifisert aktiv via `ip route`
- **MAC:** BC:24:11:7E:05:30 (virtio)
## Relasjoner til andre systemer
| System | Relasjon | IP |
|--------|----------|-----|
| px1 (Proxmox host) | VM-host, iptables trust boundary, ipset management | 172.20.0.34 |
| laravelserver-v11 | Kontrollplan -- Claude SSHer herfra | 172.20.0.94 |
| pfSense kontoret | Ingen direkte relasjon -- vmbr99 er fullstendig isolert fra pfSense | 172.20.0.1 |
| ZyXEL switch | Ingen relasjon -- vmbr99 har ingen fysisk uplink | 172.20.0.3 |
## Kjente Gotchas
### KALI-01: Ingen internettilgang -- kan ikke oppdatere verktoy
- **Symptom:** `apt-get update` feiler med timeout
- **Arsak:** vmbr99 har ingen uplink, iptables blokkerer alt utenom scope
- **Losning:** Midlertidig legg til Kali mirror-IP i ipset: `dig A http.kali.org` fra laravelserver, deretter `sudo pentest-scope add <mirror-IP> 3600 'kali-apt-update'`. Flush ipset umiddelbart etter oppdatering.
### KALI-02: VM er IKKE i backup-jobb
- **Symptom:** VM 136 mangler i PBS etter datautfall
- **Arsak:** Bevisst valg -- ephemeral VM uten verdi utover verktoy
- **Losning:** Gjenskaping fra QEMU image + konfigurasjon dokumentert i MP-0006 TASK-001
### KALI-03: Dedikert SSH-nokkel
- **Symptom:** `Permission denied` ved SSH med standard nokkel
- **Arsak:** Kali VM godtar kun `pentest_ed25519`
- **Losning:** Bruk `ssh kali-pentest` (config bruker riktig nokkel) eller `ssh -i ~/.ssh/pentest_ed25519 root@10.99.0.10`
|
||||||
| Firewall-infrastruktur pa px1 | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-kali-pentest.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Firewall-infrastruktur pa px1
| Fil | Innhold |
|-----|---------|
| `/etc/iptables.pentest.rules` | IPv4 filter-regler (PENTEST_FWD + PENTEST_INP chains) |
| `/etc/ip6tables.pentest.rules` | IPv6 filter-regler (PENTEST6_FWD + PENTEST6_INP chains) |
| `/etc/systemd/system/pentest-firewall.service` | Systemd oneshot -- ipset create, chain flush+restore, hook injection. Har ExecStop for ren teardown. |
| `/usr/local/bin/pentest-scope` | Restricted bash wrapper for ipset-operasjoner |
| `/etc/sudoers.d/pentest-scope` | NOPASSWD sudo for heine -> pentest-scope |
| `/etc/sysctl.d/99-pentest.conf` | `net.ipv4.conf.vmbr99.forwarding=1` + global `net.ipv4.ip_forward=1` (begge krevd for cross-bridge routing) |
Hook-injeksjon bruker idempotent `-C || -A` logikk i systemd ExecStart -- forhindrer duplikate regler ved restart.
Systemd service er `enabled` -- firewall-regler lastes automatisk ved boot, selv om VM 136 har `onboot=0`.
## Backup
- **Proxmox backup-jobb:** IKKE inkludert -- VM 136 finnes ikke i `/etc/pve/jobs.cfg`
- **Konfigurasjon:** iptables-regler + VM-config dokumentert i ekspertfil og masterplan
- **Strategi:** Destroy og gjenskaping fra QEMU image ved korrupsjon/kompromittering
## Tjenester
| Tjeneste | Port | Status | Merknad |
|----------|------|--------|---------|
| SSH (OpenSSH) | 22 | Aktiv | Key-basert primary. PasswordAuthentication er IKKE eksplisitt deaktivert i sshd_config (se KALI-09) |
### Forhands-installerte verktoy (`kali-linux-headless`, 2863 pakker totalt)
| Kategori | Verktoy | Versjon |
|----------|---------|---------|
| Recon | nmap | 7.95 |
| Recon | masscan | 1.3.2 |
| Recon | dnsrecon | 1.3.1 |
| Recon | enum4linux | 0.9.1 |
| Web | nikto | 2.5.0 |
| Web | gobuster | 3.8.0 |
| Web | dirb | 2.22 |
| Web | sqlmap | 1.9.11 |
| Web | wpscan | 3.8.28 |
| Exploitation | metasploit-framework | 6.4.99 |
| Passord | hydra | 9.6 |
| Passord | john | 1.9.0-Jumbo-1 |
| Passord | hashcat | 7.1.2 |
| Nettverk | tcpdump | 4.99.5 |
| Nettverk | wireshark | 4.6.0 |
| Nettverk | netcat-traditional | 1.10 |
| Nettverk | cryptcat | 20031202 |
| Misc | curl | 8.17.0 |
| Misc | wget | 1.25.0 |
|
||||||
| Scope Management (pentest_targets ipset) | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-kali-pentest.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Scope Management (pentest_targets ipset)
Kontrollpunkt: px1 host. Agent bruker `pentest-scope` restricted sudo-wrapper -- kan IKKE kjore vilkarlige ipset/iptables-kommandoer.
Sudoers: `/etc/sudoers.d/pentest-scope` -- `heine ALL=(root) NOPASSWD: /usr/local/bin/pentest-scope`
### TTL-policy
Alle entries SKAL ha timeout. Default 86400s (24h). Entries uten timeout = permanent scope creep-risiko.
### Scope-kommandoer (kjores fra laravelserver)
| Operasjon | Kommando |
|-----------|----------|
| Legg til mal | `ssh px1 "sudo pentest-scope add <IP/CIDR> 86400 '<grunn>'"` |
| Fjern mal | `ssh px1 "sudo pentest-scope del <IP/CIDR>"` |
| List gjeldende scope | `ssh px1 "sudo pentest-scope list"` |
| Tom alt (nodstopp) | `ssh px1 "sudo pentest-scope flush"` |
## Operator-agent (pentest-operator)
**Fil:** `~/.claude/agents/pentest-operator.md` pa laravelserver-v11
**Slash command:** `/var/www/magitek-ops/.claude/commands/pentest.md`
### Claude-operasjonsmodell
1. Claude Code pa laravelserver SSHer inn i Kali VM for verktoy-kjoring
2. Scope-endringer gjores via SSH til px1 (pentest-scope wrapper)
3. Claude har ALDRI direkte tilgang til Kali VM-internals -- alt via SSH
4. Alle funn dokumenteres i `coordination/pentest-reports/PENTEST-{YYMMDD}-{target}.md`
### Sesjonsflyt
```
Bruker -> /pentest "scope" -> pentest-operator agent aktiveres
1. Verifiser ipset er tomt: ssh px1 "sudo pentest-scope list"
2. Legg til mal (bruker godkjenner): ssh px1 "sudo pentest-scope add ..."
3. Kjor rekognosering: ssh kali-pentest "nmap -sV ..."
4. Utfor testing basert pa funn: ssh kali-pentest "..."
5. Dokumenter funn
6. OBLIGATORISK opprydding: ssh px1 "sudo pentest-scope flush"
7. Stopp VM hvis ferdig: ssh px1 "qm stop 136"
```
Steg 6 er NON-OPTIONAL. TTL er kun safety net.
### Sikkerhetsregler for agent
- ALDRI legg til management-IPer i pentest_targets (172.20.0.1, .3, .34, .42, .94, .95)
- ALDRI legg til hjemme-produksjon (192.168.86.x) uten EKSPLISITT brukergodkjenning
- ALDRI forsok a modifisere iptables-regler eller bryte isolering
- STOPP umiddelbart ved uventet nettverkstilgang
|
||||||
| Arkitektur | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-kali-pentest.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Arkitektur
### Nettverkstopologi
```
INTERNET (BLOKKERT)
|
[pfSense 172.20.0.1]
|
[ZyXEL switch 172.20.0.3]
|
[px1 host 172.20.0.34]
/ \
vmbr0 (172.20.0.x) vmbr99 (10.99.0.0/24)
| |
laravelserver-v11 kali-pentest
(172.20.0.94) (10.99.0.10)
| |
+--- SSH (port 22) ----+
|
pentest_targets (ipset)
[scope-kontrollert utgaende]
```
### Isoleringsmodell
**L2-isolering:** vmbr99 har `bridge-ports none` -- ingen fysisk uplink. Trafikk kan IKKE forlate bridgen uten eksplisitt routing i px1-kjernen.
**L3-isolering (px1 iptables, custom chains):**
| Kjede | Regel | Handling |
|-------|-------|----------|
| PENTEST_FWD | ESTABLISHED,RELATED | ACCEPT (reverse shells -- tilsiktet) |
| PENTEST_FWD | 172.20.0.94 -> 10.99.0.10:22 | ACCEPT (SSH fra laravelserver) |
| PENTEST_FWD | 10.99.0.10 -> pentest_targets ipset | ACCEPT (scope-kontrollert) |
| PENTEST_FWD | 10.99.0.0/24 -> any | LOG + DROP (alt annet) |
| PENTEST_INP | 10.99.0.0/24 -> 10.99.0.1 ICMP | ACCEPT (ping til gateway) |
| PENTEST_INP | 10.99.0.0/24 -> px1 | DROP (beskytt host) |
**IPv6:** Fullstendig deaktivert -- sysctl i Kali VM (`/etc/sysctl.d/99-disable-ipv6.conf`) + ip6tables PENTEST6_FWD/PENTEST6_INP blokkerer alt pa host-nivaa (defense-in-depth).
**Kali VM KAN IKKE:**
- Na internett (ingen default route utover px1)
- Na 172.20.0.0/24 management-nettverk (eksplisitt DROP)
- Na LLM/Claude API endpoints (ingen internett)
- Na px1 host-tjenester (INPUT-kjede blokkerer)
- ARP/broadcast til andre VMer (separat bridge)
**Kali VM KAN:**
- Motta SSH fra 172.20.0.94 (laravelserver)
- Sende trafikk til IPer i pentest_targets ipset
- Kjore lokale verktoy (nmap, metasploit, sqlmap, nikto, gobuster etc.) mot godkjente mal
|
||||||
| Identitet | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-kali-pentest.md | 100 | 2026-03-20 02:00:44 |
|
Body:
# Infrastructure Sub-Expert: kali-pentest (Pentest Lab)
**Version:** 1.1
**Date:** 2026-03-13
**Parent:** coordination/experts/operations/magitek-server-ops/CURRENT.md
**Load:** coordination/experts/operations/magitek-server-ops/kontoret/services/CURRENT-kali-pentest.md
**Naming:** EXPERT-infra-kali-pentest-v{X.Y}-{YYYYMMDD}.md
**Masterplan:** coordination/masterplans/active/MP-0006-260313-pentest-lab/
---
## Identitet
| Egenskap | Verdi |
|----------|-------|
| **Hostname** | kali-pentest |
| **VM/CT ID** | 136 |
| **Type** | VM (QEMU/KVM) |
| **Proxmox Host** | px1 (172.20.0.34) |
| **LAN IP** | 10.99.0.10/24 (vmbr99 isolert bridge) |
| **Gateway** | 10.99.0.1 (px1 host bridge-IP) |
| **Lokasjon** | Kontoret |
| **OS** | Kali Linux 2025.4 (pre-built QEMU image, kernel 6.16.8+kali-amd64, `kali-linux-headless` verktoy) |
| **Rolle** | AI-drevet pentest-lab -- isolert VM for penetrasjonstesting |
| **Status** | Aktiv (deployet via MP-0006, TASK-008 bestatt 9/9) |
| **Onboot** | Nei -- manuell start per pentest-sesjon |
| **CPU** | 4 cores (host passthrough) |
| **RAM** | 8 GB (balloon=0, fast allokering) |
| **Disk** | 80.1 GB local-lvm (scsi0, vm-136-disk-1, importert fra kali-linux-2025.4-qemu-amd64.qcow2) |
| **Unused disk** | vm-136-disk-0 (original QEMU import, kan slettes med `qm set 136 --delete unused0`) |
## Tilgang
| Metode | Detaljer |
|--------|----------|
| SSH (fra laravelserver) | `ssh kali-pentest` (bruker `root`, key `~/.ssh/pentest_ed25519`) |
| VNC (nodtilgang) | Proxmox WebGUI https://172.20.0.34:8006 > VM 136 > Console |
| Via Proxmox CLI | `ssh px1 "qm guest exec 136 -- kommando"` |
| Credentials | `root` / `Ansjos123` (SSH key primary, passord som fallback) |
SSH-config entry pa laravelserver (`~/.ssh/config` eller `config.d/`):
```
Host kali-pentest
HostName 10.99.0.10
User root
IdentityFile ~/.ssh/pentest_ed25519
StrictHostKeyChecking accept-new
```
Trafikkvei: laravelserver (VM 112, vmbr0) -> px1 kernel -> vmbr99 -> kali-pentest (VM 136). Ingen ProxyJump -- begge VMer er pa samme fysiske host.
|
||||||
| Hurtigkommandoer for ressurshistorikk | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-reportmaker.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Hurtigkommandoer for ressurshistorikk
```bash
# CPU-historikk siste timer (sar)
sar -u -s HH:MM:00
# Minne-historikk (sar)
sar -r -s HH:MM:00
# Spol tilbake til tidspunkt — se HVILKEN prosess som brukte CPU (atop)
atop -r /var/log/atop/atop_$(date +%Y%m%d) -b HH:MM
# PCP metrikkquery
pmval -a /var/log/pcp/pmlogger/$(hostname)/ kernel.all.cpu.user -t 10sec
# Topp prosesser akkurat nå
ps aux --sort=-%cpu | head -15
```
### Atop-konfig
- Logfiler: `/var/log/atop/atop_YYYYMMDD`
- Intervall: 10 sekunder (endret fra default 600s)
- Konfig: `/etc/default/atop` → `LOGINTERVAL=10`
### PCP-konfig
- Arkiv: `/var/log/pcp/pmlogger/$(hostname)/`
- pmcd + pmlogger aktive via systemd
- pcp-zeroconf installert
### Gotchas
- **sar default 10 min** — for grovt for korte spikes, bruk atop for det
- **atop 10s** → genererer ~50MB/dag i logger, ryddes automatisk av atop-rotate
---
## Changelog
### v1.3 - 2026-03-15
- Monitoring-seksjon lagt til: atop (10s), PCP (pmlogger + pcp-zeroconf), sar (allerede installert)
- Hurtigkommandoer for ressurshistorikk dokumentert
### v1.2 - 2026-03-05
- `magitek/kb-system` v1.0.0 installert via Packeton (composer require)
- ReportMakers lokale KB-kode (14k linjer, 41 filer) fjernet — erstattet av pakken
- KB artisan-kommandoer tilgjengelig: `kb:ingest`, `kb:query`, `kb:context`, `kb:freshness`, `kb:extract-lessons`, `kb:archive-safe`
- `/var/www/kb-system/` — selvstendig Composer-pakke repo (GitHub: heinesalbu/kb-system)
- `/var/www/magitek-ops/` har naa composer.json, kb-config.php, vendor/ — KB tilgjengelig via vendor/bin/kb
### v1.1 - 2026-03-04
- Lagt til Hostclone Dashboard (`/var/www/hostclone/`, hostclone.magitek.no)
- Stack: Laravel 12 + Inertia.js + Vue 3 + Tailwind CSS 4 + SQLite
- Formaal: Unified dashboard for PBS, Duplicati, Proxmox, MainWP monitoring + restore wizard
- Apache vhost `hostclone.magitek.no.conf` lagt til i VirtualHosts-tabell
- Cron `/etc/cron.d/hostclone` (schedule:run hvert minutt)
### v1.0 - 2026-03-02
- Initial kartlegging (maskinen er agent-host)
- Stack bekreftet: Apache 2.4.58, PHP-FPM 8.3.6, Laravel 12.52.0, MySQL 8.0.45, Node.js v24.11.0
- Disk: /, /mnt/backup, /mnt/cache, /boot — totalt rikelig plass
- Identifisert alle Apache vhosts (4 stk)
- Dokumentert reverse proxy-kjede via NPM kontoret (172.20.0.42)
- Notert at laravel-reverb.service er inaktiv men port 8081 lytter
- Queue worker aktiv med analysis+default ko
- Puppeteer pa :3001
|
||||||
| Kjente Gotchas | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-reportmaker.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Kjente Gotchas
### RM-01: Ingen nginx pa denne serveren
- **Symptom:** Noen dokumenter refererer til nginx
- **Aarsak:** Nginx-terminering skjer pa NPM (172.20.0.42), IKKE her
- **Realitet:** Apache 2.4 + PHP-FPM lokalt. Aldri kjor nginx-kommandoer her.
### RM-02: Laravel Reverb viser INAKTIV
- **Symptom:** `systemctl status laravel-reverb` → inactive
- **Aarsak:** laravel-reverb.service er ikke definert/aktivert, men port :8081 lytter
- **Mistenkt:** Reverb kan kjores som bakgrunnsprosess utenfor systemd
- **Verifiser:** `ss -tlnp | grep 8081` og `ps aux | grep reverb`
### RM-03: MySQL eksponert pa 0.0.0.0:3306
- **Risiko:** MySQL lytter pa alle grensesnitt pa LAN
- **Mitigering:** Kontorets brannmur/switch begrenser trafikk
- **Anbefaling:** Bind MySQL til 127.0.0.1 hvis ikke ekstern DB-tilgang trengs
### RM-04: Worktrees og parallell utvikling
- **Detalj:** `/var/www/reportmaker-worktrees/` brukes av multi-agent-orchestrator
- **Konsekvens:** Bruk alltid `git worktree list` for arbeidsflyt-oversikt
---
## Vanlige Operasjoner
### Sjekk alle tjenester
```bash
systemctl status apache2 php8.3-fpm mysql redis laravel-queue-worker --no-pager | grep -E 'Active:|Loaded:'
```
### Restart Apache (graceful)
```bash
systemctl reload apache2
# eller full restart:
systemctl restart apache2
```
### Queue Worker restart
```bash
systemctl restart laravel-queue-worker
# eller via artisan:
php /var/www/reportmaker/artisan queue:restart
```
### Sjekk Puppeteer
```bash
ss -tlnp | grep 3001 # port
ps aux | grep node # prosess
```
### Laravel artisan-kommandoer
```bash
cd /var/www/reportmaker
php artisan --version
php artisan queue:status
php artisan schedule:list
```
### Sjekk Apache-feil
```bash
tail -50 /var/log/apache2/reportmaker.magitek.no_error.log
```
---
## Monitoring & Ressursovervåking
| Verktøy | Status | Intervall | Hva det gjør |
|---------|--------|-----------|-------------|
| **sysstat (sar)** | Installert | 10 min | Systemvid CPU/mem/disk historikk |
| **atop** | Aktiv (systemd) | 10 sek | Per-prosess CPU/mem/disk logging med tilbakespoling |
| **PCP (pmlogger)** | Aktiv (systemd) | Granulært | Metrikkarkiv, kan kobles til Grafana |
|
||||||
| Queue Worker | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-reportmaker.md | 100 | 2026-03-20 02:00:44 |
|
Body:
### Queue Worker
```
/etc/systemd/system/laravel-queue-worker.service
Kommando: php artisan queue:work database --sleep=3 --tries=3 --max-time=3600 --queue=analysis,default
Status: Aktiv og running
```
---
## Reverse proxy-kjeden
```
Ekstern klient (HTTPS)
↓
NPM kontoret (172.20.0.42) — SSL-terminering (Let's Encrypt), Force SSL, HTTP/2
↓ http://172.20.0.94:80
Apache 2.4 (laravelserver-v11)
↓ PHP-FPM unix socket
PHP-FPM 8.3 → Laravel 12
```
**WebSocket:**
```
Klient (WSS :443 → /app/*)
↓
NPM kontoret (172.20.0.42) — WebSocket upgrade headers
↓ ws://172.20.0.94:8081
Laravel Reverb (port 8081)
```
**Viktig:** SSL-sertifikater administreres av NPM kontoret (172.20.0.42), IKKE lokalt pa denne maskinen.
---
## Andre applikasjoner pa denne serveren
Utover ReportMaker kjorer folgende i /var/www/:
| Katalog | App | Merknad |
|---------|-----|---------|
| `/var/www/hostclone/` | hostclone.magitek.no | **Hostclone Dashboard** — Laravel 12 + Inertia.js + Vue 3 + Tailwind CSS 4 + SQLite. Unified monitoring: PBS, Duplicati, Proxmox, MainWP + restore wizard. Cron: `/etc/cron.d/hostclone` (heine, schedule:run hvert minutt) |
| `/var/www/nativja1/` | nativja1.nativja.no | Laravel-app |
| `/var/www/skymirror/` | skymirror.magitek.no | Laravel-app |
| `/var/www/webkalkyle/` | Kalkulator (intern) | Laravel/PHP |
| `/var/www/reportmaker-worktrees/` | Git worktrees | Multi-agent dev |
| `/var/www/magitek-devops-shared/` | DevOps shared repo | Agent-infrastruktur |
| `/var/www/kb-system/` | `magitek/kb-system` | Composer-pakke (KB-system, 14k linjer, 41 PHP-filer). GitHub: `heinesalbu/kb-system`. Packeton: v1.0.0 |
| `/var/www/magitek-ops/` | Ops workspace | Har nå `composer.json`, `kb-config.php`, `vendor/` — bruker KB via `vendor/bin/kb` |
---
## Sikkerhet & Backup
- **MySQL pa :3306 (0.0.0.0):** Lytter pa alle grensesnitt — kun brannmur-regler pa kontoret beskytter
- **Backup:** /mnt/backup (196 GB, 3% brukt) — NFS-eksportert til CT 135 (duplicati-kontoret, 172.20.0.69) som kjorer Duplicati offsite til Google Drive. Duplicati kjorer IKKE lenger lokalt pa denne serveren (migrert 2026-03-05).
- **Database backup (cron, alle 10 min 07-23h, unntatt DAM):**
- ReportMaker → `/mnt/backup/database/arkiv/` (retention daglig 04:00)
- SkyMirror → `/mnt/backup/skymirror/database/` (retention daglig 04:15)
- Todo-app → `/mnt/backup/todo-app/database/` (retention daglig 04:30)
- Nativja1 → `/mnt/backup/nativja1/database/` (retention daglig 04:45)
- Webkalkyle → `/mnt/backup/webkalkyle/database/` (retention daglig 05:00)
- Hostclone (SQLite) → `/mnt/backup/hostclone/database/` (retention daglig 05:15)
- DAM (SQLite, 4.1 GB) → `/mnt/backup/dam/database/` (daglig 03:00, retention daglig 05:30)
- **Credentials:** Alle backup-skript leser fra `.env` (refaktorert 2026-03-16, ingen hardkodede passord).
- **Redis:** Kun localhost — OK
- **PHP-FPM 8.3:** Aktivt og stabilt (oppe 4+ dager per 2026-03-02)
---
|
||||||
| Apache VirtualHosts | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-reportmaker.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Apache VirtualHosts
| Konfig-fil | ServerName | DocumentRoot | Merknad |
|-----------|-----------|-------------|---------|
| `reportmaker.magitek.no.conf` | reportmaker.magitek.no | /var/www/reportmaker/public | Hoved-app |
| `hostclone.magitek.no.conf` | hostclone.magitek.no | /var/www/hostclone/public | Hostclone dashboard (ny 2026-03-04) |
| `nativja1.nativja.no.conf` | nativja1.nativja.no | /var/www/nativja1/public | Laravel-app |
| `skymirror.magitek.no.conf` | skymirror.magitek.no | /var/www/skymirror/public | Laravel-app |
| `webkalkyle.conf` | 172.20.0.94 | /var/www/webkalkyle/public | Lokal kalkulatortjeneste |
### reportmaker.magitek.no.conf (forenklet)
```apache
<VirtualHost *:80>
ServerName reportmaker.magitek.no
ServerAlias 172.20.0.94
DocumentRoot /var/www/reportmaker/public
Timeout 300 / ProxyTimeout 300
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 172.20.0.42 # NPM kontoret
ErrorLog /var/log/apache2/reportmaker.magitek.no_error.log
</VirtualHost>
```
---
## ReportMaker-applikasjon
| Egenskap | Verdi |
|----------|-------|
| **App-katalog** | `/var/www/reportmaker` |
| **App-URL** | `https://reportmaker.magitek.no` |
| **Framework** | Laravel 12.52.0 |
| **Database** | MySQL, database: `reportmaker`, host: localhost |
| **Session driver** | database |
| **Queue connection** | database |
| **Cache driver** | (ikke konfigurert i .env — default file/database) |
| **Reverb App ID** | reportmaker |
| **Reverb server** | :8081 (WebSocket) |
| **Puppeteer** | Node.js, :3001 |
| **KB-system** | `magitek/kb-system` v1.0.0 via Packeton. Artisan: `kb:ingest`, `kb:query`, `kb:context`, `kb:freshness`, `kb:extract-lessons`, `kb:archive-safe` |
### Laravel Reverb
- Reverb-serveren lytter pa :8081
- I `.env`: `REVERB_SERVER_PORT=8081`, `REVERB_PORT=443` (eksternt via NPM)
- **systemd laravel-reverb.service: INAKTIV** — merk dette ved WebSocket-problemer
- NPM kontoret proxyer `/app` → `http://172.20.0.94:8081`
|
||||||
| Identitet | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-reportmaker.md | 100 | 2026-03-20 02:00:44 |
|
Body:
# Infrastructure Sub-Expert: reportmaker
**Version:** 1.3
**Date:** 2026-03-15
**Parent:** coordination/experts/operations/magitek-server-ops/CURRENT.md
**Load:** coordination/experts/operations/magitek-server-ops/CURRENT-reportmaker.md
---
## Identitet
| Egenskap | Verdi |
|----------|-------|
| **Hostname** | laravelserver-v11 |
| **Type** | Fysisk server / VM (kontoret) |
| **LAN IP** | 172.20.0.94 |
| **Lokasjon** | Kontoret (172.20.0.x) |
| **OS** | Ubuntu 24.04 LTS (kernel 6.8.0-101-generic) |
| **RAM** | 51 GiB total, ~10 GiB brukt |
| **Rolle** | Laravel-applikasjonsserver + dev-maskin |
| **Status** | Aktiv — DENNE MASKINEN (agenten kjorer herfra) |
---
## Tilgang
| Metode | Detaljer |
|--------|----------|
| SSH (fra kontoret) | `ssh 172.20.0.94` |
| Lokal | Agenten kjorer pa denne maskinen (`/var/www/reportmaker`) |
| WebGUI (via NPM) | `https://reportmaker.magitek.no` → NPM kontoret → 172.20.0.94:80 |
---
## Stack
| Komponent | Versjon | Status |
|-----------|---------|--------|
| Apache 2.4 | 2.4.58 (Ubuntu) | Aktiv (systemd) |
| PHP-FPM 8.3 | 8.3.6 | Aktiv (systemd) |
| Laravel | 12.52.0 | - |
| MySQL 8.0 | 8.0.45 | Aktiv, lytter 0.0.0.0:3306 |
| Redis | - | Aktiv, lytter ::1:6379 + 127.0.0.1:6379 |
| Node.js | v24.11.0 | - |
| Laravel Reverb | - | **INAKTIV** (systemd: inactive) |
| Laravel Queue Worker | - | Aktiv (systemd) |
| Puppeteer | - | Node.js, lytter :3001 |
---
## Diskstruktur
| Mountpoint | Enhet | Storrelse | Brukt | Ledig |
|-----------|-------|-----------|-------|-------|
| `/` | ubuntu-vg/ubuntu-lv | 146 GB | 44 GB (31%) | 97 GB |
| `/mnt/backup` | /dev/sdc | 196 GB | 5.2 GB (3%) | 181 GB |
| `/boot` | /dev/sdb2 | 2.0 GB | 196 MB (11%) | 1.6 GB |
| `/mnt/cache` | /dev/sda | 492 GB | 9.9 GB (3%) | 462 GB |
---
## Nettverksporter
| Port | Tjeneste | Bundet til |
|------|----------|-----------|
| :80 | Apache (HTTP) | 0.0.0.0 (alle) |
| :22 | SSH | 0.0.0.0 |
| :3001 | Puppeteer (Node.js) | 0.0.0.0 |
| :3002 | (node-prosess) | 0.0.0.0 |
| :3306 | MySQL | 0.0.0.0 (advarsel: apent mot LAN) |
| :6379 | Redis | ::1 + 127.0.0.1 (kun localhost) |
| :8081 | Laravel Reverb (WebSocket) | 0.0.0.0 |
| :8200 | (node-prosess) | 0.0.0.0 |
---
|
||||||
| Vedlikeholdshistorikk | operations/magitek-server-ops/kontoret/services | knowledge | medium | CURRENT-suitecrm.md | 100 | 2026-03-20 02:00:44 |
|
Body:
## Vedlikeholdshistorikk
| Dato | Hendelse |
|------|----------|
| 2025-09-27 | Oppgradert fra 8.3.9 til 8.9.0 |
| 2026-03-13 | Full kartlegging, backup-jobb, cron, NPM hjemme, DNS, oppgradert til 8.9.2 |
| 2026-03-14 | MCP-server bygget, agent opprettet |
| 2026-03-15 | App-domain content migrert til /var/www/suitecrm-dev/ workspace |
| 2026-03-15 | Disk utvidet 32G→80G, LVM 15G→78G. Installert atop (10s), PCP, sar. Swap 4G lagt til. /var/tmp permissions fikset. |
---
## Changelog
### v2.1 - 2026-03-15
- Disk: 32G→80G (scsi0), LVM utvidet 15G→78G (62GB ledig)
- Swap: 4 GB konfigurert (var 0)
- Monitoring: atop (10s intervall), PCP (pmlogger + pcp-zeroconf), sar installert
- SC-06 markert FIKSET (swap lagt til)
- SC-07 ny: /var/tmp permissions fikset (www-data → root, sticky bit)
- Backup-seksjon oppdatert (VM 122 lagt til i px1 backup-jobb)
### v2.0 - 2026-03-15
- **MAJOR:** Splittet infra vs. app-domain. App-innhold migrert til suitecrm-dev workspace.
- Fjernet: Arkitektur, Filstruktur, Utvikling, Oversettelser, DB-detaljer, MCP/API, utvikler-gotchas (SC-07+)
- Beholdt: VM, nettverk, DNS, proxy, backup, sikkerhet, cron, infra-gotchas (SC-01 til SC-06)
- Lagt til: "App-Domain Referanser" seksjon
### v1.6 - 2026-03-15
- SC-0006, gotchas SC-16 til SC-19
### v1.0-v1.5
- Se git-historikk for detaljert endringslogg
|
||||||
Ingestion History
Loading…