Установка Seafile на Ubuntu 18.04 с Nginx и MySQL
Краткое описание
Seafile — это система хранения файлов с открытым исходным кодом, поддерживающая синхронизацию между платформами, встроенное шифрование, двухфакторную аутентификацию, контроль версий, блокировку файлов и онлайн-редактирование. В этом руководстве показано, как установить Seafile на Ubuntu 18.04 с Nginx в роли обратного прокси и MySQL в качестве хранилища метаданных. Примеры используют MySQL, HTTPS с Let’s Encrypt и запуск сервисов через systemd под непривилегированным пользователем.
Предварительные требования
- Сервер с установленной Ubuntu 18.04
- Права root или пользователь с sudo
- Домен, указывающий на IP сервера (например, cloud.hakase-labs.io)
- Открытые порты 22, 80, 443 (или доступ к ним для настройки UFW)
Что мы сделаем
- Установим зависимости Python и вспомогательные пакеты
- Установим и настроим MySQL, создадим базы и пользователя
- Скачиваем исходники Seafile для Linux
- Устанавливаем Seafile с поддержкой MySQL
- Устанавливаем Nginx и получаем SSL через Let’s Encrypt
- Настраиваем Nginx как обратный прокси для Seafile
- Настраиваем конфигурационные файлы Seafile под домен
- Запускаем Seafile и Seahub как systemd-сервисы
- Включаем и настраиваем UFW
- Тестируем работу и даём рекомендации по безопасности
Шаг 1 — Установка зависимостей Python для Seafile
Seafile частично реализован на Python и требует Python 2.7 для текущих релизов, совместимых с Ubuntu 18.04. Перед установкой пакетов обновите репозитории:
sudo apt updateУстановите Python 2.7 и дополнительные пакеты, необходимые Seafile:
sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -yДождитесь завершения установки. Если какие-либо пакеты недоступны в стандартных репозиториях, проверьте подключение дополнительных репозиториев или репозиторий universe.
Важно: по возможности готовьте окружение в изолированном тестовом сервере, прежде чем применять на продакшене.
Шаг 2 — Установка и настройка MySQL
Seafile поддерживает SQLite и MySQL. В этом руководстве используется MySQL. Установим сервер и клиент:
sudo apt install mysql-server mysql-client -yПосле установки запустите и включите службу MySQL:
systemctl start mysql
systemctl enable mysqlЗатем выполните базовую безопасность MySQL и настройку root-пароля:
mysql_secure_installationВо время мастера вам будут заданы вопросы о политике паролей и удалении тестовой базы. Для безопасности выберите хотя бы средний уровень политики паролей. На примере в руководстве использовалась опция 1 (MEDIUM).

Далее создадим три базы и пользователя для Seafile (ccnet-db, seafile-db, seahub-db). Подключитесь к MySQL от root:
mysql -u root -pВыполните следующие SQL-команды, заменив пароль и имена по необходимости:
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 'Hakase-Seafile01@';
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;
Примечание: храните пароль пользователя базы данных в защищённом месте и по возможности используйте более сложные пароли и управление секретами.
Шаг 3 — Скачивание исходников Seafile для Linux
Запустим Seafile под непривилегированным пользователем. Создайте пользователя (в примере — mohammad):
useradd -m -s /bin/bash mohammadЗатем переключитесь на пользователя и скачайте архив сервера (пример с версией 6.2.5):
su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gzРаспакуйте и переименуйте каталог:
tar -xf seafile-server_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/Исходники окажутся в /home/mohammad/seafile-server

Если доступна более новая версия Seafile, используйте актуальную ссылку с официального сайта и учитывайте совместимость с Python/базой данных.
Шаг 4 — Установка Seafile с MySQL
Перейдите в каталог с исходниками и запустите скрипт установки с поддержкой MySQL:
su - mohammad
cd seafile-server/
./setup-seafile-mysql.shСкрипт проверит присутствие Python-модулей и предложит настроить конфигурацию сервера. Примеры ответов и важных полей:
- server name: например hakase-cloud
- server domain name: cloud.hakase-labs.io
- seafile data directory: оставьте значение по умолчанию или укажите путь с достаточным дисковым пространством
- seafile fileserver port: по умолчанию 8082

При выборе работы с существующей базой укажите опцию 2 и заполните параметры MySQL:
- host: localhost
- port: 3306
- user: seafile
- password: Hakase-Seafile01@
- ccnet database: ccnet-db
- seafile database: seafile-db
- seahub database: seahub-db

После успешной установки скрипт уведомит об окончании. В примере файлы сервера работают на портах 8082 (fileserver) и 8000 (seahub в режиме разработки).

