Установка Seafile на FreeBSD 12.0 с Nginx, MySQL и Let's Encrypt
О чём эта инструкция
Эта статья показывает, как установить и настроить Seafile — решение для хранения и синхронизации файлов — на FreeBSD 12.0. Мы используем Nginx как обратный прокси с HTTPS (Let’s Encrypt), MySQL 5.7 для баз данных и стандартные пакеты FreeBSD. Инструкция подходит для сервера с минимум 2 ГБ ОЗУ и 2 ядрами CPU.
Ключевые задачи:
- обновить систему и пакеты;
- установить Nginx;
- установить и настроить MySQL 5.7;
- установить Seafile и Seahub из репозитория FreeBSD;
- настроить Seafile за Nginx с HTTPS от Let’s Encrypt;
- протестировать доступ и базовые функции.
Important: замените примеры доменов, паролей и путей на реальные значения вашей среды.
Содержание
- Подготовка и требования
- Шаг 1 — Обновление пакетов
- Шаг 2 — Установка Nginx
- Шаг 3 — Установка и настройка MySQL 5.7
- Шаг 4 — Установка Seafile и Seahub
- Шаг 5 — Конфигурация Seafile и Seahub для работы за Nginx
- Шаг 6 — Получение SSL от Let’s Encrypt
- Шаг 7 — Настройка виртуального хоста Nginx
- Шаг 8 — Тестирование
- Рекомендации по безопасности и эксплуатация
- Частые ошибки и способы устранения
- Критерии приёмки
- Контрольный чеклист по ролям
- Краткая методология и план отката
- Глоссарий на одну строку
Подготовка и требования
Минимальные рекомендации для среды установки:
- FreeBSD 12.0;
- 2 ГБ оперативной памяти и 2 CPU (рекомендуется больше для производственных задач);
- доступ к интернету для установки пакетов и получения сертификатов;
- публичное доменное имя (например files.example.com), указывающее на IP сервера;
- открытые порты 80 и 443 для валидации сертификата и HTTPS.
Примеры доменов в документации служат иллюстрацией. В реальной среде используйте свои домены и безопасные пароли.
Шаг 1 - Обновление и апгрейд пакетов
Сначала обновите индекс пакетов и обновите все установленные пакеты до последних версий.
pkg update
pkg upgradeПосле завершения переходите к следующему шагу.
Шаг 2 - Установка Nginx
Установите Nginx из репозитория пакетов FreeBSD:
pkg install nginxДобавьте запуск Nginx при старте системы:
sysrc nginx_enable="YES"Запустите сервис:
service nginx startПроверка статуса и прослушиваемых портов:
service nginx status
sockstat -l4Nginx по умолчанию слушает HTTP на порту 80.

Подпись: пример вывода при успешном запуске Nginx.
Шаг 3 - Установка и настройка MySQL Server
Установим MySQL 5.7 (сервер и клиент):
pkg install mysql57-server mysql57-clientПосле установки автоматически генерируется временный пароль для пользователя root. Он хранится в файле ‘~/.mysql-secret’.

Добавьте MySQL в автозагрузку и запустите сервис:
sysrc mysql_enable="YES"
service mysql-server startВыведите временный пароль:
cat ~/.mysql-secret
Войдите в MySQL как root и измените пароль:
mysql -u root -p
# Вставьте PASSWORD:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newrootpassmysql';
Создайте базы и пользователя для Seafile:
create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8';
create database `seahub-db` character set = 'utf8';
create user 'seafile'@'localhost' identified by 'seafilepassdb@';
GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;
flush privileges;
exitПосле этого базы и пользователь готовы для установки Seafile.

Шаг 4 - Установка Seafile и Seahub
Установите пакеты Seafile и Seahub из репозиториев FreeBSD:
pkg install seafile-server
pkg install seahubДобавьте сервисы в автозагрузку:
sysrc seafile_enable="YES"
sysrc seahub_enable="YES"Перейдите в каталог установки и запустите скрипт настройки для MySQL:
cd /usr/local/www/haiwen/seafile-server
./setup-seafile-mysql.shПри запуске скрипта укажите имя сервера, домен или IP, директорию данных, порт Seafile и выберите вариант использования существующей MySQL (в примере — вариант 2).

