Contents
Подготовка Debian
Вкратце опишу свою конфигурацию. Использую Proxmox 5.3-8, на нем контейнер с Nginx, который слушает 80 и 443 порты, далее раскидывает по контейнерам. Запустил контейнер с Debian 10, на него и устанавливал SeaFile.
По правильному после установки нужно создать пользователя и работать из под него, позже я создам пользователя seafile, но пока из под root, мне так удобней …
apt update
apt upgrade
systemctl reboot
Установка MariaDB в Debian 10
Перед установкой в Proxmox в настройках (options) используемого контейнера нужно выставить параметр Features – Nestting, предварительно остановив машину. В противном случае, после установки MariaDB не сможет запуститься.
Устанавливаем серверный пакет MariaDB из официальных репозиториев Debian, выполнив следующую команду, которая установит сервер MariaDB, клиент и все его зависимости.
1 |
apt install mariadb-server |
systemctl status mariadb — проверить работает ли
systemctl start mariadb
systemctl restart mariadb
systemctl stop mariadb
systemctl reload mariadb
Добавим безопасности, запускаем:
mysql_secure_installation
Установки пароля для учетных записей root – задаём, повторяем
Отключения удаленного входа в систему root – Yes
Удаления учетных записей анонимных пользователей – 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
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
1 2 3 4 5 6 7 8 9 10 |
[General] SERVICE_URL = http://доменное_имя [Database] ENGINE = mysql HOST = 127.0.0.1 PORT = 3306 USER = seafile PASSWD = пароль_БД DB = ccnet-db CONNECTION_CHARSET = utf8 |
1 2 3 4 5 |
[WEBDAV] enabled = true port = 8080 fastcgi = false share_name = /seafdav |
1 2 3 4 5 6 7 8 9 10 |
[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
пишем в него:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[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
пишем в него:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[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
1 2 3 4 5 6 7 |
$ 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”