Creates a Debian 12 LXC container and sets up LinkVault as a systemd service inside it, following the tteck/community-scripts pattern. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.7 KiB
LinkVault
KI-gestützte Link-Sammlung: Links einfügen → automatisch laden, zusammenfassen, in Kategorien / Hersteller einsortieren und schnell wiederfinden.
Funktionen
- 🔗 Link hinzufügen – Seite wird geladen und der Textinhalt extrahiert.
- 🤖 Automatische KI-Analyse (OpenAI) – Titel, Zusammenfassung, Kategorie, Hersteller/Quelle und Tags werden erzeugt. Bestehende Kategorien werden wiederverwendet, damit die Sammlung konsistent bleibt.
- 🗂️ Filtern nach Kategorie und Hersteller über die Seitenleiste.
- 🔍 Suche – klassische Textsuche und optionale semantische KI-Suche (findet auch sinnverwandte Treffer via Embeddings).
- 👥 Mehrbenutzer – Registrierung/Login, jeder Nutzer sieht nur seine Links.
Technik
- Backend: FastAPI (Python)
- Frontend: HTML + HTMX (kein Node.js nötig)
- Datenbank: SQLite (Standard, konfigurierbar über
DATABASE_URL) - KI: OpenAI (
gpt-4o-mini+text-embedding-3-small, konfigurierbar)
Schnellstart
./run.sh
Das Skript legt eine virtuelle Umgebung an, installiert die Abhängigkeiten,
erstellt bei Bedarf eine .env und startet den Server auf
http://127.0.0.1:8000.
Danach in .env den OPENAI_API_KEY eintragen und den Server neu starten.
Ohne API-Key läuft die App trotzdem – Links werden dann nur ohne KI-Analyse gespeichert (Kategorie „Sonstiges", keine Zusammenfassung/semantische Suche).
Manuell
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # OPENAI_API_KEY eintragen
uvicorn app.main:app --reload --port 8000
Projektstruktur
app/
main.py FastAPI-App, Routen, Auth-Sessions
config.py Konfiguration aus .env
database.py SQLAlchemy Engine/Session
models.py User- und Link-Modelle
security.py Passwort-Hashing (bcrypt)
scraper.py Seiteninhalt laden & extrahieren
ai.py OpenAI: Kategorisierung, Zusammenfassung, Embeddings
search.py Semantische Suche (Kosinus-Ähnlichkeit)
templates/ Jinja2 + HTMX Oberfläche
Proxmox
Für den Betrieb in einem Proxmox-VE-LXC-Container gibt es ein Helper-Script, das einen Debian-12-Container anlegt und LinkVault darin als systemd-Service einrichtet. Auf dem Proxmox-Host ausführen:
bash scripts/proxmox/install-linkvault.sh
Konfiguration (Container-ID, IP, Ressourcen, ...) über Umgebungsvariablen, siehe Kommentare im Script.
Hinweise für den Produktivbetrieb
- Einen zufälligen
SECRET_KEYin.envsetzen. - Hinter einem HTTPS-Reverse-Proxy betreiben (Session-Cookies).
- Für mehr Last statt SQLite z.B. PostgreSQL via
DATABASE_URLverwenden.