Настройка SeaFile

Материал из wiki

Перед установкой любых пакетов нам необходимо обновить репозиторий Ubuntu. $ apt-get update $ apt-get upgrade $ apt install mc Теперь установите python 3.x со всеми зависимостями, необходимыми для установки сервера Seafile, используя приведенные ниже команды apt. $ apt install python3 libpython3.8 python3-setuptools python3-pil python3-ldap python3-urllib3 ffmpeg python3-pip python3-mysqldb python3-memcache python3-requests libmemcached-dev После этого установите дополнительные пакеты Python из репозитория PyPI с помощью приведенной ниже команды pip. $ pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha python3-ldap Установите и настройте MariaDB $ apt install mariadb-server -y $ systemctl start mariadb $ systemctl enable mariadb Далее нам нужно настроить корневой пароль MariaDB с помощью команды «mysql_secure_installation». $ mysql_secure_installation Теперь вас спросят о конфигурации MariaDB и введите надежный пароль root для MariaDB. > Enter current password for root (enter for none): Press Enter > Set root password? [Y/n] Y > Remove anonymous users? [Y/n] Y > Disallow root login remotely? [Y/n] Y > Remove test database and access to it? [Y/n] Y > Reload privilege tables now? [Y/n] Y Войдите в оболочку MySQL, используя приведенную ниже команду.

$ mysql -u root -p 
Теперь создайте новые базы данных «ccnet-db», «seafile-db», «seahub-db» и создайте нового пользователя «seafile». Затем предоставьте все 3 права доступа к базе данных пользователю «seafile».

>>create database `ccnet-db` character set = 'utf8'; >>create database `seafile-db` character set = 'utf8'; >>create database `seahub-db` character set = 'utf8'; >>create user 'seafile'@'localhost' identified by 'Hakase-Seafile01@'; >>GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost; >>GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost; >>GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost; >> flush privileges; >>quit Создаем учетную запись seafile, от которой будет работать наш сервис: $ useradd seafile -r Создаем каталог, в который загрузим установочные файлы Seafile: $ mkdir -p /opt/seafile/bin загружаем архив: $ wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_9.0.2_x86-64.tar.gz И распаковываем его в каталог /opt/seafile/bin: $ tar zxf seafile-server_*.tar.gz -C /opt/seafile/bin --strip-components 1 Назначим в качестве владельца каталога seafile и распакованных файлов ранее созданного пользователя: $ chown -R seafile:seafile /opt/seafile Заходим под пользователем seafile: $ su seafile Переходим в каталог с установочными файлами и запускаем скрипт: $ cd /opt/seafile/bin $ ./setup-seafile-mysql.sh Мы увидим приветствие мастера установки. Просто нажимаем ENTER:


This script will guide you to setup your seafile server using MySQL. Make sure you have read seafile server manual at

       https://download.seafile.com/published/seafile-manual/home.md

Press ENTER to continue


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

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

Вводим IP-адрес или имя сервера, по которому можно подключиться к серверу:

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

Вводим порт, на котором должен слушать сервис или оставляем 8082:

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

Выбираем, использовать имеющуюся базу или создать новую. 2 database host: default localhost: enter database port: default on mysql normal port '3306': enter database user is 'seafile' with password 'Hakase-Seafile01@' ccnet database: 'ccnet-db' seafile database: 'seafile-db' seahub database: 'seahub-db' Установка и настройка сервера Seafile успешно завершена. Файловый сервер seafile будет работать служба seahub будет работать через порт «8000».

Внесем изменения в конфигурационный файл:

$ nano /opt/seafile/conf/gunicorn.conf.py

Отредактируем строку

bind = "0.0.0.0:8000"

Теперь нам нужно запустить 2 сервиса:

seafile fileserver — сервер, принимающий запросы от клиентов. seahub — веб-сервер на python. Стартуем первый: $ /opt/seafile/bin/seafile.sh start Мы должны увидеть:

Starting seafile server, please wait ...

    • Message: 16:02:58.146: seafile-controller.c(621): No seafevents.

Seafile server started

Done. Запускаем второй сервис: $ /opt/seafile/bin/seahub.sh start Адрес электронной почты администратора (это же будет логин администратора):

What is the email for the admin account? [ admin email ] postmaster@dmosk.ru

Пароль, который будет использоваться для администратора (вводим дважды):

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

Enter the password again: [ admin password again ]

Мы должны увидеть:

Seahub is started

Done. Включение HTTPS с Nginx $ sudo apt install nginx -y $ sudo systemctl start nginx $ sudo systemctl enable nginx Создайте файл конфигурации для seafile в /etc/nginx/conf.d: $ touch /etc/nginx/conf.d/seafile.conf Подготовка Nginx на Debian/Ubuntu¶ Создайте файл конфигурации для seafile в /etc/nginx/sites-available/: $ touch /etc/nginx/sites-available/seafile.conf Удалите файлы по умолчанию в /etc/nginx/sites-enabled/и /etc/nginx/sites-available: $ rm /etc/nginx/sites-enabled/default $ rm /etc/nginx/sites-available/default Создайте символическую ссылку: $ ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf Скопируйте следующий образец файла конфигурации Nginx в только что созданный файл /etc/nginx/sites-available/seafile.conf В файле CONF необходимо изменить следующие параметры: Имя сервера (server_name):


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

} Наконец, убедитесь, что ваш файл seafile.conf не содержит синтаксических ошибок, и перезапустите Nginx, чтобы изменения конфигурации вступили в силу: $ nginx -t $ nginx -s reload

Настройка автозапуска

В нашем примере были разово запущены сервисы, которые перестанут работать после перезагрузки сервера. Для решения задачи автозапуска мы создадим два юнита в systemd.

С предыдущей настройки мы вошли в консоль под пользователем seafile. Оставаясь в нем, остановим ранее запущенные сервисы:

/opt/seafile/bin/seahub.sh stop
/opt/seafile/bin/seafile.sh stop

Вводим команду для создания первого юнита:

systemctl edit --full --force seafile

[Unit] Description=Seafile Service After=network.target

[Service] User=seafile Group=seafile Type=forking ExecStart=/opt/seafile/bin/seafile.sh start ExecStop=/opt/seafile/bin/seafile.sh stop ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure LimitNOFILE=infinity

[Install] WantedBy=multi-user.target


Создаем второй юнит:

systemctl edit --full --force seahub

[Unit] Description=Seahub Service After=network.target

[Service] User=seafile Group=seafile Type=forking ExecStart=/opt/seafile/bin/seahub.sh start ExecStop=/opt/seafile/bin/seahub.sh stop ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure

[Install] WantedBy=multi-user.target


Разрешаем запуск созданных сервисов:

systemctl enable seafile seahub

Стартуем их:

systemctl start seafile seahub

Проверяем состоянию запущенных служб:

systemctl status seafile seahub

Пробуем снова зайти на веб-интерфейс Seafile.


Установите Certbot и его плагин Nginx с помощью apt: sudo apt install certbot python3-certbot-nginx Получение SSL-сертификата (example.com меняете на своё) sudo certbot --nginx -d example.com Ваши сертификаты загружены, установлены и загружены. Попробуйте перезагрузить свой веб-сайт с помощью https:// Заходим на Seafile >Системный админитсратор >Настройки SERVICE_URL https://example.com URL адрес сервера, например: https://cloud.example.com или http://192.168.1.2:8000

FILE_SERVER_ROOT https://example.com/seafhttp Внутренний URL адрес для скачивания/загрузки файлов. Пользователи не смогут скачивать/загружать файлы, если это неправильно настроено. Если у вас Seafile установлен за Nginx/Apache, это должно быть SERVICE_URL/seafhttp, например: https://cloud.example.com/seafhttp .