# Claude Code Installation — LXC 108 Ghost Blog Protokoll der Installation, durchgeführt am 2026-06-16 nach Auftrag `Claude-Code-Prompt-LXC108.md`. --- ## Infrastruktur | Parameter | Wert | |---|---| | Proxmox-Host | `pve` ([email protected]) | | LXC ID | 108 | | Hostname | `ghost-blog` | | Template | Ubuntu 22.04 LTS (`ubuntu-22.04-standard_22.04-1_amd64.tar.zst`) | | RAM | 512 MB | | Swap | 512 MB | | Disk | 10 GB (`local-lvm`) | | CPU | 1 vCore | | Netzwerk | DHCP, Bridge `vmbr0` | | IP | **192.168.2.196** | | Unprivileged | ja | | Start at boot | ja | --- ## Installierte Software | Software | Version | Hinweis | |---|---|---| | Ubuntu | 22.04.5 LTS | | | Node.js | **22.22.3** | Abweichend vom Plan (Node 18) — siehe „Abweichungen" | | npm | 10.9.8 | | | MySQL | 8.0.46 | Root-Login lokal abgesichert | | Ghost-CLI | 1.29.3 | Update nötig (initial 1.28.4 zu alt) | | Ghost | 6.45.0 | Process Manager: `local`, Environment: `development` | --- ## Durchgeführte Schritte 1. **Template laden:** `pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.zst` 2. **LXC erstellen:** ```bash pct create 108 local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \ --hostname ghost-blog --memory 512 --swap 512 --cores 1 \ --rootfs local-lvm:10 --net0 name=eth0,bridge=vmbr0,ip=dhcp,type=veth \ --unprivileged 1 --onboot 1 --features nesting=1 ``` 3. **Start + IP ermitteln:** `pct start 108` → DHCP-IP `192.168.2.196` 4. **System-Update:** `apt update && apt upgrade -y`, Locale-Fix (`en_US.UTF-8`) 5. **Node.js 22 LTS:** NodeSource-Setup-Skript (`setup_22.x`), `apt install nodejs` 6. **MySQL 8:** `apt install mysql-server`, danach non-interaktive Absicherung per SQL (Root-Passwort setzen, anonyme User + `test`-DB entfernen) statt interaktivem `mysql_secure_installation` 7. **Ghost-CLI:** `npm install -g ghost-cli`, später Update auf `ghost-cli@latest` 8. **Ghost-User:** dedizierter Linux-User `ghost` angelegt (Gruppe `sudo`), Owner von `/var/www/ghost` 9. **Ghost-Installation:** `ghost install local` als User `ghost` ausgeführt (SQLite-Backend, Standard bei `local`-Install) 10. **Erreichbarkeit korrigiert:** Ghost band sich initial nur an `127.0.0.1` → Konfiguration angepasst: ```bash ghost config url http://192.168.2.196:2368 ghost config server.host 0.0.0.0 ghost restart ``` 11. **Setup-Wizard:** unter `http://192.168.2.196:2368/ghost/` durch den Nutzer abgeschlossen ✅ --- ## Abweichungen vom ursprünglichen Plan | Plan | Tatsächlich | Grund | |---|---|---| | Node.js 18 LTS | Node.js 22 LTS | Ghost v6.45.0 benötigt Node `^22.13.1`; Node 18 ist zudem EOL (April 2025). Nach Rückfrage umgesetzt. | | `mysql_secure_installation` (interaktiv) | Äquivalente SQL-Befehle | Interaktives Tool lässt sich nicht automatisiert per SSH ausführen | | `chown <user>:www-data` (Platzhalter) | Dedizierter User `ghost`, Owner `ghost:ghost` | Ghost-CLI verweigert Installation als root; Platzhalter im Originalplan war nicht aufgelöst | | Ghost-CLI Version offen | 1.28.4 → 1.29.3 | 1.28.4 inkompatibel zu Ghost v6.45.0 (benötigt `^1.29.1`) | | Server-Bindung nicht spezifiziert | `server.host 0.0.0.0` + `url` auf LAN-IP gesetzt | `ghost install local` bindet standardmäßig nur an `127.0.0.1` → von außen unerreichbar | --- ## Zugangsdaten - **MySQL Root-Passwort:** `zBEuxEuPbSSGr9779ln0` (lokal in LXC 108, nicht öffentlich erreichbar; aktuell ungenutzt, da Ghost auf SQLite läuft) - **Ghost Admin:** im Setup-Wizard durch Nutzer angelegt (nicht hier dokumentiert) --- ## Status zum Abschluss - ✅ Ghost läuft, Status `running (development)` - ✅ Erreichbar unter `http://192.168.2.196:2368/` - ✅ Setup-Wizard abgeschlossen - ⏳ MySQL als DB-Backend noch nicht genutzt (Ghost läuft auf SQLite) - ⏳ Inhalte aus `obeco-policom.blogspot.com` noch nicht migriert Siehe auch: [PROJEKT.md](PROJEKT.md)