Tropic Host

Immich на VPS: настройте собствен облак за снимки и видеоклипове

6 минути четене
Tropic
Immich на VPS: настройте собствен облак за снимки и видеоклипове

Language: bg

Immich: създаване на собствен облак за снимки и видеоклипове на VPS

Immich е self-hosted услуга за съхраняване и автоматично качване на снимки и видеоклипове. Тя предлага мобилни приложения, уеб интерфейс, албуми, интелигентно търсене и разпознаване на лица, като библиотеката остава на избран от вас сървър.

По-долу ще разгледаме изискванията на Immich, инсталирането му в Ubuntu с Docker Compose, настройката на HTTPS, свързването на телефона и външните резервни копия.

Immich в шест стъпки

  1. Създайте Linux VPS с достатъчно RAM и дисково пространство.
  2. Насочете поддомейн, например photos.example.com, към IP адреса на сървъра.
  3. Инсталирайте Docker и изтеглете официалната конфигурация на Immich.
  4. Посочете пътищата към медийната библиотека и базата данни, след което стартирайте контейнерите.
  5. Затворете вътрешния порт и активирайте HTTPS.
  6. Инсталирайте мобилното приложение и конфигурирайте външно резервно копие.

Какво представлява Immich

Immich е приложение с отворен код за управление на собствена библиотека със снимки и видеоклипове. Снимките се показват във времева линия, могат да се групират в албуми, да се намират чрез търсене и автоматично да се качват от телефона към сървъра.

Основната разлика спрямо обикновена облачна услуга за снимки е контролът върху сървърната страна. Файловете се съхраняват на вашия VPS или домашен сървър, но собственикът отговаря за свободното пространство, актуализациите, сигурността и резервните копия.

ПараметърОблачна услуга за снимкиImmich
Къде се съхраняват файловетеВ инфраструктурата на доставчикаНа вашия сървър
ПоддръжкаИзвършва се от доставчикаИзвършва се от собственика
РазходиПлан според обема за съхранениеVPS, дисково пространство и резервни копия

Immich сам по себе си не е резервно копие. Ако снимките съществуват само на един VPS, повреда на диска или случайно изтриване може да унищожи архива.

Основни функции на Immich

  • Автоматични качвания. Приложенията за Android и iOS качват снимки и видеоклипове от избрани албуми. По подразбиране се използва Wi-Fi, а вече наличните файлове се пропускат според техния checksum.
  • Интелигентно търсене. Услугата може да търси по хора, местоположение, дата, камера, текст в изображение и описание на съдържанието. Лицата се групират и след това могат да им се зададат имена.
  • Албуми и споделяне. Immich поддържа няколко потребители, споделени албуми, споделяне с партньор и публични връзки с парола и срок на валидност.
  • Карта и метаданни. Immich чете EXIF данни, показва къде е направена снимката, създава спомени и поддържа любими, архив и външни библиотеки.

Машинното обучение натоварва най-силно CPU и RAM при първоначалния импорт. След създаването на миниатюрите и индексите ежедневното използване на ресурси обикновено е по-ниско.

Изисквания към сървъра за Immich

Официалните изисквания за актуалните версии са:

  • 64-битова Linux или Unix-подобна система;
  • поне 2 CPU ядра, като се препоръчват 4;
  • поне 6 GB RAM, като се препоръчват 8 GB;
  • Docker Engine с плъгина docker compose;
  • локален SSD за базата данни PostgreSQL;
  • място за оригиналните файлове, миниатюрите и транскодираните видеоклипове.

Immich може да работи на сървър с 4 GB RAM, ако функциите за машинно обучение са изключени. За разпознаване на лица и интелигентно търсене е по-добре отначало да изберете 8 GB.

Миниатюрите и транскодираните файлове добавят средно 10–20% към размера на медийната библиотека. За архив от 200 GB отделете поне 240–260 GB. Директорията на базата данни DB_DATA_LOCATION трябва да се намира на локален SSD, а не на мрежов диск.

Практична начална конфигурация е 4 vCPU, 8 GB RAM, Ubuntu 24.04 LTS и SSD с 20–30% по-голям капацитет от изходната библиотека. Отделна графична карта не е необходима, макар че може да ускори обработката на голям архив.

Как да инсталирате Immich на VPS

В примера се използват Ubuntu 24.04 и поддомейнът photos.example.com.

1. Конфигурирайте DNS и подгответе Ubuntu

Създайте A DNS запис, който сочи към IPv4 адреса на VPS. След това се свържете по SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Не затваряйте текущата SSH сесия, докато не проверите, че новата връзка работи.

2. Инсталирайте Docker и Docker Compose

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

Използвайте конкретно командата docker compose: остарялата команда docker-compose вече не се поддържа от проекта.

3. Изтеглете и конфигурирайте Immich

mkdir -p /opt/immich /srv/immich-data
cd /opt/immich

curl -L -o docker-compose.yml \
  https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
  https://github.com/immich-app/immich/releases/latest/download/example.env

Отворете файла:

nano /opt/immich/.env

Променете основните параметри:

UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD

Въведете собствената си часова зона. Паролата за PostgreSQL трябва да съдържа латински букви и цифри; командата openssl rand -hex 24 ще генерира случайна стойност. Оставете останалите редове както са в текущия файл example.env.

4. Затворете вътрешния порт и стартирайте контейнерите

В docker-compose.yml намерете порта за услугата immich-server:

ports:
  - '2283:2283'

Заменете го със:

ports:
  - '127.0.0.1:2283:2283'

Портът вече е достъпен само от самия VPS. Стартирайте услугата:

cd /opt/immich
docker compose up -d
docker compose ps

За диагностика използвайте docker compose logs --tail=200.

5. Активирайте HTTPS с Caddy

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
    reverse_proxy 127.0.0.1:2283
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Caddy ще заяви сертификат автоматично, ако DNS сочи към VPS и портове 80 и 443 са достъпни. Immich трябва да работи в корена на домейн или поддомейн; адрес като example.com/immich не се поддържа.

6. Създайте администратор и свържете телефона

Отворете https://photos.example.com. Първият регистриран потребител става администратор и може да създава допълнителни акаунти.

Инсталирайте Immich от App Store или Google Play. На екрана за вход въведете адреса без /api:

https://photos.example.com

Изберете албумите и активирайте backup. Първият импорт може да отнеме време: сървърът създава миниатюри, разпознава лица, индексира данните за търсене и обработва видеоклипове.

Актуализиране на Immich

Преди актуализация прочетете бележките към изданието, особено при преминаване към нова основна версия:

cd /opt/immich
docker compose pull
docker compose up -d
docker image prune

Първо актуализирайте мобилните приложения, а след това сървъра. Връщането на базата данни към по-стара версия може да не се поддържа, освен ако няма отделни инструкции.

Резервни копия на Immich

Immich автоматично създава PostgreSQL dump-ове, но те съдържат само базата данни и метаданните, а не снимките и видеоклиповете. За пълно възстановяване запазете:

  • цялата директория /srv/immich-data;
  • /opt/immich/.env и docker-compose.yml;
  • конфигурацията на Caddy.

Копие на същия VPS не защитава от повреда на диска или изтриване на сървъра. Изпращайте данните към отделен сървър, NAS или обектно хранилище и следвайте стратегията за резервиране 3-2-1. Периодично тествайте възстановяване, вместо само да проверявате дали файловете с backup съществуват.

Кой VPS да изберете за Immich

За пълна функционалност с разпознаване на лица и интелигентно търсене е разумно да изберете VPS с поне 4 vCPU и 8 GB RAM. Изчислете размера на диска според медийната библиотека и добавете място за миниатюри, видеоклипове и растежа на архива.

Linux VPS от tropic.host със статичен IP адрес и SSD хранилище е подходящ за тази задача. Можете да започнете с конфигурация с 8 GB RAM и да увеличите ресурсите с разрастването на библиотеката. Дръжте базата PostgreSQL на бърз локален диск, а backup извън този VPS.

VPS е удобен за денонощен достъп от всяка мрежа. За архив от няколко терабайта домашният сървър може да е по-евтин, но ще трябва сами да осигурите електрозахранване, външен достъп и резервираност.

Ограничения на Immich

Self-hosting не гарантира надеждност. Слаба парола, отворен порт 2283, остарели контейнери или липса на външен backup създават риск от загуба на данни.

Immich също не е точно копие на Google Photos или iCloud: възможностите за редактиране и фоновата синхронизация са различни, а скоростта на анализа зависи от хардуера. Преди да преместите единствения си архив, тествайте услугата с малка библиотека.

Заключение

Immich ви позволява да създадете собствена фотогалерия с качване от мобилен телефон, албуми, разпознаване на лица, търсене и споделяне. За актуална версия е добре да подготвите Linux VPS с 4 ядра, 8 GB RAM и SSD с поне 20–30% свободен капацитет.

След инсталирането конфигурирайте HTTPS, актуализации и външен backup на медийната директория заедно с базата данни. Именно backup-ът, а не self-hosting сам по себе си, защитава снимките от загуба.

FAQ

Безплатен ли е Immich?

Сървърът Immich е с отворен код и може да работи без задължителен абонамент. Все пак ще плащате за VPS, домейн, дисково пространство и резервни копия.

Колко RAM е необходим на Immich?

Официалният минимум е 6 GB RAM, а препоръчителното количество е 8 GB. При 4 GB ще трябва да изключите машинното обучение.

Може ли Immich да се инсталира без домейн?

Технически да, но за постоянен достъп от телефон е по-добре да използвате домейн и HTTPS. Това защитава удостоверяването и прехвърлянето на файлове.

Замества ли Immich резервното копие на снимките?

Не. Копирайте медийната библиотека и базата данни отделно на друго устройство или в друга локация.

Мога ли да мигрирам съществуващ фотоархив?

Да. Файловете могат да се качат през уеб интерфейса или CLI, или дадена директория да се свърже като външна библиотека. Направете копие на изходните данни преди мащабен импорт.