Как синхронизировать и делиться своими файлами с Seafile на Debian 10

Вступление

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

В этом руководстве вы установите и настроите Seafile на сервере Debian 10. Вы будете использовать MariaDB (вариант MySQL по умолчанию в Debian 10) для хранения данных для различных компонентов Seafile, а Apache в качестве прокси-сервера для обработки веб-трафика. После завершения этого руководства вы сможете использовать веб-интерфейс для доступа к Seafile с настольных или мобильных клиентов, что позволит вам синхронизировать файлы и обмениваться ими с другими пользователями или группами на сервере или с другими пользователями.

Предпосылки

Прежде чем начать это руководство, вам потребуется следующее:

  • Один сервер Debian 10 с минимум 2 ГБ ОЗУ настроен, следуя этому учебному руководству Initial Настройка сервера с Debian 10 , включая пользователя без полномочий root и брандмауэр.

  • Веб-сервер Apache с виртуальным хостом, настроенным для зарегистрированного домена, по адресу How Установить веб-сервер Apache в Debian 10. Следуя этому руководству, не забудьте https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-debian-10#step-5-%E2% 80% 94-setup-up-virtual-hosts- (рекомендуется) [настроить виртуальный хост], который указывает на ваше доменное имя.

  • Сервер базы данных MariaDB установлен и настроен. Выполните шаги, описанные в учебнике How Install MariaDB на Debian 10, чтобы это настроить. Пропустите Шаг 3 этого урока - «(Необязательно) Настройка аутентификации пользователя и привилегий». Вы будете только устанавливать локальные соединения с сервером базы данных, поэтому изменение метода аутентификации для пользователя root не требуется.

  • Сертификат SSL установлен на вашем сервере, следуя этой Wow для защиты Apache с руководством Let’s Encrypt на Debian 10.

  • Полностью зарегистрированное доменное имя. Этот урок будет использовать ++ повсюду.

  • Обе следующие записи DNS настроены для вашего сервера. Вы можете следить за этим introduction to DigitalOcean DNS, чтобы узнать, как их добавить.

  • Запись A с ++, указывающая на публичный IP-адрес вашего сервера.

  • Запись A с ++, указывающая на публичный IP-адрес вашего сервера.

Шаг 1 - Создание баз данных для компонентов Seafile

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

  • * Seahub *: веб-интерфейс Seafile, написанный на Python с использованием веб-инфраструктуры Django. С Seahub вы можете получать доступ, управлять и делиться своими файлами с помощью веб-браузера.

  • * Seafile server *: демон службы данных, который управляет загрузкой, загрузкой и синхронизацией необработанных файлов. Вы не взаимодействуете с сервером напрямую, а используете клиентскую программу или веб-интерфейс Seahub.

  • * Сервер Ccnet *: демон службы RPC для обеспечения внутренней связи между различными компонентами Seafile. Например, когда вы используете Seahub, он может получить доступ к данным с сервера Seafile с помощью службы Ccnet RPC.

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

Сначала войдите на сервер, используя SSH, указав свое имя пользователя и IP-адрес:

ssh @

Подключитесь к серверу базы данных MariaDB с правами администратора (root):

sudo mysql

В приглашении MariaDB используйте следующую команду SQL для создания пользователя базы данных:

CREATE USER ''@'localhost' IDENTIFIED BY '';

Далее вы создадите следующие базы данных для хранения данных трех компонентов Seafile:

  • ++ для сервера Ccnet.

  • ++ для веб-интерфейса Seahub.

  • ++ для файлового сервера Seafile.

По приглашению MariaDB создайте базы данных:

CREATE DATABASE '' CHARACTER SET = 'utf8';
CREATE DATABASE '' CHARACTER SET = 'utf8';
CREATE DATABASE '' CHARACTER SET = 'utf8';

Затем предоставьте все привилегии пользователю вашей базы данных для доступа и внесения изменений в эти базы данных:

GRANT ALL PRIVILEGES ON ''.* to ''@localhost;
GRANT ALL PRIVILEGES ON ''.* to ''@localhost;
GRANT ALL PRIVILEGES ON ''.* to ''@localhost;

Выйдите из командной строки MariaDB, набрав + exit +:

exit

Теперь, когда вы создали пользователя и базы данных, необходимые для хранения данных для каждого из компонентов Seafile, вы установите зависимости, чтобы загрузить пакет сервера Seafile.

Шаг 2 - Установка зависимостей и загрузка Seafile

Некоторые части Seafile написаны на Python и поэтому требуют для работы дополнительных модулей и программ Python. На этом этапе вы установите эти необходимые зависимости перед загрузкой и извлечением пакета сервера Seafile.

Чтобы установить зависимости с помощью + apt +, выполните следующую команду:

sudo apt install python-setuptools python-pip python-urllib3 python-requests python-mysqldb ffmpeg

Зависимости + python-setuptools + и + python-pip + контролируют установку и управление пакетами Python. Пакеты + python-urllib3 + и + python-запросы + отправляют запросы на веб-сайты. Наконец, + python-mysqldb + - это библиотека для использования MariaDB из Python, а + ffmpeg + обрабатывает мультимедийные файлы.

Для Seafile требуется + Pillow +, библиотека python для обработки изображений и + moviepy + для обработки миниатюр файлов фильмов. Эти модули недоступны в репозитории пакетов Debian, поэтому вместо этого установите их с помощью + pip +:

sudo pip install Pillow moviepy

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

Seafile создает дополнительные каталоги во время установки. Чтобы они все были организованы, создайте новый каталог и перейдите в него:

mkdir seafile
cd seafile

Теперь вы можете загрузить последнюю версию (++ на момент написания этой статьи) сервера Seafile с the веб-сайт проекта, выполнив следующую команду:

wget https://download.seadrive.org/seafile-server__x86-64.tar.gz

Seafile распределяет загрузку в виде сжатого tar-архива, что означает, что вам нужно будет распаковать его, прежде чем продолжить. Распакуйте архив с помощью + tar:

tar -zxvf seafile-server__x86-64.tar.gz

Теперь перейдите в извлеченный каталог:

cd seafile-server-

На этом этапе вы скачали и распаковали серверный пакет Seafile, а также установили необходимые зависимости. Теперь вы готовы к настройке сервера Seafile.

Шаг 3 - Настройка сервера Seafile

Seafile требуется некоторая информация о вашей настройке, прежде чем вы запустите сервисы в первый раз. Сюда входят такие данные, как имя домена, конфигурация базы данных и путь, по которому будут храниться данные. Чтобы инициировать серию вопросительных запросов для предоставления этой информации, вы можете запустить скрипт + setup_seafile_mysql.sh +, который включен в архив, который вы извлекли на предыдущем шаге.

Запустите скрипт, используя + bash:

bash setup-seafile-mysql.sh

Нажмите + ENTER, чтобы продолжить при появлении запроса.

Скрипт теперь подскажет вам ряд вопросов. Везде, где упоминаются значения по умолчанию, нажатие клавиши + ENTER + будет использовать это значение.

Этот учебник использует ++ в качестве имени сервера, но вы можете изменить его, если хотите:

Question 1

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

В поле «+ Вопрос 2 +» введите имя домена для этого экземпляра Seafile.

Question 2

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

Нажмите + ENTER +, чтобы принять значение по умолчанию для + Вопрос 3 +. Если вы настроили внешнее хранилище, например, используя NFS или блочное хранилище, вам нужно будет указать здесь путь к этому расположению.

Question 3

Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/home//seafile/seafile-data" ]

Для + Вопрос 4 + нажмите + ENTER +, чтобы принять номер порта по умолчанию.

Question 4

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

Следующая подсказка позволяет подтвердить конфигурацию базы данных. Вы можете создавать новые базы данных или использовать существующие базы данных для настройки. Для этого урока вы создали необходимые базы данных на шаге 1, поэтому выберите опцию + 2 + здесь.

-------------------------------------------------------
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 ]

Вопросы 6–9 относятся к серверу базы данных MariaDB. Вам необходимо указать имя пользователя и пароль пользователя MySQL, созданного на шаге 1, но вы можете нажать + ENTER +, чтобы принять значения по умолчанию для + host + и + port +.

What is the host of mysql server?

[ default "localhost" ]

What is the port of mysql server?

[ default "3306" ]

Which mysql user to use for seafile?

[ mysql user for seafile ]

What is the password for mysql user "seafile"?

[ password for seafile ]

После предоставления пароля скрипт запросит имена баз данных Seafile. Используйте `, ` и ++ для этого урока. Затем сценарий проверит, успешно ли установлено соединение с базами данных, прежде чем приступить к отображению сводки начальной конфигурации.

Enter the existing database name for ccnet:
[ ccnet database ]

verifying user "sammy" access to database  ...  done

Enter the existing database name for seafile:
[ seafile database ]

verifying user "sammy" access to database  ...  done

Enter the existing database name for seahub:
[ seahub database ]

verifying user "For this tutorial you have" access to database  ...  done

---------------------------------
This is your configuration
---------------------------------

   server name:            Seafile
   server ip/domain:

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

   database:               use existing
   ccnet database:
   seafile database:
   seahub database:
   database user:

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

Нажмите + ENTER + для подтверждения.

OutputGenerating ccnet configuration ...
done
Successly create configuration dir /home/sammy/seafile/ccnet.

Generating seafile configuration ...
done

Generating seahub configuration ...
----------------------------------------
Now creating seahub database tables ...
----------------------------------------
creating seafile-server-latest symbolic link ...  done

-----------------------------------------------------------------
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://github.com/haiwen/seafile/wiki
for information.

Вы будете запускать Seafile за Apache, который вы уже разрешили через брандмауэр вашего сервера. Следовательно, вам не нужно беспокоиться об открытии портов + 8082 + и + 8000 +, и вы можете игнорировать эту часть вывода.

Вы завершили первоначальную настройку сервера. На следующем шаге вы настроите веб-сервер Apache перед запуском сервисов Seafile.

Шаг 4 - Настройка веб-сервера Apache

На этом этапе вы настроите веб-сервер Apache для пересылки всех запросов в Seafile. Таким образом, использование Apache позволяет использовать URL-адрес без номера порта, включать HTTPS-соединения с Seafile и использовать функции кэширования, которые Apache обеспечивает для повышения производительности.

Чтобы начать пересылку запросов, вам нужно включить модуль + proxy_http + в конфигурации Apache. Этот модуль предоставляет функции для проксирования HTTP и HTTPS-запросов. Следующая команда включит модуль:

sudo a2enmod proxy_http

Затем обновите конфигурацию виртуального хоста ++ для пересылки запросов на файловый сервер Seafile и в веб-интерфейс Seahub.

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

sudo nano /etc/apache2/sites-enabled/-le-ssl.conf

Строки от + ServerAdmin + до + SSLCertificateKeyFile + являются частью начальной конфигурации Apache и Let Encrypt, которую вы настроили в предварительных руководствах. Добавьте выделенный контент, начиная с + Alias ​​+ и заканчивая директивой + ProxyPassReverse +:

/etc/apache2/sites-enabled/your_domain-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
   ServerAdmin
   ServerName
   ServerAlias www.
   DocumentRoot /var/www//html
   ErrorLog ${APACHE_LOG_DIR}/-error.log
   CustomLog ${APACHE_LOG_DIR}/-access.log combined

   Include /etc/letsencrypt/options-ssl-apache.conf
   SSLCertificateFile /etc/letsencrypt/live//fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live//privkey.pem

   sammy














</VirtualHost>
</IfModule>

Директива Alias ​​отображает URL-путь + / media + на локальный путь в файловой системе, которую использует Seafile. Следующая директива + Location + разрешает доступ к содержимому в этом каталоге. Директивы + ProxyPass + и + ProxyPassReverse + заставляют Apache действовать в качестве обратного прокси-сервера для этого хоста, перенаправляя запросы на + / + и + / seafhttp + на веб-интерфейс Seafile и файловый сервер, работающий на портах локального хоста ` + 8000 + и + 8082 + соответственно. Директива `+ RewriteRule + передает все запросы в + / seafhttp + без изменений и останавливает обработку дальнейших правил (+ [QSA, L] +).

Сохраните и выйдите из файла.

Проверьте, есть ли какие-либо синтаксические ошибки в конфигурации виртуального хоста:

sudo apache2ctl configtest

Если он сообщает + Синтаксис OK +, то нет никаких проблем с вашей конфигурацией. Перезапустите Apache, чтобы изменения вступили в силу:

sudo systemctl restart apache2

Теперь вы настроили Apache для работы в качестве обратного прокси-сервера для файлового сервера Seafile и Seahub. Затем вы обновите URL-адреса в конфигурации Seafile перед запуском сервисов.

Шаг 5 - Обновление конфигурации Seafile и запуск сервисов

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

Откройте + ccnet.conf + в текстовом редакторе:

nano /home//seafile/conf/ccnet.conf

В верхней части файла, внутри блока + [General] +, находится директива + SERVICE_URL +. Это будет выглядеть так:

Обновление /home/sammy/seafile/conf/ccnet.conf

. . .
SERVICE_URL=http://www.example.com:8000
. . .

Измените этот параметр, чтобы он указывал на ваш домен. Убедитесь, что указанный вами URL-адрес использует протокол HTTPS и не содержит номера порта:

Обновление /home/sammy/seafile/conf/ccnet.conf

. . .
SERVICE_URL = ://
. . .

Сохраните и выйдите из файла после добавления содержимого.

Теперь откройте + seahub_settings.py + в текстовом редакторе:

nano /home//seafile/conf/seahub_settings.py

Добавьте параметр + FILE_SERVER_ROOT + в файл, чтобы указать путь, по которому файловый сервер прослушивает загрузки и скачивания файлов:

Обновление /home/sammy/seafile/conf/seahub_settings.py

# -*- coding: utf-8 -*-
SECRET_KEY = "..."
your_domain
# ...

Сохраните и выйдите из + seahub_settings.py +.

Теперь вы можете запустить сервис Seafile и интерфейс Seahub:

cd /home//seafile/seafile-server-
./seafile.sh start
./seahub.sh start

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

OutputWhat is the email for the admin account?
[ admin email ]

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

Enter the password again:
[ admin password again ]

----------------------------------------
Successfully created seafile admin
----------------------------------------
Seahub is started

Done.

Откройте + https: // + в веб-браузере и войдите в систему, используя адрес электронной почты и пароль администратора Seafile.

изображение: https: //assets.digitalocean.com/articles/seafile_1804/step5a.png [Экран входа в веб-интерфейс Seafile]

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

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

Шаг 6 - Включение сервера Seafile для запуска при загрузке системы

Чтобы позволить файловому серверу и веб-интерфейсу автоматически запускаться при загрузке, вы можете создать соответствующие им сервисные файлы + systemd + и активировать их.

Создайте служебный файл + systemd + для файлового сервера Seafile:

sudo nano /etc/systemd/system/seafile.service

Добавьте следующее содержимое в файл:

Создать /etc/systemd/system/seafile.service

[Unit]
Description=Seafile
After=network.target mysql.service

[Service]
Type=forking
ExecStart=/home//seafile/seafile-server-latest/seafile.sh start
ExecStop=/home//seafile/seafile-server-latest/seafile.sh stop
User=
Group=

[Install]
WantedBy=multi-user.target

Здесь строки + ExectStart + и + ExecStop + указывают команды, которые запускаются для запуска и остановки службы Seafile. Служба будет работать с ++ в качестве + User и` + Group`. Строка + After + указывает, что служба Seafile запустится после запуска сети и запуска службы MariaDB.

Сохраните + seafile.service + и выйдите.

Создайте служебный файл + systemd + для веб-интерфейса Seahub:

sudo nano /etc/systemd/system/seahub.service

Это похоже на сервис Seafile. Разница лишь в том, что веб-интерфейс запускается после службы Seafile. Добавьте следующее содержимое в этот файл:

Создать /etc/systemd/system/seahub.service

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

[Service]
Type=forking
ExecStart=/home//seafile/seafile-server-latest/seahub.sh start
ExecStop=/home//seafile/seafile-server-latest/seahub.sh stop
User=
Group=

[Install]
WantedBy=multi-user.target

Сохраните + seahub.service + и выйдите.

Вы можете узнать больше о файлах системных модулей в учебнике Understanding Systemd Units и Unit Files.

Наконец, чтобы включить автоматический запуск служб Seafile и Seahub при загрузке, выполните следующие команды:

sudo systemctl enable seafile.service
sudo systemctl enable seahub.service

Когда сервер будет перезагружен, Seafile запустится автоматически.

На этом этапе вы завершили настройку сервера и теперь можете протестировать каждую из служб.

Шаг 7 - Тестирование функции синхронизации и обмена файлами

На этом шаге вы протестируете функции синхронизации файлов и обмена ими на сервере, который вы настроили, и убедитесь, что они работают правильно. Для этого вам необходимо установить клиентскую программу Seafile на отдельном компьютере и / или мобильном устройстве.

Посетите страницу download на сайте Seafile и следуйте инструкциям по установке последней версии клиентской программы на ваш компьютер. Клиенты Seafile доступны для различных дистрибутивов Linux (Ubuntu, Debian, Fedora, Centos / RHEL, Arch Linux), MacOS и Windows. Мобильные клиенты доступны для устройств Android и iPhone / iPad в соответствующих магазинах приложений.

После того, как вы установили клиент Seafile, вы можете протестировать функциональность синхронизации файлов и обмена ими.

Откройте клиентскую программу Seafile на вашем компьютере или устройстве. Примите местоположение по умолчанию для папки Seafile и нажмите * Далее *.

В следующем окне введите адрес сервера, имя пользователя и пароль, затем нажмите * Логин *.

На домашней странице щелкните правой кнопкой мыши * Моя библиотека * и выберите * Синхронизировать эту библиотеку *. Примите значение по умолчанию для местоположения на вашем компьютере или устройстве.

изображение: https: //assets.digitalocean.com/articles/seafile_1804/step7a.png [клиент Seafile - синхронизация библиотеки по умолчанию]

Добавьте файл, например документ или фотографию, в папку * Моя библиотека *. Через некоторое время файл будет загружен на сервер. На следующем снимке экрана показан файл * photo.jpg *, скопированный в папку * My Library *.

image: https: //assets.digitalocean.com/articles/seafile_1804/step7b.png [Добавить файл в библиотеку по умолчанию с компьютера]

Теперь войдите в веб-интерфейс по адресу + https: // + и убедитесь, что ваш файл присутствует на сервере.

изображение: https: //assets.digitalocean.com/articles/seafile_1804/step7c.png [Страница моей библиотеки для проверки синхронизации файла]

Нажмите * Share * рядом с файлом, чтобы создать ссылку для загрузки этого файла, которой вы можете поделиться.

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

Заключение

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

Если доступна новая версия сервера, обратитесь к разделу руководства upgrade, чтобы узнать, как выполнить обновление.

Related