Komga auf Synology installieren

Ramihyn

Benutzer
Mitglied seit
14. Mai 2017
Beiträge
332
Punkte für Reaktionen
60
Punkte
34
Da mir manche Unzulänglichkeiten von Ubooquity leider die längerfristige Freude daran vergällt haben (insbesondere der Umstand, dass seit knapp zwei Jahren kein Update mehr erfolgt ist und sich der Programmierer nicht bereit erklärt, andere mitmachen zu lassen), war ich auf der Suche nach einer brauchbaren Alternative und bin schliesslich über KOMGA gestolpert (https://komga.org). Ist zwar auch nur eine One-man-show, wird aber regelmässig gepflegt, ist auf Github veröffentliche FOSS und kann bis auf Themes bereits alles, was Ubooquity auch beherrscht und manches sogar etwas besser.

Allerdings ist im Web keinerlei Instruktion zu finden, wie man KOMGA auf einer Syno ans Fliegen bringt, und dem Umstand schaffe ich hiermit Abhilfe. Ich hätte es mir auch einfach machenu und den Dockercontainer nehmen können, war aber gegen den Overhead mir dafür extra Docker einhandeln zu müssen; es musste also auch direkt mit dem JAR-File gehen. Und eigentlich ist das auch ziemlich simpel, wenn man weiss, wie man JAVA-Anwendungen auf ner Syno als Serverapplikation einrichten muss (Ubooquity ist da auch nichts anderes).
Im Kern sind die wichtigsten Informationen auch auf der Komgawebsite vorhanden, man muss letztlich nur wissen, wie man die wesentlichen Parameter in ein geeignetes Shellscript verpacken muss, das man dann im Aufgabenplaner als "beim Rechnerstart" einzurichten hat.

Die Schritte der Reihe nach:
1. Ein Verzeichnis für Komga einrichten; ich habe mir direkt in meinem Ordner für meine Bücher und Comics einen Ordner namens ".komga" angelegt
2. die aktuelle JAR-Datei von der Komgawebsite herunterladen und in das frisch angelegte Verzeichnis speichern
3. einen Benutzer anlegen, der nichts anderes darf als Komga zu starten und auf die Bücher und Comics lesend zuzugreifen
4. das nachfolgende Shellscript in einem brauchbaren Texteditor anpassen, der mit Unix-Zeilenumbrüchen umzugehen weiss (Notepad++ oder Visual Studio Code). Zu beachten sind insbesondere der JAVA-Pfad (JAVA 8 oder OpenJDK 11 sind Pflicht) sowie der Speicherausbau, dem man dem Programm gönnen will (bei mir 3172m):

Bash:
#!/usr/bin/env bash
#title           : komga.sh
#description     : Launch komga server by shell script in DSM task manager
#date            : 2021-04-02
#==============================================================================

### JAVA VARIABLES ###
# Java installation directory
JAVA_DIR=/var/packages/Java8/target/j2sdk-image/bin
# Maximum size of the Java runtime memory allocation pool. Default: 64MB
MEM=<mind. 1024m, bei mir 3172m>

### KOMGA VARIABLES ###
# Komga working directory
KOMGA_WORK_DIR=/volume1/Books/.komga
# Komga binary location
KOMGA_BIN=$KOMGA_WORK_DIR/komga-0.85.1.jar
# Komga process ID file location
PID_FILE=$KOMGA_WORK_DIR/komga.pid

# Komga configuration
LIB_PORT=<TCP-Port, Default 8080>
LIB_SCAN_STARTUP=<true|false>
KOMGA_SSOKEY=<UniqueKeyFuerSingleSignonCookies>
KOMGA_DBFILE=$KOMGA_WORK_DIR/komga.sqlite
KOMGA_DBBACKUP=$KOMGA_WORK_DIR/database-backup.zip
KOMGA_LOGNAME=$KOMGA_WORK_DIR/logs/komga.log

### ENVIRONMENT VARIABLES ###
# Character encoding
ENCO=UTF-8
# Locale selection
LANG=en_US.$ENCO
### SCRIPT ###
# Workaround to read special characters properly
export LANG

# Kill previous process
if [ -f $PID_FILE ]; then
    pkill -F $PID_FILE > /dev/null 2>&1
fi
# Launch komga
printf "Starting Komga server...\n"
cd $KOMGA_WORK_DIR
$JAVA_DIR/java -jar -Dfile.encoding=$ENCO -Xmx$MEM $KOMGA_BIN \
               --server.port=$LIB_PORT \
               --komga.libraries-scan-startup=$LIB_SCAN_STARTUP \
               --komga.remember-me.key=$KOMGA_SSOKEY \
               --komga.database.file=$KOMGA_DBFILE \
               --komga.database-backup.path=$KOMGA_DBBACKUP \
               --logging.file.name=$KOMGA_LOGNAME \
               & KOMGA_PID=$!
echo $KOMGA_PID > $PID_FILE
printf "Komga is now running (pid: %d).\n" $KOMGA_PID
exit 0

5. Im Aufgabenplaner das Script als benutzerdefiniertes Script beim Hochfahtren einrichten, auf den in Step 3 angelegten Benutzer setzen, Pfad bei mir beispielsweise "/volume1/Books/.komga/komga.sh"

Man kann dieses Script auch prima per SSH direkt in einer Shell auf der Syno ausprobieren, bevor man den letzten Step macht. So spart man sich ggf. mühsame Fehlersuche.

Beim ersten Start folgt man dann den weiteren Anweisungen der Komgaanleitung unter https://komga.org/installation/, um sich mindestens einen Adminuser anzulegen und dann seine Bibliotheken zu ergänzen. Bei meiner umfangreichen Sammlung dauerte die erste Indexierung der Daten dann ein paar Stündchen, das war aber bei Ubooquity auch nicht anders.
 

Ramihyn

Benutzer
Mitglied seit
14. Mai 2017
Beiträge
332
Punkte für Reaktionen
60
Punkte
34
Update: funktioniert auch fast 15 Monate nach Veröffentlichung meiner kleinen Anleitung auch mit den aktuellsten Versionen (heutiger Stand: 0154.4) weiterhin einwandfrei und megastabil. Meine Sammlung umfasst mehrere hundert GByte, und es ist noch nie vorgekommen, dass der Service abgeschmiert ist.

Übrigens funktioniert dieselbe Vorgehensweise auch auf jedem beliebigen anderen Linuxdevice, z.B. Raspi4 (ältere sind wahrscheinlich zumindest für den Libraryscan zu schwachbrüstig) oder wenn man sich nen NUC mit Ubuntu aufgebaut hat. Da kommt dann bloss noch die kleine Aufgabe dazu, einen automatischen Start im Hintergrund beim Bootprozess zu veranlassen. Das klappt analog wie beispielsweise nen JDownloader als Backgroundservice zu starten.
 

Thomy2000

Benutzer
Mitglied seit
07. Mai 2019
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Hallo, ich bräuchte bitte mal Hilfe. Ich habe einige Anwendungen (Navidrome, Jellyfin, audiobookshell etc. ) per Docker Container auf meiner Synology (DMS 7.1) zum Laufen gebracht. Nun möchte ich auch Komga für meine Comicsammlung zum Laufen bringen. Allerdings erhalte ich beim Aufruf der Webseite immer nur die Synology-Standardseite " Die Seite konnte nicht gefunden werden.

Ich gehe in der Regel immer so vor. Ich Holle mir von meinem Domainanbieter eine Subdomain (z.B. komga.meinedomain.net) Hole mir hierzu über Lets Encrpyt ein Zertifikat. Lade den Container runter installiere ihn (bei Komga gebe ich als Port 8080 an) und mache über Reverse- Proxy auf der Synology einen Eintrag auf die Seite (z.B. komga.meinedomain.net) mit Https auf Port 443 der als Ziel localhost 8080 bekommt. Leider findet ich beim Aufruf der Seite eben nicht das gewünschte Ziel. Da ich nicht vor Ort bei meiner Synology bin kann ich leider keinen "lokalen Test" machen. Vielen Dank für die Hilfe
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat