Установка Seafile на Ubuntu 16.04 — пошаговое руководство
Зачем это нужно
Seafile — это частное облачное хранилище (аналог Dropbox), написанное на Python и распространяемое с открытым исходным кодом. Поддерживает шифрование библиотек: пароль не хранится на сервере, поэтому даже администратор без пароля не сможет прочитать зашифрованные файлы.
Основная цель статьи
Показать пошаговую установку Seafile на Ubuntu 16.04 и дать рекомендации по эксплуатации, безопасности и резервному копированию.
Содержание
- Требования
- Установка зависимостей
- Создание пользователя seafile
- Загрузка и распаковка архива
- Создание баз данных MySQL
- Установка и базовая настройка Seafile/Seahub
- Создание systemd-сервисов
- Настройка Nginx как обратного прокси
- Тестирование и приёмка
- Резервное копирование, безопасность и отладка
- Контрольный список для ролей
- Краткий словарь терминов
Требования
- Сервер с минимум 2 ГБ оперативной памяти
- Ubuntu 16.04 64-bit
- Доступ root или пользователь с sudo
- DNS-запись для домена (например, cloud.mydomain.co)
Шаг 1 — Установка необходимых зависимостей
Seafile требует Java (для конвертации документов), LibreOffice, утилит для работы с PDF, Python-пакетов и MySQL. Выполните (как root или через sudo):
apt-get update
apt-get install openjdk-8-jre poppler-utils libreoffice libreoffice-script-provider-python libpython2.7 python-pip mysql-server python-setuptools python-imaging python-mysqldb python-memcache ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy python-pip -yУстановите boto для интеграции с S3-подобными хранилищами (опционально):
pip install botoЕсли на сервере есть ошибки локали, выполните:
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure localesВажно: если вы используете другой набор локалей в вашей организации, адаптируйте команды.
Шаг 2 — Создание пользователя seafile
Рекомендуется запускать сервер под отдельным системным пользователем:
useradd -m -s /bin/bash seafile
passwd seafile
Создайте логин и переключитесь на этого пользователя при последующих шагах установки.
Шаг 3 — Загрузка и распаковка архива Seafile
Под пользователем seafile загрузите архив с официального сайта (подберите нужную версию). В примере использован tar-архив для x86-64:
su - seafile
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_5.1.4_x86-64.tar.gzРаспакуйте и переименуйте каталог:
tar -xzf seafile-server_5.1.4_x86-64.tar.gz
mv seafile-server-5.1.4/ seafile-server/Каталог установки будет располагаться в домашней директории пользователя seafile.
Шаг 4 — Создание баз данных MySQL
Seafile использует три базы данных: ccnet, seafile и seahub. Войдите в MySQL и создайте их и пользователя:
# Login to mysql
mysql -u root -p
# Create databases
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
# Create user
create user 'seacloud'@'localhost' identified by 'yourpassword';
# Grant privileges
grant all privileges on ccnet_db.* to 'seacloud'@'localhost';
grant all privileges on seafile_db.* to 'seacloud'@'localhost';
grant all privileges on seahub_db.* to 'seacloud'@'localhost';
flush privileges;Совет: замените ‘yourpassword’ на надёжный пароль и сохраните его в безопасном хранилище паролей.
Шаг 5 — Запуск установщика Seafile
Под пользователем seafile перейдите в каталог установки и запустите установщик для MySQL:
su - seafile
cd seafile-server/
./setup-seafile-mysql.shВ процессе установки вам будет предложено ввести:
- Имя сервера (Server Name)
- Домен/IP (Domain/IP), например cloud.mydomain.co
- Каталог для хранения данных Seafile
- Настройки портов

При выборе способа настройки базы данных укажите вариант, соответствующий уже созданным базам (в примере — опция для существующих баз).

После установки запустите сервисы:
./seafile.sh start
./seahub.sh startПри первом запуске Seahub попросит ввести email администратора и пароль.

Если админ создан, остановите сервисы для дальнейшей настройки автозапуска:
./seafile.sh stop
./seahub.sh stopШаг 6 — Создание systemd-сервисов для автозапуска
Создайте unit-файлы systemd для удобного управления сервисами. Как root, создайте файлы в /lib/systemd/system/ или /etc/systemd/system/.
Файл seafile.service:
[Unit]
Description=Seafile Server
After=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/home/seafile/seafile-server/seafile.sh start
ExecStop=/home/seafile/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.targetФайл seahub.service:
[Unit]
Description=Seafile Hub
After=network.target seafile.target
[Service]
Type=oneshot
ExecStart=/home/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/home/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.targetРекомендация по надёжности: при необходимости добавьте Restart=on-failure и рабочую директорию (WorkingDirectory=/home/seafile/seafile-server).
Примените изменения и запустите сервисы:
systemctl daemon-reload
systemctl enable seafile
systemctl enable seahub
systemctl start seafile
systemctl start seahubПроверьте прослушиваемые порты:
netstat -plntu
По умолчанию вы увидите порты 8082 (seafile) и 8000 (seahub), если устанавливали их так же.
Шаг 7 — Установка и настройка Nginx как обратного прокси
Установите Nginx:
apt-get install nginx -yСоздайте виртуальный хост в /etc/nginx/sites-available/cloud.mydomain.conf и вставьте конфигурацию (ниже — пример из исходного руководства, адаптируйте server_name и пути):
server {
listen 80;
server_name cloud.mydomain.co;
proxy_set_header X-Forwarded-For $remote_addr;
# Reverse proxy for seafile
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 /home/seafile/seafile-server/seahub;
}
}Создайте символическую ссылку и перезапустите nginx:
ln -s /etc/nginx/sites-available/cloud.mydomain.conf /etc/nginx/sites-enabled/cloud.mydomain.conf
nginx -t
systemctl restart nginxСовет по HTTPS: используйте Let’s Encrypt (certbot) для получения сертификата и перенаправления HTTP на HTTPS. В конфигурации добавьте proxy_set_header X-Forwarded-Proto $scheme; и проверяйте корректность заголовков.
Шаг 8 — Тестирование через браузер
Откройте в браузере https://cloud.mydomain.co (или http, если не настраивали SSL) и войдите под админом.

