Initial commit: fuesse.sexy — Where's the Feet

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>
This commit is contained in:
Guido
2026-08-04 17:29:25 +02:00
commit 1a9710ec88
42 changed files with 2555 additions and 0 deletions

104
DEPLOY.md Normal file
View File

@@ -0,0 +1,104 @@
# 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.