- Shell 59.5%
- Jinja 26.5%
- Python 14%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
wishly 0.1.0 is built natively from the Git tag v0.1.0 (checked against the commit GitHub reports), Python packages from uv.lock on Debian's Python. gunicorn on port 8000, SQLite in /var/lib/wishly, tasks run in the web process, birthday reminders from a systemd timer. The first administrator "admin" gets the generated wishly_admin_password while no superuser exists. docker-compose.yml runs the upstream stack with the image ghcr.io/kevinheyer-dev/wishly. Tested: lint.sh clean; dev-container.sh twice (smoke test green, second run changed=1); login as admin via the guest IP; compose stack healthy with admin created. Not tested: update path (no older release exists), VM image build and boot test (CI after push). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .forgejo/workflows | ||
| .vibe | ||
| files | ||
| handlers | ||
| tasks | ||
| templates | ||
| tests | ||
| .clinerules | ||
| .cursorrules | ||
| .windsurfrules | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| GEMINI.md | ||
| iac.json | ||
| README.md | ||
iac-wishly
wishly – Wunschlisten für Familien und Freundeskreise – als LXC oder VM auf Proxmox VE oder mit Docker Compose. Teil von iac.
Installation (auf der Proxmox-Node)
bash -c "$(curl -fsSL https://iac.heyer.systems/wishly/ct.sh)" # LXC
bash -c "$(curl -fsSL https://iac.heyer.systems/wishly/vm.sh)" # VM
Ohne Dialog: IAC_NONINTERACTIVE=1 und var_*-Variablen – am einfachsten mit dem Generator auf
https://iac.heyer.systems/apps/wishly/. Läuft wishly hinter einem Reverse-Proxy mit TLS, beim
Anlegen var_wishly_site_url=https://wishly.example.org setzen.
Anmeldung
Direkt nach der Installation: http://<ip>:8000/, Benutzer admin, Passwort im Gast:
grep wishly_admin_password /etc/iac/settings.env
Das Konto wird nur angelegt, solange es keinen Superuser gibt – ein geändertes Passwort oder ein
umbenanntes Konto bleibt unangetastet. Die Django-Verwaltung liegt unter /verwaltung/.
Neue Konten können sich selbst registrieren (WISHLY_ALLOW_SIGNUP=false schaltet das ab).
Ports
| Port | Dienst | Erreichbar |
|---|---|---|
| 8000/tcp | Weboberfläche (gunicorn) | alle (public) |
Kein TLS: für den Betrieb im Internet einen Reverse-Proxy (z. B. iac-traefik) davor setzen.
Aufbau
- Installiert wird aus dem Git-Tag
v<version>von GitHub. Weil wishly keine Archive mit Prüfsummen veröffentlicht, muss der Tag auf den Commit zeigen, den die GitHub-API meldet; die Python-Pakete kommen mit Prüfsummen ausuv.lock, Python selbst aus Debian. /opt/wishly/current→/opt/wishly/releases/wishly-<version>(Quellen,.venv, statische Dateien); nur das aktive Release bleibt liegen.- Datenbank: SQLite in
/var/lib/wishly/db.sqlite3– das ist alles, was gesichert werden muss. - Kein Celery und kein Redis: Shopseiten werden direkt beim Speichern eingelesen,
Geburtstags-Erinnerungen verschickt
wishly-reminders.timertäglich um 8 Uhr (Europe/Berlin). - Konfiguration:
/etc/wishly/wishly.envverwaltet iac. Eigene Einstellungen (SMTP für Passwort-Reset und Erinnerungen, Amazon-Partner-Tag, Registrierung …) in/etc/wishly/wishly.local.env, danachsystemctl restart wishly. Alle Variablen: docs/betrieb.md von wishly. - Erlaubte Hostnamen (
DJANGO_ALLOWED_HOSTS): IP, Hostname und der Host auswishly_site_url. Wer wishly unter weiteren Namen aufruft, trägt sie inwishly.local.envein. Ändert sich die IP, passt das nächsteupdatedie Liste an. - Verwaltungsbefehle:
wishly-manage <befehl>, z. B.wishly-manage changepassword admin.
Docker
mkdir -p /opt/wishly && cd /opt/wishly
curl -fsSL https://iac.heyer.systems/wishly/docker-compose.yml -o docker-compose.yml
printf 'DJANGO_SECRET_KEY=%s\nPOSTGRES_PASSWORD=%s\nWISHLY_ADMIN_PASSWORD=%s\nDJANGO_ALLOWED_HOSTS=%s\n' \
"$(openssl rand -hex 32)" "$(openssl rand -hex 24)" "$(openssl rand -hex 12)" \
"$(hostname -I | cut -d' ' -f1),$(hostname),localhost" > .env
docker compose up -d
Das ist der Stack von wishly selbst (Image ghcr.io/kevinheyer-dev/wishly): gunicorn,
Celery-Worker und -Beat, PostgreSQL 17 und Redis. Anmeldung als admin mit
WISHLY_ADMIN_PASSWORD aus .env. Update: docker compose pull && docker compose up -d (bleibt
in Version 0.1.x).
Update (im Gast)
update
update wechselt auf die in iac.json festgeschriebene, getestete Version (Renovate hebt sie an),
baut das neue Release, migriert die Datenbank und startet wishly neu. Ohne neue Version ändert sich
nichts.
Selbsttest (im Gast)
bash /var/lib/iac/src/core/bin/iac-smoke