Перейти к основному содержанию

Seafile 9.0.2 — установка на Debian 11

Seafile

Seafile — это личное облачное хранилище для хранения данных в стиле Dropbox.

https://www.seafile.com

Сегодня мы установим Seafile 9.0.2 на Debian 11.

  • Имеется сервер с операционной системой Debian 11. Где-то в облаке.
  • Seafile для безопасности запустим под отдельным пользователем как службы.
  • В качестве БД используем MySQL 8 на том же сервере.
  • Дополнительно поднимем и настроим Nginx.

Доступна версия 9.0.2 64bit.

https://www.seafile.com/en/download/

Ссылки

Ранее я уже публиковал статью про установку Seafile на Ubuntu:

Seafile 7.1.1 — установка на Ubuntu 18.04 LTS

В новой статье будет несколько отличий.

  1. Ранее я устанавливал Seafile 7.1.1, теперь установим более новую версию Seafile 9.0.2.
  2. Ранее была операционная система Ubuntu 18.04, сейчас Debian 11.

https://www.seafile.com

Мануал:

https://manual.seafile.com/

База данных MySQL 8 для Seafile

Установка MySQL 8 на Debian 11 у меня уже есть в отдельной статье:

Debian 11 — установка MySQL 8

Точно так же устанавливаем и перемещаем базу в директорию /opt.

Создаём три базы:

  • seafile-ccnet
  • seafile-db
  • seafile-seahub

и пользователя MySQL: seafile:

mysql -u root -p
CREATE SCHEMA `seafile-ccnet` DEFAULT CHARACTER SET utf8 ;
CREATE SCHEMA `seafile-db` DEFAULT CHARACTER SET utf8 ;
CREATE SCHEMA `seafile-seahub` DEFAULT CHARACTER SET utf8 ;
CREATE USER 'seafile'@'localhost' identified by 'ПАРОЛЬ';
GRANT ALL PRIVILEGES ON `seafile-ccnet`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-seahub`.* to `seafile`@localhost;

seafile

Меняем настройки безопасности пользователю:

ALTER USER 'seafile'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ПАРОЛЬ';

Установка пакетов

Устанавливаем пакеты, хочу обратить внимание на пакет python3-dev, который в официальном мануале не указан (работаем под ROOT):

apt-get update
apt-get install -y python3 python3-dev python3-setuptools python3-pip libmysqlclient-dev
apt-get install -y memcached libmemcached-dev 
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

Создание директории и пользователя

Для Seafile создадим директорию /opt/seafile:

mkdir /opt/seafile
cd /opt/seafile

seafile

Создаём пользователя, под которым будет работать seafile (я назвал его sf) и назначаем права:

useradd -m -s /bin/bash sf
cd /
chown -R sf\: ./opt/seafile/
cd /opt
ls -fla | grep seafile

seafile

Установка Seafile Server

Работаем под пользователем sf:

su - sf

Скачиваем и распаковываем дистрибутив:

cd /opt/seafile
wget https://download.seadrive.org/seafile-server_9.0.2_x86-64.tar.gz
tar -xf seafile-server_9.0.2_x86-64.tar.gz
ls -Fla

seafile

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

cd /opt/seafile/seafile-server-9.0.2/
./setup-seafile-mysql.sh

Запускается мастер установки. В процессе установки нам зададут вопросы, отвечаем на них, у вас будут собственные ответы:

  1. What is the name of the server? It will be displayed on the client. Пишу — seafile.
  2. What is the ip or domain of the server? Домена пока нет, пишу прямой IP — 46.39.246.23.
  3. Which port do you want to use for the seafile fileserver? Порт по умолчанию 8082 — устраивает.
  4. Please choose a way to initialize seafile databases:
    [1] Create new ccnet/seafile/seahub databases
    [2] Use existing ccnet/seafile/seahub databases
    Я уже создал все БД, указываю 2.
  5. What is the host of mysql server? По умолчанию сервер БД localhost — localhost.
  6. What is the port of mysql server? Порт по умолчанию 3306, меня устраивает.
  7. Which mysql user to use for seafile? Указываем имя пользователя MySQL. Я пишу — seafile.
  8. What is the password for mysql user "seafile"? Указываем пароль от пользователя MySQL.
  9. Enter the existing database name for ccnet: Пишу — seafile-ccnet.
  10. Enter the existing database name for seafile: Пишу — seafile-db.
  11. Enter the existing database name for seahub: Пишу — seafile-seahub.

seafile

Проверяем настройки. Нажимаем Enter. Устанавливается Seafile Server.

seafile

Пробуем запустить seafile:

cd /opt/seafile/seafile-server-latest/
./seafile.sh start

seafile

Пробуем запустить seahub:

./seahub.sh start

При первом запуске нас попросят создать админа для seafile, укажите email и пароль.

seafile

Проверим, что сервисы seafile и seahub работают и используют порты 8000 и 8082:

netstat -plntu

seafile

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

./seahub.sh stop
./seafile.sh stop

Настройка автозапуска Seafile в качестве сервисов

Работаем под рутом. Создаём сервис seafile:

cd /etc/systemd/system/
vim seafile.service

Содержимое:

[Unit]
Description=Seafile
After=network.target
[Service]
Type=forking
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
LimitNOFILE=infinity
User=sf
Group=sf
[Install]
WantedBy=multi-user.target

Создаём сервис seahub:

vim seahub.service

Содержимое:

[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Type=forking
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop
User=sf
Group=sf
[Install]
WantedBy=multi-user.target

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

systemctl daemon-reload
systemctl start seafile
systemctl start seahub
systemctl enable seafile
systemctl enable seahub

Проверяем:

systemctl status seafile

seafile

systemctl status seahub

seafile

Службы настроены.

Установка и настройка Nginx

Выполним установку Nginx и первоначальную настройку Seafile.

Установим nginx:

apt-get install nginx -y

Проверим что настроен автозапуск:

systemctl is-enabled nginx

Если автозапуск не настроен, то можно включить:

systemctl enable nginx

Проверим:

systemctl status nginx

seafile

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

cd /etc/nginx/
vim sites-available/seafile

Содержимое:

server {
        listen 80;
        server_name _;

        server_tokens off;
        proxy_set_header X-Forwarded-For $remote_addr;

        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_read_timeout  1200s;

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

            access_log      /var/log/nginx/seahub.access.log;
            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;
            proxy_send_timeout  36000s;
            send_timeout  36000s;
        }
        location /media {
            root /opt/seafile/seafile-server-latest/seahub;
        }
}

seafile

Применяем конфигурацию:

rm -f /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

seafile

Начальная настройка Seafile Server

Работаем под пользователем sf:

su - sf

Переходим в директорию с файлами конфигурации:

cd /opt/seafile/conf/

ccnet.conf

Настраиваем ccnet.conf, указываем SERVICE_URL:

vim scnet.conf

Содержимое:

[General]
SERVICE_URL = http://46.39.246.23
[Database]
ENGINE = mysql
HOST = 127.0.0.1
PORT = 3306
USER = seafile
PASSWD = ПАРОЛЬ
DB = seafile-ccnet
CONNECTION_CHARSET = utf8

seafile.conf

Настраиваем seafile.conf, указываем host и keep_days:

vim seafile.conf

Содержимое:

[fileserver]
host = 0.0.0.0
port = 8082
[database]
type = mysql
host = 127.0.0.1
port = 3306
user = seafile
password = ПАРОЛЬ
db_name = seafile-db
connection_charset = utf8
[history]
keep_days = 30

seahub_settings.py

Настраиваем seahub_settings.py:

mkdir /opt/seafile/seahub-data/thumbnail/
mkdir /opt/seafile/seahub-data/thumbnail/thumb/
vim seahub_settings.py

Содержимое:

# -*- coding: utf-8 -*-
SECRET_KEY = "СОЛЬ"
FILE_SERVER_ROOT = 'http://46.39.246.23/seafhttp'
# For security consideration, please set to match the host/domain of your site, e.g.,
ALLOWED_HOSTS = ['.example.com'].
# Please refer https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts for details.
ALLOWED_HOSTS = ['46.39.246.23']
# Enalbe or disalbe registration on web. Default is `False`.
ENABLE_SIGNUP = False
DATABASES = {
'default': { 'ENGINE': 'django.db.backends.mysql',
'NAME': 'seafile-seahub',
'USER': 'seafile',
'PASSWORD': 'ПАРОЛЬ',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'},
}
}
ENABLE_SETTINGS_VIA_WEB = False
TIME_ZONE = 'Europe/Moscow'
LANGUAGE_CODE = 'ru'
LANGUAGES = (
('en', 'English'),
('ru', 'Русский'),
)
SITE_NAME = 'Seafile'
# Absolute filesystem path to the directory that will hold thumbnail files.
THUMBNAIL_ROOT = '/opt/seafile/seahub-data/thumbnail/thumb/'
SERVICE_URL = 'http://46.39.246.23'

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

Проверяем что сайт заработал на HTTP протоколе.

http://46.39.246.23

seafile

Проверяем, что выполняется вход под созданным e-mail и паролем админа.

Настройка HTTPS и сертификата SSL

Правим конфигурационный файл для Seafile:

vim sites-available/seafile

В "server_name _;" указываем домен:

server_name internet-lab.ru;

Перезапускаем Nginx:

service nginx restart

Переходим в директорию с файлами конфигурации:

cd /opt/seafile/conf/

Правим ccnet.conf:

vim scnet.conf

В "SERVICE_URL" указываем домен и HTTPS:

SERVICE_URL = https://internet-lab.ru

Правим seahub_settings.py:

vim seahub_settings.py

В "SERVICE_URL" указываем домен и HTTPS. В "FILE_SERVER_ROOT" указываем домен и HTTPS. В "ALLOWED_HOSTS" добавляем домен.

SERVICE_URL = https://internet-lab.ru
FILE_SERVER_ROOT = 'https://internet-lab.ru/seafhttp
ALLOWED_HOSTS = ['46.39.246.23','internet-lab.ru']

Перезапускаем Seafile:

service seafile restart
service seahub restart

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

Let's Encrypt — настройка certbot в Debian

Проверяем работу сайта по HTTPS:

ssl

Сайт работает.

Конфигурация Seafile

Переходим в директорию с файлами конфигурации:

cd /opt/seafile/conf/

Настраиваем seahub_settings.py согласно своим потребностям:

 
seahub_settings.py

Это не все настройки, больше смотрите в документации.

 

Похожие материалы

Seafile — установка на Ubuntu 18.04 LTS

Seafile — это личное облачное хранилище для хранения данных в стиле Dropbox. Сегодня мы развернём это хранилище на виртуальном сервере. В качестве гипервизора у нас ESXi 6.7 Update 1.

Seafile сервер для Linux версия 7.0.3

5 июля 2019 года вышла новая версия сервера Seafile для Linux — 7.0.3. Релиз доступен для скачивания. Прошлый раз я успешно обновил Seafile Server 6.3 до версии 7.0.2. На этот раз попробую обновиться дальше до версии 7.0.3.