Укажите данные баз и пользователя, которые вы создали ранее.

После успешной конфигурации вы увидите итог установки.

Запустите сервисы:
service seafile start
service seahub startПо умолчанию seafile слушает на порту 8082, seahub на порту 8000.
Шаг 5 - Конфигурация Seafile и Seahub для работы за Nginx
Мы будем размещать Seafile за Nginx и использовать домен вида files.mydomain.com. Для этого внесём несколько изменений в конфигурационные файлы.
Перейдите в каталог с конфигурацией:
cd /usr/local/www/haiwen/confРедактируйте файл ccnet.conf:
vim ccnet.confИзмените параметр SERVICE_URL на ваш домен и укажите https:
SERVICE_URL = https://files.mydomain.com/Сохраните и закройте.
Редактируйте seafile.conf и задайте адрес для fileserver:
vim seafile.confДобавьте или измените секцию fileserver:
[fileserver]
host = 127.0.0.1
port = 8082Сохраните и закройте.
Редактируйте seahub_settings.py и укажите FILE_SERVER_ROOT:
vim seahub_settings.pyFILE_SERVER_ROOT = 'https://files.mydomain.com/seafhttp'Сохраните и закройте.
Задайте привязку Gunicorn к локальному адресу:
vim gunicorn.confИзмените bind на 127.0.0.1:8000:
bind = "127.0.0.1:8000"Измените владельца директорий, чтобы процессы запускались от пользователя seafile и группы www:
chown -R seafile:www /usr/local/www/haiwen
chown -R seafile:www /tmp/seahub_cacheПерезапустите сервисы:
service seafile restart
service seahub restart
Создайте администратора Seafile:
cd /usr/local/www/haiwen/seafile-server
./reset-admin.shВведите почту и пароль администратора.

Шаг 6 - Получение SSL Let’s Encrypt на FreeBSD
Установите certbot и плагин для Nginx:
pkg install py36-certbot py36-certbot-nginxЗапустите certbot с указанием домена и вашей электронной почты:
certbot --nginx -d files.mydomain.com --staple-ocsp -m [email protected] --agree-tos --no-eff-emailПосле успешного выполнения сертификаты будут храниться в каталоге /usr/local/etc/letsencrypt.

Важно: certbot обновляет конфигурацию Nginx при использовании опции –nginx. Если вы предпочитаете ручную установку сертификатов, генерируйте их в режиме standalone или только сохраните файлы и укажите пути в конфигурации Nginx.
Шаг 7 - Настройка виртуального хоста Nginx для Seafile
Создайте конфигурацию виртуального хоста в директории /usr/local/etc/nginx/vhost/seafile.conf:
cd /usr/local/etc/nginx
vim vhost/seafile.confВставьте и отредактируйте блок, заменив files.mydomain.com и пути к сертификатам на свои:
server {
listen 80;
server_name files.mydomain.com;
rewrite ^ https://$http_host$request_uri? permanent;
server_tokens off;
}
server {
listen 443 ssl http2;
server_name files.mydomain.com;
ssl_certificate /usr/local/etc/letsencrypt/live/files.mydomain.com/fullchain.pem;
ssl_certificate_key /usr/local/etc/letsencrypt/live/files.mydomain.com/privkey.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;
#SSL Security
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
server_tokens off;
ssl_session_tickets off;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 1200s;
# used for view/edit office file via Office Online Server
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
location /media {
root /usr/local/www/haiwen/seafile-server/seahub;
}
}Проверьте конфигурацию Nginx и перезапустите сервис:
nginx -t
service nginx restart
Убедитесь, что Nginx слушает порт 443:
sockstat -l4
Шаг 8 - Тестирование
Откройте браузер и перейдите по адресу:
Вы будете перенаправлены на защищённое соединение HTTPS и увидите страницу входа Seahub.

Войдите под учётной записью администратора. После входа вы попадёте на панель управления Seafile.

Создайте библиотеку и загрузите файлы для проверки. Успешная загрузка выглядит примерно так:

