Установка Seafile на ISPConfig (Ubuntu) — пошаговое руководство
Введение
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.
План действий
- Создать сайт в ISPConfig и добавить необходимые Apache-директивы.
- Создать три базы данных и пользователя.
- Установить пакеты и скачать Seafile.
- Инициализировать и запустить Seafile/Seahub.
- Настроить Apache и пути (FastCGI).
- Включить HTTPS через ISPConfig.
- Обеспечить автозапуск сервисов (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}]
Создайте shell-пользователя для сайта (через ISPConfig), он понадобиться для запуска серверов и cron.

Важно: не меняйте другие конфигурационные файлы ISPConfig без необходимости — минимизируйте изменения, чтобы сохранить совместимость с обновлениями ISPConfig.
2. Создание баз данных
Через ISPConfig: Sites → Database User → Add new User. Создайте отдельного пользователя БД для данного клиента.

Затем: Sites → Databases → Add new Database. Необходимо создать три отдельных базы:
- 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.

Обновите 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
Примечание: в оригинальной заметке автор обновил скрипт 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 директиве должен быть доступ к медиа-папке.
Короткая методология развёртывания (шпаргалка)
- Создать сайт в ISPConfig + Apache Directives.
- Создать пользователя БД и три базы.
- Установить пакеты и распаковать Seafile.
- Инициализировать через setup_seafile_mysql.sh.
- Запустить seafile.sh и seahub.sh, проверить порт 8000.
- Добавить FastCGI в apache.conf, настроить SERVICE_URL и FILE_SERVER_ROOT.
- Включить 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. Проверьте работоспособность через веб-интерфейс и логи.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента