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

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

Seafile

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

https://www.seafile.com

Сегодня мы установим Seafile 7.1.1 на Ubuntu 18.04 LTS.

  • Сервер с операционной системой Ubuntu 18.04 LTS
  • Seafile для безопасности запустим под отдельным пользователем.
  • В качестве БД используем MySQL 8 на том же сервере.
  • Дополнительно поднимем и настроим Nginx.

Ссылки

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

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

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

  1. Ранее я устанавливал Seafile 6.3.4, теперь установим более новую версию Seafile 7.1.1.
  2. В качестве БД мы использовали MeSQL 8 на стороннем сервере, теперь поднимем MySQL на том же сервере, что и Seafile.
  3. Пропустим создание и настройку виртуальной машины.
  4. Не будем устанавливать firewall ufw.
  5. Не используем IIS, у нас только nginx.

https://www.seafile.com

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

Установка Ubuntu Server 18.04.2 LTS на виртуальную машину VMware

https://download.seafile.com/published/seafile-manual/deploy/using_mysql.md

Мануал:

https://manual.seafile.com/

Подготовка сервера

Подготовим сервер с операционной системой Ubuntu 8.04 LTS:

Установка Ubuntu Server 18.04.2 LTS на виртуальную машину VMware

Выделяю под MySQL и Seafile отдельный диск /u01.

cd /
ls -fla | grep u01
drwxr-xr-x   3 root root       4096 Feb  3 19:14 u01

seafile

df -h

seafile

Установка MySQL 8 и создание БД

Установим MySQL 8. Процесс установки вынес в отдельную статью:

Установка MySQL 8 на Ubuntu 18.04 LTS

Создадим директорию /u01/mysql и перенесём туда каталог данных MySQL:

Перемещение базы данных MySQL 8 в Ubuntu 18.04 LTS

Для работы 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 'seafile123';
ALTER USER 'seafile'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
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;

У меня пользователь не захотел логиниться из-за настроек безопасности, поэтому я добавил команду ALTER USER из-за ошибки:

Failed to connect to MySQL: Plugin caching_sha2_password could not be loaded
ALTER USER 'seafile'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';

seafile

Дополнительные пакеты

Перед установкой Seafile 7.1.1 нам потребуется установить дополнительные пакеты:

  • python 3
  • python3-setuptools
  • python3-pip
  • python3-ldap

А также pip пакеты:

  • Pillow
  • pylibmc
  • captcha
  • jinja2
  • sqlalchemy
  • psd-tools
  • django-pylibmc
  • django-simple-captcha

Работаем под рутом.

apt-get update
apt-get install python3 python3-setuptools python3-pip python3-ldap -y
pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools \
    django-pylibmc django-simple-captcha

seafile

Подготовка к установке Seafile

Для Seafile создадим директорию /u01/seafile. Вот она.

root@seafile00:/u01# cd /u01
root@seafile00:/u01# ls -fla

seafile

Видим, что права на папку seafile есть у пользователя root, нехорошо.

Работаем под рутом. Создадим пользователя в Ubuntu, под которым будет работать Seafile. Назовём его sf. Дадим ему права на /u01/seafile.

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

seafile

Теперь права на папку /u01/seafile/ принадлежат пользователю sf.

Установка Seafile Server

Работаем под пользователем sf. Скачиваем и распаковываем Seafile Server для Linux. На текущий момент доступна версия Server for generic Linux 7.1.1 64bit.

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

su - sf
cd /u01/seafile
wget https://download.seadrive.org/seafile-server_7.1.1_x86-64.tar.gz
tar -xf seafile-server_7.1.1_x86-64.tar.gz
ll

seafile

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

  • What is the name of the server? It will be displayed on the client. Пишу имя хоста — seafile00.
  • What is the ip or domain of the server? Пишу будущее доменное имя — cloud.e.local.
  • Where do you want to put your seafile data? Определяемся, где хранить данные. У меня всё в папке /u01/seafile, путь по умолчанию будет /u01/seafile/seafile-data, меня это устраивает.
  • Which port do you want to use for the seafile fileserver? Порт по умолчанию 8082 — устраивает.
  • Please choose a way to initialize seafile databases:
    [1] Create new ccnet/seafile/seahub databases
    [2] Use existing ccnet/seafile/seahub databases
    Я уже создал все БД, указываю 2.
  • What is the host of mysql server? По умолчанию сервер БД localhost — localhost.
  • From which hosts could the mysql account be used? По умолчанию %.
  • What is the port of mysql server? Порт по умолчанию 3306, меня устраивает.
  • Which mysql user to use for seafile? Указываем имя пользователя MySQL. Я пишу seafile.
  • What is the password for mysql user "seafile"? Указываем пароль от пользователя MySQL.
  • Enter the existing database name for ccnet: Пишу seafile-ccnet.
  • Enter the existing database name for seafile: Пишу seafile-db.
  • Enter the existing database name for seahub: Пишу seafile-seahub.

seafile

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

seafile

Готово.

seafile

Работаем под пользователем sf. Пробуем запустить seafile:

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

seafile

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

./seahub.sh start

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

seafile

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

netstat -plntu

seafile

Останавливаем сервисы:

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

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

Работаем под рутом. Устанавливаем пакет:

sudo apt install nginx -y

Запускаем сервис nginx и добавляем его в автозагрузку:

systemctl start nginx
systemctl enable nginx

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

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 /u01/seafile/seafile-server-latest/seahub;
        }
    }

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

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

Настройка Seafile Server

Работаем под пользователем sf. Настраиваем ccnet.conf.

su - sf
cd /u01/seafile/conf/
vim ccnet.conf

Вносим изменения, указываем внешний URL нашего домашнего облака. Временное указываем локальный HTTP URL, потом отдельно будем менять на HTTPS, но позже:

SERVICE_URL = http://10.50.2.10:8000

Настраиваем gunicorn.conf:

vim gunicorn.conf

Вносим изменения:

bind = "0.0.0.0:8000"

Настраиваем seafile.conf:

vim seafile.conf

Вносим изменения:

[fileserver]
host = 0.0.0.0
port = 8082

[history]
keep_days = 30

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

vim seahub_settings.py

Вносим изменения:

# Устранение проблем с кодировкой UTF-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')

ALLOWED_HOSTS = ['cloud.e.local','10.50.2.10']
ENABLE_WIKI = True
DISABLE_SYNC_WITH_ANY_FOLDER = True
ENABLE_REPO_HISTORY_SETTING = False
THUMBNAIL_ROOT = '/г01/seafile/seahub-data/thumbnail/thumb/'

TIME_ZONE = 'Europe/Moscow'
LANGUAGE_CODE = 'ru'
LANGUAGES = (
    ('en', 'English'),
    ('ru', 'Русский'),
)
SITE_NAME = 'Cloud'

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

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

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

Содержимое:

[Unit]
Description=Seafile
After=network.target

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

[Install]
WantedBy=multi-user.target

seafile

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

vim seahub.service

Содержимое:

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

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

[Install]
WantedBy=multi-user.target

seafile

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

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

Проверяем:

systemctl status seafile

seafile

systemctl status seahub

seafile

netstat -plntu

seafile

Проверяем

Заходим на сервер по IP адресу http://10.50.2.10

seafile