Worker-Installation unter Linux
Das Beispiel verwendet Ubuntu 24.04 LTS mit x64 oder ARM64 und betreibt einen
zusätzlichen document-extractor. Linux kann auch core, supabase und ollama
betreiben. transcriber-mlx setzt Apple Silicon und macOS voraus.
1. Grundsystem installieren
Ein dauerhaftes Betriebskonto mit Home-Verzeichnis und passwortgeschütztem Administrationszugang einrichten. Unter diesem Konto:
sudo apt-get update
sudo apt-get install -y ca-certificates curl xz-utils tar
case "$(uname -m)" in
x86_64) SCHORNAI_NODE_ARCH=x64 ;;
aarch64) SCHORNAI_NODE_ARCH=arm64 ;;
*) echo "Nicht unterstützte Architektur"; exit 1 ;;
esac
SCHORNAI_NODE_RELEASE="node-v24.22.0-linux-$SCHORNAI_NODE_ARCH"
mkdir -p "$HOME/Downloads/node"
cd "$HOME/Downloads/node"
curl -fSLO "https://nodejs.org/dist/v24.22.0/$SCHORNAI_NODE_RELEASE.tar.xz"
curl -fSLO https://nodejs.org/dist/v24.22.0/SHASUMS256.txt
sha256sum --check --ignore-missing SHASUMS256.txt
sudo tar -xJf "$SCHORNAI_NODE_RELEASE.tar.xz" -C /opt
sudo ln -s "/opt/$SCHORNAI_NODE_RELEASE/bin/node" /usr/local/bin/node
sudo ln -s "/opt/$SCHORNAI_NODE_RELEASE/bin/npm" /usr/local/bin/npm
sudo ln -s "/opt/$SCHORNAI_NODE_RELEASE/bin/npx" /usr/local/bin/npx
node --version
Die Version entspricht dem gebündelten Mac-Runtime-Stand; alternativ eine neuere unterstützte Node-LTS-Version ab 24 aus dem offiziellen Node-Archiv verwenden. Auf einem bereits eingerichteten Rechner vorhandene Installationen prüfen, bevor Symlinks angelegt werden.
Docker Engine einschließlich Compose-Plugin über das offizielle apt-Repository nach der Docker-Anleitung für Ubuntu installieren. Dann dem Betriebskonto Zugriff geben und neu anmelden:
sudo usermod -aG docker "$USER"
# Jetzt abmelden und erneut anmelden.
docker version
docker compose version
docker info
Compose muss mindestens 2.24.4 unterstützen. Docker-Zugriff gewährt weitreichende Hostrechte; nur das vorgesehene Betriebskonto aufnehmen. Für reines Ollama ohne Container ist Docker nicht erforderlich. Linux verwendet die vorhandene Engine, keine Colima-VM.
2. Passendes Paket und Konfiguration
Das Setup-Bundle für linux/x64 beziehungsweise linux/arm64 von der
Betriebsadministration beziehen, Prüfsumme vergleichen und entpacken. Linux-Bundles
enthalten die Service-Laufzeit und Container-Images, aber keine macOS-Binaries.
Zum Bauen siehe Service-Handbuch.
mkdir -p "$HOME/Downloads/schornai-setup"
tar -xf "$HOME/Downloads/update.xrag.tar" -C "$HOME/Downloads/schornai-setup"
cd "$HOME/Downloads/schornai-setup"
node ./apps/service/cli.mjs service init --services document-extractor
In der erzeugten ~/.aibox/config.json die ID behalten und
"sharing": { "url": "https://core.example.com" } ergänzen. docker.manageColima
bleibt false. Die private Umgebung anlegen:
umask 077
touch "$HOME/.aibox/docker.env"
chmod 600 "$HOME/.aibox/docker.env"
nano "$HOME/.aibox/docker.env"
SERVICE_API_TOKEN=REPLACE_WITH_CORE_SERVICE_TOKEN
DOCUMENT_EXTRACTOR_BIND_ADDRESS=10.0.0.5
DOCUMENT_EXTRACTOR_PORT=9998
10.0.0.5 durch die tatsächliche private IP dieses Workers ersetzen. Ohne diese
Einstellung ist der Extractor nur über Loopback erreichbar. Er bietet selbst
keine Benutzeranmeldung; den Port ausschließlich für den Core-Rechner in einem
geschützten Netz freigeben. Der reine Extractor benötigt keine Supabase-Schlüssel.
Für eine eigene CA NODE_EXTRA_CA_CERTS beim Service-Start setzen.
3. Installieren und mit Core verbinden
bash ./setup.sh
node "$HOME/.aibox/apps/service/cli.mjs" service start
node "$HOME/.aibox/apps/service/cli.mjs" service status
node "$HOME/.aibox/apps/service/cli.mjs" service logs --follow
Auf dem Core-Rechner endpoints.documentExtractor auf
http://10.0.0.5:9998 setzen und Core neu starten. Die Rolle document-extractor
dort nur entfernen, wenn künftig ausschließlich der entfernte Worker verwendet
werden soll. Die bisherige Variable APACHE_TIKA_URL wird als Fallback akzeptiert;
der einheitliche Name ist DOCUMENT_EXTRACTOR_URL.
In Cluster → Service den verbundenen Linux-Rechner und dessen Containerstatus prüfen. In der Anwendung eine kleine PDF- oder Textdatei hochladen und die extrahierten Inhalte prüfen. Der Extractor wird von Core über HTTP aufgerufen; die Service-Verbindung liefert Status und Updates, sie verteilt keine Extraktionsaufträge automatisch auf mehrere Extractor-Rechner.
4. Dauerhaft über systemd betreiben
Zuerst den manuell gestarteten Service stoppen. Dann einen Benutzerdienst
anlegen; %h wird von systemd durch das Home-Verzeichnis ersetzt:
node "$HOME/.aibox/apps/service/cli.mjs" service stop
mkdir -p "$HOME/.config/systemd/user"
cat > "$HOME/.config/systemd/user/schornai-service.service" <<'EOF'
[Unit]
Description=schorn.ai Service
[Service]
Type=simple
ExecStart=/usr/local/bin/node %h/.aibox/apps/service/cli.mjs service run --config %h/.aibox/config.json
Restart=always
RestartSec=10
TimeoutStopSec=180
Environment=PATH=/usr/local/bin:/usr/bin:/bin
Environment=SCHORNAI_SERVICE_MANAGER=systemd
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now schornai-service
sudo loginctl enable-linger "$USER"
systemctl --user status schornai-service
journalctl --user -u schornai-service -n 100
Bei eigener CA im Unit-Abschnitt [Service] zusätzlich
Environment=NODE_EXTRA_CA_CERTS=/absoluter/pfad/ca.pem eintragen. Linger ermöglicht
den Betrieb ohne aktive Anmeldung. Neustarts oder Wartungsstopps anschließend
mit systemctl --user restart schornai-service beziehungsweise stop durchführen.
Ein service stop allein würde durch systemd wieder gestartet.
Auch vor einem manuellen setup.sh zuerst die Unit stoppen und anschließend
wieder starten; automatische Service-Updates übernimmt die Unit selbst.
Optional: Ollama oder Core
Ollama nach der offiziellen Linux-Anleitung samt
passenden GPU-Treibern installieren. Wenn Service ollama verwalten soll, einen
eventuell vom Installer eingerichteten ollama.service vorher mit
sudo systemctl disable --now ollama stoppen. ollama zu services hinzufügen;
Service startet ollama serve und speichert Modelle unter ~/.aibox/ollama/models.
Für Zugriff von Core OLLAMA_HOST=10.0.0.5:11434 in der Worker-Umgebung und
endpoints.ollama=http://10.0.0.5:11434 auf Core setzen. Auch diesen Port privat
halten. Modelle über passende XRAG-Pakete bereitstellen. Ein entfernter Core ohne
gemeinsames Modellverzeichnis benötigt nach Modelländerungen einen Neustart.
Für core zusätzlich TLS-Zertifikate, Realtime-/Service-Token und die
Supabase-Verbindung konfigurieren. supabase nur auswählen, wenn
dieser Rechner die Datenbank tatsächlich selbst betreiben soll. Weder ein Core-
noch ein Worker-Start installiert das Anwendungsschema in einer fremden Instanz.