Skip to content

TrueNAS & Nextcloud

Linux
  • Als Nextcloud User folge ich natürlich Nextcloud auch auf Twitter, so fiel mir dieser Beitrag auf.

    TrueNAS? Das hatte ich irgendwo auch schon mal gelesen, hatte es aber vergessen. Ok, ich wusste grob was es macht und jetzt gab es eine Möglichkeit, da einfach Nextcloud zu installieren? Ok, nicht das ich das jetzt gerade brauche, aber das alte Spielkind musste das Testen.

    Ich wollte das auf echter Hardware testen, aber jetzt wurde es schwierig. Mein Zweitrechner ist mit dem PROXMOX Backup Server belegt, da wollte ich nicht ran. Da fiel mir ein, ich hab noch einen alten NUC, den keiner kaufen möchte, der hier in der Ecke rum lag. Dann testen wir damit mal, obwohl ich nicht wusste, ob der von der Leistung noch reichte.

    Ok, ich brauchte ein Image.

    ef550935-2ec9-4d9f-8129-aaebb841273a-image.png

    Es gibt drei verschiedene Versionen!? Als Spielkind, habe ich mich für TrueNAS SCALE entschieden. Zwei Aspekte, sollten man vorher beachten.

    • BETA Evt. nicht 2TB an wichtigen Daten dort speichern 😉

    und

    SCALE is developed as an appliance that uses specific Linux packages with each release. Attempting to update SCALE with apt or methods other than the SCALE web interface can result in a nonfunctional system.

    Also, nur das eingebaute Update System nutzen. Findet man unter System Settings / Update

    Das Image auf den USB-Stick und die Maschine damit gestartet. TrueNAS installiert und neugestartet. Bei der Installation kam ein Warnhinweis, das mein NUC keine 8GB RAM hat, das ist die empfohlenen Menge. Ich dachte mir aber, das das Grundsystem mit den 4GB RAM laufen müsste.

    6ec75aef-82fb-4999-9c8a-fcb9296c14bf-image.png

    Gut, es läuft. Hier auf dem Screenshot schon mit eingerichtetem Storage und installiertem Nextcloud. Man sieht nun sofort, das die Empfehlung für 8GB RAM nicht gewürfelt ist. Da ist nicht mehr viel frei, somit dürfte ich damit keinen Spaß haben, noch andere Sachen zu testen. Für einen ersten Überblick sollte es reichen...

    Storage

    Nach der Installation muss erst ein Storage eingerichtet werden. Auch hier kam direkt eine Warnmeldung. Was wollte ich machen? Ich habe eine USB-Platte als Storage anmelden wollen, das ist natürlich auf einem NAS nicht sinnvoll. Man braucht mindestens zwei Platten um ein RAID bzw. besser einen ZFS-Pool einzurichten. Auch hier habe ich die Warnmeldung bestätigt und mit einer Platte installiert.

    Nextcloud

    Danach konnte man ganz einfach Nextcloud als APP installieren.

    1d6cb958-4160-4088-8ba3-d116c773ed89-image.png

    Auf Install klicken, ein paar Angaben ergänzen - fertig. Praktische Sache. Nextcloud läuft dann auf dem TrueNAS als Docker Container. Den Port wird bei der Installation angegeben.

    1381c722-7717-496c-802b-c20879a35473-image.png

    SSH

    Schauen wir uns mal ein paar Dinge etwas genauer an. Dafür brauchte ich einen SSH Zugang. Der ist vorbildlich abgeschaltet. Kann man mit System Settings / Services aktivieren. Danach kann man sich ja an einem Debian System mit dem User root nicht anmelden. Wir brauchen einen User. Unter Credentials / Local Users einen anlegen. Danach kann man dann per SSH ins System.

    fdisk

    truenas# fdisk -l
    Disk /dev/sda: 119.24 GiB, 128035676160 bytes, 250069680 sectors
    Disk model: PLEXTOR PX-128M5
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: 16DD0615-F91C-4A9F-86F3-BCF140FE7087
    
    Device        Start       End   Sectors   Size Type
    /dev/sda1        40      2087      2048     1M BIOS boot
    /dev/sda2      2088   1050663   1048576   512M EFI System
    /dev/sda3  34605096 250069646 215464551 102.7G Solaris /usr & Apple ZFS
    /dev/sda4   1050664  34605095  33554432    16G Linux swap
    
    Partition table entries are not in disk order.
    
    
    Disk /dev/sdb: 465.76 GiB, 500107862016 bytes, 976773168 sectors
    Disk model: Portable SSD T5 
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 33553920 bytes
    Disklabel type: gpt
    Disk identifier: 372BC4C0-52DA-40F2-B75C-F250F28147AE
    
    Device       Start       End   Sectors   Size Type
    /dev/sdb1      128   4194304   4194177     2G Linux swap
    /dev/sdb2  4194432 976773134 972578703 463.8G Solaris /usr & Apple ZFS
    
    
    Disk /dev/mapper/sdb1: 2 GiB, 2147418624 bytes, 4194177 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 33553920 bytes
    

    free

    truenas# free
                   total        used        free      shared  buff/cache   available
    Mem:         3472820     2947888      227328       47396      297604      269624
    Swap:        2097084       59904     2037180
    

    Jo, Speicher ist ein Problem.

    Fazit

    Ein erstes Fazit. Das macht einen sehr guten Eindruck, die Einstellungen in Bezug auf Sicherheit sehen sehr ordentlich aus. Die Nextcloud Installation war easy und funktionierte gut. Im Backend hat er wenig zu meckern.

    55acbd54-c57c-4f1b-bfac-6b098f1f1fd1-image.png

    Macht Lust auf weitere Tests, aber mit dem NUC? Ich weiß nicht so richtig, Geld ausgeben für mehr Speicher, dafür erscheint er mir als zu alt. Muss ich drüber nachdenken. Also, wer so was sucht,das kann man sich anschauen 🙂

  • Nextcloud - Hub 5 (27.0.0)

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    82 Aufrufe
    Niemand hat geantwortet
  • Docker & Redis Datenbank

    Verschoben Linux
    2
    0 Stimmen
    2 Beiträge
    150 Aufrufe
    FrankMF

    @FrankM sagte in Docker & Redis Datenbank:

    save 60 1
    #save 900 1
    save 300 10
    save 60 10000

    Hier kann man auch noch schön sehen, wie ich gekämpft habe, bis ich mal eine dump.rdb gesehen habe. Auch irgendwie logisch, das ich nie eine gesehen hatte, wenn man weiß das

    save 900 1

    bedeutet, das er alle 900 Sekunden speichert, wenn mindestens eine Änderung vorhanden ist. Das kann dann schon was dauern. Ich habe das dann mal verkürzt, damit ich schneller ein Ergebnis habe.

    save 60 1

    Das brachte mich dann dem Ziel näher. Danach konnte ich die dump.rdb auch finden.

    Bitte keine Redis DB ohne Passwort laufen lassen!
  • Python & Redis-Datenbank

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    95 Aufrufe
    FrankMF

    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann.

    Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}}

    Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde 🙂

    Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar ☕ später dann die Lösung.

    Wie komme ich an den einzelnen Eintrag, also über den Index??

    r1.json().get('stocks', 1)

    Gibt als Ergebnis

    {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}

    Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen.

    print("TESTING", testing['stockname'])

    Ausgabe

    TESTING Henkel

    Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen.

    objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys)

    Ausgabe

    Objkeys ['0', '1']

    Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten 😉

    Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate 😉

    @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data

    Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.

  • Nextcloud API Zugriff

    Nextcloud
    4
    0 Stimmen
    4 Beiträge
    186 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()
  • Nextcloud - Deck

    Nextcloud
    2
    0 Stimmen
    2 Beiträge
    380 Aufrufe
    FrankMF

    Für meine Lieblings App gibt es auch eine mobile App.

    Link Preview Image Nextcloud Deck - Apps on Google Play

    Client for Nextcloud Deck

    favicon

    (play.google.com)

    Diese App kostet 2,99€, ich denke das ist gut investiert.

    Deck.jpg

    Und so was müßte es jetzt noch bei meinem Arbeitgeber geben 😞

  • Nextcloud - Größe Datenverzeichnis

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    204 Aufrufe
    Niemand hat geantwortet
  • Nextcloud 16.0.5 -> 17.0.0

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    221 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