Add Fedora local Stirling PDF setup
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.DS_Store
|
||||
*.log
|
||||
70
README.md
Normal file
70
README.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Stirling PDF Fedora Local
|
||||
|
||||
Lokale Stirling-PDF-Installation für Fedora mit Podman und Chromium-App-Fenster.
|
||||
|
||||
## Ziel
|
||||
|
||||
- vollständige lokale Stirling-PDF-Server-Version
|
||||
- keine Cloud-Abhängigkeit
|
||||
- nur lokal erreichbar unter http://127.0.0.1:8080
|
||||
- startet wie eine normale GNOME-App
|
||||
- Container stoppt automatisch beim Schließen des App-Fensters
|
||||
- keine dauerhafte Hintergrundlast im Leerlauf
|
||||
|
||||
## Installation
|
||||
|
||||
git clone https://gitea.diehanis.de/Jan/Stirling_PDF_Fedora_Local.git
|
||||
cd Stirling_PDF_Fedora_Local
|
||||
./install.sh
|
||||
|
||||
Danach starten:
|
||||
|
||||
Super-Taste -> Stirling PDF
|
||||
|
||||
Oder direkt:
|
||||
|
||||
~/.local/bin/stirling-pdf-app
|
||||
|
||||
## Update
|
||||
|
||||
./update.sh
|
||||
|
||||
## Deinstallation
|
||||
|
||||
./uninstall.sh
|
||||
|
||||
## Status prüfen
|
||||
|
||||
podman ps
|
||||
podman ps -a | grep stirling
|
||||
podman logs stirling-pdf
|
||||
|
||||
## Lokale Daten
|
||||
|
||||
Persistente Daten liegen unter:
|
||||
|
||||
~/.local/share/stirling-pdf/
|
||||
|
||||
## Manuelle Notfall-Deinstallation
|
||||
|
||||
podman stop stirling-pdf 2>/dev/null || true
|
||||
podman rm stirling-pdf 2>/dev/null || true
|
||||
rm -f ~/.local/bin/stirling-pdf-app
|
||||
rm -f ~/.local/share/applications/stirling-pdf.desktop
|
||||
update-desktop-database ~/.local/share/applications 2>/dev/null || true
|
||||
|
||||
Optional Daten löschen:
|
||||
|
||||
rm -rf ~/.local/share/stirling-pdf
|
||||
|
||||
Optional Image löschen:
|
||||
|
||||
podman image rm docker.io/stirlingtools/stirling-pdf:latest
|
||||
|
||||
Optional Chromium entfernen:
|
||||
|
||||
sudo dnf remove -y chromium chromium-common
|
||||
|
||||
## Warum diese Lösung?
|
||||
|
||||
Die native Desktop-App ist komfortabel, aber bestimmte erweiterte Funktionen können einen Server oder Cloud-Zugang benötigen. Diese Podman-Lösung nutzt die vollständige lokale Stirling-PDF-Serverversion und bleibt lokal auf dem Laptop.
|
||||
90
install.sh
Executable file
90
install.sh
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
CONTAINER_NAME="stirling-pdf"
|
||||
URL="http://127.0.0.1:8080"
|
||||
BASE_DIR="$HOME/.local/share/stirling-pdf"
|
||||
BIN_DIR="$HOME/.local/bin"
|
||||
APP_DIR="$HOME/.local/share/applications"
|
||||
|
||||
sudo dnf install -y podman chromium curl libnotify
|
||||
|
||||
mkdir -p "$BASE_DIR/configs" "$BASE_DIR/logs" "$BASE_DIR/pipeline" "$BASE_DIR/tessdata" "$BASE_DIR/chromium-profile" "$BIN_DIR" "$APP_DIR"
|
||||
|
||||
podman stop "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
podman rm "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
|
||||
podman run -d \
|
||||
--name "$CONTAINER_NAME" \
|
||||
-p 127.0.0.1:8080:8080 \
|
||||
-v "$BASE_DIR/configs:/configs:Z" \
|
||||
-v "$BASE_DIR/logs:/logs:Z" \
|
||||
-v "$BASE_DIR/pipeline:/pipeline:Z" \
|
||||
-v "$BASE_DIR/tessdata:/usr/share/tessdata:Z" \
|
||||
-e SECURITY_ENABLELOGIN=false \
|
||||
docker.io/stirlingtools/stirling-pdf:latest
|
||||
|
||||
podman stop "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
|
||||
cat > "$BIN_DIR/stirling-pdf-app" <<'APP_EOF'
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
CONTAINER_NAME="stirling-pdf"
|
||||
URL="http://127.0.0.1:8080"
|
||||
PROFILE_DIR="$HOME/.local/share/stirling-pdf/chromium-profile"
|
||||
|
||||
BROWSER_BIN="$(command -v chromium-browser || command -v chromium || command -v google-chrome || true)"
|
||||
|
||||
if [[ -z "$BROWSER_BIN" ]]; then
|
||||
notify-send "Stirling PDF" "Kein Chromium/Chrome-Browser gefunden."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$PROFILE_DIR"
|
||||
|
||||
podman start "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
|
||||
for i in {1..60}; do
|
||||
if curl -fsS "$URL" >/dev/null 2>&1; then
|
||||
"$BROWSER_BIN" \
|
||||
--app="$URL" \
|
||||
--user-data-dir="$PROFILE_DIR" \
|
||||
--disable-background-networking \
|
||||
--disable-sync \
|
||||
--disable-features=PushMessaging,MediaRouter,OptimizationHints,OnDeviceModel \
|
||||
--disable-component-update \
|
||||
--disable-gpu \
|
||||
--no-first-run \
|
||||
--no-default-browser-check \
|
||||
--password-store=basic \
|
||||
>/dev/null 2>&1
|
||||
|
||||
podman stop "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
exit 0
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
notify-send "Stirling PDF" "Stirling PDF ist nicht rechtzeitig gestartet."
|
||||
podman stop "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
exit 1
|
||||
APP_EOF
|
||||
|
||||
chmod +x "$BIN_DIR/stirling-pdf-app"
|
||||
|
||||
cat > "$APP_DIR/stirling-pdf.desktop" <<DESKTOP_EOF
|
||||
[Desktop Entry]
|
||||
Name=Stirling PDF
|
||||
Comment=Lokale vollständige Stirling-PDF-Instanz
|
||||
Exec=$HOME/.local/bin/stirling-pdf-app
|
||||
Icon=application-pdf
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Office;Utility;
|
||||
StartupNotify=true
|
||||
DESKTOP_EOF
|
||||
|
||||
update-desktop-database "$APP_DIR" 2>/dev/null || true
|
||||
|
||||
echo "Installation complete. Start with: Super -> Stirling PDF"
|
||||
31
uninstall.sh
Executable file
31
uninstall.sh
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
CONTAINER_NAME="stirling-pdf"
|
||||
BASE_DIR="$HOME/.local/share/stirling-pdf"
|
||||
BIN_FILE="$HOME/.local/bin/stirling-pdf-app"
|
||||
DESKTOP_FILE="$HOME/.local/share/applications/stirling-pdf.desktop"
|
||||
|
||||
podman stop "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
podman rm "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
|
||||
rm -f "$BIN_FILE"
|
||||
rm -f "$DESKTOP_FILE"
|
||||
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
|
||||
|
||||
read -r -p "Lokale Stirling-Daten löschen unter $BASE_DIR? [y/N] " DELETE_DATA
|
||||
if [[ "$DELETE_DATA" =~ ^[Yy]$ ]]; then
|
||||
rm -rf "$BASE_DIR"
|
||||
fi
|
||||
|
||||
read -r -p "Container-Image löschen? [y/N] " DELETE_IMAGE
|
||||
if [[ "$DELETE_IMAGE" =~ ^[Yy]$ ]]; then
|
||||
podman image rm docker.io/stirlingtools/stirling-pdf:latest >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
read -r -p "Chromium entfernen? Nur ja sagen, wenn Chromium nur dafür installiert wurde. [y/N] " DELETE_CHROMIUM
|
||||
if [[ "$DELETE_CHROMIUM" =~ ^[Yy]$ ]]; then
|
||||
sudo dnf remove -y chromium chromium-common
|
||||
fi
|
||||
|
||||
echo "Uninstall complete."
|
||||
23
update.sh
Executable file
23
update.sh
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
CONTAINER_NAME="stirling-pdf"
|
||||
BASE_DIR="$HOME/.local/share/stirling-pdf"
|
||||
|
||||
podman stop "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
podman rm "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
podman pull docker.io/stirlingtools/stirling-pdf:latest
|
||||
|
||||
podman run -d \
|
||||
--name "$CONTAINER_NAME" \
|
||||
-p 127.0.0.1:8080:8080 \
|
||||
-v "$BASE_DIR/configs:/configs:Z" \
|
||||
-v "$BASE_DIR/logs:/logs:Z" \
|
||||
-v "$BASE_DIR/pipeline:/pipeline:Z" \
|
||||
-v "$BASE_DIR/tessdata:/usr/share/tessdata:Z" \
|
||||
-e SECURITY_ENABLELOGIN=false \
|
||||
docker.io/stirlingtools/stirling-pdf:latest
|
||||
|
||||
podman stop "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
|
||||
echo "Update complete."
|
||||
Reference in New Issue
Block a user