8.2.14 Розгортання та налаштування Seafile на сервері

The Host Banner SeaFile

Seafile — це високопродуктивна платформа з відкритим кодом для синхронізації та спільної роботи з файлами. Вона дозволяє розгорнути власне хмарне сховище, аналогічне Dropbox або Google Drive, з повним контролем над даними.

Переваги Seafile

  • Висока продуктивність із підтримкою великих файлів;
  • Клієнтське та серверне шифрування;
  • Спільна робота та керування правами доступу;
  • Версійність і відновлення файлів;
  • Підтримка клієнтів для всіх популярних ОС. <$>

<$>[info] [label Змінні які потрібно замінити] У статті використовуються змінні, які обов’язково потрібно замінити на Ваші значення.

  • <PASSWORD> – ваш надійний пароль
  • <SEAFILE_SERVER_HOSTNAME> – домен або IP для доступу до веб інтерфейсу
  • INIT_SEAFILE_MYSQL_ROOT_PASSWORD – надійний пароль для root
  • SEAFILE_MYSQL_DB_PASSWORD – пароль для користувача seafile
  • JWT_PRIVATE_KEY – згенеруйте командою pwgen -s 40 1
  • INIT_SEAFILE_ADMIN_EMAIL та INIT_SEAFILE_ADMIN_PASSWORD – email і пароль адміністратора

Підготовка сервера

Вимоги

Важливо: перед початком обов’язково встановіть 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

wget

Відредагуйте файл .env:

nano .env

Задайте такі значення:

  • INIT_SEAFILE_MYSQL_ROOT_PASSWORD — надійний пароль для root;
  • 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 і пароль адміністратора.

Зверніть увагу: переконайтесь, що всі обов’язкові поля заповнені.

Налаштування Seafile

Запустіть Seafile у фоновому режимі:

sudo docker compose up -d

dockercomposeup

Контейнери, які будуть створені:

  • seafile-mysql
  • seafile
  • seafile-caddy (проксі / TLS-сертифікати)

Типово користувач seafile має доступ лише всередині контейнера. Для доступу ззовні:

sudo docker exec -it seafile-mysql mysql -u root -p

MySQL

Після введення пароля (із 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

serverconfseafile

Під час встановлення вкажіть:

  • Ім’я сервера (будь-яке);
  • IP/домен (збігається з SEAFILE_SERVER_HOSTNAME);
  • Порт Seafile — 8082;
  • Хост MySQL: seafile-mysql;
  • Порт MySQL: 3306;
  • Користувач MySQL: seafile;
  • Пароль MySQL: як у .env;
  • Створити нові бази (опція [1]).

initseafiledatabases

Створення адміністратора та запуск служб

У тому ж каталозі виконайте:

./seafile.sh start
./seahub.sh start

При першому запуску буде запропоновано ввести:

  1. Email адміністратора (INIT_SEAFILE_ADMIN_EMAIL)
  2. Пароль адміністратора (INIT_SEAFILE_ADMIN_PASSWORD)

successcreateadmin.png

Після створення — натисніть Ctrl+C, щоб зупинити Seahub для подальшого налаштування.

Перевірка роботи

Щоб переглянути журнали Seafile:

sudo tail -f /opt/seafile-data/seafile.log

Відкрийте у браузері:

http://<SEAFILE_SERVER_HOSTNAME>/

Seafile welcome

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