Делитесь своими фотографиями и альбомами Immich безопасным способом, не раскрывая свой экземпляр Immich публике.
Установка занимает меньше минуты, и вам больше никогда не придется прикасаться к ней, поскольку все ваши действия по совместному использованию остаются под управлением Immich.
Об этом проекте
Установить с помощью Докера
Как его использовать
Как это работает
Дополнительная конфигурация
Поиск неисправностей
Запросы функций
Immich — замечательное программное обеспечение, но, поскольку оно хранит все ваши личные фотографии, лучше всего держать его полностью заблокированным. Это создает проблему, когда вы хотите поделиться с кем-то фотографией или галереей.
Публичный прокси-сервер Иммиха обеспечивает барьер безопасности между публикой и Иммихом и разрешает только запросы, которыми вы публично поделились.
Он не имеет состояния и ничего не знает о вашем экземпляре Immich. Для этого не требуется ключ API, что еще больше снижает вероятность атаки. Единственное, к чему может получить доступ прокси, — это фотографии, которые вы сделали общедоступными в Иммихе.
Посмотрите живую демонстрационную галерею, работающую прямо из моего собственного экземпляра Immich.
Поддерживает обмен фотографиями и видео.
Поддерживает общие ресурсы, защищенные паролем.
Если вы делитесь одним изображением, по умолчанию ссылка откроет файл изображения напрямую, и вы сможете встроить его в любое место, где есть обычное изображение. (Это настраивается.)
Все использование происходит через Immich — вам не нужно будет прикасаться к этому приложению после первоначальной настройки.
/share/
? Чтобы просмотреть общий альбом в Иммихе, вам потребуется доступ к пути /api/
. Если вы предоставляете общий доступ к галерее для всех, вам необходимо сделать этот путь общедоступным. Любая существующая или будущая уязвимость может поставить под угрозу ваш экземпляр Immich.
На мой взгляд, идеальная настройка — это обеспечить частную защиту Immich с помощью mTLS или VPN и разрешить публичный доступ только к публичному прокси-серверу Immich. Вот пример настройки защиты Иммиха за mTLS с использованием Caddy.
Загрузите файл docker-compose.yml.
Обновите значение IMMICH_URL
в файле docker-compose, чтобы оно указывало на локальный URL-адрес Immich. Это не должен быть общедоступный URL-адрес.
Запустите докер-контейнер. Вы можете проверить, работает ли он, посетив https://your-proxy-url.com/healthcheck
. Проверьте вывод консоли контейнера на наличие сообщений об ошибках.
докер-составить -d
Установите «Внешний домен» в настройках вашего сервера Immich, чтобы он был любым доменом, который вы используете для публичного обслуживания публичного прокси-сервера Immich:
Теперь всякий раз, когда вы делитесь изображением или галереей через Immich, он автоматически создает для вас правильный общедоступный путь.
ВАЖНО . Если вы используете Cloudflare, обязательно установите для пути /share/video/*
значение «Обход кэша», иначе у вас могут возникнуть проблемы с воспроизведением видео. Дополнительную информацию см. в разделе «Устранение неполадок».
Поскольку все пути IPP находятся в /share/...
, вы можете запускать Immich Public Proxy и Immich в одном домене.
Инструкции см. здесь: Работа на одном домене.
Кроме первоначальной конфигурации, описанной выше, все остальное управляется через Immich.
Вы делитесь своими фотографиями/видео как обычно через Immich. Поскольку вы установили внешний домен в настройках Immich в качестве URL-адреса вашего прокси-приложения, ссылки, которые генерирует Immich, будут автоматически иметь правильный URL-адрес:
Когда прокси получит запрос, он придет в виде такой ссылки:
https://your-proxy-url.com/share/ffSw63qnIYMtpmg0RNvOui0Dpio7BbxsObjvH8YZaobIjIAzl5n7zTX5d6EDHdOYEvo
Часть после /share/
это общедоступный идентификатор общей ссылки Иммиха (в документации называемый key
).
Публичный прокси-сервер Immich берет этот ключ и выполняет вызов API к вашему экземпляру Immich через локальную сеть, чтобы узнать, какие фотографии или видео используются в этом общем URL-адресе.
Если это действительный общий URL-адрес, прокси-сервер извлекает только эти ресурсы через локальный API и возвращает их посетителю в виде отдельного изображения или галереи.
Если срок действия общей ссылки истек или какие-либо ресурсы были помещены в корзину Immich, они не будут возвращены.
Все входящие данные проверяются и очищаются, а все неожиданное просто отбрасывается с кодом 404.
Вы можете изменить некоторые дополнительные параметры конфигурации, например способ настройки галереи.
Создайте копию config.json в той же папке, что и ваш docker-compose.yml
.
Передайте конфигурацию в свой докер-контейнер, добавив такой том:
объемы: - ./config.json:/app/config.json:ro
Перезапустите контейнер, и ваша пользовательская конфигурация должна стать активной.
Вариант | Описание |
---|---|
responseHeaders | Измените заголовки, отправленные с вашими веб-ответами. По умолчанию добавлен cache-control и CORS. |
downloadOriginalPhoto | Установите значение false , если вы хотите, чтобы люди могли загружать только фотографию «предварительного» качества, а не исходную фотографию. |
showGalleryTitle | Показывать заголовок на странице галереи. |
allowDownloadAll | Разрешить посетителям загружать все файлы в формате zip. |
Галерея создается с помощью LightGallery. Вы можете найти все настройки LightGallery здесь: https://www.lightgalleryjs.com/docs/settings/
Например, чтобы отключить кнопку загрузки изображений, отредактируйте раздел lightGallery
и измените download
на false
:
{ "lightGallery": { "controls": true, "download": false, "mobileSettings": { "controls": false, "showCloseIcon": true, "download": false } } }
Если вы используете Cloudflare и у вас возникли проблемы с некорректным воспроизведением видео, убедитесь, что ваши пути /share/video/
настроены на обход кеша. Я сам столкнулся с этой проблемой и нашел здесь несколько полезных советов.
Вы можете добавить сюда пожелания по функциям, однако моя цель в этом проекте — сделать его максимально экономичным.
Из-за конфиденциальности данных, содержащихся в Immich, я хочу, чтобы любой, у кого есть хоть немного знаний в области кодирования, мог прочитать эту кодовую базу и полностью понять все, что она делает.
В этом проекте не учитываются следующие моменты:
Все, что каким-либо образом изменяет Иммих или его файлы. Если для этого требуется ключ API или привилегированный доступ, это не будет считаться новой функцией.
Загрузка фотографий (см. выше).