После входа вы должны увидеть панель администратора.

Критерии приёмки
- Веб-интерфейс Seahub доступен по указанному домену
- Сервисы systemd seafile и seahub стартуют и работают
- Порты 8000 и 8082 прослушиваются локально
- Пользователь-админ может создать библиотеку и выполнить загрузку файлов
- Если используется шифрование библиотек — файлы шифруются и доступны только с правильным паролем
Резервное копирование и восстановление (мини-методология)
- Ежедневно: дамп баз MySQL (ccnet_db, seafile_db, seahub_db) и инкрементальный бэкап данных Seafile (директория хранения).
Примеры:
mysqldump -u root -p ccnet_db > ccnet_db_$(date +%F).sql
mysqldump -u root -p seafile_db > seafile_db_$(date +%F).sql
mysqldump -u root -p seahub_db > seahub_db_$(date +%F).sqlДля данных Seafile используйте rsync или snapshot-совместимый инструмент:
rsync -a --delete /path/to/seafile-data/ /backup/seafile-data/Важно: перед восстановлением данных останавливайте seafile/seahub.
Безопасность и hardening
- Всегда используйте HTTPS (Let’s Encrypt)
- Ограничьте доступ к административным портам в брандмауэре (ufw или iptables)
- Запускайте сервисы от отдельного непривилегированного пользователя seafile
- Регулярно обновляйте систему и зависимости
- Для шифруемых библиотек храните пароли в менеджере паролей отдельного уровня от сервера
- Ограничьте доступ к MySQL по IP и используйте надёжные пароли
Тесты и проверка работоспособности
- Проверить вход в Seahub (UI)
- Загрузить файл > 100 МБ (проверить передачу через seafhttp)
- Создать зашифрованную библиотеку и проверить, что без пароля файлы недоступны
- Остановить seafile и восстановить из бэкапа на тестовом узле
Отладка — типичные проблемы и решения
- Проблема: Seahub не стартует — проверьте логи seahub (seafile-server/logs/)
- Проблема: Nginx возвращает 502 — проверьте, запущен ли seahub и прослушивает ли порт 8000
- Проблема: ошибка кодировок — проверьте локаль сервера (LANG/LC_ALL)
- Проблема: предупреждение о правах доступа к файлам — проверьте владельца и права на каталоги, должен быть пользователь seafile
Important: не меняйте содержимое каталогов установки вручную без понимания последствий — лучше остановить сервисы перед ручными правками.
Альтернативные подходы
- Docker-контейнеры Seafile — удобны для изоляции, но потребуют адаптации volmume/сетевой конфигурации
- Использование PostgreSQL вместо MySQL — возможная альтернатива для крупных инсталляций
- HA-архитектура: разделение веб, application и файлового хранилища (через NFS или объектное хранилище)
Роль‑ориентированные контрольные списки
- Системный администратор:
- Настроить DNS, firewall, SSL
- Обновить пакеты и мониторинг
- Настроить бэкапы и тестовые восстановление
- DevOps-инженер:
- Автоматизировать развёртывание (Ansible/Chef)
- Обеспечить мониторинг SLI/SLO для сервиса
- Администратор приложения:
- Управление пользователями и политиками шифрования
- Проверка логов и инцидентов доступа
Мини‑факты
- Основные порты: Seahub — 8000, Seafile — 8082
- Рекомендуемая RAM для небольшого деплоя: ≥ 2 ГБ
- Трёхкомпонентная БД: ccnet, seafile, seahub
Краткий словарь
- Seafile — серверная часть хранилища
- Seahub — веб-интерфейс Seafile
- ccnet — компонент для синхронизации и управления узлами
- Библиотека — логическая единица хранения в Seafile
- seafhttp — протокол для передачи больших файлов
Заключение
Seafile — практичное решение для частных облаков с поддержкой шифрования на уровне библиотек. Руководство показывает базовую подстановку: от подготовки сервера до запуска под systemd и публикации через Nginx. Для промышленного использования дополните инструкцию SSL-сертификатами, мониторингом, политиками резервного копирования и регулярными обновлениями.
Ссылки
- Seafile (официальный сайт)
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента