[HowTo] Baikal Installation, Update und Migration von QBaikal

  • [NAS Typ:] TS-233 / TS-231P3 (vermutlich allgemeingültig für QTS 5.2.x)
    [Firmware:] 5.2.4.x
    [Getestet:] ja
    [Sonstige Modifikationen:] keine

    Baïkal-HowTo (Installation, Update und Migration von QBaikal)

    Übersicht

    Baïkal ist ein in php geschriebener, 'leichter' CalDAV- und CardDAV-Server, der Kalender- und Kontaktdaten speichert und mit dem sich verschiedene CalDAV-/CardDAV-Clients syncen können.

    Ich nutze Baïkal auf einer qnap im LAN, um mein Adressbuch zwischen Android/DAVx5 und Thunderbird zu synchronisieren und zu sichern. Zugriffe sollten nur per https erfolgen und das NAS sollte nicht im Internet freigeschaltet sein!


    Ich hatte das .qpkg "QBaikal" (Baïkal-0.9.2) genutzt. Dafür gibt es seit der Umstellung auf http://www.myqnap.org keinen direkten Nachfolger mehr. Dort gibt es zwar mit "Baïkal (Apache82)" und "Baïkal (Apache83)" zwei ähnliche Pakete, die aber den Kauf des jeweiligen Apache-Paketes erfordern.

    Außerdem ist Baikal inzwischen bei V 0.10.1 angekommen.


    Hier in kleines HowTo inkl. Skripten qb2b.zip, wie man den Server 'direkt' auf QTS aufsetzt. Eine Anleitung zum Anbinden von Clients an Baïkal steht in der unter 9.1. verlinkten Anleitung.


    Der Text richtet sich an Leute, die sich auf der Linux-Shell bewegen können; bin weder Apache-, PHP-, TLS- noch QTS-Experte.

    Je nachdem, wie schnell man tippt, sollte alles zusammen ca. 20-60min dauern und ist im Grunde ziemlich simpel (Download, Unzippen, Dateien herumschubsen).


    Freue mich über Rückmeldungen & Ergänzungen :)

    Gliederung

    Für eine Erstinstallation ohne Datenübernahme brauchen nur 3.), 5.) und 8.) ausgeführt werden sowie bei Bedarf 7) und 8.).

    1. Infos zu Baïkal
    2. Voraussetzungen / Hinweise
    3. Konfiguration Webserver / apache
    4. QBaikal-Migration vorbereiten
    5. Erstinstallation Baikal auf/unter QTS
    6. Datenübernahme der SQLite-DB von QBaikal auf diese "Eigeninstallation"
    7. Updaten der Eigeninstallation
    8. Aufräumen
    9. Benutzte Doku / Links

    1. Infos zu Baïkal

    'Bemerkenswerte' Einträge im Issue-Tracker:

    • Baïkal wird nur noch 'gewartet'; derzeit keine Weiterentwicklung: #1235#issuecomment-2027715404
    • Es enthält teilweise sehr alten Code: #1208
    • Es nutzt eine veraltete/unsichere Technik zum Speichern der Passwörter: #514
    • Es gibt diverse andere 'Macken':#1110, #1084

    Daher: Zugriffe sollten nur per https erfolgen und das NAS sollte nicht im Internet freigeschaltet sein!

    Aber für meine paar Kontakte genügt es völlig und tut klaglos seinen Dienst. Es ist einfach zu handhaben und zu bedienen. Wenn mein Android-Smarty im heimischen WLAN ist, synct DAVx5 alle 4 Stunden meine Kontakte oder nach Änderungen.

    2. Voraussetzungen / Hinweise

    • Es gibt einen administrativen User (habe nicht als 'admin' gearbeitet)
    • Es gibt die Freigabe /share/Web
    • Falls QBaikal installiert: u.a. Link in /share/Web vorhanden (unterschiedliche Nr. bei CHACHEDEVx_DATA)
    Code
    lrwxrwxrwx    1 admin    administ      47 Nov 12  2023 baikal -> /share/CACHEDEV5_DATA/.qpkg/QBaikal/baikal/html/
    • QBaikal nutzt SQLite (MySQL erfordert Anpassungen).
    • Es wird mehrmals der Webserver gestartet / gestoppt.
    • Die Skripte nutzen 'sudo'; es wird dort nach dem Passwort des administrativen Users gefragt.
    • Die Skripte warten an einigen Stellen, bis man j eingibt. Bei anderen Eingaben brechen sie ab. Hier sind im Browser verschiedene Dinge zu erledigen / testen, bevor es weiter geht.
    • Benutzte URLs mit den Beispielports aus 3. nas=IP-Adresse oder DNS-Name der NAS, z.B. qnap-nas.fritz.box.
      • http://nas:8080/baikal/html/
      • https://nas:9443/baikal/html/
      • https://nas:9443/baikal/html/admin/
      • https://nas:9443/baikal/html/dav.php
    • Die zip-Datei im Anhang enthält alle hier aufgeführten Skripte.
      • Die Datei als /share/Web/qb2b.zip ablegen und dort mit unzip qb2b.zip entpacken oder
      • Die einzelnen Skripte per Copy&Paste mit einem Editor in /share/Web/qb2b ablegen oder
      • Die einzelnen Zeilen per Copy&Paste in der Shell ausführen
    • Vor dem Aufrufen der Skripte cd /share/Web/qb2b ausführen.

    3. Konfiguration Webserver / apache

    Die Portnummern sind nur (geläufige) Beispiele:

    apache-1.png


    WebDAV kann deaktiviert bleiben:

    apache-2.png

    4. QBaikal-Migration vorbereiten

    Falls QBaikal installiert ist und die Daten daraus übernommen werden sollen. Kann ansonsten übersprungen werden.

    /share/Web/qb2b/1_prepare.sh dort aufrufen oder zeilenweise kopieren und ausführen.

    5. Erstinstallation Baikal auf/unter QTS

    Installation von Baikal-0.9.2 für die Datenübernahme aus QBaikal.


    Falls keine Daten übernommen werden brauchen, kann stattdessen sofort die aktuelle Version installiert werden. Diese am Anfang des Skriptes eintragen, derzeit ist dies "VERSION=0.10.1".


    /share/Web/qb2b/2_install.sh dort aufrufen oder zeilenweise kopieren und ausführen.

    Falls die zip-Datei beschädigt ist, bricht das Skript ab.

    => Baikal 0.9.2 bzw. aktuelle Version sind ohne Datenbestand aktiv


    Im Browser http://NAS:port/baikal/html/ aufrufen, ggf. die Zertifakte-Warnung ignorieren.


    apache-3.png



    Die Verbindung sollte automatisch auf https umstellen.


    Das gewünschte Admin-PW, Zeitzone und andere Einstellungen setzen:

    Baikal-1.png


    Den DB-Pfad anpassen auf /share/Web/baikal/Specific/db/db.sqlite:

    Baikal-2.png


    Baikal-3.png


    Einloggen:

    Baikal-4.png


    Noch keine Daten vorhanden:

    Baikal-5.png


    Bei einer Neuinstallation ohne Datenübernahme weiter mit User anlegen und Clients einrichten, s.u. beim Link unter 9.1.

    6. Datenübernahme aus QBaikal

    /share/Web/qb2b/3_migrate.sh dort aufrufen oder zeilenweise kopieren und ausführen.


    Beim ersten Haltepunkt:

    Login als Admin https://nas:port/baikal/html/ und User https://nas:port/baikal/html/dav.php

    Jeweils prüfen ob der Datenbestand angezeigt wird.


    Baikal-6.png

    Baikal-7.png

    => Baikal 0.9.2 mit übernommenen Datenbestand aktiv


    Erst danach 'j' eingeben und QBaikal im AppStore löschen.

    Nach dem Löschen erneut 'j' eingeben.

    7. Update einspielen

    /share/Web/qb2b/4_update.sh dort aufrufen oder zeilenweise kopieren und ausführen.

    Dort am Anfang jeweils die aktuelle Version eintragen; derzeit ist das 0.10.1.


    Auch hier erst 'j' eingeben, nachdem ein Logintest als Admin https://nas:port/baikal/html/ und User https://nas:port/baikal/html/dav.php erfolgreich verlief.

    Beim ersten Login als Admin https://nas:port/baikal/html/ gelangt man zum "upgrade wizard"

    Baikal-8.png Baikal-9.png


    Danach sollte unter der neuen Versionsnr. der Datenbestand angezeigt werden.

    Nach 'j' wird das Backup gelöscht!


    8. Aufräumen

    Code: z_cleanup.sh
    cd /share/Web
    rm -r /share/Web/qb2b*

    9. Benutzte Doku / Links:

    PS: Puh, hatte nicht gedacht, dass es derart viel Arbeit ist, ein kleines HowTo sauber zu erstellen ...

    Einmal editiert, zuletzt von Alex0516 ()

  • Hi Alex,


    tolle Zusammenfassung. Ich hab es bei mir auf dem alten QNAP T 419P II mit Version 0.5.3 (wegen der PHP Versionsunverträglichkeit) durchgeführt.

    Natürlich die Versionsnummer im Script angepasst und den Zugriffsbefehl auf ../Config entfernt. Da es diesen Ordner in der alten Version noch nicht gab.


    Eine Anmerkung zum Script 2_install.sh und dem Verweis auf "qb2b-env.sh" da müsste entweder die Datei nach entpacken auch so benannt sein (also nicht "0_qb2b-env.sh") oder im Script den Dateinamen anpassen.


    Ein Problem habe ich dann aber leider doch. Welches ich bisher nicht lösen konnte.

    Beim Installationswizard von Baikal an der Stelle mit dem DB-Pfad kommt bei mir:

    Code
    The FOLDER containing the DB file is not writable, and it has to.
    Please give write permissions on folder

    Eigentümer vom "Folder" /share/Web/baikal/Specific/db/ ist ja der httpduser. Irgend eine Idee weshalb der Zugriff nicht funktioniert?

  • n'abend Norbody

    freut mich :) - danke für's lob & die hinweise!


    mir fällt da nur ein, mal mit "ps -ef | grep httpd" (o.ä.) nachzuschauen, unter welchem user der httpd-prozess bei deiner qts-version läuft. vielleicht war es damals ein anderer user?

    außerdem zum testen einfach mal den kompletten pfad in der GUI im browser 'rauskopieren' und mit 'ls -l <pfad>' auf der shell eingeben. vielleicht fällt dann etwas aus.

    wie sehen denn die zugriffsrechte auf das verzeichnis aus? vielleicht passt etwas 'weiter oben' im baum nicht?