Wimmel-Suchspiel: finde 3 versteckte Fuesse in einer randvollen Szene. - Node/Express-Server generiert Szenen prozedural aus einer gemeinsamen Library (library/props = Deko, library/feet = Fuesse); Spezial-Level (emoji) unter scenes/ - Serverseitige Trefferpruefung (nicht per DOM austrickbar) - Frontend rendert die Szene als ein Bild -> fluessiges Zoom/Pan (panzoom) - Dark Mode, kein Start-Screen, Installationsskript + Deploy-Doku (Proxmox LXC) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
105 lines
2.8 KiB
Markdown
105 lines
2.8 KiB
Markdown
# 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 <DEINE_REPO_URL> 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://<LXC-IP>: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://<LXC-IP>: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.
|