Поздравляем — установка Seafile с Nginx и Let’s Encrypt на FreeBSD 12.0 завершена.
Рекомендации по безопасности и эксплуатации
- Регулярно обновляйте систему и пакеты (pkg update && pkg upgrade).
- Периодически проверяйте логи Nginx и Seafile: /var/log/nginx/*. и /usr/local/www/haiwen/logs.
- Настройте резервное копирование каталогов данных Seafile и баз MySQL.
- Рассмотрите запуск MySQL на отдельной машине для производственной нагрузки.
- Ограничьте доступ к панели управления сервером через firewall/ACL.
- Включите двухфакторную аутентификацию для учётных записей пользователей, если Seafile поддерживает интеграцию.
Частые ошибки и способы устранения
Проблема: не получается получить сертификат через certbot.
- Причина: порт 80 занят или DNS не указывает на сервер.
- Решение: временно отключите прокси/файервол и проверьте DNS A-запись.
Проблема: Nginx выдаёт ошибку прокси или 502 Bad Gateway.
- Причина: seahub/gunicorn не запущен или привязан не на 127.0.0.1:8000.
- Решение: проверьте процессы, логи seafile/seahub и настройку bind в gunicorn.conf.
Проблема: файлы не загружаются или падение при больших файлах.
- Причина: ограничения client_max_body_size в Nginx или таймауты.
- Решение: установите client_max_body_size 0 и увеличьте таймауты в конфиге.
Проблема: Seafile недоступен по HTTPS, но по HTTP доступен.
- Причина: ошибка в пути сертификата или SELinux/права доступа.
- Решение: проверьте пути /usr/local/etc/letsencrypt/live/… и права на файлы.
Критерии приёмки
- Сервер успешно отвечает на HTTPS-запросы по домену files.mydomain.com.
- Seafile и Seahub запускаются и работают без ошибок в логах.
- Администратор может войти и создать библиотеку.
- Файлы загружаются и скачиваются корректно через веб-интерфейс.
- SSL-сертификат действителен и автоматическое обновление certbot настроено.
Контрольный чеклист по ролям
Администратор сервера:
- Проверил DNS и доступ по 80/443.
- Обновил пакеты и настроил автозапуск сервисов.
- Создал пользователя seafile и изменил владельцев директорий.
DBA (администратор БД):
- Установил MySQL 5.7 и сменил root-пароль.
- Создал базы ccnet-db, seafile-db, seahub-db и пользователя seafile.
- Настроил резервное копирование баз.
Системный интегратор/DevOps:
- Настроил Nginx с обратным прокси и SSL.
- Проверил таймауты и параметры проксирования для /seafhttp.
- Настроил логирование и мониторинг.
План отката и аварийного восстановления
- Остановка сервисов: остановите nginx, seafile и seahub.
- Восстановление конфигураций: верните файлы конфигураций из резервной копии.
- Восстановление данных: восстановите директории данных Seafile и дампы баз MySQL.
- Запуск сервисов и проверка логов.
Для безопасного отката всегда делайте полные бэкапы конфигураций и данных перед масштабными изменениями.
Мини-методология развёртывания (короткий SOP)
- Подготовка: DNS, публичный IP, резервные копии.
- Установка ПО: Nginx → MySQL → Seafile.
- Первичная конфигурация Seafile с MySQL.
- Настройка Nginx и получение SSL.
- Тестирование и фикс багов.
- Перевод на прод/масштабирование.
Короткий перечень тестов/критериев приёма
- Тест входа: авторизация admin.
- CRUD библиотек: создание, загрузка, получение файла.
- Тест больших файлов: загрузка файла >100 МБ.
- Тест HTTPS: проверка сертификата и цепочки.
- Тест автоматического обновления certbot.
Глоссарий (одна строка)
- Seafile: серверное ПО для синхронизации и хранения файлов.;
- Seahub: веб-интерфейс Seafile.;
- seafhttp: HTTP интерфейс файлового сервера Seafile.;
- Gunicorn: WSGI-сервер для запуска Django/Seahub.
Ссылки
Официальная документация Seafile:
КОНЕЦ статьи.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента