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

Установка Seafile на Ubuntu 16.04 — пошаговое руководство

• 6 min read • Инфраструктура • Обновлено 26 Nov 2025
Установка Seafile на Ubuntu 16.04 — руководство
Установка 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

Создание пользователя seafile в Ubuntu

Создайте логин и переключитесь на этого пользователя при последующих шагах установки.

Шаг 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: параметры сервера, домен и папка данных

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

Выбор опции настройки базы данных в установщике Seafile

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

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

При первом запуске Seahub попросит ввести email администратора и пароль.

Запрос на создание аккаунта администратора Seafile в веб-интерфейсе

Если админ создан, остановите сервисы для дальнейшей настройки автозапуска:

./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

Проверка прослушиваемых портов seafile и seahub через netstat

По умолчанию вы увидите порты 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) и войдите под админом.

Экран входа в Seafile

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

Панель администратора Seafile после запуска

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

  • Веб-интерфейс 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 (официальный сайт)
Поделиться: 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 быстро