Установка Seafiles на Debian 10

Автор: | 21.04.2020

Подготовка Debian

Вкратце опишу свою конфигурацию. Использую Proxmox 5.3-8, на нем контейнер с Nginx, который слушает 80 и 443 порты, далее раскидывает по контейнерам. Запустил контейнер с Debian 10, на него и устанавливал SeaFile.
По правильному после установки нужно создать пользователя и работать из под него, позже я создам пользователя seafile, но пока из под root, мне так удобней …
apt update
apt upgrade

Забегая вперёд, хочу предупредить. После ребута контейнера LXC с Debian 10, машина больше не запустится ))) Об этом я узнал спустя несколько суток после ребута «на всякий случай». Как я поправил это, напишу.
Кстати, ребутнуть Debian 10 теперь так:
systemctl reboot

Установка MariaDB в Debian 10

Перед установкой в Proxmox в настройках (options) используемого контейнера нужно выставить параметр Features — Nestting, предварительно остановив машину. В противном случае, после установки MariaDB не сможет запуститься.

Устанавливаем серверный пакет MariaDB из официальных репозиториев Debian, выполнив следующую команду, которая установит сервер MariaDB, клиент и все его зависимости.

apt install mariadb-server

systemctl status mariadb — проверить работает ли
systemctl start mariadb
systemctl restart mariadb
systemctl stop mariadb
systemctl reload mariadb

Добавим безопасности, запускаем:

mysql_secure_installation

Установки пароля для учетных записей rootзадаём, повторяем
Отключения удаленного входа в систему rootYes
Удаления учетных записей анонимных пользователейYes
Удаления тестовой базы данных, к которой по умолчанию могут обращаться анонимные пользователиYes

По умолчанию root пользователь MariaDB может, собственно, по root и зайти. Мы не сможем ввести root пароль при установке Seafile сервера под пользователем seafile (которого мы чуть позже создадим). Не сможем использовать phpMyAdmin и некоторые другие излишества.

Чтобы исправить эту ситуацию, зайдите на сервер MariaDB:
mysql

Выполним:
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_root_passwd';
quit

Устанавливаем зависимости для корректной работы SeaFile

apt install python3 python3-setuptools python3-pip -y
apt install python-urllib3 python-requests python-mysqldb ffmpeg

pip3 install —timeout=3600 Pillow moviepy pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha python3-ldap

Устанавливаем nginx

apt install nginx

Смотрим дышит ли:
systemctl status nginx

rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/seafile
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/seafile
nano /etc/nginx/sites-available/seafile

Создаём конфиг Nginx. Уже включён блок для WebDav.

log_format seafileformat '$http_x_forwarded_for $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_response_time';

server {
    listen 80;
    server_name 192.168.1.200;
    proxy_set_header X-Forwarded-For $remote_addr;

    location / {
         proxy_pass         http://127.0.0.1:8000;
         proxy_set_header   Host $host:$server_port;
         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 $scheme;
         proxy_read_timeout  36000s;

         # used for view/edit office file via Office Online Server
         client_max_body_size 0;

         access_log      /var/log/nginx/seahub.access.log seafileformat;
         error_log       /var/log/nginx/seahub.error.log;
    }

    location /seafhttp {
        rewrite ^/seafhttp(.*)$ $1 break;
        proxy_pass http://127.0.0.1:8082;
        client_max_body_size 0;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout  36000s;
        proxy_read_timeout  36000s;

        access_log      /var/log/nginx/seafhttp.access.log seafileformat;
        error_log       /var/log/nginx/seafhttp.error.log;
    }
    location /media {
        #rewrite ^/seafmedia(.*)$ /media$1 break;
        root /opt/seafile/seafile-server-latest/seahub;
    }
    location /seafdav {
        proxy_pass         http://127.0.0.1:8080/seafdav;
        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 $scheme;

        client_max_body_size 0;

		proxy_connect_timeout  36000s;
		proxy_read_timeout  36000s;
		proxy_send_timeout  36000s;
		send_timeout  36000s;


        access_log      /var/log/nginx/seafdav.access.log seafileformat;
        error_log       /var/log/nginx/seafdav.error.log;
    }
}

Перечитываем конфиг:
systemctl reload nginx

Проверим:
nginx -t

Добавим в автозагрузку:
systemctl enable --now nginx

Установка Seafile

Создаем нового пользователя — seafile и даём права на его папку
$ useradd -m -U -r -d /opt/seafile seafile
$ chmod 750 /opt/seafile

Добавляем пользователя www-data в группу seafile
$ usermod -aG seafile www-data (bash: usermod: command not found, не стал чинить)
$ /usr/sbin/usermod -aG seafile www-data

Переключаемся на пользователя seafile, далее работаем под ним
$ su — seafile

Проверим из под пользователя seafile подключение к БД:
mysql -u root -p

Создаем директорию, куда потом перенесем архив с дистрибутивом
$ mkdir -p /opt/seafile/installed

Переходим в директорию, где будет установлен Sefile
$ cd /opt/seafile/installed

Берём ссылку со свежим дистрибутивом — тут Скачиваем архив, распаковываем его
wget https://download.seadrive.org/seafile-server_7.1.3_x86-64.tar.gz
$ tar xzf seafile-server_7.1.3_x86-64.tar.gz

Перемещаем архив в каталог installed
$ mv seafile-server_7.1.3_x86-64.tar.gz installed

Запускаем установку seafile
$ ./seafile-server-7.1.3/setup-seafile-mysql.sh

Press ENTER to continue
[ server name ] seafile
[ This server's ip or domain ] seafile.example.com
[ 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
What is the host of mysql server?
[ default "localhost" ] --- Enter
What is the port of mysql server?
[ default "3306" ] --- Enter
What is the password of the mysql root user?
[ root password ] --- вводим пароль от root BD
verifying password of user root ... done
Enter the name for mysql user of seafile. It would be created if not exists.
[ default "seafile" ] --- Enter
Enter the password for mysql user "seafile":
[ password for seafile ] -- придумываем пароль
Enter the database name for ccnet-server:
[ default "ccnet-db" ] --- Enter
Enter the database name for seafile-server:
[ default "seafile-db" ] --- Enter
Enter the database name for seahub:
[ default "seahub-db" ] --- Enter

Настройки конфигурации seafile

Примечание: Настройки через веб-интерфейс сохраняются в таблице базы данных (seahub-db/constance_config). Они имеют более высокий приоритет, чем настройки в файлах конфигурации.
/opt/seafile/conf/ccnet.conf

[General]
SERVICE_URL = http://доменное_имя
[Database]
ENGINE = mysql
HOST = 127.0.0.1
PORT = 3306
USER = seafile
PASSWD = пароль_БД
DB = ccnet-db
CONNECTION_CHARSET = utf8

/opt/seafile/conf/seafdav.conf

[WEBDAV]
enabled = true
port = 8080
fastcgi = false
share_name = /seafdav

/opt/seafile/conf/seafile.conf

[fileserver]
port = 8082
[database]
type = mysql
host = 127.0.0.1
port = 3306
user = seafile
password = пароль_БД
db_name = seafile-db
connection_charset = utf8

Стартуем

Из под root не получится:
./seafile.sh start
./seahub.sh start

Делаем так, из под пользователя seafile
su — seafile
/opt/seafile/seafile-server-latest/seafile.sh start
/opt/seafile/seafile-server-latest/./seahub.sh start

/opt/seafile/seafile-server-latest/seafile.sh restart
/opt/seafile/seafile-server-latest/./seahub.sh restart

Добавляем в автозагрузку seahub

Создаем файл seafile.service
$ nano /etc/systemd/system/seafile.service
пишем в него:

[Unit]
Description=Seafile Server
After=network.target remote-fs.target mysqld.service

[Service]
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
User=seafile
Group=seafile
LimitNOFILE=infinity
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Создаем файл seahub.service
$ nano /etc/systemd/system/seahub.service
пишем в него:

[Unit]
Description=Seafile Seahub
After=network.target seafile.service

[Service]
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Создаём скрипт для перезапуска Seafile
$ nano /usr/local/sbin/seafile-server-restart

$ sudo nano /usr/local/sbin/seafile-server-restart
#!/bin/bash
for ACTION in stop start ; do
    for SERVICE in seafile seahub ; do
      systemctl ${ACTION} ${SERVICE}
    done
done

Выставляем права
$ chmod 700 /usr/local/sbin/seafile-server-restart

Останавливаем службы:
$ su - seafile
$ /opt/seafile/seafile-server-latest/seahub.sh stop
$ /opt/seafile/seafile-server-latest/seafile.sh stop
$ exit

Добавляем службы в автозапуск:
$ systemctl daemon-reload
$ systemctl enable --now seafile
$ systemctl enable --now seahub

Не загружались и скачивались файлы. Пришлось добавить:
nano /opt/seafile/conf/seahub_settings.py
FILE_SERVER_ROOT = ‘http://trudххх.ru:8082’

Используется wsgi, а не …

Можно подключить дополнительные возможности
Изменить внешний вид
Есть API для PHP, Python, WEB
Seafile может работать без Nginx и Apache

Осталось настроить WebDav
Seafile — настраиваем WebDAV

Установка Seafile 7.1.0 + Nginx + Percona на Centos 7
Deploying Seafile under Linux
СИНХРОНИЗАЦИЯ И СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ ФАЙЛОВ С ПОМОЩЬЮ SEAFILE В DEBIAN 9

Очистка истории файлов в Seafile

Созданный пользователь может создавать библиотеки. Если опцию ENABLE_USER_CREATE_ORG_REPO выставить False, — в админке (пишется в БД и имеет высший приоритет, или в конфиг) то чуда не происходит. Оказывается: «If you are using pro version, you can use the Roles and Permissions 6 feather to disable someone to create a library by setting the can_add_repo permission to False»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.