Nach Nexcloud-Update nur ein weißes Fenster

Zum ersten Mal ist mir der Fehler in der Version 13 aufgetreten. Da war die Lösung die Umbenennung des Ordners „files_accesscontrol“. Mit dem Aufruf der Nextcloud-Seite im Browser wurden dann die installieren Apps aktualisiert und ein Einloggen auf der Wolke war wieder möglich.

In der 29er Version scheint es diesen Ordner nicht mehr zu geben. Aber auch dafür gibt es eine Lösung.

Einloggen per SSH auf das Verzeichnung und den Befehl

php83 occ upgrade

ausführen.

Die Apps werden in der DB registriert und der Aufruf von Nextcloud ist wieder möglich.


Stand 02.11.2024: Aufruf der aktuellen PHP-Version angepasst, kleine Formatkorrekturen vorgenommen.

Nextclound & Allinkl.com- Anpassungen nach einem Update

Nextcloud lässt sich bei Allinkl.com gut hosten. Allerdings sind nach der Installation und nach einem Update ein paar Arbeiten nötig.

PHP-Speicherlimit erhöhen

Nextcloud benötigt mindestens 512 MB, die Standardgrenze liegt bei allinkl.com bei 128 MB. Mit der folgenden Zeile in der Datei .user.ini im Root-Verzeichnis kann die Speichergrenze erhöht werden. Bitte diese Änderung moderat vornehmen, da dies den gesamte SharedServer beeinflusst und es zu Rückmeldungen vom Provider kommen kann.

Ich habe für mich einen Wert von 768 MB als gut empfunden.

memory_limit=768M

Anmerkung: Mit dem Hub 8 (ab Version 29) wird der PHP-Speicher nicht mehr angemerkt. Ob diese Option noch benötigt wird, wird sich zeigen.

PHP Memory Cache konfigurieren

Der Memory-Cache ist bei all-inkl.com leider erst ab einem Managed-Server konfigurierbar.

PHP OPcache-Modul konfigurieren

Hier kann ein kostenloser Serverwechsel über den Support nötig sein.

Fehlende Datenbank-Indizes erstellen

Es wenn Datenbank-Indices fehlen, muss man sich über das Terminal per ssh am Webspace anmelden. Unter Linux ist folgendes möglich:

ssh ssh-[Zugang]@[webspace-Kennung].kasserver.com
Beispiel: ssh ssh-w123456@w123456.kasserver.com

Als Kennwort dann das Passwort des Haupt-FTP-Nutzers nehmen.

Per CD in das Installationsverzeichnis navigieren und folgenden Befehl ausführen. Je nach eingesetzter PHP-Version ändert sich der Befehl, z.B. php74, php82, etc.:

php83 occ db:add-missing-indices

In dem Zuge können auch Variablenfehler beseitigt werden:

php83 occ db:convert-filecache-bigint

Und wenn wir schon mal hier sind, können wir auch die Mimetype-Zuordnungen korrigieren:

php83 occ maintenance:repair --include-expensive

Wartungszeitfenster konfigurieren

Der Assistent schlägt die Einrichtung eines Wartungsfensters vor, die die Wartungsarbeiten in einer Nebenzeit ausführt. Das nachfolgende Beispiel zeigt die Einrichtung des Wartungsfenster auf 1 Uhr nachts (UTC). Die nachfolgende Zeile wird in die Datei ‚config/config.php“ eingetragen

'maintenance_window_start' => 1,

Alternativ kann die Einrichtung auch über die ssh-Shell vorgenommen werden:

php83 occ config:system:set maintenance_window_start --type=integer --value=1

Hintergrundaufgabe sucht nach SSL-Zertifikaten

Öfter mal was neues, die Fehlermeldung lautet genau:

Eine Hintergrundaufgabe, die nach vom Benutzer importierten SSL-Zertifikaten sucht, läuft noch. Bitte später erneut versuchen.

Die vermeintliche Hintergrundaufgabe bricht nicht ab, sie läuft auch nicht. Ein Wert in der Tabelle update oc_appconfig sorgt für einen falschen Status und kann gelöscht werden. Dies lässt über ein SQL-Statement oder durch die direkte Änderung in der Datenbank beheben. In beiden Fällen muss man sich in der Datenbank anmelden. Über den phpmyadmin muss der folgende Eintrag mit einem Klick auf das rote X gelöscht werden:


(Stand: 02.11.2024: Aufruf der aktuellen PHP-Version angepasst, kleine Format- und Textkorrekturen.

pihole: Kernel Update

Mein pihole lief lange Zeit auf einem Kernel der 4.9er-Reihe. Aktuell ist die Version 5.15.
Die bekannten Updateprozesse

pihole -up (Update des pihole-Systems)
pihole -g (Adressupdate der geblockten Seiten)

sowie die aus der Linuxwelt bekannten apt-Befehle

sudo apt update
sudo apt dist-upgrade

sorgen nur für ein Update in der jeweiligen Kernelreihe.

Um den Kernel zu aktualisieren ist nach dem Login per ssh folgender Befehl nötig:

sudo rpi-update

Die nachfolgende Frage ist mit [y] zu bestätigen und nach erfolgtem Update der pi per

sudo reboot

neu zu starten.

Update am 31.12.2021: Kernel-Version von 5.4 auf 5.10 aktualisiert.
Update am 20.05.2022: Kernel-Version von 5.10 auf 5.15 aktualisiert.

Python-Fu: Das Kreuz mit den Umlauten und Sonderzeichen

Beim Schreiben des Codes meldete mir GIMP immer wieder den Fehler, dass das Plugin abgestürzt sei. Einzige Änderung war Ergänzung eines Kommentars mit einem Umlaut. Sobald der Umlaut ersetzt wurde, funktionierte das Skript wieder.

Die Lösung fand sich bei der Recherche im Netz in einem Artikel aus dem Jahr 2006. Dieser wies darauf hin, dass eine Schriftcodierung erforderlich ist. So sollte im Code die Schriftcodierung hinterlegt sein und mit dem benutzten Editor identisch sein.

Der Editor speichert standardmäßig die Dateien in UTF-8 ab. Die folgende Zeile habe ich in den Code in die 2. Zeile eingefügt, danach waren Sonderzeichen und Umlaute kein Problem mehr.

# -*- coding: utf-8 -*-

Nun, zum Abschluss noch der Link auf den Artikel „Von Python, Umlauten, Unicode und Encodings„.

Python-Fu: Variablen

Zu Beginn widmen wir uns den Variablen. Variablen sind dazu da, verschiedene Arten von Werten aufzunehmen und dynamisch Berechnungen und Funktionen auszuführen. Weitere Vorteile sind, dass Werte von Eingabefeldern übernommen werden können, die Lesbarkeit gesteigert und eine zentrale „Verwaltung“ von Variablen und ihren Werten ermöglicht wird. Es ist halt einfacher, für die Kreiszahl π (Pi) eine Variable zu definieren und zu verwenden, als immer wieder im Code „3.141592653589793238462643“ zu wiederholen.

Weiterlesen

Python-Fu – Skripte in GIMP

GIMP beinhaltet zwei Skriptsprachen, mit denen sich Abläufe automatisieren lassen. Zum einen ist es das mittlerweile in die Jahre gekommene Script-Fu, was aufgrund der Synatx auch als Klammersprache bezeichnet wird und auf der Programmiersprache Scheme aufbaut, und das jüngere Python-Fu, was an dem gleichnamigen Python angelehnt ist.

Leider finde ich im Internet keine guten, deutschsprachigen Dokumentationen zu Python-Fu, so dass ich hier in dem Notizblog meine Erkenntnisse hinterlege.

Weiterlesen

VBA: Der Unterschied zwischen cells und range

Im Excel lassen sich über VBA einzelne Zellen oder Bereiche direkt ansprechen und mit Werten befüllen bzw. auslesen. Dazu gibt es die Befehle cells und range. Der Aufbau der Syntax ist allerdings unterschiedlich. Im folgenden Beispiel wird die Zelle B3 des Tabellenblatt „Sheet1“ mit dem Wert „Test“ beschrieben

    ThisWorkbook.Sheets("Sheet1").Range("B3").Value = "Test"
    ThisWorkbook.Sheets("Sheet1").Cells(3, 2).Value = "Test"

Im Befehl range erfordert zuerst die Angabe der Spalte und dann der Zeile, während es bei cells genau umgekehrt ist, also erst die Reihe, dann die Spalte.

Nun stellt sich noch die Frage, wozu die Unterschiede:
In einem Script, was Zellen nach einem definierten Schema befüllt, kann, auch der besseren Lesbarkeit wegen, die Zelle oder der Bereich über range angesprochen werden. Sobald allerdings eine Dynamik ins Spiel kommt, z.B. füllen eines Bereichs über das Script, muss cells verwendet werden.

Der nachfolgende Befehl füllt die Zellen C4 bis H7 des Tabellenblatt „Sheet1“ mit dem Wort „Test“

ThisWorkbook.Sheets("Sheet1").Range(Cells(4, 3), Cells(7, 8)) = "Test"

VBA: Access-Statuszeile beschreiben

Die Access-Statuszeile kann über folgenden Befehl als Informationsleiste verwendet werden.

Sub Statusnachricht(Nachricht)
    Dim Statusnachricht As Variant
    
    Select Case Nachricht
    Case Is = "0"
        Statusnachricht = SysCmd(acSysCmdClearStatus)
    Case Else
        Statusnachricht = SysCmd(acSysCmdSetStatus, Nachricht)
    End Select
End Sub

Erklärungen zum Script

  • Zeile 2: Deklaration der Variablen „Statusnachricht“ als Variant
  • Zeile 4: Filtere die übergebenen Parameter
  • Zeile 5 + 6: Wenn der Wert „0“ ist, dann lösche die Anzeige
  • Zeile 7 + 8: ansonsten zeige die Nachricht an
  • Zeile 9: Schließen die Schleife der Selektion

Der Aufruf der Sub erfolgt nach folgendem Schema:

call Statusnachricht("Zeige diesen Text in der Statuszeile von Access an.")
call Statusnachricht("0")   ' Lösche den in der Statuszeile angezeigten Text.

VBA: Löschen eines Excel-Tabellenblattes aus Access heraus

Der nachfolgende VBA-Code löscht ein Excel-Tabellenblatt aus einer Access-Instanz heraus:

Sub deleteTabelle(Tabellenname, xl_book)

For Each Sheet In xl_book.WorkSheets
    If Sheet.Name = Tabellenname Then
        xl_book.Application.DisplayAlerts = False
        xl_book.WorkSheets(Tabellenname).Delete
        xl_book.Application.DisplayAlerts = True
    End If
Next
End Sub

Erläuterungen zum Code:

  • Zeile 3: Frage in einer Schleife sämtliche Tabellenblätter ab, ob das übergebene Tabellenblatt vorhanden ist.
  • Zeile 4: Schalte die Warnmeldungen aus
  • Zeile 5: Lösche das gewünschte Tabellenblatt
  • Zeile 6: Schalte die Warnmeldungen ein
  • Zeile 7: Beende die If-Schleife aus Zeile 3
  • Zeile 8: Beende die For-Schleife