Skip to content

Nextcloud - Collabora Installation

Nextcloud
  • Kurze Vorgeschichte, meine Nextcloudinstallation nutze ich schon lange. Nicht schön war immer, das man Dokumente .odt nicht bearbeiten kann. Ich habe mich dann meistens mit .md Dokumenten beholfen, die kann man in der Nextcloud direkt bearbeiten. Aber so richtig glücklich war ich nie damit.

    Richtig fies wurde das, als mein Arbeitgeber auch auf die Idee kam, eine Nextcloud Instanz als Dokumentenaustausch einzusetzen.

    In Vergangenheit hat ich viele Versuche gemacht, diese Collabora Installation zu machen. Meistens bin ich gescheitert, erst letztens die eingebauten CODE-Collabora Installation ausprobiert. Doch die konnte nicht drucken, alle Dokumente waren leer 😞

    So reifte der Plan, das mal auf einem eigenen Server aufzusetzen.

    Screenshot_Backend.png

    Server

    Kurzer Werbeblock 🙂 Ich nutze für meine Installation die Hetzner Cloud.

    Gewählt habe ich einen CPX11, meine Nextcloud läuft auf einem CX21.

    Auf die Installation möchte ich hier nicht ausführlich eingehen, das setze ich mal voraus. Gewählt habe ich ein Debian 11.

    Collabora Online Installation

    Collabora Online findet man hier.

    Collabora Online ist eine angepasste Version von LibreOffice Online, einem Online-Office, welches sich auf der eigenen Hardware betreiben lässt.
    Quelle: https://de.wikipedia.org/wiki/Collabora_Online

    Man sollte also später in der Lage sein, ein LibreOffice Dokument in der Nextcloud Installation anzulegen, zu bearbeiten und speichern zu können. Alles aus einem Guss 😉

    Alles etwas unübersichtlich auf der Seite, der Hauptaugenmerk liegt auf dem Generieren von Kohle, das dürfen sie auch gerne, schließlich stellen sie auch einen OpenSource Zweig zur Verfügung. Den findet man dann hier.

    Das ist im Prinzip deren Testversion, bevor man das auf die zahlende Kundschaft los lässt, wird das bei den OpenSource Anwendern ausprobiert. Ein recht verbreitetes Modell.

    CODE is a continuously updated, rolling release where we try out our latest feature work. So it allows you to work with the latest and greatest features in online collaboration earlier than the supported version Collabora Online. Of course, we love to hear about your experiences. Please leave your feedback on CODE in the community forum or report any possible issues on GitHub.
    Find details on the latest update in the release notes.

    Es gibt vier Möglichkeiten der Installation, ich habe mich für den klassischen Weg entschieden, ganz normale Debian Pakete.

    Die Anleitung ist sehr gut und es klappt auch alles wie erwartet. Danach hat man einen Dienst mit Namen coolwsd am Laufen.

    Hier findet man das auch etwas ausführlicher

    Die sehr umfangreiche Konfigurationsdatei findet man unter

    /etc/coolwsd/coolwsd.xml
    

    Dafür sollte man sich wirklich Zeit lassen und sie erst mal ausführlich lesen. In der Doku findet man viele nützliche Hinweise, also auch aufmerksam lesen 😉

    Kommen wir zu den Einstellungen.

    Einstellungen

    Ich habe, bis auf zwei Abschnitte alles auf Standard gelassen. Die zwei Abschnitte

    • Network settings
    • SSL settings

    bedürfen unserer Aufmerksamkeit.

    Network settings

    • proto auf IPv4
    • listen auf any

    SSL settings

    Meine SSL-Zertifikate kommen von Let's Encrypt

    • enable True
    • termination False

    Cert File Path, hatte sie einfach mal irgendwo hinkopiert (zum Testen)

    <cert_file_path desc="Path to the cert file" relative="false">/etc/coolwsd/nginx/cert.pem</cert_file_path>
    <key_file_path desc="Path to the key file" relative="false">/etc/coolwsd/nginx/key.pem</key_file_path>
    <ca_file_path desc="Path to the ca file" relative="false"/>
    

    So, da fehlt jetzt noch was Wichtiges, ohne Apache2 oder NGINX wird das nicht ausgeliefert. Ich nutze schon lange NGINX, also dann mal los.

    NGINX

    Ich habe einfach mal die default.conf unter /etc/nginx.conf.d umgeschrieben. Das entspricht der Konfiguration aus der Anleitung. Domain Namen rein und fertig.

    server {
     listen       443 ssl;
     server_name  collaboraonline.example.com;
    
    
     ssl_certificate /path/to/certificate;
     ssl_certificate_key /path/to/key;
    
    
     # static files
     location ^~ /browser {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Host $http_host;
     }
    
    
     # WOPI discovery URL
     location ^~ /hosting/discovery {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Host $http_host;
     }
    
    
     # Capabilities
     location ^~ /hosting/capabilities {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Host $http_host;
     }
    
    
     # main websocket
     location ~ ^/cool/(.*)/ws$ {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header Host $http_host;
       proxy_read_timeout 36000s;
     }
    
    
     # download, presentation and image upload
     location ~ ^/(c|l)ool {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Host $http_host;
     }
    
    
    
     # Admin Console websocket
     location ^~ /cool/adminws {
       proxy_pass https://127.0.0.1:9980;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header Host $http_host;
       proxy_read_timeout 36000s;
     }
    
    }
    

    Nextcloud

    Als erstes muss mal die entsprechende App installiert werden.

    f6472a0f-7820-4f0d-b539-8cf336b21b32-grafik.png

    Jetzt noch, was auf Nextcloud Seite eingestellt werden muss. Ich füge hier noch mal das Bild von oben ein, dann muss man nicht so weit scrollen.

    Screenshot_Backend.png

    Im oberen Feld kommt ein Link rein, der nur prüft ob die Installation erreichbar ist. Da steht bei mir

    https://<DOMAIN>:9980
    

    Unten das Feld ist wichtiger, das muss die IP des Collabora Servers rein.

    Ein Bug hat mich sehr viel Zeit gekostet.... 😞

    Warnung

    Man sollte grundsätzlich gut wissen, wie man eine App auch wieder über die Konsole deaktiviert. Diese Apps sind schon ein wenig zickig, sie brauchen auch viel Zeit für die Installation, also auch mal was warten....

    Ergebnis

    Man kann jetzt ein Dokument, eine Tabelle, eine Präsentation oder ein Diagramm direkt aus der Nextcloud öffnen.

    a6682cb1-5cc6-45cf-af3a-b63c5820ceea-grafik.png

    Ein Dokument sieht dann, im Browser geöffnet, so aus.

    4c57434b-d5d9-465e-bd33-29318c64b031-grafik.png

    Das kann man bearbeiten, speichern (liegt alles in der Nextcloud) und auch über den Dialog direkt drucken 🙂

    Ausblick

    Was ich noch die Tage probieren werde ist die Office Open XML (OOXML) Unterstützung. Mal schauen ob das mittlerweile gut funktioniert.

    Sicherheit

    Ich gehe hier im Beitrag nicht auf das Thema Sicherheit ein, so als Anregung ein paar Hinweise.

    • iptables
    • fail2ban

    Ich habe die Zugriffe auf die Installation gestern mal auf die Schnelle über NGINX massiv begrenzt, das Thema ist aber bei mir noch nicht komplett. Das steht heute auf dem Plan. Wenn es dazu was Wichtiges gibt, werde ich das hier ergänzen.

    Zum Schluss bleibt mir nur Euch viel Spaß zu Wünschen. So macht für mich eine Nextcloud Installation erst richtig Sinn. Meinungen?

    Sollte jemand Fehler oder Unsinn finden, bitte ich um einen Beitrag. Ich werde das dann entsprechend ändern / verbessern.

  • FrankMF FrankM hat am auf dieses Thema verwiesen
  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • 0 Stimmen
    2 Beiträge
    351 Aufrufe
    FrankMF

    Ok, ich war leider nicht in der Lage den CODE-Server hinter einem Proxy zu installieren. Das CODE-Team scheint Docker zu lieben und das andere nur am Rande zu machen. Ohne Liebe 🙂

    Da ich extrem lange Ladezeiten hatte und die Software insgesamt nicht den Eindruck machte, das man das gerne produktiv auf einem Server nutzen möchte, habe ich den Server eben wieder gelöscht.

    Jetzt fehlt mir leider, die deepl.com Anbindung, aber das kann man ja auch über die Webseite nutzen.

    Ich nutze jetzt wieder den eingebauten CODE-Server, der eigentlich ein App-Image ist.

    28c41010-5ce1-4f7c-89d5-1c9b253011d0-grafik.png

    Der klare Vorteil, es läuft incl. Dokumenten Freigabe 🙂

    Nicht vergessen, unter Allow list for WOPI requests kommen die Server Adressen des Nextcloud-Webservers rein!

    c1a06c2c-86b5-4750-a062-7ba9d8dd8253-grafik.png

  • 0 Stimmen
    1 Beiträge
    250 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    80 Aufrufe
    Niemand hat geantwortet
  • Nextcloud 24.0.0

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    129 Aufrufe
    Niemand hat geantwortet
  • Nextcloud API Zugriff

    Nextcloud
    4
    0 Stimmen
    4 Beiträge
    184 Aufrufe
    FrankMF

    Ok, es gab noch ein Problem und zwar '/'. Habe das Script jetzt nochmal umgebaut, jetzt bin ich soweit zufrieden. Die Textdatei ist auf meine Bedürfnisse angepasst worden

    1.2.01 1.2.01.1 Text1.1 1.2.01.2 Text1.2 1.2.02 1.2.02.1 Text2.1/Testing 1.2.02.2 Text2.2

    1.2.01 und 1.2.02 erzeugt dann einen Ordner, der Rest sind dann Unterordner.

    """ Tool to create folders using the Nextcloud API """ ############################################### # Imports ############################################### import subprocess from pathlib import Path ############################################### # Constant ############################################### # Get home directory from user USERHOME = str(Path.home()) NCPATH = 'https://DOMAIN/remote.php/dav/files/Frank/Python_Script/' USERNAME = 'USER' PASSWORD = 'PASSWORD' ############################################### # Function to crate folder with nextcloud api ############################################### def read_textobject(): # read folders to create from textfile with open(f'{USERHOME}/Textdatei.txt', 'r') as obj: # create object for line in obj: line_split = line.split(' ') elements = line_split[0].split('.') try: if elements[3]: main_folder = 0 # replace whitespaces with %20, and / with _ and remove linefeed (\n) path = Path((line.replace(' ', '%20').replace('/', '_')).rstrip('\n')) except IndexError: print("Element is main folder") main_folder = 1 # replace whitespaces with %20, and / with _ and remove linefeed (\n) main = Path((line.replace(' ', '%20').replace('/', '_')).rstrip('\n')) else: print("Element is not a main folder") ############################################### # Create directory ############################################### if main_folder == 1: # Main folder try: args = ['curl', '-u', f'{USERNAME}:{PASSWORD}', f'{NCPATH}{main}', '-X', 'MKCOL'] result = subprocess.run(args, check=True, capture_output=True, text=True) except subprocess.CalledProcessError as error: print(result.stderr) else: if result.stdout: print(result.stdout) else: print('Directory created successful') else: # Not a main folder try: args = ['curl', '-u', f'{USERNAME}:{PASSWORD}', f'{NCPATH}{main}/{path}', '-X', 'MKCOL'] result = subprocess.run(args, check=True, capture_output=True, text=True) except subprocess.CalledProcessError as error: print(result.stderr) else: if result.stdout: print(result.stdout) else: print('Directory created successful') else: print(result.stdout) obj.close() if __name__ == '__main__': read_textobject()
  • 0 Stimmen
    1 Beiträge
    154 Aufrufe
    Niemand hat geantwortet
  • Nextcloud - Redis Cache

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    389 Aufrufe
    Niemand hat geantwortet
  • Nextcloud umziehen

    Verschoben Nextcloud
    2
    0 Stimmen
    2 Beiträge
    2k Aufrufe
    FrankMF

    Ich habe heute mal wieder eine Nextcloud Installation umgezogen. Diesmal erneut alles von einem Server zum Nächsten. War bis auf ein paar Kleinigkeiten auch kein Problem.

    1. Problem

    Es trat ein interner Serverfehler auf. Ich habe nichts dazu in den Logs gefunden. Dann die Config noch mal durchgegangen und dann machte es Klick.

    Ich hatte den Redis-Cache vergessen. Installiert, danach war alles wieder gut 🙂

    2. Problem

    NC meckert über ein fehlendes PHP Paket mit Namen imagick

    apt install php-imagick

    Erledigt!

    Auf einem Debian 11 Server fehlte mir die SVG Unterstützung

    apt install libmagickcore-6.q16-6-extra 3. Problem

    NC meckert über irgendwelche PHP Umgebungsvariablen. Die Doku dazu durchgelesen und dann das Folgende gemacht.

    /etc/php/7.3/fpm/php-fpm.conf

    Am Ende die Zeilen aus der Doku hinzugefügt.

    env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp

    Nach den Änderungen nicht vergessen fpm neu zu starten.

    service php7.3-fpm restart

    Damit ist die Nextcloud Installation erfolgreich umgezogen.

    a27995ec-ad5c-44fe-a3b7-2fe718a66518-grafik.png