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

Установка Seafile на CentOS 7 с Nginx и MariaDB

7 min read Самохостинг Обновлено 24 Nov 2025
Seafile на CentOS 7 с Nginx и MariaDB
Seafile на CentOS 7 с Nginx и MariaDB

Кому подходит эта инструкция

  • Системным администраторам и инженерам DevOps, которые хотят развернуть приватный файловый облачный сервис на собственном сервере.
  • Тем, кто предпочитает хранить данные на своих серверах и управлять доступом и шифрованием.

Важно: инструкция ориентирована на CentOS 7 и версии Seafile, указанные в шагах. Перед применением в продакшн проверьте совместимость актуальной версии Seafile и зависимостей.


Содержание

  • Предварительные требования
  • Шаги установки (подробно)
  • Службы systemd и запуск
  • SSL и конфигурация Nginx
  • Брандмауэр (firewalld)
  • Тестирование
  • Рекомендации по безопасности и харденингу
  • Отладка и распространённые ошибки
  • Чеклист перед вводом в эксплуатацию
  • Критерии приёмки
  • Мини-методология и шаблоны команд
  • Резюме

Предварительные требования

  • Сервер с CentOS 7 (root-доступ)
  • Доступ в интернет для установки пакетов и скачивания архива Seafile
  • Доменные имена и запись A/AAAA, если планируется доступ по домену
  • Резервная копия важных данных перед началом

Пояснение терминов (в одну строку)

  • Seafile — серверное ПО для приватного облачного хранения и синхронизации файлов.
  • Seahub — веб-интерфейс Seafile (Django-приложение).
  • ccnet — служба координации Seafile.

Шаг 1 — Подготовка CentOS для Seafile

Подключитесь к серверу по SSH как root:

ssh [email protected]
TYPE YOUR PASSWORD

Откройте файл конфигурации SELinux:

vim /etc/sysconfig/selinux

Замените значение SELINUX=enforcing на SELINUX=disabled:

SELINUX=disabled

Сохраните файл и перезагрузите сервер:

reboot

После перезагрузки войдите снова и убедитесь, что SELinux отключён:

getenforce

Вы должны увидеть: Disabled

Важно: отключение SELinux упрощает настройку, но в продакшн-среде лучше настроить корректные контексты SELinux или использовать режим permissive. Если безопасность критична, рассмотрите настройку политик вместо полного отключения.

Шаг 2 — Установка зависимостей Seafile

Установим EPEL и нужные пакеты (Python, MariaDB, Nginx и вспомогательные библиотеки):

yum -y install epel-release
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx

Ожидайте завершения установки.

Шаг 3 — Настройка MariaDB

Запустите MariaDB и выполните безопасную настройку root-пользователя:

systemctl start mariadb
mysql_secure_installation

Следуйте подсказкам, установите надёжный root-пароль и удалите тестовые учётные записи.

Создадим три базы данных и пользователя для Seafile. В примере пользователь — seacloud, пароль — yourpassword (замените на свой безопасный пароль):

Войдите в mysql:

mysql -u root -p
TYPE YOUR PASSWORD

Выполните SQL-запросы:

create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';

create user seacloud@localhost identified by 'yourpassword';

grant all privileges on ccnet_db.* to seacloud@localhost identified by 'yourpassword';
grant all privileges on seafile_db.* to seacloud@localhost identified by 'yourpassword';
grant all privileges on seahub_db.* to seacloud@localhost identified by 'yourpassword';
flush privileges;
exit

Создание баз данных для установки Seafile

Совет по безопасности: используйте уникальный пароль и по возможности не давайте права с хоста root, ограничьте доступ по IP, если СУБД доступна по сети.

Шаг 4 — Установка Seafile

Создайте директорию установки и перейдите в неё. Seafile будет запущен от имени пользователя nginx:

mkdir -p /var/www/seafile
cd /var/www/seafile

Скачайте архив Seafile и распакуйте (версия в примере — 6.0.5):

wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
tar -xzvf seafile-server_6.0.5_x86-64.tar.gz

Переименуйте папку и перейдите в неё:

mv seafile-server-6.0.5 seafile-server
cd seafile-server/

Запустите скрипт настройки для MySQL/MariaDB:

./setup-seafile-mysql.sh

Нажимайте Enter и вводите сведения по подсказкам:

  • имя сервера (hostname) — например natsume
  • IP или домен сервера — 192.168.1.115 (пример)
  • директория данных — нажать Enter для значения по умолчанию
  • порт — Enter для значения по умолчанию
  • при выборе БД введите вариант 2 (MySQL/MariaDB)

Для MySQL укажите:

  • host: localhost
  • port: 3306
  • mysql user: seacloud
  • password: yourpassword
  • имена баз: ccnet_db, seafile_db, seahub_db

Скрипт создаст таблицы и настройки.

Установка Seafile

Запустите Seafile и Seahub временно:

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

При старте Seahub задайте учётные данные администратора (email и пароль).

Конфигурация аккаунта администратора Seafile

Seafile будет доступен по IP:8000, но далее мы настроим обратный прокси Nginx и systemd-сервисы. Остановите временные службы:

./seafile.sh stop
./seahub.sh stop

Шаг 5 — Конфигурация служб Seafile и Seahub (systemd)

Запустим Seafile под пользователем nginx. Измените владельца директории установки:

cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache

Создайте systemd-юнит для seafile:

cd /etc/systemd/system/
vim seafile.service

Вставьте:

[Unit]
Description=Seafile Server
Before=seahub.service
After=network.target mariadb.service

[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seafile.sh start
ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx

[Install]
WantedBy=multi-user.target

Создайте юнит для seahub:

vim seahub.service

Вставьте:

[Unit]
Description=Seafile Hub
After=network.target seafile.target mariadb.service

[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx

[Install]
WantedBy=multi-user.target

Перезапустите systemd и запустите сервисы:

systemctl daemon-reload
systemctl start seafile
systemctl start seahub

Проверьте открытые порты (seahub — 8000, seafile — 8082):

netstat -plntu

Запуск сервисов Seafile и Seahub

Совет: если у вас нет netstat, установите пакеты net-tools или используйте ss.

Шаг 6 — Генерация SSL-сертификатов

Для HTTPS создадим каталог и сгенерируем самоподписанный сертификат (или разместите сюда ваш купленный сертификат):

mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl

Сгенерируйте dhparam и сертификат:

openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt

Задайте детали сертификата по подсказкам (CN — домен сервера). Ограничьте права на файлы:

chmod -R 700 /etc/nginx/ssl
chmod 400 server.*
chmod 400 dhparam.pem

Шаг 7 — Конфигурация Nginx как обратного прокси

Создайте новый виртуальный хост:

cd /etc/nginx/
vim conf.d/seafile.conf

Вставьте конфигурацию (замените cloud.natsume.co на ваш домен):

server {    
        listen        80;
        server_name   cloud.natsume.co;
        return 301  https://$host$request_uri;
}

server {    
    listen 443 ssl;
    server_name cloud.natsume.co;
    ssl on;
    ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
    ssl_certificate         /etc/nginx/ssl/server.crt;
    ssl_certificate_key    /etc/nginx/ssl/server.key;

    ssl_ciphers  'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
    ssl_dhparam   /etc/nginx/ssl/dhparam.pem;
    ssl_prefer_server_ciphers  on;

    location / {
        fastcgi_pass    127.0.0.1:8000;
        fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
        fastcgi_param   PATH_INFO           $fastcgi_script_name;

        fastcgi_param   SERVER_PROTOCOL        $server_protocol;
        fastcgi_param   QUERY_STRING        $query_string;
        fastcgi_param   REQUEST_METHOD      $request_method;
        fastcgi_param   CONTENT_TYPE        $content_type;
        fastcgi_param   CONTENT_LENGTH      $content_length;
        fastcgi_param   SERVER_ADDR         $server_addr;
        fastcgi_param   SERVER_PORT         $server_port;
        fastcgi_param   SERVER_NAME         $server_name;
        fastcgi_param   REMOTE_ADDR         $remote_addr;

        access_log      /var/log/nginx/seahub.access.log;
        error_log       /var/log/nginx/seahub.error.log;
        fastcgi_read_timeout 36000;
    }

    # Reverse Proxy for seahub
    location /seafhttp {
        rewrite ^/seafhttp(.*)$ $1 break;
        proxy_pass http://127.0.0.1:8082;
        client_max_body_size 0;
        proxy_connect_timeout  36000s;
        proxy_read_timeout  36000s;
        proxy_send_timeout  36000s;
        send_timeout  36000s;
    }

    # CHANGE THIS PATH WITH YOUR OWN DIRECTORY
    location /media {
        root /var/www/seafile/seafile-server/seahub;
    }

}

Проверьте конфигурацию и запустите Nginx:

nginx -t
systemctl start nginx

Проверьте, что порты 80 и 443 слушаются:

netstat -plntu

Проверка прослушиваемых портов Nginx

Откорректируйте конфигурацию Seafile для использования домена. Отредактируйте:

cd /var/www/seafile/
vim conf/ccnet.conf

Измените строку:

SERVICE_URL = https://cloud.natsume.co

Отредактируйте seahub_settings.py и добавьте:

HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'

Перезапустите сервисы и включите автозапуск:

systemctl restart seafile
systemctl restart seahub

systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable seahub

Шаг 8 — Настройка FirewallD

Запустите firewalld и откройте HTTP/HTTPS:

systemctl start firewalld
systemctl enable firewalld

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

Конфигурирование Firewalld

Если вы используете облачный провайдер (VPS), проверьте также правила на уровне панели управления (security groups).

Шаг 9 — Тестирование Seafile

Откройте браузер и перейдите по вашему домену (например, https://cloud.natsume.co). Выполните вход под учётными данными администратора.

Страница входа Seafile

Проверьте панель администратора и загрузку файлов:

Панель администратора Seafile

Просмотр файлов в Seafile

Если всё работает, поздравляю — Seafile с Nginx и SSL успешно установлен!


Рекомендации по безопасности и харденингу

  1. SSL: используйте валидные сертификаты от CA (Let’s Encrypt) в продакшне вместо самоподписанных.
  2. Бэкапы: регулярно резервируйте базы данных и директорию данных Seafile (папку ccnet/seafile-data). Тестируйте восстановление.
  3. Права доступа: минимизируйте права на системные файлы, не давайте избыточные привилегии пользователям.
  4. Разграничение сети: если возможно, поместите MariaDB и Seafile в отдельную подсеть/внутреннюю сеть.
  5. Обновления: применяйте обновления ОС и пакетов, следите за обновлениями Seafile.
  6. Логи: настройте ротацию логов (logrotate) и собирайте метрики.

Дополнительно: рассмотрите интеграцию с внешними средствами аутентификации (LDAP/AD) при необходимости корпоративной идентификации.

Отладка и распространённые ошибки

Когда установка даёт сбой, проверьте по очереди:

  • Журналы systemd: journalctl -u seafile и journalctl -u seahub.
  • Логи Nginx: /var/log/nginx/seahub.error.log и access.log.
  • Доступность MariaDB: mysql -u seacloud -p -h localhost.
  • Права на директории: /var/www/seafile и /tmp/seahub_cache должны принадлежать nginx.
  • Конфигурационные файлы Seafile: conf/ccnet.conf и conf/seahub_settings.py.
  • Проверка портов: netstat -plntu или ss -plntu.

Типичные проблемы и решения:

  • Seahub не стартует — проверьте python-зависимости и права на файлы, а также переменные окружения.
  • Ошибки соединения с БД — перепроверьте credentials и доступность MariaDB.
  • Проблемы с HTTPS — проверьте пути к сертификатам и права файлов.

Чеклист перед вводом в эксплуатацию (роль-базированный)

Администратор инфраструктуры:

  • Сертификаты корректны и автоматизировано обновляются
  • Брандмауэр и правила на уровне провайдера настроены
  • Настроены бэкапы для БД и данных

DevOps-инженер:

  • systemd-юниты добавлены и включены
  • Мониторинг доступности сервисов настроен
  • Логи отправляются в централизованную систему

Менеджер безопасности:

  • Политики доступа и паролей утверждены
  • План восстановления при аварии документирован

Критерии приёмки

  • Сайт отвечает по HTTPS и редиректит HTTP → HTTPS.
  • Веб-интерфейс Seahub доступен и администратор может войти.
  • Клиент Seafile может синхронизировать файлы.
  • Бэкап БД и данных выполнен и протестирован на восстановлении.
  • Автоматический запуск сервисов после перезагрузки подтверждён.

Мини-методология установки (коротко)

  1. Подготовка ОС (SELinux, пакеты).
  2. Установка и настройка БД (MariaDB).
  3. Установка Seafile и первичная конфигурация.
  4. Создание systemd-юнитов и привязка к nginx-пользователю.
  5. Настройка Nginx + SSL.
  6. Открытие портов в брандмауэре.
  7. Тестирование и перевод в промоушен.

Быстрые шаблоны команд (cheat sheet)

Проверка статуса служб:

systemctl status seafile seahub nginx mariadb firewalld

Просмотр логов за последние 200 строк:

journalctl -u seahub -n 200 --no-pager
tail -n 200 /var/log/nginx/seahub.error.log

Резервное копирование БД (пример):

mysqldump -u root -p ccnet_db > /backups/ccnet_db.sql
mysqldump -u root -p seafile_db > /backups/seafile_db.sql

Когда такой подход не подойдёт (контраргументы)

  • Если вы ожидаете обслуживания на уровне SLA коммерческих провайдеров с 24/7 поддержкой, лучше выбрать управляемый SaaS.
  • Если нужно горизонтально масштабируемое хранение для тысяч пользователей с высокой нагрузкой, возможны дополнительные архитектурные изменения (распределённый хранилище, балансировщики).

Decision flow для выбора размещения (Mermaid)

flowchart TD
  A[Нужен приватный облак?] -->|Нет| B[Использовать публичный SaaS]
  A -->|Да| C{Ожидаемая нагрузка}
  C -->|Маленькая| D[Seafile на одном сервере]
  C -->|Средняя| E[Seafile + выделенная БД + более мощный хост]
  C -->|Большая| F[Проектирование кластера, S3-совместимое хранилище]

Резюме

  • Seafile предоставляет возможность организовать приватное облачное хранилище под контролем вашей инфраструктуры.
  • Набор шага за шагом: подготовка ОС, MariaDB, установка Seafile, systemd, Nginx/SSL, firewall, тестирование.
  • В продакшн-окружении уделите внимание безопасности, бэкапу и мониторингу.

Спасибо за внимание. Если нужно, могу подготовить адаптированный playbook для Ansible или systemd unit с расширенными параметрами, или подсказки по миграции данных с другой платформы.

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

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

Как разогнать монитор через NVIDIA Control Panel
Гайды

Как разогнать монитор через NVIDIA Control Panel

APC_INDEX_MISMATCH: как исправить BSOD в Windows
Инструкции

APC_INDEX_MISMATCH: как исправить BSOD в Windows

Как исправить ошибку Blink 1011
Техническая поддержка

Как исправить ошибку Blink 1011

Восстановление удалённых SMS на Samsung
Мобильные

Восстановление удалённых SMS на Samsung

Как сбросить Samsung планшет до заводских настроек
Руководство

Как сбросить Samsung планшет до заводских настроек

Удаление дубликатов Burst на iPhone
iPhone фото

Удаление дубликатов Burst на iPhone