Picsur bietet sich als privatsphärefreundlicher quelloffener Ersatz für Imgur und andere Hoster an.
Ein Bild sagt mehr als tausend Worte – eine der universellen Wahrheiten, die uns in den Sinn kommen, wenn Worte nicht mehr ausreichen, um ein Problem zu schildern oder um ein unvergessliches Erlebnis mit anderen zu teilen. Ein Bild muss her, doch wie erreicht es andere? Da kommen oft proprietäre Dienste ins Spiel wie Imgur, Photobucket oder eine Vielzahl anderer Image-Hoster. Dort können Sie Bilder schnell hochladen und per Link weiterreichen. Keiner dieser Dienste schützt jedoch die Privatsphäre. Die Bilder landen auf dem Server des Dienstanbieters und befinden sich damit außerhalb Ihrer Kontrolle.
Wenn Sie nur gelegentlich ein Bild teilen möchten, genügt eine Nextcloud völlig. Allerdings müssen Sie die Bilder eventuell zunächst mit anderen Werkzeugen bearbeiten und den Link zum Weiterreichen manuell erzeugen. Da wir häufiger Bilder verschicken müssen, haben wir uns nach einer selbst gehosteten Open-Source-Lösung umgeschaut. Sie soll es erlauben, Bilder entweder im eigenen Netzwerk oder im Internet unter Wahrung der Privatsphäre und des Datenschutzes zu teilen.
Zudem sollte die Anwendung viele Dateiformate unterstützen, eine Benutzer- und Rechteverwaltung bereitstellen und zumindest grundlegende Funktionen zur Bildbearbeitung mitbringen. All diese Bedingungen erfüllt die seit rund zwei Jahren entwickelte und noch in der Beta-Phase befindliche Anwendung Picsur [1].
Als Voraussetzung für das Selbsthosten von Picsur benötigen Sie Docker. Wir empfehlen zusätzlich Docker Compose, was das Installieren vereinfacht. Wie Sie Picsur mit Docker Compose einbinden, beschreibt der Kasten “Picsur installieren”. Diese Methode genügt, wenn Sie Picsur auf Ihr Heimnetzwerk beschränken möchten. Damit sich der Dienst auch im Internet erreichen lässt, um beispielsweise Bilder aus Picsur per Link mit anderen zu teilen oder in einem Blog oder Forum zu verlinken, benötigen Sie eine DynDNS-Domain und müssen einen Proxy-Manager (Abbildung 1) einrichten.

