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

Установка Seafile на Ubuntu 18.04 с Nginx и MySQL

• 8 min read • DevOps • Обновлено 26 Nov 2025
Seafile на Ubuntu 18.04: Nginx + MySQL
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)

Что мы сделаем

  1. Установим зависимости Python и вспомогательные пакеты
  2. Установим и настроим MySQL, создадим базы и пользователя
  3. Скачиваем исходники Seafile для Linux
  4. Устанавливаем Seafile с поддержкой MySQL
  5. Устанавливаем Nginx и получаем SSL через Let’s Encrypt
  6. Настраиваем Nginx как обратный прокси для Seafile
  7. Настраиваем конфигурационные файлы Seafile под домен
  8. Запускаем Seafile и Seahub как systemd-сервисы
  9. Включаем и настраиваем UFW
  10. Тестируем работу и даём рекомендации по безопасности

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

Установка MySQL

Далее создадим три базы и пользователя для 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;

Создание базы данных для Seafile

Примечание: храните пароль пользователя базы данных в защищённом месте и по возможности используйте более сложные пароли и управление секретами.

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

Если доступна более новая версия 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

Установка Seafile

При выборе работы с существующей базой укажите опцию 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 в режиме разработки).

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

Запустите сервисы вручную для проверки:

su - mohammad
cd ~/seafile-server-latest/
./seafile.sh start
./seahub.sh start

При первом запуске seahub создаст аккаунт администратора — укажите email и пароль. Затем убедитесь, что сервисы слушают нужные порты:

netstat -plntu

Запуск Seafile

Остановить сервера можно командами:

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

Остановка Seafile и Seahub

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

Настройка 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/

Создание SSL сертификата

Для дополнительной безопасности создайте параметр Диффи-Хеллмана:

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

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'

Настройка Seafile

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

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

Seafile через systemd

Важно: пути в ExecStart/ExecStop должны указывать на реальные скрипты вашей версии Seafile. Если вы меняете расположение, обновите unit-файлы.

Шаг 9 — Настройка UFW

Рекомендуется включить брандмауэр и разрешить только необходимые сервисы:

ufw allow ssh
ufw enable
# подтвердите ввод 'y'
ufw allow http
ufw allow https
ufw status numbered

После этого должны остаться правила только для SSH, HTTP и HTTPS.

Конфигурация UFW

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

Откройте в браузере URL вашего сервера. Если вы зашли по http, Nginx должен перенаправить на https. Пример: https://cloud.hakase-labs.io/

Войдите под админом, созданным при первом запуске Seahub. Проверьте загрузку файлов, просмотр и синхронизацию через клиент Seafile.

Вход в Seafile

Панель 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)

  1. Подготовить сервер и DNS — проверить разрешение домена
  2. Обновить систему и установить зависимости
  3. Установить и защитить MySQL, создать базы и пользователя
  4. Скачивание и предварительная установка Seafile локальным пользователем
  5. Настроить Nginx, получить SSL и настроить обратный прокси
  6. Настроить systemd-юниты и включить автозапуск
  7. Настроить брандмауэр и мониторинг
  8. Провести тесты загрузки/синхронизации и бэкапа

Контрольные сценарии и критерии приёмки

  • Сервис 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 и включает рекомендации по безопасности, тестированию и эксплуатации. Для продакшена дополнительно настройте автоматическое обновление сертификатов, регулярную проверку бэкапов и мониторинг сервисов.

Поделиться: 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 быстро