chore: Installer auf Debian 13 (trixie) als Mindestanforderung festlegen
- OS-Check: bricht ab wenn nicht Debian 13 erkannt - Go: apt-golang-go entfernt, Go 1.24.4 von dl.google.com (arm64/amd64) - Manticore: bookworm-Paket hardcodiert (kein natives trixie-Paket), in install.sh und update.sh konsistent - Native config: batch_mode: true für index + ocr (wie PROJ-58 vorgesehen) - systemd: NEXT_PUBLIC_API_URL entfernt (Next.js baked bei Build, nicht Runtime) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
261a95437c
commit
681d81c469
+36
-20
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# archivmail Installer
|
# archivmail Installer
|
||||||
# Unterstützte Systeme: Debian 12 / 13
|
# Unterstütztes System: Debian 13 (trixie)
|
||||||
#
|
#
|
||||||
# Aufruf:
|
# Aufruf:
|
||||||
# bash install.sh # Interaktiv (Modus-Auswahl)
|
# bash install.sh # Interaktiv (Modus-Auswahl)
|
||||||
@@ -18,6 +18,13 @@ die() { echo -e "${RED}[ERR]${NC} $*" >&2; exit 1; }
|
|||||||
|
|
||||||
[[ $EUID -eq 0 ]] || die "Bitte als root ausführen: sudo bash install.sh"
|
[[ $EUID -eq 0 ]] || die "Bitte als root ausführen: sudo bash install.sh"
|
||||||
|
|
||||||
|
# ── OS-Prüfung: nur Debian 13 (trixie) ──────────────────────────────────────
|
||||||
|
_os_id=$(. /etc/os-release 2>/dev/null && echo "$ID" || echo "")
|
||||||
|
_os_ver=$(. /etc/os-release 2>/dev/null && echo "$VERSION_ID" || echo "")
|
||||||
|
[[ "$_os_id" == "debian" && "$_os_ver" == "13" ]] \
|
||||||
|
|| die "Nur Debian 13 (trixie) wird unterstützt (erkannt: ${_os_id} ${_os_ver})"
|
||||||
|
log "Debian 13 erkannt"
|
||||||
|
|
||||||
# ── Gemeinsame Variablen ──────────────────────────────────────────────────────
|
# ── Gemeinsame Variablen ──────────────────────────────────────────────────────
|
||||||
DB_PASSWORD="${DB_PASSWORD:-$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 32)}"
|
DB_PASSWORD="${DB_PASSWORD:-$(openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 32)}"
|
||||||
API_SECRET="${API_SECRET:-$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | head -c 64)}"
|
API_SECRET="${API_SECRET:-$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | head -c 64)}"
|
||||||
@@ -375,26 +382,41 @@ EOF
|
|||||||
# ══════════════════════════════════════════════════════════════════════════════
|
# ══════════════════════════════════════════════════════════════════════════════
|
||||||
install_native() {
|
install_native() {
|
||||||
|
|
||||||
# ── 1. Pakete ─────────────────────────────────────────────────────────────
|
# ── 1. Basispakete (kein golang-go — zu alt in Debian-Repos) ────────────
|
||||||
info "Installiere Systempakete..."
|
info "Installiere Systempakete..."
|
||||||
apt-get update -qq
|
apt-get update -qq
|
||||||
apt-get install -y -qq \
|
apt-get install -y -qq \
|
||||||
golang-go nodejs npm postgresql nginx \
|
nodejs npm postgresql nginx \
|
||||||
curl git rsync logrotate openssl
|
curl wget git rsync logrotate openssl ca-certificates
|
||||||
log "Pakete installiert"
|
log "Pakete installiert"
|
||||||
|
|
||||||
# ── 1b. Manticore Search ──────────────────────────────────────────────────
|
# ── 1b. Go 1.24 von upstream (apt-Paket ist zu alt) ──────────────────────
|
||||||
|
GO_VERSION="1.24.4"
|
||||||
|
info "Installiere Go ${GO_VERSION} von upstream..."
|
||||||
|
if /usr/local/go/bin/go version 2>/dev/null | grep -q "go${GO_VERSION}"; then
|
||||||
|
log "Go ${GO_VERSION} bereits installiert"
|
||||||
|
else
|
||||||
|
_go_arch="amd64"
|
||||||
|
[[ "$(dpkg --print-architecture)" == "arm64" ]] && _go_arch="arm64"
|
||||||
|
curl -fsSL "https://dl.google.com/go/go${GO_VERSION}.linux-${_go_arch}.tar.gz" \
|
||||||
|
| tar -C /usr/local -xz
|
||||||
|
log "Go $(/usr/local/go/bin/go version | awk '{print $3}') installiert"
|
||||||
|
fi
|
||||||
|
export PATH="$PATH:/usr/local/go/bin"
|
||||||
|
ln -sf /usr/local/go/bin/go /usr/local/bin/go
|
||||||
|
ln -sf /usr/local/go/bin/gofmt /usr/local/bin/gofmt
|
||||||
|
|
||||||
|
# ── 1c. Manticore Search ──────────────────────────────────────────────────
|
||||||
info "Installiere Manticore Search..."
|
info "Installiere Manticore Search..."
|
||||||
if ! command -v searchd >/dev/null 2>&1 && ! systemctl is-active --quiet manticore 2>/dev/null; then
|
if ! command -v searchd >/dev/null 2>&1 && ! systemctl is-active --quiet manticore 2>/dev/null; then
|
||||||
apt-get install -y -qq wget gnupg2 lsb-release 2>/dev/null || true
|
# Manticore hat kein natives trixie-Paket — bookworm-Paket ist kompatibel
|
||||||
MANTICORE_CODENAME=$(lsb_release -cs 2>/dev/null || echo "bookworm")
|
|
||||||
wget -q -O /tmp/manticore.deb \
|
wget -q -O /tmp/manticore.deb \
|
||||||
"https://repo.manticoresearch.com/repository/manticoresearch_${MANTICORE_CODENAME}/pool/main/m/manticoresearch/manticoresearch_6.3.6_amd64.deb" 2>/dev/null \
|
"https://repo.manticoresearch.com/repository/manticoresearch_bookworm/pool/main/m/manticoresearch/manticoresearch_6.3.6_amd64.deb" 2>/dev/null \
|
||||||
|| wget -q -O /tmp/manticore.deb \
|
|| wget -q -O /tmp/manticore.deb \
|
||||||
"https://github.com/manticoresoftware/manticoresearch/releases/download/6.3.6/manticoresearch_6.3.6.202408011246.4c39781ba-1+${MANTICORE_CODENAME}_amd64.deb" 2>/dev/null \
|
"https://github.com/manticoresoftware/manticoresearch/releases/download/6.3.6/manticoresearch_6.3.6.202408011246.4c39781ba-1+bookworm_amd64.deb" 2>/dev/null \
|
||||||
|| true
|
|| true
|
||||||
if [[ -f /tmp/manticore.deb ]]; then
|
if [[ -f /tmp/manticore.deb ]]; then
|
||||||
dpkg -i /tmp/manticore.deb 2>/dev/null || apt-get install -f -y 2>/dev/null || true
|
dpkg -i /tmp/manticore.deb 2>/dev/null || apt-get install -f -y -qq 2>/dev/null || true
|
||||||
rm -f /tmp/manticore.deb
|
rm -f /tmp/manticore.deb
|
||||||
log "Manticore Search installiert"
|
log "Manticore Search installiert"
|
||||||
else
|
else
|
||||||
@@ -406,15 +428,6 @@ install_native() {
|
|||||||
systemctl enable --now manticore 2>/dev/null || warn "Manticore-Dienst konnte nicht gestartet werden"
|
systemctl enable --now manticore 2>/dev/null || warn "Manticore-Dienst konnte nicht gestartet werden"
|
||||||
systemctl is-active --quiet manticore && log "Manticore Search läuft"
|
systemctl is-active --quiet manticore && log "Manticore Search läuft"
|
||||||
|
|
||||||
# go im PATH sicherstellen (Debian legt binary nicht immer in /usr/bin)
|
|
||||||
if ! command -v go >/dev/null 2>&1; then
|
|
||||||
GO_BIN=$(find /usr/lib/go-*/bin /usr/local/go/bin -name "go" 2>/dev/null | head -1)
|
|
||||||
[[ -n "$GO_BIN" ]] || die "go binary nicht gefunden nach Installation"
|
|
||||||
ln -sf "$GO_BIN" /usr/local/bin/go
|
|
||||||
log "go binary verlinkt: $GO_BIN → /usr/local/bin/go"
|
|
||||||
fi
|
|
||||||
log "go $(go version | awk '{print $3}')"
|
|
||||||
|
|
||||||
# ── 2. Systembenutzer ─────────────────────────────────────────────────────
|
# ── 2. Systembenutzer ─────────────────────────────────────────────────────
|
||||||
info "Lege Systembenutzer '$AM_USER' an..."
|
info "Lege Systembenutzer '$AM_USER' an..."
|
||||||
id "$AM_USER" &>/dev/null \
|
id "$AM_USER" &>/dev/null \
|
||||||
@@ -514,6 +527,10 @@ index:
|
|||||||
backend: manticore
|
backend: manticore
|
||||||
manticore_dsn: "manticore@tcp(127.0.0.1:9306)/"
|
manticore_dsn: "manticore@tcp(127.0.0.1:9306)/"
|
||||||
batch_size: 100
|
batch_size: 100
|
||||||
|
batch_mode: true
|
||||||
|
|
||||||
|
ocr:
|
||||||
|
batch_mode: true
|
||||||
|
|
||||||
audit:
|
audit:
|
||||||
log_path: ${LOG_DIR}/audit.log
|
log_path: ${LOG_DIR}/audit.log
|
||||||
@@ -660,7 +677,6 @@ WorkingDirectory=${INSTALL_DIR}/web
|
|||||||
ExecStart=/usr/bin/node server.js
|
ExecStart=/usr/bin/node server.js
|
||||||
Environment=NODE_ENV=production
|
Environment=NODE_ENV=production
|
||||||
Environment=PORT=3000
|
Environment=PORT=3000
|
||||||
Environment=NEXT_PUBLIC_API_URL=http://127.0.0.1:8080
|
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
StandardOutput=journal
|
StandardOutput=journal
|
||||||
|
|||||||
@@ -54,12 +54,11 @@ command -v go >/dev/null || die "go nicht gefunden — apt-get install golang-
|
|||||||
|
|
||||||
if ! command -v searchd >/dev/null 2>&1 && ! systemctl is-active --quiet manticore 2>/dev/null; then
|
if ! command -v searchd >/dev/null 2>&1 && ! systemctl is-active --quiet manticore 2>/dev/null; then
|
||||||
info "Manticore Search nicht gefunden — installiere..."
|
info "Manticore Search nicht gefunden — installiere..."
|
||||||
apt-get install -y wget gnupg2 lsb-release 2>/dev/null || true
|
# bookworm-Paket auf trixie verwenden (kein natives trixie-Paket verfügbar)
|
||||||
MANTICORE_CODENAME=$(lsb_release -cs 2>/dev/null || echo "bookworm")
|
|
||||||
wget -q -O /tmp/manticore.deb \
|
wget -q -O /tmp/manticore.deb \
|
||||||
"https://repo.manticoresearch.com/repository/manticoresearch_${MANTICORE_CODENAME}/pool/main/m/manticoresearch/manticoresearch_6.3.6_amd64.deb" 2>/dev/null \
|
"https://repo.manticoresearch.com/repository/manticoresearch_bookworm/pool/main/m/manticoresearch/manticoresearch_6.3.6_amd64.deb" 2>/dev/null \
|
||||||
|| wget -q -O /tmp/manticore.deb \
|
|| wget -q -O /tmp/manticore.deb \
|
||||||
"https://github.com/manticoresoftware/manticoresearch/releases/download/6.3.6/manticoresearch_6.3.6.202408011246.4c39781ba-1+${MANTICORE_CODENAME}_amd64.deb" 2>/dev/null \
|
"https://github.com/manticoresoftware/manticoresearch/releases/download/6.3.6/manticoresearch_6.3.6.202408011246.4c39781ba-1+bookworm_amd64.deb" 2>/dev/null \
|
||||||
|| true
|
|| true
|
||||||
if [[ -f /tmp/manticore.deb ]]; then
|
if [[ -f /tmp/manticore.deb ]]; then
|
||||||
dpkg -i /tmp/manticore.deb 2>/dev/null || apt-get install -f -y 2>/dev/null || true
|
dpkg -i /tmp/manticore.deb 2>/dev/null || apt-get install -f -y 2>/dev/null || true
|
||||||
|
|||||||
Reference in New Issue
Block a user