Installation aktualisiert

michael 2025-09-03 13:37:48 +02:00
parent eff6fd083a
commit 3841afdeb4

@ -2,44 +2,6 @@
**Lua API-Gateway für digitale Souveränität**
## Source-Code beschaffen
### Git-Repository clonen
furt-Quellen aus dem Dragons@Work-Repository beschaffen:
```bash
# Repository clonen
git clone https://smida.dragons-at-work.de/DAW/furt.git /tmp/furt-source
cd /tmp/furt-source
```
**Repository-Struktur validieren:**
```bash
# Erforderliche Verzeichnisse prüfen
ls -la src/main.lua config/furt.conf.example scripts/start.sh integrations/
# Erwartete Struktur:
# src/ - Lua-Quellcode
# config/ - Konfigurationsbeispiele
# scripts/ - Helper-Scripts (start.sh)
# integrations/ - merkwerk-Integration
# docs/ - Dokumentation
# VERSION - Versions-Information
```
**Git-Installation falls erforderlich:**
*OpenBSD:*
```bash
doas pkg_add git
```
*Debian/Ubuntu:*
```bash
apt install git
```
## Systemanforderungen verstehen
### Lua-Runtime Anforderungen
@ -113,32 +75,19 @@ Lua sucht Module über `LUA_PATH`-Environment-Variable. furt erweitert Standard-
### 1. Systemanforderungen prüfen
**Lua-Installation validieren mit automatischer Command-Detection:**
**Lua-Installation validieren:**
```bash
# Lua-Command erkennen (plattformspezifisch)
if command -v lua5.1 >/dev/null 2>&1; then
LUA_CMD="lua5.1"
elif command -v lua >/dev/null 2>&1; then
LUA_CMD="lua"
else
echo "Kein Lua gefunden"
exit 1
fi
# Lua-Version prüfen
$LUA_CMD -v
# Lua 5.1 verfügbar?
lua5.1 -v
# Erwartete Ausgabe:
# Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
# Required modules testen
$LUA_CMD -e "require('socket')"
$LUA_CMD -e "require('cjson')"
# Required modules testen
lua5.1 -e "require('socket')"
lua5.1 -e "require('cjson')"
```
**Warum Command-Detection:** OpenBSD installiert Lua als `lua`, Linux-Distributionen oft als `lua5.1`.
**Fehlende Module installieren:**
*Arch Linux:*
@ -198,13 +147,9 @@ chown furt:furt /var/log/furt
**Source-Code kopieren:**
```bash
# In furt-source-Verzeichnis (aus Schritt 0)
cd /tmp/furt-source
# Haupt-Bibliothek installieren
cp -r src/ /usr/local/share/furt/
cp -r config/ /usr/local/share/furt/
cp -r scripts/ /usr/local/share/furt/
cp -r integrations/ /usr/local/share/furt/
# Versions-Dateien für merkwerk-Integration
@ -216,31 +161,47 @@ chown -R root:wheel /usr/local/share/furt # OpenBSD/FreeBSD
chown -R root:root /usr/local/share/furt # Linux
chmod -R 644 /usr/local/share/furt
find /usr/local/share/furt -type d -exec chmod 755 {} \;
chmod +x /usr/local/share/furt/scripts/start.sh
```
**Warum scripts/ inkludieren:** Das `start.sh`-Script löst Service-vs-Interactive-Detection und Lua-Command-Erkennung.
### 4. Startup-Script erstellen
### 4. Startup-Script konfigurieren
**Wrapper-Script für Lua-Pfad-Management:**
**furt nutzt das integrierte `start.sh`-Script für plattformspezifische Anpassungen:**
*OpenBSD/FreeBSD* - `/usr/local/bin/furt`:
```bash
#!/bin/sh
# furt HTTP API-Gateway
# Lua-Module-Pfad für furt erweitern
export LUA_PATH="/usr/local/share/furt/?.lua;;"
# Working Directory für relative Pfade
cd /usr/local/share/furt
# Lua-Interpreter mit main.lua starten
exec lua5.1 src/main.lua "$@"
```
*Linux* - `/usr/local/bin/furt`:
```bash
#!/bin/bash
# furt HTTP API-Gateway
# Lua-Module-Pfad für furt erweitern
export LUA_PATH="/usr/local/share/furt/?.lua;;"
# Working Directory für relative Pfade
cd /usr/local/share/furt
# Lua-Interpreter mit main.lua starten
exec lua5.1 src/main.lua "$@"
```
```bash
# start.sh-Funktionalität testen
cd /usr/local/share/furt
./scripts/start.sh
# Erwartete Ausgabe:
# Auto-detected lua command: lua
# Furt HTTP-Server started on 127.0.0.1:7811
# [...]
chmod +x /usr/local/bin/furt
```
**Warum start.sh statt direkter Lua-Aufruf:**
- Automatische Lua-Command-Detection (lua vs lua5.1)
- Service-vs-Interactive-Mode-Erkennung
- Plattformspezifische Pfad-Anpassungen
- Robuste Daemon-Integration
**Warum ein Wrapper-Script:** Lua benötigt explizite Pfad-Konfiguration für Module-Erkennung. Das Script setzt `LUA_PATH` ohne globale Environment-Änderungen.
### 5. Konfiguration verstehen
@ -327,20 +288,26 @@ sudo -u furt /usr/local/share/furt/scripts/start.sh
### 6. Service-Integration
**OpenBSD rc.d-Script aus Repository-Template:**
**OpenBSD rc.d-Script** - `/etc/rc.d/furt`:
```bash
#!/bin/ksh
daemon="/usr/local/bin/furt"
daemon_flags=""
daemon_user="_furt"
daemon_logger="daemon.info"
. /etc/rc.d/rc.subr
rc_cmd $1
```
```bash
# Template aus Repository verwenden
cp deployment/openbsd/rc.d-furt /etc/rc.d/furt
chmod +x /etc/rc.d/furt
echo "furt_flags=" >> /etc/rc.conf.local
rcctl enable furt
```
**Das Template `deployment/openbsd/rc.d-furt` enthält:**
- Service-vs-Interactive-Detection über `start.sh`
- Korrekte Daemon-Konfiguration für OpenBSD
- Prozess-Pattern für `rcctl`-Integration
**Linux systemd-Unit** - `/etc/systemd/system/furt.service`:
```ini
[Unit]
@ -351,12 +318,12 @@ After=network.target
Type=simple
User=furt
Group=furt
ExecStart=/usr/local/share/furt/scripts/start.sh start
WorkingDirectory=/usr/local/share/furt
ExecStart=/usr/local/bin/furt
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
WorkingDirectory=/usr/local/share/furt
[Install]
WantedBy=multi-user.target