# swp-01-ingest — Wurzelwerk Stufe 0/1 der Wurzelwerk-Pipeline (Stinkwurzpresse, SWP): Quellenregister und Roh-Erfassung (RSS-Poller, Senken Postgres oder gzip-JSONL). Details zu Betrieb, Verhalten und offenen Punkten stehen in [`NOTES.md`](NOTES.md). ## Deploy (Server mit Postgres + Podman/Quadlet) ```sh # 1. Schema einspielen psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f schema.sql # 2. Image bauen podman build -t localhost/wurzelwerk-ingest:latest . # 3. Konfiguration ablegen mkdir -p ~/.config/wurzelwerk cp ingest.env.example ~/.config/wurzelwerk/ingest.env cp sources.toml ~/.config/wurzelwerk/sources.toml chmod 600 ~/.config/wurzelwerk/ingest.env $EDITOR ~/.config/wurzelwerk/ingest.env # 4. Quadlet installieren mkdir -p ~/.config/containers/systemd cp wurzelwerk-ingest.container wurzelwerk.network ~/.config/containers/systemd/ systemctl --user daemon-reload systemctl --user start wurzelwerk-ingest journalctl --user -u wurzelwerk-ingest -f # Damit der Dienst ohne offene Sitzung weiterlaeuft: loginctl enable-linger "$USER" ``` `sources.toml` ist eingehaengt, nicht ins Image gebacken: eine neue Quelle ist ein `systemctl --user restart wurzelwerk-ingest`, kein Neubau. ## Deploy (Zweitgeraet ohne Postgres/Container, z. B. als Schatten-Ingest) Fuer ein schlankes Zweitsystem ohne Postgres und ohne Container genuegt Python 3.11+ mit den Paketen aus `requirements.txt`: ```sh python3 poller.py --sink jsonl:/pfad/zu/deinem/ablageordner ``` Als `systemd --user`-Unit mit `Restart=always` einrichten (siehe `wurzelwerk-robots.service` / `.timer` fuer den woechentlichen Robots-Check).