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

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

• 7 min read • DevOps • Обновлено 26 Nov 2025
Установка Seafile на ISPConfig — пошагово
Установка Seafile на ISPConfig — пошагово

Введение

Seafile — это облачная система хранения файлов с открытым исходным кодом, похожая на Dropbox или Box, но с возможностью развёртывания на собственной инфраструктуре клиента. Это повышает контроль и безопасность: пароли и данные передаются только между администратором сервера и его пользователями, а не третьей облачной компанией.

В этом руководстве показан процесс установки Seafile с использованием MySQL и Apache (включая HTTPS) на сервере с ISPConfig (пример основан на Ubuntu 14.04 LTS и ISPConfig 3). Инструкции можно адаптировать под другие дистрибутивы и версии, но будьте внимательны к путям и пакетам.

Важно: предполагается, что вы умеете работать с ISPConfig — это не учебник по ISPConfig.

Что нужно заранее (кратко)

  • Доступ SSH к хосту и права для создания сайтов/пользователей в ISPConfig.
  • ISPConfig установлен и функционирует.
  • MySQL (или MariaDB) доступен через ISPConfig.
  • Базовые знания работы с Apache, cron и shell.

План действий

  1. Создать сайт в ISPConfig и добавить необходимые Apache-директивы.
  2. Создать три базы данных и пользователя.
  3. Установить пакеты и скачать Seafile.
  4. Инициализировать и запустить Seafile/Seahub.
  5. Настроить Apache и пути (FastCGI).
  6. Включить HTTPS через ISPConfig.
  7. Обеспечить автозапуск сервисов (cron или systemd-шаблон).

1. Создание сайта в ISPConfig

Откройте панель ISPConfig, вкладка Sites → Add new website. Рекомендуется создать отдельный сайт для Seafile, чтобы отделить облачный сервис от других сайтов и использовать интерфейс ISPConfig для управления.

В конфигурации сайта вкладка Options → Apache Directives: вставьте следующие правила (приведённые ниже примеры используют путь /var/www/seafile.myseafile.com/private/seafile/… — скорректируйте под ваш путь):

Alias /media /var/www/seafile.myseafile.com/private/seafile/seafile-server-latest/seahub/media

RewriteEngine On


Require all granted


# seafile httpserver
#
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]
#
# seahub
#
RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Панель Apache Directives с примерами директив

Создайте shell-пользователя для сайта (через ISPConfig), он понадобиться для запуска серверов и cron.

Создание SSH-пользователя для сайта

Важно: не меняйте другие конфигурационные файлы ISPConfig без необходимости — минимизируйте изменения, чтобы сохранить совместимость с обновлениями ISPConfig.

2. Создание баз данных

Через ISPConfig: Sites → Database User → Add new User. Создайте отдельного пользователя БД для данного клиента.

Создание пользователя базы данных в ISPConfig

Затем: Sites → Databases → Add new Database. Необходимо создать три отдельных базы:

  • ccnetdb
  • seafiledb
  • seahubdb

Создание базы данных ccnetdb Создание базы данных seafiledb Создание базы данных seahubdb

Запишите имена баз, имя пользователя и пароль — они потребуются при инициализации Seafile.

3. Скачивание и установка Seafile

Подключитесь по SSH к пользователю сайта и установите необходимые пакеты:

apt-get install python2.7 python-setuptools python-simplejson python-imaging python-mysqldb python-flup

Организационно я предпочитаю хранить все серверы внутри каталога private, а не web — в примерах ниже используется ~/private/seafile.

cd private
mkdir seafile
cd seafile

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.6_x86-64.tar.gz
    or for 32bit
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.6_i386.tar.gz

tar zxvf seafile-server_3.1.6_x86-64.tar.gz
mkdir installed
mv seafile-server_* installed

cd seafile-server-* 
./setup_seafile_mysql.sh

В процессе установки скрипт задаст вопросы — укажите путь установки, данные MySQL (пользователь и базы, созданные в предыдущем шаге) и другие параметры. При выборе способа инициализации баз укажите вариант, соответствующий наличию уже созданных баз (в исходном тексте выбирали вариант 2).

4. Первый запуск

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

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

Затем откройте браузер: http://<ваш-домен>:8000/ (в примере http://192.168.1.111:8000/).

Если интерфейс доступен — переходите к настройке Apache.

5. Настройка Apache и FastCGI

Большая часть Apache-конфигурации делается через сайт в ISPConfig (см. раздел 1). Однако для корректной работы FastCGI потребуется добавить внешнюю строку в /etc/apache2/apache.conf. К сожалению, через ISPConfig это сделать нельзя — правка единственного файла неизбежна:

sudo echo "## Seafile External Server" >> /etc/apache2/apache.conf
sudo echo "FastCGIExternalServer /var/www/seafile.myDomainHere.com/web/seahub.fcgi -host 127.0.0.1:8000" >> /etc/apache2/apache.conf

Далее отредактируйте SERVICE_URL в файле ccnet.conf (путь /path/to/seafile-server/ccnet/ccnet.conf):

SERVICE_URL = http://www.myseafile.com

И укажите FILE_SERVER_ROOT в seahub_settings.py:

FILE_SERVER_ROOT = 'http://www.myseafile.com/seafhttp'

Перезагрузите Apache:

sudo service apache2 restart

Перезапустите Seafile/Seahub (Seahub через FastCGI):

./seafile.sh start
./seahub.sh start-fastcgi

Проверьте в логах (logs/) ошибки и доступность веб-интерфейса по основному домену.

6. Включение HTTPS

В ISPConfig на вкладке Sites для вашего сайта сгенерируйте SSL-сертификат (Let’s Encrypt или собственный сертификат). После генерации убедитесь, что Apache перезагружен и сайт работает по HTTPS.

Генерация SSL-сертификата в ISPConfig

Обновите SERVICE_URL и FILE_SERVER_ROOT на https-адреса (если используете HTTPS):

SERVICE_URL = https://www.myseafile.com
FILE_SERVER_ROOT = 'https://www.myseafile.com/seafhttp'

7. Автоматический запуск сервисов

Чтобы Seafile и Seahub стартовали автоматически, можно:

  • добавить запуск через cron (как в оригинале), или
  • создать systemd unit-файлы (рекомендованный современный способ).

Оригинальный подход: добавить скрипт запуска в cron для shell-пользователя сайта. Пример — создаём startSeafile.sh в ~/private/seafile и делаем его исполняемым.

Создание и права:

cd ~/private/seafile
touch startSeafile.sh
chmod +x startSeafile.sh

Содержимое (корректируйте seafile_dir под ваш путь):

#!/bin/bash

# Change the value of "seafile_dir" to your path of seafile installation
seafile_dir=/var/www/clients/client1/web42/private/seafile
script_path=${seafile_dir}/seafile-server-latest
seafile_init_log=${seafile_dir}/logs/seafile.init.log
seahub_init_log=${seafile_dir}/logs/seahub.init.log

# Change the value of fastcgi to true if fastcgi is to be used
fastcgi=true
# Set the port of fastcgi, default is 8000. Change it if you need different.
fastcgi_port=8000

## Sleep command is necessary to prevent MYSQL errors if
## this script runs before MYSQL is fully operational
sleep 60 &
wait %1

case "$1" in
        start)
                ${script_path}/seafile.sh start >> ${seafile_init_log} &
                wait %1
                if [  $fastcgi = true ];
                then
                        ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} &
                        wait %1
                else
                        ${script_path}/seahub.sh start >> ${seahub_init_log} &
                        wait %1
                fi
        ;;
        restart)
                ${script_path}/seafile.sh restart >> ${seafile_init_log} &
                wait %1
                if [  $fastcgi = true ];
                then
                        ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log} &
                        wait %1
                else
                        ${script_path}/seahub.sh restart >> ${seahub_init_log} &
                        wait $1
                fi
        ;;
        stop)
                ${script_path}/seafile.sh $1 >> ${seafile_init_log}
                ${script_path}/seahub.sh $1 >> ${seahub_init_log}
        ;;
        *)
                echo "Usage: /etc/init.d/seafile {start|stop|restart}"
                exit 1
        ;;
esac

Затем добавьте в ISPConfig → Cron Jobs для соответствующего пользователя команду:

/var/www/clients/client1/web42/private/seafile/startSeafile.sh start

Пример Cron Jobs в ISPConfig

Примечание: в оригинальной заметке автор обновил скрипт 23 ноября 2014 года, добавив задержки, чтобы избежать ситуаций, когда второй процесс стартует раньше, чем первый завершит инициализацию.

Альтернатива: systemd unit (рекомендуется на современных системах)

Если ваша система использует systemd, лучше создать unit-файлы для контроля процессов вместо cron. Пример простого unit-файла seafile.service (адаптируйте пути и пользователя):

[Unit]
Description=Seafile Server
After=network.target mysql.service

[Service]
Type=forking
User=www-data
WorkingDirectory=/var/www/clients/client1/web42/private/seafile/seafile-server-latest
ExecStart=/var/www/clients/client1/web42/private/seafile/seafile-server-latest/seafile.sh start
ExecStop=/var/www/clients/client1/web42/private/seafile/seafile-server-latest/seafile.sh stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

И аналогично seahub.service, где ExecStart запускает seahub.sh start-fastcgi PORT.

После создания unit-файлов выполните:

systemctl daemon-reload
systemctl enable seafile.service
systemctl start seafile.service

Тестирование и проверка

  • Проверьте логи: logs/seafile.log, logs/seahub.log, /var/log/apache2/error.log.
  • Откройте веб-интерфейс по HTTP и HTTPS, войдите под администраторским аккаунтом.
  • Попробуйте загрузить файл, синхронизировать файл с клиентом.
  • Проверьте доступ к /seafhttp и /media (статические файлы).

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

  • Веб-интерфейс Seafile доступен по вашему домену и HTTPS.
  • Пользователь может зарегистрироваться/войти и загрузить файл.
  • Службы Seafile и Seahub автоматически запускаются после перезагрузки сервера.
  • Логи не содержат критических ошибок и подключения к MySQL установлены.

Рекомендации по безопасности и соответствию (GDPR)

  • Используйте HTTPS для всех внешних подключений.
  • Минимизируйте права БД: пользователь БД должен иметь только нужные привилегии для трёх баз.
  • Регулярно обновляйте ОС и пакеты, следите за обновлениями Seafile.
  • Ограничьте доступ к административным панелям (SSH, ISPConfig) через списки доступа или VPN.
  • Для соответствия GDPR: документируйте, где хранятся личные данные, настройте политики удаления/экспорта данных по запросу пользователей.

Роли и чек-листы

Администратор (перед развёртыванием):

  • Резервная копия текущего сайта/сервера.
  • Установлен ISPConfig и доступен root/администратор.
  • Согласован домен и DNS-запись.

Администратор (после развёртывания):

  • Проверить логи и исправить ошибки.
  • Настроить мониторинг и бэкапы Seafile-баз и данных.
  • Настроить автоматическое обновление SSL (если Let’s Encrypt).

Клиент:

  • Проверить вход в систему и загрузить тестовый файл.
  • Убедиться, что синхронизация клиентов работает.

Типичные ошибки и способы их устранения

  • Проблема: Seahub недоступен по домену, доступен по порту 8000.
    Решение: Проверьте FastCGIExternalServer в apache.conf и соответствие RewriteRule и прав на seahub.fcgi.

  • Проблема: Ошибки подключения к MySQL.
    Решение: Убедитесь в правильности имени БД/пользователя/пароля и что MySQL слушает на expected сокете/порте.

  • Проблема: Файлы статических ресурсов 404.
    Решение: Проверьте Alias /media путь и права на каталоги; в Apache директиве должен быть доступ к медиа-папке.

Короткая методология развёртывания (шпаргалка)

  1. Создать сайт в ISPConfig + Apache Directives.
  2. Создать пользователя БД и три базы.
  3. Установить пакеты и распаковать Seafile.
  4. Инициализировать через setup_seafile_mysql.sh.
  5. Запустить seafile.sh и seahub.sh, проверить порт 8000.
  6. Добавить FastCGI в apache.conf, настроить SERVICE_URL и FILE_SERVER_ROOT.
  7. Включить HTTPS и настроить автозапуск (cron или systemd).

Мини-справочник (1 строка)

  • Seafile: сервер файлового облака; Seahub: веб-интерфейс; seafhttp: файловый сервер/HTTP API; ccnet: сетевой модуль/аутентификация.

Куда смотреть дальше (альтернативы и масштабирование)

  • Альтернатива: запуск Seafile в Docker-контейнере для упрощённого управления зависимостями.
  • Масштабирование: выделение отдельного сервера для файлового сервера (seafhttp) и отдельной БД для высокой нагрузки.

Заключение

Этот гайд даёт полный практический набор шагов для развёртывания Seafile под ISPConfig с MySQL и Apache, включая рекомендации по автозапуску, HTTPS и безопасности. После тестирования и проверки логов сервис должен быть функционален и доступен по HTTPS. Если потребуется адаптация под другую версию Seafile или другую ОС — корректируйте пути, зависимости и unit-файлы.


Краткое резюме: Создайте сайт и пользователя в ISPConfig, три базы данных, установите нужные пакеты, распакуйте Seafile, инициализируйте базы, настройте Apache FastCGI и HTTPS, и реализуйте автозапуск через cron или systemd. Проверьте работоспособность через веб-интерфейс и логи.

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