# Deployment auf einem Proxmox-VE LXC Anleitung, um fuesse.sexy in einem LXC-Container laufen zu lassen (Debian 12 als Beispiel). Läuft danach dauerhaft als systemd-Dienst und startet beim Boot mit. ## 1. LXC vorbereiten Ein unprivilegierter Debian/Ubuntu-Container reicht locker (1 vCPU, 512 MB RAM, 2 GB Disk). In der Container-Konsole (als root): ```sh apt update && apt install -y curl git ``` Node.js 20 (LTS) über NodeSource: ```sh curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt install -y nodejs node -v # sollte v20.x zeigen ``` ## 2. Repo klonen ```sh cd /opt git clone fuesse-sexy cd fuesse-sexy ./install.sh # installiert Abhängigkeiten (npm install) ``` Kurzer Funktionstest: ```sh npm start # -> "fuesse.sexy laeuft auf http://localhost:3000" ``` Im Browser `http://:3000` öffnen. Läuft es? Dann mit `Strg+C` stoppen und als Dienst einrichten. ## 3. Als systemd-Dienst einrichten (dauerhaft + Autostart) Eine Service-Vorlage liegt bei: [`deploy/fuesse-sexy.service`](deploy/fuesse-sexy.service). ```sh # node-Pfad prüfen (in der Service-Datei ggf. anpassen): which node # z.B. /usr/bin/node cp /opt/fuesse-sexy/deploy/fuesse-sexy.service /etc/systemd/system/ systemctl daemon-reload systemctl enable --now fuesse-sexy systemctl status fuesse-sexy # sollte "active (running)" zeigen ``` Läuft jetzt unter `http://:3000` und startet beim Boot automatisch. > Optional als eigener Benutzer statt root: `adduser --system --group fuesse`, > `chown -R fuesse:fuesse /opt/fuesse-sexy`, dann die `User=`/`Group=`-Zeilen in der > Service-Datei einkommentieren. ## 4. Aktualisieren (neue Version einspielen) ```sh cd /opt/fuesse-sexy git pull npm install systemctl restart fuesse-sexy ``` ## 5. Domain fuesse.sexy + HTTPS (optional, empfohlen) Am einfachsten mit **Caddy** (automatisches HTTPS via Let's Encrypt) — entweder im selben LXC oder auf einem Reverse-Proxy davor: ```sh apt install -y debian-keyring debian-archive-keyring apt-transport-https curl curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list apt update && apt install -y caddy ``` `/etc/caddy/Caddyfile`: ``` fuesse.sexy { reverse_proxy localhost:3000 } ``` ```sh systemctl reload caddy ``` Voraussetzung: Der DNS-A/AAAA-Eintrag von **fuesse.sexy** zeigt auf die öffentliche IP, und Port 80/443 sind aus dem Internet erreichbar (Port-Forwarding/Firewall). Caddy holt dann automatisch ein Zertifikat. ## Ports / Netzwerk - Die App lauscht auf Port **3000** (via `PORT`-Env änderbar). - Ohne Reverse-Proxy: LXC-Firewall Port 3000 freigeben. - Mit Caddy: nur 80/443 nach außen, 3000 bleibt intern.