Как можно устранить проблемы с Immich после настройки обратного прокси?

Здравствуйте! 

У меня есть виртуальная машина с установленной Ubuntu 24.04.1 LTS, на которой развернут Immich через Docker Compose. В течение четырех месяцев всё работало корректно: фотографии загружались на сервер и обрабатывались, а доступ осуществлялся по адресу <a href="http://IP:2283" rel="nofollow">IP:2283</a>. 

Однако, вчера я решил настроить обратный прокси через Nginx, используя следующий конфигурационный файл и сертификаты, полученные с помощью certbot:

```nginx
server { 
    listen 80; 
    server_name immich.[domain].ru;   // Тут указан мой домен 
    # Проксирование на Immich VM 
    location / { 
        proxy_pass <a href="http://192.168.0.190:2283" rel="nofollow">http://192.168.0.190:2283</a>; 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header X-Forwarded-Proto $scheme; 
    } 
    location ~ /\. { 
        deny all; 
    } 
    client_max_body_size 10G;  # Для медиафайлов 
}
```

После внесения этих изменений, система начала выдавать ошибки. Nextcloud, размещенный на соседней машине, смог решить проблему, добавив в файл config.php строку `'overwriteprotocol' => 'https'`. Но с Immich возникли другие проблемы:

1. При попытке войти в мобильное приложение показывается сообщение "Server is not reachable".
2. В браузере вход осуществляется, но внизу отображается уведомление "Сервер не в сети Неизвестно".
3. После входа через браузер ошибка в приложении изменилась на "Your app major version is not compatible with server", а при повторной попытке входа появляется сообщение "Ошибка при входе, проверьте URL-адрес сервера, адрес электронной почты и пароль".

Ни приложение, ни сервер не обновлялись. 

Как я могу решить эти проблемы с Immich после настройки Nginx?
  • 9 февраля 2025 г. 2:34
Ответы на вопрос 2
Настройка обратного прокси для Immich может вызвать несколько проблем, если не учтены некоторые аспекты конфигурации. Рассмотрим несколько шагов и решений, которые могут помочь устранить возникшие проблемы:

### 1. Настройка Nginx
Ваша текущая конфигурация Nginx может потребовать дополнительных параметров. Вот пример улучшенной конфигурации:

```nginx
server {
    listen 80;
    server_name immich.[domain].ru;

    location / {
        return 301 https://$host$request_uri;  # Редирект на HTTPS
    }
}

server {
    listen 443 ssl;
    server_name immich.[domain].ru;

    ssl_certificate /etc/letsencrypt/live/immich.[domain].ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/immich.[domain].ru/privkey.pem;

    location / {
        proxy_pass http://192.168.0.190:2283; 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header X-Forwarded-Proto $scheme; 
        
        # Добавьте следующие строки для корректной работы с WebSocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location ~ /\. {
        deny all; 
    }

    client_max_body_size 10G; 
}
```
### 2. Настройка Immich
#### Убедитесь, что Immich правильно настроен для работы с обратным прокси. 
Имейте в виду, что Immich может иметь свои конфигурационные параметры, которые следует установить для работы через HTTPS. Попробуйте добавить следующие переменные окружения в ваш `docker-compose.yml` файл Immich:

```yaml
environment:
  - VITE_BACKEND_URL=https://immich.[domain].ru 
```
Эта переменная указывает, как клиент Immich будет обращаться к серверу.

### 3. Обновление и перезапуск сервисов
После внесения всех изменений не забудьте перезапустить Nginx и Docker Compose:

```bash
sudo systemctl restart nginx
docker-compose down
docker-compose up -d
```

### 4. Проверка HTTPS
Проверьте, корректно ли работает HTTPS, открыв в браузере `https://immich.[domain].ru`. Убедитесь, что сертификаты действительны и не вызывают ошибок.

### 5. Устранение ошибок в мобильном приложении
Если после всех изменений мобильное приложение всё ещё не работает, попробуйте удалить его и установить заново. После обновления конфигурации проверьте, не сохранил ли клиент старые данные, и попробуйте снова подключиться к серверу.

### 6. Логи
Если проблемы сохраняются, проверьте логи Nginx и Immich:

- Лог Nginx обычно находится по пути `/var/log/nginx/error.log`.
- Логи Immich можно найти в контейнере с помощью команды:

```bash
docker-compose logs
```

Анализ логов может помочь выявить точные проблемы.

### Заключение
Настройка обратного прокси может быть сложной, и важно обращать внимание на детали. Проверьте все настройки совместно, и вы должны быть в состоянии устранить проблемы. Если что-то не так, дайте знать, я постараюсь помочь дальше!
Если раньше трафик приходил на порт 2283 с SSL - то и обратный Nginx должен listen 2283 ssl; , логично же! Разумеется Nginx-у тоже придётся использовать ssl_certificate / ssl_certificate_key . 
P.S. И да, proxy_pass https://192...:2282/ , как иначе-то?
Похожие вопросы