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

Установка 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
Автор
Редакция

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство