8.2.14 Развертывание и настройка Seafile на сервере
Seafile — это высокопроизводительная платформа для синхронизации и совместной работы с файлами с открытым исходным кодом. Это решение позволяет вам развернуть собственное облачное хранилище, аналогичное Dropbox или Google Drive, с полным контролем над своими данными.
Преимущества Seafile
- Высокая производительность с поддержкой крупных файлов;
- Клиентское и серверное шифрование;
- Совместная работа и управление правами доступа;
- Версионность и восстановление файлов;
- Поддержка клиентов для всех популярных ОС.
Змінні
В статье используются переменные, которые обязательно нужно заменить на Ваши значения.
<PASSWORD>
– ваш наднадёжный пароль<SEAFILE_SERVER_HOSTNAME>
– домен или IP для доступа к веб-интерфейсуINIT_SEAFILE_MYSQL_ROOT_PASSWORD
— задайте безопасный парольSEAFILE_MYSQL_DB_PASSWORD
— пароль пользователяseafile
SEAFILE_SERVER_HOSTNAME
— домен или IP-адрес Вашего сервераJWT_PRIVATE_KEY
— сгенерируйте:pwgen -s 40 1
INIT_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
— пароль пользователяseafile
SEAFILE_SERVER_HOSTNAME
— ваш домен или IPJWT_PRIVATE_KEY
— сгенерируйте:pwgen -s 40 1
INIT_SEAFILE_ADMIN_EMAIL
иINIT_SEAFILE_ADMIN_PASSWORD
— email и пароль админа
Обратите внимание: необходимо проверить, чтобы все “обязательные” поля были заполнены.
Настройка Seafile
Запускаем Seafile в фоне:
sudo docker compose up -d
Создаются контейнеры:
seafile-mysql
seafile
seafile-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 и сетевые соединения |