Запустите сервисы вручную для проверки:
su - mohammad
cd ~/seafile-server-latest/
./seafile.sh start
./seahub.sh startПри первом запуске seahub создаст аккаунт администратора — укажите email и пароль. Затем убедитесь, что сервисы слушают нужные порты:
netstat -plntu
Остановить сервера можно командами:
./seafile.sh stop
./seahub.sh stop
Шаг 5 — Установка Nginx и получение сертификата Let’s Encrypt
Установка Nginx:
sudo apt install nginx -y
systemctl start nginx
systemctl enable nginxУстановите Certbot для получения сертификата:
sudo apt install letsencrypt -yСоздайте сниппет для валидации /.well-known:
cd /etc/nginx/
vim snippets/certbot.confВставьте:
location /.well-known {
alias /var/www/html/.well-known;
}Добавьте include snippets/certbot.conf; в секцию server в файле sites-available/default. Проверьте конфигурацию и перезапустите Nginx:
nginx -t
systemctl restart nginx
Получение сертификата через веб-рут (webroot):
certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email admin@example.com -w /var/www/html -d cloud.hakase-labs.ioВсе файлы сертификатов окажутся в /etc/letsencrypt/live/cloud.hakase-labs.io/

Для дополнительной безопасности создайте параметр Диффи-Хеллмана:
openssl dhparam -out /etc/nginx/dhparam.pem 4096Важно: используйте актуальные рекомендации по TLS (см. раздел безопастности ниже).
Шаг 6 — Настройка Nginx как обратного прокси для Seafile
Создайте конфигурацию виртуального хоста:
cd /etc/nginx/
vim sites-available/seafileВставьте конфигурацию (корректируйте server_name, пути к сертификатам, root для media):
server {
listen 80;
server_name cloud.hakase-labs.io;
rewrite ^ https://$http_host$request_uri? permanent;
server_tokens off;
}
server {
listen 443 ssl http2;
server_name cloud.hakase-labs.io;
ssl on;
ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.hakase-labs.io/privkey.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;
ssl_dhparam /etc/nginx/dhparam.pem;
#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_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 /home/mohammad/seafile-server-latest/seahub;
}
}Активируйте хост и проверьте конфигурацию:
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
Примечание: в конфигурации приведены TLS-протоколы до TLSv1.2 включительно — рекомендуется пересмотреть и включить TLSv1.2/1.3 согласно требованиям безопасности современного окружения.
Шаг 7 — Настройка конфигурационных файлов Seafile под домен
Отредактируйте конфигурации в каталоге conf/ под пользователем mohammad:
su - mohammad
cd conf/В файле ccnet.conf измените SERVICE_URL на адрес с HTTPS:
SERVICE_URL = https://cloud.hakase-labs.ioВ seafile.conf укажите файловый сервер на localhost:
[fileserver]
host = 127.0.0.1
port = 8082В seahub_settings.py укажите корень файлового сервера:
FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'
После изменения конфигураций перезапустите сервисы.
Шаг 8 — Запуск Seafile и Seahub как systemd-сервисов
Создайте два юнита systemd в /etc/systemd/system/ — seafile.service и seahub.service. Пример seafile.service:
[Unit]
Description=Seafile
After=network.target mysql.service
[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seafile.sh start
ExecStop=/home/mohammad/seafile-server-latest/seafile.sh stop
User=mohammad
Group=mohammad
[Install]
WantedBy=multi-user.targetПример seahub.service:
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seahub.sh start
ExecStop=/home/mohammad/seafile-server-latest/seahub.sh stop
User=mohammad
Group=mohammad
[Install]
WantedBy=multi-user.targetПосле создания файлов выполните:
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
systemctl enable seafile
systemctl enable seahubПроверьте статусы и порты:
systemctl status seafile
systemctl status seahub
netstat -plntu
Важно: пути в ExecStart/ExecStop должны указывать на реальные скрипты вашей версии Seafile. Если вы меняете расположение, обновите unit-файлы.
Шаг 9 — Настройка UFW
Рекомендуется включить брандмауэр и разрешить только необходимые сервисы:
ufw allow ssh
ufw enable
# подтвердите ввод 'y'
ufw allow http
ufw allow https
ufw status numberedПосле этого должны остаться правила только для SSH, HTTP и HTTPS.

Шаг 10 — Тестирование
Откройте в браузере URL вашего сервера. Если вы зашли по http, Nginx должен перенаправить на https. Пример: https://cloud.hakase-labs.io/
Войдите под админом, созданным при первом запуске Seahub. Проверьте загрузку файлов, просмотр и синхронизацию через клиент Seafile.



Если всё работает — установка успешно завершена.
Рекомендации по безопасности и эксплуатация
- Обновляйте систему и пакеты Seafile регулярно: apt update && apt upgrade
- Пересмотрите TLS-конфигурацию для поддержки TLSv1.2/TLSv1.3 и отключения устаревших протоколов. Современный набор: ssl_protocols TLSv1.2 TLSv1.3
- Минимизируйте привилегии: файлы Seafile должны принадлежать непривилегированному пользователю, службы — запускаться от него
- Храните резервные копии: копируйте директории данных и дампы баз данных. Проверяйте восстановление на тестовом сервере
- Мониторьте логи /var/log/nginx/*.log и логи Seafile для своевременного обнаружения ошибок
Тroubleshooting — типичные проблемы и решения
- Seafile не стартует: проверьте логи в seafile-server-latest/logs и systemctl status seafile
- Ошибки доступа к базе: убедитесь, что права и пароль пользователя seafile правильны, и что MySQL слушает на localhost
- Проблемы с HTTPS/сертификатом: проверьте certbot и пути /etc/letsencrypt/live/
/ - Неправильно работают media-файлы: проверьте директорию media и права на /home/mohammad/seafile-server-latest/seahub
- Долгие операции файлохранилища: убедитесь, что дисковая подсистема не перегружена и что у вас достаточно места
Альтернативы и варианты конфигурации
- Использование Docker: Seafile предоставляет Docker-образ, который упрощает развёртывание и изоляцию зависимостей
- Использование PostgreSQL: вместо MySQL можно применить PostgreSQL — в некоторых средах он предпочтительнее по стабильности и функционалу
- SQLite для небольших инсталляций: подойдёт для тестирования и небольших развёртываний, но при масштабировании рекомендуют MySQL/Postgres
Мини‑методология развёртывания (короткий SOP)
- Подготовить сервер и DNS — проверить разрешение домена
- Обновить систему и установить зависимости
- Установить и защитить MySQL, создать базы и пользователя
- Скачивание и предварительная установка Seafile локальным пользователем
- Настроить Nginx, получить SSL и настроить обратный прокси
- Настроить systemd-юниты и включить автозапуск
- Настроить брандмауэр и мониторинг
- Провести тесты загрузки/синхронизации и бэкапа
Контрольные сценарии и критерии приёмки
- Сервис Seafile и Seahub запущены и показывают «active (running)» в systemctl
- Nginx отвечает на HTTPS-запросы и корректно проксирует запросы на порты 8000 и 8082
- Вход в веб-интерфейс возможен с использованием аккаунта администратора
- Загрузка и скачивание файлов работают, файлы отображаются в интерфейсе и доступны по URL /media
- При восстановлении из бэкапа данные корректно доступны
Роль‑ориентированные чеклисты
- Системный администратор:
- Подготовить сервер, настроить сетевые правила и репозитории
- Обеспечить резервное копирование и мониторинг
- Обновлять пакеты и сертификаты
- DevOps/инженер по развёртыванию:
- Настроить systemd-юниты и CI/скрипты деплоя
- Контролировать логи и метрики производительности
- Администратор приложения:
- Управлять пользователями Seafile, политиками доступа и квотами
- Проводить тестовые восстановления и аудит безопасности
Миграция и совместимость
- Ubuntu 18.04 использует Python 2.7 в примере — при переходе на более новые дистрибутивы убедитесь в совместимости Seafile с Python 3 и поддержке версии сервера
- При апгрейде MySQL проверьте совместимость с MySQL 5.7/8.0 и тестируйте дампы на тестовой среде
Короткое объявление для команды (100–200 слов)
Развернули Seafile — безопасное и локально управляемое хранилище файлов. Установлено на сервере Ubuntu 18.04 с Nginx и HTTPS (Let’s Encrypt), базы находятся в MySQL. Система запускается как сервис (systemd), реализована базовая защита UFW и рекомендации по безопасной конфигурации TLS. Доступ по домену cloud.hakase-labs.io; для администраторов — инструкции по восстановлению и бэкапам в разделе эксплуатации. Рекомендуется убедиться, что у вас настроено резервное копирование и мониторинг логов.
Короткая подсказка для соцсетей
OG title: Seafile на Ubuntu 18.04 с Nginx и MySQL OG description: Подробная инструкция по развёртыванию Seafile с Nginx, SSL и MySQL — от установки зависимостей до запуска systemd-сервисов.
Ссылка на документацию
Итог
Seafile — гибкое решение для организации приватного облачного хранилища. Это руководство покрывает распространённый путь развёртывания с Nginx и MySQL на Ubuntu 18.04 и включает рекомендации по безопасности, тестированию и эксплуатации. Для продакшена дополнительно настройте автоматическое обновление сертификатов, регулярную проверку бэкапов и мониторинг сервисов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента