Столкнулся с проблемой медленной загрузки файлов в Immich.
Immich — бесплатное приложение с открытым исходным кодом для самостоятельного хранения и управления фото и видео.
Первичная диагности показала что к серверу нет вопросов

Нагрузка на диск:
immich-apiактивно пишет на диск (130 K/sи ниже), но скорость совсем небольшая для нормальной загрузки большого количества фото. Гораздо ниже пропускной способности диска.postgresпочти без нагрузки — база не является узким местом.
CPU и память:
- CPU почти свободен (5–7% на ядро), память тоже используется мало (2 ГБ из 19,5 ГБ), значит узким местом не является.
После ряда экспериментов и опытов было установлено что проблема в immich-api а точнее в реализации обхода его и способе построения дерева со списком файлов для скачивания. То есть проблема появляется когда загружаем несколько папок сразу.
На просторах интернета наткнулся на способ загрузки не через веб интерфейс а через командную строку при помощи утилиты immich-cli
Установка immich-cli
1. Установка зависимостей
immich-cli написан на Node.js, значит нужен Node.js >=18. Установим Node.js через официальный репозиторий:
Установка curl и build-essential
apt update
apt install -y curl build-essential
Добавляем репозиторий NodeSource для Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | bash —
apt install -y nodejs
Проверим:
node -v
npm -v
2. Установка immich-cli через npm
immich-cli официально доступен через npm:
sudo npm install -g @immich/cli
Проверим, что установилось:
immich —version
Монтирование сетевую папку Windows (SMB/CIFS) в Debian
В нашем случае утилита immich-cli будет забирать файлы с расшареной папки
Установка необходимых пакетов
В Debian нужно установить клиент для CIFS:
apt update
apt install cifs-utils
Создание точки монтирования
Выберите, куда будет монтироваться папка. Например:
mkdir -p /mnt/windows_share
Временное монтирование
Синтаксис:
mount -t cifs //IP_ИЛИ_ХОСТ/Имя_папки /mnt/windows_share -o username=USER,password=PASSWORD,uid=1000,gid=1000
Постоянное монтирование через /etc/fstab
Создайте файл с учётными данными (рекомендуется для безопасности):
nano /etc/samba/cred.txt
Содержимое:
username=ivan
password=12345
domain=WORKGROUP
Сделайте файл недоступным для остальных:
chmod 600 /etc/samba/cred.txt
Добавьте запись в /etc/fstab:
# Пример монтирования Windows share
//192.168.1.50/shared /mnt/windows_share cifs credentials=/etc/samba/cred.txt,uid=1000,gid=1000,iocharset=utf8,vers=3.0 0 0
vers=3.0 — версия протокола SMB. Если не работает, попробуйте 2.1 или 2.0.
Примонтировать сразу все из fstab:
sudo mount -a
Загрузка данных
Монтируем папку с ПК где фото лежат
mount -t cifs //192.168.0.20/CameraUploads /mnt/homepc -o username=xxx,password=xxx3,uid=1000,gid=1000
Проверяем, видим папки с фото по годам
root@immich:~# ls -lha /mnt/homepc/
total 8.0K
drwxr-xr-x 2 rss rss 4.0K Oct 20 20:48 .
drwxr-xr-x 3 root root 4.0K Nov 11 12:52 ..
drwxr-xr-x 2 rss rss 0 Oct 20 20:46 2009
drwxr-xr-x 2 rss rss 0 Oct 20 20:44 2010
drwxr-xr-x 2 rss rss 0 Oct 20 20:48 2015
drwxr-xr-x 2 rss rss 0 Oct 20 16:41 2016
drwxr-xr-x 2 rss rss 0 Oct 20 20:23 2017
drwxr-xr-x 2 rss rss 0 Mar 10 2023 2018
drwxr-xr-x 2 rss rss 0 Oct 21 15:37 2019
drwxr-xr-x 2 rss rss 0 Oct 20 17:43 2020
drwxr-xr-x 2 rss rss 0 Oct 23 22:14 2021
drwxr-xr-x 2 rss rss 0 Oct 23 22:14 2022
drwxr-xr-x 2 rss rss 0 Oct 26 21:50 2023
drwxr-xr-x 2 rss rss 0 Oct 26 21:50 2024
drwxr-xr-x 2 rss rss 0 Sep 2 19:48 2025
Логинимся при помощи API KEY
root@immich:~# immich login http://192.168.0.26:2283 I8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxCjnc
Logging in to http://192.168.0.26:2283
Discovered API at http://192.168.0.26:2283/api
Logged in as xxxxx@gmail.com
Wrote auth info to /root/.config/immich/auth.yml
Полетели
immich upload /mnt/homepc —recursive —album
Скорость выросла до предела гигабитной сети, жёсткий диск в полку. Это победа.