Abbildung 1: Der Nginx Proxy Manager bietet eine einfache Lösung, um selbstgehosteten Diensten einen sicheren Zugang zum Internet zu ermöglichen.
Picsur installieren
Um Picsur einzubinden, benötigen Sie die Pakete docker.io und docker-compose, die Sie über den Paketmanager der verwendeten Distribution oder von der Webseite der Projekte installieren. Für Debian, Ubuntu und deren Derivate nutzen Sie den Code aus der ersten Zeile von Listing 1. Unter Fedora, CentOS Stream und deren Ablegern folgen Sie den entsprechenden Anweisungen in der Dokumentation [2]. Nach der Installation starten Sie den Rechner neu. Daraufhin benötigen Sie kein Sudo für Docker-Befehle.
Erstellen Sie mit dem Kommando aus der zweiten Zeile des Listings ein neues Verzeichnis und wechseln Sie hinein. Danach legen Sie eine leere Docker-Compose-Datei an (Zeile 3). Kopieren Sie den Inhalt der Docker-Compose-Datei [3] aus der Github-Instanz von Picsur hinein. Dann nehmen Sie darin einige Änderungen vor. Unter Ports legen Sie einen alternativen Port fest, falls Port 8080 bei Ihnen bereits belegt ist. Dazu ändern Sie den für das Hostsystem zuständigen Port vor dem Doppelpunkt auf einen Port Ihrer Wahl. Unter environment entfernen Sie alle Kommentarzeichen (#) vor den Zeilen. Unter PICSUR_ADMIN_PASSWORD geben Sie ein starkes Passwort ein. Bei PICTURE_MAX_FILE_SIZE entfernen Sie das Kommentarzeichen und stellen die gewünschte Maximalgröße pro Bild ein (voreingestellt: 128 MByte). Unter volumes können Sie statt des vorgegebenen picsur-data einen NFS- oder SMB-Mount angeben. Falls Sie weitere Änderungen vornehmen, müssen diese für Picsur und die Datenbank PostgreSQL übereinstimmen.
Speichern Sie anschließend die Datei und starten Sie das Aufsetzen der beiden Container mit dem Befehl aus der letzten Zeile von Listing 1. Nach Abschluss der Aktion rufen Sie Picsur in einem Browser durch Eingabe der IP-Adresse samt Port des Picsur-Rechners auf. Der Standard-Username lautet Admin. Soll Picsur vom Internet aus zu erreichen sein, empfiehlt sich der Bedienerfreundlichkeit halber der Nginx Proxy Manager [4]. Einmal eingerichtet, erstellt er für eine DynDNS-Domain in wenigen Augenblicken ein Zertifikat von Let’s Encrypt (Abbildung 1).
Listing 1
Picsur integrieren
$ sudo apt install docker.io docker compose $ mkdir -p docker/picsur && cd docker/picsur $ touch docker-compose.yml $ [... docker-compose.yml editieren ...] $ docker-compose up -d
Einfach gestrickt
Nachdem Sie sich das erste Mal angemeldet haben, finden Sie sich in einer schlichten Maske (Abbildung 2) mit nur wenigen Bedienelementen wieder. Mittig beherrscht ein Kasten zum Hochladen von Bildern das Fenster. Klicken Sie oben rechts auf das User-Icon für die Einstellungen, sehen Sie die Unterpunkte My Images, Settings und Logout. Weitere Bedienelemente gibt es nicht.
Unter My Images (Abbildung 3) finden Sie später Ihre Bilder, mit Logout verlassen Sie die Anwendung. Hinter Settings verbergen sich die Einstellungen. Der Punkt General lässt Sie lediglich wählen, ob die Software das Original eines Bilds behalten soll oder nicht. Wir kommen später noch darauf zu sprechen, warum das wichtig ist. Unter API Keys erstellen Sie einen Schlüssel, falls Sie Picsur in andere Anwendungen einbinden möchten. Sofern Sie Windows verwenden, können Sie unter ShareX [5] einen Schlüssel zum Integrieren in die viel genutzte Anwendung erzeugen, um damit erstellte Screenshots automatisch in Picsur einzubinden.

Abbildung 3: Der Menüpunkt My Images zeigt alle hochgeladenen Bilder in einer Übersicht. Dort können Sie einzelne Bilder löschen oder in der Vollansicht aufrufen.
Unter den Menüpunkten Users und Roles legen Sie weitere Benutzer an und vergeben passende Rechte. In den System Settings (Abbildung 4) definieren sie unter anderem, wie lange hochgeladene Bilder im Cache bleiben. Hier kommen wir zurück auf das Aufbewahren der Originale: Voreingestellt bleiben Bilder sieben Tage im Cache. Eine kürzere Verweildauer bedeutet zwar weniger Platzverbrauch, aber auch eine höhere CPU-Last. Diese Konfiguration hängt also von der Art ab, wie Sie Picsur nutzen. Bei einem Wert von 0 löscht Picsur den Cache nicht mehr.

Abbildung 4: Die visuelle Darstellung der Systemeinstellungen ist auf kleinen Bildschirmen schwer zu lesen. Lobenswerterweise sind sämtliche Optionen mit Erläuterungen versehen.
Haben Sie in der docker-compose.yml kein JSON-Web-Token (JWT) eingegeben, finden Sie in dieser Rubrik auch das vom System automatisch erzeugte Token. Sie können es ändern und die Verfallszeit festlegen. Die Stärke der Bcrypt-Hashes [6] steht auf 10. Läuft Picsur auf einem Raspberry Pi oder einem ähnlichen System mit begrenzten Ressourcen, sollten Sie den Wert verringern. Insgesamt könnte der optische Auftritt der Einstellungen eine Überarbeitung vertragen, ist jedoch grundsätzlich benutzbar.
Bilder hochladen
Nun zum Wichtigsten, dem Hinzufügen von Bildern. Ein Klick auf das Picsur-Logo rechts oben führt Sie stets zurück zur Eingabemaske. Sie laden Bilder per Drag & Drop oder über den Dateiauswahldialog hoch. Anschließend erhalten Sie sofort verschiedene Links zur Nutzung in Foren und Blogs oder zur Weitergabe an Familie und Freunde. Neben der originalen URL stehen ein HTML-Tag, Markdown, BBCode und RST zur Auswahl (Abbildung 5). Außerdem können Sie das Bild vom Standardformat JPEG in gängige Bildformate wie PNG, WEBP, BMP, GIF oder das noch recht junge QOI umwandeln.

Abbildung 5: Nach dem Hochladen eines Bilds erzeugt Picsur verschiedene Links, mit denen Sie die Bilder teilen können. Zudem lassen sich die Dateien in verschiedene Formate konvertieren.
Der grüne Menü-Button (Abbildung 6) rechts neben dem Bild blendet weitere Optionen ein. So können Sie ein Bild löschen, anpassen, editieren und teilen. Über den Editierschalter definieren Sie die Lebenszeit des Bilds in Schritten von fünf Minuten bis zu einem Monat, wie man das von Pastebins [7] kennt. Unter Customize Image versammeln sich einfache Funktionen zur Bildbearbeitung. Hier nehmen Sie Einfluss auf das Format, die Größe und die Ausrichtung des Bilds. Zudem können Sie Transparenzen deaktivieren oder ein Negativ erstellen.
Nachdem Sie alle gewünschten Einstellungen vorgenommen haben, erhalten Sie eine angepasste URL mit den Änderungen. Eine auf Github als verfügbar markierte, für die Wahrung der Privatsphäre wichtige Funktion konnten wir allerdings nicht entdecken: das Entfernen der EXIF-Daten aus einem Bild.

Abbildung 6: Hinter dem grünen Schalter verbergen sich einige weitere Optionen. Neben Icons zum Löschen und Teilen finden sich dort Bearbeitungsfunktionen für die Bilder.
Fazit und Ausblick
Hinter Picsur steht ein niederländischer Entwickler, der das Projekt in seiner Freizeit vorantreibt. Der einfache Bilderdienst zum Selbsthosting ist schnell in Docker aufgesetzt, tut genau, was er soll, und bietet ausreichend Funktionalität. Der Einsatz von Picsur ist sinnvoll, wenn Sie häufig Bilder mit anderen teilen oder in Blogs und Foren nutzen. Suchen Sie dagegen eher eine Bildverwaltung, sollten Sie einen Blick auf Immich [8] werfen, dem wir in LU 08/2024 einen ausführlichen Artikel gewidmet haben.
Was uns an Picsur nicht gefällt, ist die visuelle Umsetzung der Einstellungen: Hier gibt es noch Verbesserungspotenzial. Außerdem vermissen wir die Möglichkeit, auf eine helle Oberfläche umzuschalten, sowie eine deutsche Lokalisierung. Diese Punkte hat der Entwickler in seiner Roadmap [9] aber bereits vorgemerkt. (csi)
Glossar
-
DynDNS
-
Dient dazu, Domains im Domain Name System (DNS) dynamisch zu aktualisieren.
-
BBCode
-
HTML-ähnliche, aber vergleichsweise stark vereinfachte und funktionsarme Textformatierungssprache.
-
RST
-
ReStructuredText (RST), vereinfachte Auszeichnungssprache zum Erzeugen von Textdokumenten aus einfachen Strukturmerkmalen.
-
QOI
-
Quite OK Image Format. Dateiformat zum verlustfrei komprimierten Speichern von Rastergrafiken.
Infos
-
Picsur: https://picsur.org
-
Doku zur Installation unter Fedora: https://docs.docker.com/engine/install/fedora/
-
Github: https://github.com/CaramelFur/Picsur?tab=readme-ov-file#running-your-own-instance
-
Nginx Proxy Manager: https://nginxproxymanager.com
-
ShareX: https://getsharex.com/
-
“Hashing in Action: Understanding bcrypt”: https://auth0.com/blog/hashing-in-action-understanding-bcrypt/
-
Pastebins: https://de.wikipedia.org/wiki/Pastebin
-
Immich: Ferdinand Thommes, “Leinen los!”, LU 08/2024, S. 14, https://www.linux-community.de/50550
-
Roadmap: https://github.com/users/CaramelFur/projects/2/views/1






