Teilen Sie Ihre Immich-Fotos und -Alben auf sichere Weise, ohne Ihre Immich-Instanz der Öffentlichkeit zugänglich zu machen.
Die Einrichtung dauert weniger als eine Minute und Sie müssen nie wieder darauf zugreifen, da Ihre gesamte Freigabe weiterhin in Immich verwaltet wird.
Über dieses Projekt
Mit Docker installieren
Wie man es benutzt
Wie es funktioniert
Zusätzliche Konfiguration
Fehlerbehebung
Funktionsanfragen
Immich ist eine wunderbare Software, aber da sie alle Ihre privaten Fotos speichert, ist es am besten, sie vollständig gesperrt zu lassen. Dies stellt ein Problem dar, wenn Sie ein Foto oder eine Galerie mit jemandem teilen möchten.
Der öffentliche Proxy von Immich stellt eine Sicherheitsbarriere zwischen der Öffentlichkeit und Immich dar und lässt nur Anfragen zu, die Sie öffentlich geteilt haben.
Es ist zustandslos und weiß nichts über Ihre Immich-Instanz. Es ist kein API-Schlüssel erforderlich, was die Angriffsfläche noch weiter reduziert. Die einzigen Dinge, auf die der Bevollmächtigte zugreifen kann, sind Fotos, die Sie in Immich öffentlich zugänglich gemacht haben.
Sehen Sie sich eine Live-Demo-Galerie an, die direkt aus meiner eigenen Immich-Instanz bereitgestellt wird.
Unterstützt das Teilen von Fotos und Videos.
Unterstützt passwortgeschützte Freigaben.
Wenn Sie ein einzelnes Bild teilen, öffnet der Link standardmäßig direkt die Bilddatei, sodass Sie sie überall dort einbetten können, wo Sie ein normales Bild verwenden würden. (Dies ist konfigurierbar.)
Die gesamte Nutzung erfolgt über Immich – Sie müssen diese App nach der Erstkonfiguration nicht mehr berühren.
/share/
-Pfad der Öffentlichkeit zugänglich machen? Um ein freigegebenes Album in Immich anzuzeigen, benötigen Sie Zugriff auf den /api/
-Pfad. Wenn Sie eine Galerie für die Öffentlichkeit freigeben, müssen Sie diesen Pfad öffentlich machen. Jede bestehende oder zukünftige Schwachstelle kann Ihre Immich-Instanz gefährden.
Für mich besteht das ideale Setup darin, Immich privat hinter mTLS oder VPN zu schützen und nur den öffentlichen Zugriff auf den öffentlichen Immich-Proxy zuzulassen. Hier ist ein Beispiel-Setup für die Sicherung von Immich hinter mTLS mit Caddy.
Laden Sie die Datei docker-compose.yml herunter.
Aktualisieren Sie den Wert für IMMICH_URL
in Ihrer Docker-Compose-Datei, um auf Ihre lokale URL für Immich zu verweisen. Dies sollte keine öffentliche URL sein.
Starten Sie den Docker-Container. Sie können testen, ob es funktioniert, indem Sie https://your-proxy-url.com/healthcheck
besuchen. Überprüfen Sie die Ausgabe der Containerkonsole auf etwaige Fehlermeldungen.
docker-compose up -d
Legen Sie die „Externe Domäne“ in Ihren Immich -Servereinstellungen auf die Domäne fest, die Sie für die öffentliche Bereitstellung des öffentlichen Immich-Proxys verwenden:
Wenn Sie jetzt ein Bild oder eine Galerie über Immich teilen, wird automatisch der richtige öffentliche Pfad für Sie erstellt.
WICHTIG : Wenn Sie Cloudflare verwenden, stellen Sie bitte sicher, dass Sie Ihren /share/video/*
Pfad auf „Cache umgehen“ einstellen, da es sonst zu Problemen bei der Videowiedergabe kommen kann. Weitere Informationen finden Sie unter Fehlerbehebung.
Da sich alle IPP-Pfade unter /share/...
befinden, können Sie Immich Public Proxy und Immich in derselben Domäne ausführen.
Die Anweisungen finden Sie hier: Ausführung auf einer einzelnen Domäne.
Abgesehen von der oben genannten Erstkonfiguration wird alles andere über Immich verwaltet.
Sie teilen Ihre Fotos/Videos wie gewohnt über Immich. Da Sie in den Immich-Einstellungen die externe Domäne als URL für Ihre Proxy-App festgelegt haben, haben die von Immich generierten Links automatisch die richtige URL:
Wenn der Proxy eine Anfrage erhält, wird diese als Link wie dieser angezeigt:
https://your-proxy-url.com/share/ffSw63qnIYMtpmg0RNvOui0Dpio7BbxsObjvH8YZaobIjIAzl5n7zTX5d6EDHdOYEvo
Der Teil nach /share/
ist Immichs öffentliche ID des geteilten Links (in den Dokumenten als key
bezeichnet).
Immich Public Proxy nimmt diesen Schlüssel und führt über Ihr lokales Netzwerk einen API-Aufruf an Ihre Immich-Instanz durch, um zu fragen, welche Fotos oder Videos in dieser Freigabe-URL geteilt werden.
Wenn es sich um eine gültige Freigabe-URL handelt, ruft der Proxy nur diese Assets über die lokale API ab und gibt sie als einzelnes Bild oder Galerie an den Besucher zurück.
Wenn der freigegebene Link abgelaufen ist oder eines der Assets in den Immich-Papierkorb verschoben wurde, werden diese nicht zurückgegeben.
Alle eingehenden Daten werden validiert und bereinigt, und alles Unerwartete wird einfach mit einem 404 verworfen.
Es gibt einige zusätzliche Konfigurationsoptionen, die Sie ändern können, beispielsweise die Art und Weise, wie die Galerie eingerichtet ist.
Erstellen Sie eine Kopie von config.json im selben Ordner wie Ihre docker-compose.yml
.
Übergeben Sie die Konfiguration an Ihren Docker-Container, indem Sie ein Volume wie dieses hinzufügen:
Bände: - ./config.json:/app/config.json:ro
Starten Sie Ihren Container neu und Ihre benutzerdefinierte Konfiguration sollte aktiv sein.
Option | Beschreibung |
---|---|
responseHeaders | Ändern Sie die mit Ihren Webantworten gesendeten Header. Standardmäßig sind cache-control und CORS hinzugefügt. |
downloadOriginalPhoto | Legen Sie die Einstellung auf false fest, wenn Sie möchten, dass die Leute nur das Foto in „Vorschau“-Qualität und nicht Ihr Originalfoto herunterladen können. |
showGalleryTitle | Zeigen Sie einen Titel auf der Galerieseite an. |
allowDownloadAll | Erlauben Sie Besuchern, alle Dateien als ZIP-Datei herunterzuladen. |
Die Galerie wird mit lightGallery erstellt. Alle Einstellungen von lightGallery finden Sie hier: https://www.lightgalleryjs.com/docs/settings/
Um beispielsweise den Download-Button für Bilder zu deaktivieren, würden Sie den Abschnitt lightGallery
bearbeiten und download
in false
ändern:
{ "lightGallery": { "controls": true, "download": false, "mobileSettings": { "controls": false, "showCloseIcon": true, "download": false } } }
Wenn Sie Cloudflare verwenden und Probleme mit der nicht einwandfreien Wiedergabe von Videos haben, stellen Sie sicher, dass Ihre /share/video/
-Pfade so eingestellt sind, dass der Cache umgangen wird. Ich bin selbst auf dieses Problem gestoßen und habe hier einige hilfreiche Ratschläge gefunden.
Sie können hier Funktionswünsche hinzufügen. Mein Ziel bei diesem Projekt ist es jedoch, es so schlank wie möglich zu halten.
Aufgrund der Sensibilität der in Immich enthaltenen Daten möchte ich, dass jeder mit ein wenig Programmierkenntnissen diese Codebasis lesen und alles, was sie tut, vollständig verstehen kann.
Dinge, die für dieses Projekt nicht berücksichtigt werden, sind:
Alles, was Immich oder seine Dateien in irgendeiner Weise verändert. Wenn dafür ein API-Schlüssel oder privilegierte Zugriffe erforderlich sind, wird es nicht als neue Funktion betrachtet.
Hochladen von Fotos (siehe oben).