8.2.14 Развертывание и настройка Seafile на сервере

Seafile — это высокопроизводительная платформа для синхронизации и совместной работы с файлами с открытым исходным кодом. Это решение позволяет вам развернуть собственное облачное хранилище, аналогичное Dropbox или Google Drive, с полным контролем над своими данными.
Преимущества Seafile
- Высокая производительность с поддержкой крупных файлов;
- Клиентское и серверное шифрование;
- Совместная работа и управление правами доступа;
- Версионность и восстановление файлов;
- Поддержка клиентов для всех популярных ОС.
Змінні
В статье используются переменные, которые обязательно нужно заменить на Ваши значения.
<PASSWORD>– ваш наднадёжный пароль<SEAFILE_SERVER_HOSTNAME>– домен или IP для доступа к веб-интерфейсуINIT_SEAFILE_MYSQL_ROOT_PASSWORD— задайте безопасный парольSEAFILE_MYSQL_DB_PASSWORD— пароль пользователяseafileSEAFILE_SERVER_HOSTNAME— домен или IP-адрес Вашего сервераJWT_PRIVATE_KEY— сгенерируйте:pwgen -s 40 1INIT_SEAFILE_ADMIN_EMAILиINIT_SEAFILE_ADMIN_PASSWORD— email и пароль админа
Подготовка сервера
Требования
- Заказанный Виртуальный или Выделенный сервер;
- Минимум: 2 CPU, 4 ГБ RAM, 10+ ГБ SSD;
- Ubuntu 24.04 LTS;
- sudo права либо root-доступ к серверу.
- Установленный Docker
Важно: перед началом обязательно установить Docker
Установка Seafile
Создаём каталог, в котором будут находиться конфигурационные файлы:
mkdir /opt/seafile
cd /opt/seafile
Скачиваем переменные окружения и Docker Compose файлы:
wget -O .env https://manual.seafile.com/12.0/repo/docker/ce/env
wget https://manual.seafile.com/12.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/12.0/repo/docker/ce/seafile-server.yml
wget https://manual.seafile.com/12.0/repo/docker/caddy.yml

Настройка переменных окружения
Редактируем файл .env:
nano .env
Укажите значения переменных:
INIT_SEAFILE_MYSQL_ROOT_PASSWORD— задайте безопасный парольSEAFILE_MYSQL_DB_PASSWORD— пароль пользователяseafileSEAFILE_SERVER_HOSTNAME— ваш домен или IPJWT_PRIVATE_KEY— сгенерируйте:pwgen -s 40 1INIT_SEAFILE_ADMIN_EMAILиINIT_SEAFILE_ADMIN_PASSWORD— email и пароль админа
Обратите внимание: необходимо проверить, чтобы все “обязательные” поля были заполнены.
Настройка Seafile
Запускаем Seafile в фоне:
sudo docker compose up -d

Создаются контейнеры:
seafile-mysqlseafileseafile-caddy(прокси/сертификаты)
По умолчанию пользователь seafile создан только для подключения изнутри контейнера. Чтобы разрешить подключение с любых хостов, необходимо:
sudo docker exec -it seafile-mysql mysql -u root -p

Ввести пароль из INIT_SEAFILE_MYSQL_ROOT_PASSWORD, после чего в MySQL выполнить:
CREATE USER 'seafile'@'%' IDENTIFIED BY '<PASSWORD>';
GRANT ALL PRIVILEGES ON *.* TO 'seafile'@'%';
FLUSH PRIVILEGES;
EXIT;
Выйдите из контейнера выполнив команду:
- exit
Инициализация Seafile
Войдите в контейнер seafile:
sudo docker exec -it seafile bash

Перейти в каталог версии:
cd /opt/seafile/seafile-server-12.0.14
Запустить скрипт настройки:
./setup-seafile-mysql.sh

В процессе мастера указать:
- Имя сервера (любое описание);
- IP или домен (должен совпадать с SEAFILE_SERVER_HOSTNAME)
- Порт Seafile (по умолчанию 8082)
- Хост MySQL:
seafile-mysql - Порт MySQL: 3306
- Пользователь MySQL:
seafile - Пароль MySQL: тот же, что и в
INIT_SEAFILE_MYSQL_DB_PASSWORD - Выбрать создание новых баз данных (вариант [1])

По завершении вы увидите сообщение об успешном создании баз и конфигурации.

Создание администратора и запуск служб
Оставаясь в том же каталоге, выполните:
./seafile.sh start
./seahub.sh start
При первом запуске Seahub будет предложено создать учётную запись администратора:
- Ввести email (
INIT_SEAFILE_ADMIN_EMAIL) - Ввести пароль администратора (
INIT_SEAFILE_ADMIN_PASSWORD)

После успешного создания нажмите Ctrl+C для остановки Seahub (для настройки).
Проверка работы
Для одновременного мониторинга всех журналов Seafile (извне контейнера) запустите команду:
sudo tail -f /opt/seafile-data/seafile.log
Откройте в браузере:
http://<SEAFILE_SERVER_HOSTNAME>/

Распространённые ошибки
| Проблема | Причина | Решение |
|---|---|---|
| Seafile не запускается | Неверные данные в .env или БД |
Проверить значение переменных, права доступа к томам |
| 502 Bad Gateway | Seahub не запущен | docker logs seafile-server и повторный запуск |
| Ограничение размера загрузки | Nginx/Caddy client_max_body_size |
Добавить в конфиг прокси: client_max_body_size 0; |
| Ошибка SMTP | Некорректные почтовые настройки | Проверить seahub_settings.py и сетевые соединения |


