Installation aktualisiert
parent
a137a52fd4
commit
7d5419f0de
1 changed files with 116 additions and 50 deletions
164
Installation.md
164
Installation.md
|
|
@ -2,6 +2,44 @@
|
|||
|
||||
**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
|
||||
|
|
@ -75,35 +113,50 @@ Lua sucht Module über `LUA_PATH`-Environment-Variable. furt erweitert Standard-
|
|||
|
||||
### 1. Systemanforderungen prüfen
|
||||
|
||||
**Lua-Installation validieren:**
|
||||
**Lua-Installation validieren mit automatischer Command-Detection:**
|
||||
|
||||
```bash
|
||||
# Lua 5.1 verfügbar?
|
||||
lua5.1 -v
|
||||
# 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
|
||||
|
||||
# Erwartete Ausgabe:
|
||||
# Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
|
||||
|
||||
# Required modules testen
|
||||
lua5.1 -e "require('socket')"
|
||||
lua5.1 -e "require('cjson')"
|
||||
$LUA_CMD -e "require('socket')"
|
||||
$LUA_CMD -e "require('cjson')"
|
||||
```
|
||||
|
||||
**Warum Command-Detection:** OpenBSD installiert Lua als `lua`, Linux-Distributionen oft als `lua5.1`.
|
||||
|
||||
**Fehlende Module installieren:**
|
||||
|
||||
*Arch Linux:*
|
||||
```bash
|
||||
pacman -S lua51-socket lua51-dkjson lua51-sec
|
||||
```
|
||||
|
||||
*OpenBSD:*
|
||||
```bash
|
||||
pkg_add lua-socket lua-cjson
|
||||
pkg_add lua-socket lua-cjson luasec
|
||||
```
|
||||
|
||||
*Debian/Ubuntu:*
|
||||
```bash
|
||||
apt install lua-socket lua-cjson
|
||||
apt install lua-socket lua-cjson lua-sec
|
||||
```
|
||||
|
||||
*Arch Linux:*
|
||||
```bash
|
||||
pacman -S lua51-socket lua51-cjson
|
||||
```
|
||||
**Warum lua-sec:** furt nutzt SMTP mit SSL/TLS-Verschlüsselung (Port 465). Ohne SSL-Bibliothek schlägt Mail-Versendung fehl.
|
||||
|
||||
### 2. Benutzer und Verzeichnisse erstellen
|
||||
|
||||
|
|
@ -145,9 +198,13 @@ 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
|
||||
|
|
@ -159,47 +216,31 @@ 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
|
||||
```
|
||||
|
||||
### 4. Startup-Script erstellen
|
||||
**Warum scripts/ inkludieren:** Das `start.sh`-Script löst Service-vs-Interactive-Detection und Lua-Command-Erkennung.
|
||||
|
||||
**Wrapper-Script für Lua-Pfad-Management:**
|
||||
### 4. Startup-Script konfigurieren
|
||||
|
||||
**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
|
||||
# start.sh-Funktionalität testen
|
||||
cd /usr/local/share/furt
|
||||
./scripts/start.sh
|
||||
|
||||
# Lua-Interpreter mit main.lua starten
|
||||
exec lua5.1 src/main.lua "$@"
|
||||
# Erwartete Ausgabe:
|
||||
# Auto-detected lua command: lua
|
||||
# Furt HTTP-Server started on 127.0.0.1:7811
|
||||
# [...]
|
||||
```
|
||||
|
||||
*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
|
||||
chmod +x /usr/local/bin/furt
|
||||
```
|
||||
|
||||
**Warum ein Wrapper-Script:** Lua benötigt explizite Pfad-Konfiguration für Module-Erkennung. Das Script setzt `LUA_PATH` ohne globale Environment-Änderungen.
|
||||
**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
|
||||
|
||||
### 5. Konfiguration verstehen
|
||||
|
||||
|
|
@ -249,7 +290,7 @@ allowed_ips = 127.0.0.1, 10.0.0.0/8
|
|||
# Identische Konfiguration wie oben
|
||||
```
|
||||
|
||||
**Sicherheits-Berechtigungen:**
|
||||
**Sicherheits-Berechtigungen für Produktion:**
|
||||
|
||||
*OpenBSD/FreeBSD:*
|
||||
```bash
|
||||
|
|
@ -263,19 +304,42 @@ chmod 640 /etc/furt/furt.conf
|
|||
chown root:furt /etc/furt/furt.conf
|
||||
```
|
||||
|
||||
**Testing-Berechtigungen:** Für manuelle Tests als normaler Benutzer temporär lesbare Berechtigungen setzen:
|
||||
|
||||
```bash
|
||||
# Temporär für Testing
|
||||
chmod 644 /usr/local/etc/furt/furt.conf # OpenBSD/FreeBSD
|
||||
chmod 644 /etc/furt/furt.conf # Linux
|
||||
|
||||
# Nach Testing wieder sichern
|
||||
chmod 640 /usr/local/etc/furt/furt.conf # OpenBSD/FreeBSD
|
||||
chmod 640 /etc/furt/furt.conf # Linux
|
||||
```
|
||||
|
||||
**Oder als Service-User testen:**
|
||||
```bash
|
||||
# OpenBSD/FreeBSD
|
||||
doas -u _furt /usr/local/share/furt/scripts/start.sh
|
||||
|
||||
# Linux
|
||||
sudo -u furt /usr/local/share/furt/scripts/start.sh
|
||||
```
|
||||
|
||||
### 6. Service-Integration
|
||||
|
||||
**OpenBSD rc.d-Script** - `/etc/rc.d/furt`:
|
||||
```bash
|
||||
#!/bin/ksh
|
||||
|
||||
daemon="/usr/local/bin/furt"
|
||||
daemon_flags=""
|
||||
daemon="/usr/local/share/furt/scripts/start.sh"
|
||||
daemon_user="_furt"
|
||||
daemon_logger="daemon.info"
|
||||
daemon_cwd="/usr/local/share/furt"
|
||||
daemon_flags="start"
|
||||
|
||||
. /etc/rc.d/rc.subr
|
||||
|
||||
pexp="lua.*src/main.lua"
|
||||
|
||||
rc_cmd $1
|
||||
```
|
||||
|
||||
|
|
@ -285,6 +349,8 @@ echo "furt_flags=" >> /etc/rc.conf.local
|
|||
rcctl enable furt
|
||||
```
|
||||
|
||||
**Warum start.sh statt direkter Lua-Aufruf:** Das integrierte `start.sh`-Script löst Plattform-Detection, Service-Mode-Erkennung und Lua-Command-Detection automatisch. Direkte `exec lua`-Aufrufe hängen im Daemon-Context.
|
||||
|
||||
**Linux systemd-Unit** - `/etc/systemd/system/furt.service`:
|
||||
```ini
|
||||
[Unit]
|
||||
|
|
@ -295,12 +361,12 @@ After=network.target
|
|||
Type=simple
|
||||
User=furt
|
||||
Group=furt
|
||||
ExecStart=/usr/local/bin/furt
|
||||
ExecStart=/usr/local/share/furt/scripts/start.sh start
|
||||
WorkingDirectory=/usr/local/share/furt
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
WorkingDirectory=/usr/local/share/furt
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue