Skip to content

Nextcloud - Redis Cache

Nextcloud
  • Irgendwie ging mir ja doch die Meldung auf die Nerven, das kein Cache installiert ist. Na gut, dann mal ändern.

    Hier wird das gut erklärt. https://docs.nextcloud.com/server/11/admin_manual/configuration_server/caching_configuration.html

    Installation

    Wir brauchen folgendes

    apt install redis-server
    apt install php7.3-redis
    

    Konfiguration Redis

    Passwort nicht vergessen! Nur auf localhost binden!

    Konfiguration Nextcloud

    In die config.php folgendes eintragen

    'memcache.locking' => '\OC\Memcache\Redis',
    'memcache.local' => '\OC\Memcache\Redis',
    'redis' => array(
        'host' => 'localhost',
        'port' => 6379,
        'password' => 'secret',
         ),
    

    Das wollte erst bei mir, als ich den FPM Prozeß neugestartet habe.

    service php7.3-fpm restart
    

    Danach war die nervige Meldung weg 🤓 Mal die Tage beobachten, was das so an Speicher verbrät.

  • Nextcloud - Upgrade Hub 9 (30.0.0)

    Nextcloud
    3
    2
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    FrankMF
    Ich habe dann mal weitergesucht, dank ein paar Tipps aus dem Fediverse, sehe ich jetzt was heller https://chaos.social/@towo/113152384137718991 Nachdem ich dann ein paar Apps gefunden und installiert hatte AppAPI Flow tauchte dann im Benutzermenü, rechts oben, folgendes auf. [image: 1726992766346-bildschirmfoto_20240922_101125.png] Das Interessante ist der Menüpunkt Externe Apps. Nun sollte ich diese Funktion verstanden haben. Das Nextcloud Team integriert also diese Windmill App via Docker Container und greift dann darauf zu. In der Videopräsentation war doch von in Nextcloud integriert die Werbeansprache!? Ein Docker Container ist für mich keine Integration. Ich habe einige rudimentäre Kenntnisse von Docker, ausschließlich lokal. Aber, ich komme nicht auf die Idee das auf einem produktiven Server zu installieren. Somit kann ich das Testen hier beenden und die Apps alle wieder deinstallieren. Jetzt habe ich noch im Kopf, ob man das mal mit einem Nextcloud-AIO testen soll? Natürlich auf einem Testsystem. https://github.com/nextcloud/all-in-one?tab=readme-ov-file#how-to-use-this
  • Redis ändert das Lizenz Modell

    Redis
    2
    0 Stimmen
    2 Beiträge
    177 Aufrufe
    FrankMF
    Ein Artikel von Heise zum Thema https://www.heise.de/news/Datenbankanbieter-Redis-aendert-sein-Lizenzmodell-erneut-9661949.html?wt_mc=sm.red.ho.mastodon.mastodon.md_beitraege.md_beitraege&utm_source=mastodon
  • Redis - Datenbank Zugriff mit Python

    Redis
    3
    1
    0 Stimmen
    3 Beiträge
    191 Aufrufe
    FrankMF
    Ich bin mit der Lernkurve noch nicht so richtig zufrieden. Eine Frage die sich mir stellte, geht das einfacher? Der Ursprung meiner Datenbank Struktur liegt in einem anderen Projekt, wo ich versucht habe Daten permanent in einem File zu speichern. Dazu hatte ich damals JSON genommen. Deswegen auch diese Zeilen self.project = str(db_client.json().get('settings', '$..project')[0]) or self.project Gut, ich hatte dann mal ChatGPT gefragt, wie macht man das so 'normalerweise'? es kam eine Klasse heraus, die ich dann intensiv ausprobiert habe, ein wenig umgebaut usw. So lange, bis ich der Meinung war, ok ich habe es verstanden. Jetzt nutzte der Code auch mehr Redis Funktionen, wie self.client.hset('settings', name, json.dumps(data)) Es waren jetzt folgende Funktionen drin hset hexists hdel hget Dokumentation -> https://redis.io/commands/hset/ Beim Durchlesen des Codes hatte ich jetzt mehr das Gefühl, so muss das sein In RedisInsight sieht das dann jetzt so aus. [image: 1695479582374-393195f7-1017-4285-8fca-734ee6b4bff7-grafik.png] Klasse class PortfolioSettings: def __init__(self, host='172.17.0.2', port=6379, db=0): if args.test_mode == 1: self.client = redis.StrictRedis(host=SERVER_IP, port=port, db=TEST[0]) else: self.client = redis.StrictRedis(host=SERVER_IP, port=port, db=LIVE[0]) def set_settings(self, name, data): """Init settings if db don't exist""" if not self.client.hexists('settings', name): self.client.hset('settings', name, json.dumps(data)) return True return False def edit_setting(self, name, data): """Edit an entry in settings""" if self.client.hexists('settings', name): self.client.hset('settings', name, json.dumps(data)) return True return False def delete_setting(self, name): """Delete an entry in settings""" return self.client.hdel('settings', name) def get_setting(self, name): """Get an entry in settings""" setting = self.client.hget('settings', name) return json.loads(setting) if setting else None def get_all_settings(self): """Get all entries in settings""" settings = self.client.hgetall('settings') return {k.decode(): json.loads(v) for k, v in settings.items()} Und hier die Initialisierung settings_data = PortfolioSettings() ##################### # Will only be executed if DB is not available! ##################### if not settings_data.get_all_settings(): # Settings initialisieren print("INIT") settings_data.set_settings("project", "Portfolio") settings_data.set_settings("version", "0.0.3") settings_data.set_settings("theme", "dark") settings_data.set_settings("url_list", ["https://www.onvista.de/aktien/Deutsche-Telekom-Aktie-DE0005557508"]) settings_data.set_settings("exchange_list", ['DKB','Smartbroker','BUX']) Teile der Klasse sind [KI-generiert] Ich war zufrieden und habe die Klasse dann in mein Projekt übernommen und den Code überall entsprechend angepasst.
  • Redis Replication - Can't handle RDB format version 10

    Verschoben Redis
    1
    0 Stimmen
    1 Beiträge
    3k Aufrufe
    Niemand hat geantwortet
  • Nextcloud API Zugriff

    Nextcloud
    4
    0 Stimmen
    4 Beiträge
    287 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 23.0.3

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

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

    Verschoben Nextcloud
    2
    1
    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. [image: 1575884966233-a27995ec-ad5c-44fe-a3b7-2fe718a66518-grafik.png]