Гид по технологиям

Установка Seafile на FreeBSD 12.0 с Nginx, MySQL и Let's Encrypt

• 7 min read • DevOps • Обновлено 23 Nov 2025
Установка Seafile на FreeBSD с Nginx и Let's Encrypt
Установка Seafile на FreeBSD с Nginx и 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 -l4

Nginx по умолчанию слушает HTTP на порту 80.

Страница приветствия Nginx на FreeBSD

Подпись: пример вывода при успешном запуске Nginx.

Шаг 3 - Установка и настройка MySQL Server

Установим MySQL 5.7 (сервер и клиент):

pkg install mysql57-server mysql57-client

После установки автоматически генерируется временный пароль для пользователя root. Он хранится в файле ‘~/.mysql-secret’.

Файл с временным паролем MySQL

Добавьте MySQL в автозагрузку и запустите сервис:

sysrc mysql_enable="YES"  
service mysql-server start

Выведите временный пароль:

cat ~/.mysql-secret

Вывод временного пароля MySQL

Войдите в MySQL как root и измените пароль:

mysql -u root -p
# Вставьте PASSWORD:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newrootpassmysql';

Смена пароля root в MySQL

Создайте базы и пользователя для 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.

Базы данных MySQL для 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).

Настройка Seafile: выбор параметров установки

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

Ввод данных базы данных в установщике Seafile

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

Установка Seafile завершена

Запустите сервисы:

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.py
FILE_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 и Seahub работают с локальными привязками

Создайте администратора Seafile:

cd /usr/local/www/haiwen/seafile-server  
./reset-admin.sh

Введите почту и пароль администратора.

Создание admin-пользователя Seafile

Шаг 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.

Получение сертификата Let's Encrypt

Важно: 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

Убедитесь, что Nginx слушает порт 443:

sockstat -l4

Nginx слушает HTTPS-порт

Шаг 8 - Тестирование

Откройте браузер и перейдите по адресу:

https://files.mydomain.com/

Вы будете перенаправлены на защищённое соединение HTTPS и увидите страницу входа Seahub.

Страница входа Seafile через HTTPS

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

Панель Seafile после входа

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

Успешная загрузка файла в библиотеку 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 поддерживает интеграцию.

Частые ошибки и способы устранения

  1. Проблема: не получается получить сертификат через certbot.

    • Причина: порт 80 занят или DNS не указывает на сервер.
    • Решение: временно отключите прокси/файервол и проверьте DNS A-запись.
  2. Проблема: Nginx выдаёт ошибку прокси или 502 Bad Gateway.

    • Причина: seahub/gunicorn не запущен или привязан не на 127.0.0.1:8000.
    • Решение: проверьте процессы, логи seafile/seahub и настройку bind в gunicorn.conf.
  3. Проблема: файлы не загружаются или падение при больших файлах.

    • Причина: ограничения client_max_body_size в Nginx или таймауты.
    • Решение: установите client_max_body_size 0 и увеличьте таймауты в конфиге.
  4. Проблема: 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.
  • Настроил логирование и мониторинг.

План отката и аварийного восстановления

  1. Остановка сервисов: остановите nginx, seafile и seahub.
  2. Восстановление конфигураций: верните файлы конфигураций из резервной копии.
  3. Восстановление данных: восстановите директории данных Seafile и дампы баз MySQL.
  4. Запуск сервисов и проверка логов.

Для безопасного отката всегда делайте полные бэкапы конфигураций и данных перед масштабными изменениями.

Мини-методология развёртывания (короткий SOP)

  1. Подготовка: DNS, публичный IP, резервные копии.
  2. Установка ПО: Nginx → MySQL → Seafile.
  3. Первичная конфигурация Seafile с MySQL.
  4. Настройка Nginx и получение SSL.
  5. Тестирование и фикс багов.
  6. Перевод на прод/масштабирование.

Короткий перечень тестов/критериев приёма

  • Тест входа: авторизация admin.
  • CRUD библиотек: создание, загрузка, получение файла.
  • Тест больших файлов: загрузка файла >100 МБ.
  • Тест HTTPS: проверка сертификата и цепочки.
  • Тест автоматического обновления certbot.

Глоссарий (одна строка)

  • Seafile: серверное ПО для синхронизации и хранения файлов.;
  • Seahub: веб-интерфейс Seafile.;
  • seafhttp: HTTP интерфейс файлового сервера Seafile.;
  • Gunicorn: WSGI-сервер для запуска Django/Seahub.

Ссылки

Официальная документация Seafile:

https://manual.seafile.com/


КОНЕЦ статьи.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро