Categories: Инструкции

Установка и запуск Seafile Server Community Edition на Linux Ubuntu

Используемые термины: Seafile , Ubuntu , MariaDB , NGINX , memcached .

Seafile может быть развернут как Docker-контейнер или при помощи готового скрипта. Но в данной инструкции мы подробно рассмотрим процесс ручной установки и настройки Seafile на собственный серер. По большей части, мы будем опираться на официальную инструкцию .

В нашем примере будут использоваться:

  • Linux Ubuntu 20.04.
  • Seafile Server версии 9.
  • СУБД MariaDB.
  • Веб-сервер NGINX.

Пошагово, мы познакомимся с требованиями, опишем предварительную настройку системы и развертывание Seafile Server со всем необходимым прикладным софтом.

Системные требования

Рассмотрим программно-аппаратные требования для развертывания Seafile Server:

  • Процессор: минимум 2 ядра.
  • Память ОЗУ: 2 Гб.
  • Операционная система: Linux Ubuntu (старые и новые версии), Linux CentOS (старые версии).
  • СУБД: MariaDB/MySQL, SQLite.
  • Веб-сервер: NGINX, Apache.

Также рекомендована установка memcached для работы 50 пользователей и более.

Предварительная настройка системы

Прежде чем перейти в процессу установки и настройки сервера Seafile, выполним предварительные действия.

1. Обновление пакетов

Обновляем список пакетов:

apt update

На свежей системе также рекомендуется выполнить обновление установленных в системе пакетов:

apt upgrade

2. Время

Для нормального отображения времени создания и редактирования файлов, убедимся, что на нашем сервере стоит правильное время.

Установим сервис синхронизации времени и разрешим его автозапуск:

apt install chrony

systemctl enable chrony

Настраиваем временную зону:

timedatectl set-timezone Europe/Moscow

* В данном примере мы задаем зону по московскому времени.

Список всех доступных зон можно посмотреть командой

timedatectl list-timezones

3. Настройка брандмауэра

По умолчанию, в Ubuntu брандмауэр пропускает все сетевые пакеты и не требует настройки. В этом случае, можно пропустить выполнение данного пункта.

Если же в вашем случае брандмауэр настроен на блокировку портов, выполняем нижеописанные действия.

Для нормальной работы системы нам нужно открыть 2 порта:

iptables -I INPUT -p tcp —dport 8000 -j ACCEPT

iptables -I INPUT -p tcp —dport 8082 -j ACCEPT

* на порту 8000 работает веб-сервер seahub; на 8002 будет слушать сервер seafile.

Для сохранения правила используем утилиту iptables-persistent:

apt install iptables-persistent

netfilter-persistent save

Установка программных компонентов

Установим программные продукты, которые необходимы для работы Seafile.

Memcache

Начать необходимо с Memcache, так как его библиотеки нужны для установки пакетов python. Для установки вводим:

apt install memcached libmemcached-dev

Внесем небольшую корректировку в работу сервиса:

vi /etc/memcached.conf

Добавим памяти, которую может использовать memcached для своей работы:

-m 512

* до 512 Мб. Но можно и больше…

Перезапускаем сервис и разрешаем его автозапуск:

systemctl restart memcached

systemctl enable memcached

Python

Для запуска и работы нашей облачной системы необходим python версии 3. Выполним его установку с дополнительными компонентами:

apt install python3 python3-setuptools python3-pip libmysqlclient-dev

* где:

  • python3 — интерпретатор для языка программирования python.
  • python3-setuptools — дополнение для python-distutils, который в свою очередь, нужен для установки дополнительных модулей.
  • python3-pip — менеджер установки пакетов python.
  • libmysqlclient-dev — набор файлов для разработки под СУБД MySQL/MariaDB.

С помощью менеджера пакетов python также установим:

pip3 install —timeout=3600 django==3.2.* Pillow pylibmc captcha jinja2 sqlalchemy==1.4.3 django-pylibmc django-simple-captcha python3-ldap mysqlclient pycryptodome==3.12.0 cffi==1.14.0

MariaDB

Как говорилось выше, мы будем использовать в качестве сервера баз данных MariaDB. Она может быть установлена из репозитория командой:

apt install mariadb-server

* подробнее об установке MariaDB читайте инструкцию Установка MariaDB на CentOS или Ubuntu .

Установим пароль для основной учетной записи СУБД (root):

mysqladmin -u root password

* система запросит новый пароль. Его нужно ввести дважды.

Чтобы пароль применился, нужно сбросить привилегии в СУБД. Для этого заходим в оболочку sql:

mysql -uroot -p

И вводим:

> flush privileges;

После выходим обратно:

> quit

Разрешаем автозапуск демона:

systemctl enable mariadb

Мы готовы переходить к установке Seafile.

Установка Seafile

Создаем учетную запись seafile, от которой будет работать наш сервис:

useradd seafile -r

Создаем каталог, в который загрузим установочные файлы Seafile:

mkdir -p /opt/seafile/bin

На странице загрузки официального сайта копируем ссылку на архив с приложением:

С помощью скопированной ссылки загружаем архив:

wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_9.0.2_x86-64.tar.gz

И распаковываем его в каталог /opt/seafile/bin :

tar zxf seafile-server_*.tar.gz -C /opt/seafile/bin —strip-components 1

Назначим в качестве владельца каталога seafile и распакованных файлов ранее созданного пользователя:

chown -R seafile:seafile /opt/seafile

Заходим под пользователем seafile:

su seafile

Переходим в каталог с установочными файлами и запускаем скрипт:

$ cd /opt/seafile/bin

$ ./setup-seafile-mysql.sh

Мы увидим приветствие мастера установки. Просто нажимаем ENTER :

——————————————————————
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

https://download.seafile.com/published/seafile-manual/home.md

Press ENTER to continue
——————————————————————

Вводим имя сервера, который будут видеть клиенты:

What is the name of the server? It will be displayed on the client.
3 — 15 letters or digits
[ server name ] remontka_seafile

Вводим IP-адрес или имя сервера, по которому можно подключиться к серверу:

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server’s ip or domain ] seafile.remontka.com

Вводим порт, на котором должен слушать сервис или оставляем 8082:

Which port do you want to use for the seafile fileserver?
[ default «8082» ]

Выбираем, использовать имеющуюся базу или создать новую. Мы создадим новую:

——————————————————-
Please choose a way to initialize seafile databases:
——————————————————-

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ] 1

Указываем настройки для подключения к СУБД — хост, порт, пароль для root:

What is the host of mysql server?
[ default «localhost» ]

What is the port of mysql server?
[ default «3306» ]

What is the password of the mysql root user?
[ root password ]

Задаем имя пользователя mysql, который будет создан для seafile (можно оставить предложенный вариант, нажав ENTER ):

Enter the name for mysql user of seafile. It would be created if not exists.
[ default «seafile» ]

Задаем пароль для создаваемой учетной записи в mysql:

Enter the password for mysql user «seafile»:
[ password for seafile ]

Вводим имя для базы данных для сервера ccnet:

Enter the database name for ccnet-server:
[ default «ccnet-db» ]

Вводим имя для базы данных для сервера seafile:

Enter the database name for seafile-server:
[ default «seafile-db» ]

Вводим имя для базы данных для сервера seahub:

Enter the database name for seahub:
[ default «seahub-db» ]

Смотрим на сводную информацию:

———————————
This is your configuration
———————————

server name: remontka_seafile
server ip/domain: seafile.remontka.com

seafile data dir: /opt/seafile/seafile-data
fileserver port: 8082

database: create new
ccnet database: ccnet-db
seafile database: seafile-db
seahub database: seahub-db
database user: seafile

———————————
Press ENTER to continue, or Ctrl-C to abort
———————————

Если ошибок нет, вводим ENTER — начнется установке и конфигурирование.

Мы должны увидеть сообщение:

——————————————————————
Your seafile server configuration has been finished successfully.
——————————————————————

run seafile server: ./seafile.sh { start | stop | restart }
run seahub server: ./seahub.sh { start <port> | stop | restart <port> }

——————————————————————
If you are behind a firewall, remember to allow input/output of these tcp ports:
——————————————————————

port of seafile fileserver: 8082
port of seahub: 8000

When problems occur, Refer to

https://download.seafile.com/published/seafile-manual/home.md

for information.

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

Внесем изменения в конфигурационный файл:

$ vi /opt/seafile/conf/gunicorn.conf.py

Отредактируем строку

bind = «0.0.0.0:8000»

* в данном примере мы настроили наш сервер, чтобы он слушал на всех интерфейсах, а не только на локальном. Это нужно, чтобы он мог отвечать на сетевые запросы.

Открываем другой конфигурационный файл:

vi /opt/seafile/conf/seahub_settings.py

Добавим строки:

CACHES = {
‘default’: {
‘BACKEND’: ‘django_pylibmc.memcached.PyLibMCCache’,
‘LOCATION’: ‘127.0.0.1:11211’,
},
}

* в данном примере мы говорим серверу использовать memcached.

Теперь нам нужно запустить 2 сервиса:

  1. seafile fileserver — сервер, принимающий запросы от клиентов.
  2. seahub — веб-сервер на python.

Стартуем первый:

$ /opt/seafile/bin/seafile.sh start

Мы должны увидеть:

Starting seafile server, please wait …
** Message: 16:02:58.146: seafile-controller.c(621): No seafevents.

Seafile server started

Done.

Запускаем второй сервис:

$ /opt/seafile/bin/seahub.sh start

Система задаст несколько вопросов.

Адрес электронной почты администратора (это же будет логин администратора):

What is the email for the admin account?
[ admin email ] postmaster@remontka.com

Пароль, который будет использоваться для администратора (вводим дважды):

What is the password for the admin account?
[ admin password ]

Enter the password again:
[ admin password again ]

Мы должны увидеть:

Seahub is started

Done.

Сервер запущен.

Попробуем открыть браузер и перейти по адресу http://<IP-адрес сервера>:8000 — должна открыться страница авторизации. Вводим логин и пароль, который создали при старте seahub (в нашем примере для пользователя postmaster@remontka.com). Мы должны попасть в систему с правами администратора. Теперь у нас есть возможность управлять сервисом из графического интерфейса.

Настройка автозапуска

В нашем примере были разово запущены сервисы, которые перестанут работать после перезагрузки сервера. Для решения задачи автозапуска мы создадим два юнита в systemd.

С предыдущей настройки мы вошли в консоль под пользователем seafile. Оставаясь в нем, остановим ранее запущенные сервисы:

$ /opt/seafile/bin/seahub.sh stop

$ /opt/seafile/bin/seafile.sh stop

Выходим из консоли пользователя seafile:

$ exit

Вводим команду для создания первого юнита:

systemctl edit —full —force seafile

[Unit]
Description=Seafile Service
After=network.target

[Service]
User=seafile
Group=seafile
Type=forking
ExecStart=/opt/seafile/bin/seafile.sh start
ExecStop=/opt/seafile/bin/seafile.sh stop
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target

Создаем второй юнит:

systemctl edit —full —force seahub

[Unit]
Description=Seahub Service
After=network.target

[Service]
User=seafile
Group=seafile
Type=forking
ExecStart=/opt/seafile/bin/seahub.sh start
ExecStop=/opt/seafile/bin/seahub.sh stop
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Разрешаем запуск созданных сервисов:

systemctl enable seafile seahub

Стартуем их:

systemctl start seafile seahub

Проверяем состоянию запущенных служб:

systemctl status seafile seahub

Пробуем снова зайти на веб-интерфейс Seafile.

NGINX Reverse Proxy

Рассмотрим процесс настройки NGINX для проксирования веб-запросов на seafile. Сначала настроим запросы без шифрования, после подключим SSL.

Установка и настройка NGINX + Seafile

Устанавливаем nginx командой:

apt install nginx

Создадим конфигурационный файл:

vi /etc/nginx/sites-enabled/default

Приводим его к виду:

server {
listen 80 default_server;
server_name _;

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_set_header X-Forwarded-Proto http;
proxy_read_timeout 1200s;

client_max_body_size 0;
}

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;
}
}

Проверяем конфигурацию nginx и перечитываем ее для применения:

nginx -t && nginx -s reload

Попробуем открыть браузер и перейти по адресу http://<IP-адрес сервера> (без порта) — должна открыться страница авторизации.

Настройка SSL

Мы рассмотрим пример получения сертификата от Let’s Encrypt. Для этого у нас должен быть настроено доменное имя, которое ведет на сервер Seafile. Ссылку на детальную инструкцию по работе с Let’s Encrypt смотрите в конце инструкции .

Устанавливаем certbot:

apt install certbot

Открываем конфигурационный файл nginx с настройкой seafile:

vi /etc/nginx/sites-enabled/default

Добавляем в секцию server :

server {

location ~ /.well-known {
root /usr/share/nginx/html;
allow all;
}


}

Применяем настройку nginx:

nginx -t && nginx -s reload

Вводим команду на получение сертификата:

certbot certonly —webroot —agree-tos —email postmaster@remontka.com —webroot-path /usr/share/nginx/html/ -d seafile.remontka.com

* в данном примере мы получаем сертификат для доменного имени seafile.remontka.com .

Добавляем задание в крон на продление сертификата:

crontab -e

0 0 * * 1,4 /usr/bin/certbot renew —noninteractive

Добавляем в файл строку:

vi /etc/letsencrypt/cli.ini

deploy-hook = systemctl reload nginx

Теперь откроем конфигурационный файл nginx:

vi /etc/nginx/sites-enabled/default

Отредактируем опцию listen , добавим ssl_certificate и ssl_certificate_key , а также секцию server :

server {
listen 443 ssl default_server;
server_name _;

ssl_certificate /etc/letsencrypt/live/seafile.remontka.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/seafile.remontka.com/privkey.pem;


}

server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}

Применяем настройку:

nginx -t && nginx -s reload

Попробуем открыть браузер и перейти по адресу https://<IP-адрес сервера> (с https) — должна открыться страница авторизации.

Возможные ошибки

Рассмотрим некоторые проблемы, с которыми можно столкнуться при настройке Seafile.

Ошибка проверки CSRF. Запрос отклонён

Данная ошибка появляется при попытке открыть веб-страницу Seafile.

Причина: запрос отправляет на адрес сайта (URL), которому не доверяет веб-сервер Seafile (не добавлен в список доверенных).

Решение: в настройках seahub предусмотрена опция CSRF_TRUSTED_ORIGINS, в которой мы можем перечислить все URL, на которые можно отправлять запрос.

Открываем конфигурационный файл:

vi /opt/seafile/conf/seahub_settings.py

Добавляем строку (или редактируем, если опция CSRF_TRUSTED_ORIGINS уже присутствует):

CSRF_TRUSTED_ORIGINS = [‘seafile.remontka.com’, ‘seafile.remontka.com:4443’]

* обратите внимание, что мы разрешили подключение для URL seafile.remontka.com, а также для нестандартного порта 4443.

Перезагружаем seafile:

systemctl restart seafile seahub

Проверяем работу портала.

Читайте также

Вам также могут быть полезны следующие инструкции:

1. Установка и настройка Nextcloud + NGINX на Ubuntu .

2. Установка и настройка NextCloud на CentOS .

3. Примеры редиректов в NGINX .

4. Получение бесплатного SSL сертификата Let’s Encrypt .

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago