Найти в Дзене

Seafile 11 — переход на Seafile 12

Пришла пора обновить своё домашнее облако Seafile с 11 версии на 12. Seafile — это личное хранилище для хранения данных в стиле Dropbox. Seafile — замечательный инструмент для создания личного, семейного или корпоративного файлового хранилища. Не очень сложен в установке и настройке. Исходный стенд: https://manual.seafile.com/latest/upgrade/upgrade_notes_for_12.0.x/ Делаем резервную копию баз данных и самих данных. Ещё снапшот виртуальной машины не помешает. Работаем под рутом. Версия Seafile 12.0 содержит следующие основные изменения: Версия Elasticsearch не изменена в Seafile версии 12.0. Начинаем как обычно с операционной системы. Seafile 12 поддерживает нашу ОС Ubuntu 22.04.4 LTS. Поэтому просто обновляем саму операционную систему. apt update
apt upgrade Перезагружаем сервер, убеждаемся что всё работает. Если минорная версия у вас не самая последняя, обновитесь. Seafile сервер для Linux — 11.0.12 Очистка базы данных Если у вас большое количество записей в таблице Activity в MySQL,
Оглавление

Пришла пора обновить своё домашнее облако Seafile с 11 версии на 12.

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

Исходный стенд:

  • Ubuntu 22.04.4 LTS
  • Seafile 11.0.12

https://manual.seafile.com/latest/upgrade/upgrade_notes_for_12.0.x/

Делаем резервную копию баз данных и самих данных. Ещё снапшот виртуальной машины не помешает.

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

Важные изменения в выпуске

Версия Seafile 12.0 содержит следующие основные изменения:

  • Переработанный веб-интерфейс.
  • SeaDoc теперь стабилен и предоставляет функции онлайн-заметок и документов.
  • Новый модуль вики.
  • Новый механизм корзины: удаленные файлы теперь записываются в базу данных для быстрого отображения. В старой версии удаленные файлы сканировались из истории библиотеки, что было медленно.
  • Community edition теперь также поддерживает онлайн сборку мусора (поскольку поддержка SQLite прекращена).

Изменения в конфигурации

  • Сервер уведомлений теперь упакован в свой собственный образ Docker.
  • Для установки на основе бинарных пакетов требуется новый файл .env для хранения некоторых элементов конфигурации. Эти элементы конфигурации должны быть общими для разных компонентов Seafile. Мы назвали его .env для единообразия с установкой на основе Docker.
  • Уровень сложности пароля теперь рассчитывается по алгоритму. Старые параметры USER_PASSWORD_MIN_LENGTH, USER_PASSWORD_STRENGTH_LEVEL удалены. Используется только USER_STRONG_PASSWORD_REQUIRED.
  • ADDITIONAL_APP_BOTTOM_LINKS удален, так как в боковой панели навигации больше нет нижней панели.
  • SERVICE_URL и FILE_SERVER_ROOT удалены. SERVICE_URL будет рассчитываться из SEAFILE_SERVER_PROTOCOL и SEAFILE_SERVER_HOSTNAME в файле .env.
  • ccnet.conf удален. Некоторые его параметры конфигурации перемещены в файл .env, другие считываются из параметров с тем же именем в seafile.conf.
  • Добавлены два разрешения для ролей: can_create_wiki и can_publish_wiki используются для контроля того, может ли роль создавать вики и публиковать вики. Старое разрешение роли can_publish_repo удалено.
  • Заголовок REMOTE_USER по умолчанию не передается в Seafile; если вам нужен заголовок REMOTE_USER для единого входа (SSO), необходимо изменить gunicorn.conf.py.

Другие изменения

  • Новый легкий и быстрый поисковый движок SeaSearch. SeaSearch опционален, вы по-прежнему можете использовать ElasticSearch.

Критические изменения

  • В целях безопасности WebDAV больше не поддерживает вход с учетной записью LDAP; пользователь с учетной записью LDAP должен сгенерировать токен WebDAV на странице профиля.
  • [Метки файлов] Текущая функция меток файлов устарела. Мы реализуем ее заново в версии 13.0 с новым модулем управления метаданными общего назначения.
  • Для поиска на основе ElasticSearch полнотекстовый поиск по типам файлов doc/xls/ppt больше не поддерживается. Это позволяет нам удалить зависимость от Java в стороне Seafile.
  • В диалоговом окне поиска теперь поддерживается загрузка дополнительных элементов при прокрутке вниз, а исходная отдельная страница детального поиска файлов больше не используется.
  • Боковая панель справа переработана, и редко используемая функция комментариев к файлам на этой панели удалена.
  • Развертывание Seafile с помощью бинарного пакета теперь считается устаревшим и, вероятно, не будет поддерживаться в версии 13.0. Мы рекомендуем перенести ваше текущее развертывание Seafile на основу Docker.

Изменения в ElasticSearch (только для Pro edition)

Версия Elasticsearch не изменена в Seafile версии 12.0.

Подготовка к обновлению

Начинаем как обычно с операционной системы. Seafile 12 поддерживает нашу ОС Ubuntu 22.04.4 LTS. Поэтому просто обновляем саму операционную систему.

apt update
apt upgrade

Перезагружаем сервер, убеждаемся что всё работает.

Обновление Seafile 11 до последней версии

Если минорная версия у вас не самая последняя, обновитесь.

Seafile сервер для Linux — 11.0.12

Обновление до Seafile 12

Очистка базы данных

Если у вас большое количество записей в таблице Activity в MySQL, сначала очистите эту таблицу. В противном случае обновление базы данных займет много времени.

Seafile — очистка базы данных

Я скриптом почищу:

cd /opt/seafile-server-latest
./seahub.sh python-env python3 seahub/manage.py clean_db_records
-2

Библиотеки

Установите новые системные библиотеки и библиотеки Python для вашей операционной системы.

Ubuntu 24.04/22.04:

apt-get install -y default-libmysqlclient-dev build-essential pkg-config libmemcached-dev

Debian 11:

apt-get install -y libsasl2-dev
-3

Ubuntu 24.04 / Debian 12:

sudo pip3 install future==1.0.* mysqlclient==2.2.* pillow==10.4.* sqlalchemy==2.0.* pillow_heif==0.18.0 gevent==24.2.* captcha==0.6.* django_simple_captcha==0.6.* djangosaml2==1.9.* pysaml2==7.3.* pycryptodome==3.20.* cffi==1.17.0 python-ldap==3.4.*

Ubuntu 22.04 / Debian 11:

sudo pip3 install future==1.0.* mysqlclient==2.1.* pillow==10.4.* sqlalchemy==2.0.* pillow_heif==0.18.0 gevent==24.2.* captcha==0.6.* django_simple_captcha==0.6.* djangosaml2==1.9.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 python-ldap==3.2.0
-4

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

systemctl stop nginx.service
systemctl stop seafile.service
systemctl stop seahub.service

Дистрибутив

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

sudo -u sf -i
cd /opt

Скачиваем и распаковываем новый релиз.

wget https://download.seadrive.org/seafile-server_12.0.14_x86-64.tar.gz
tar -xf seafile-server_12.0.14_x86-64.tar.gz

Обновление

Переходим в папку релиза, смотрим скрипты обновления:

cd seafile-server-12.0.14/
ls upgrade/
-5

Запускаем обновление с версии 11.0.12 на 12.0.14:

cd ./upgrade/
./upgrade_11.0_12.0.sh
-6

Настройка конфигурации

Создаём файл .env в каталоге conf.

-7

conf/.env:

TIME_ZONE=UTC
JWT_PRIVATE_KEY=xxx
SEAFILE_SERVER_PROTOCOL=https
SEAFILE_SERVER_HOSTNAME=seafile.example.com
SEAFILE_MYSQL_DB_HOST=db # your MySQL host
SEAFILE_MYSQL_DB_PORT=3306
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=<your MySQL password>
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db

Указываем собственные настройки согласно описанию изменений конфигурации выше.

JWT_PRIVATE_KEY — случайная строка длиной не менее 32 символов, может быть сгенерирована с помощью:

pwgen -s 40 1

Начиная с версии 12.0, компоненту seaf-server необходимо отправлять внутренние запросы к компоненту seahub для проверки разрешений, что приводит к ошибке 400 при загрузке файлов, если ALLOWED_HOSTS установлен неправильно. В этом случае вы можете либо удалить ALLOWED_HOSTS в seahub_settings.py, либо добавить 127.0.0.1 в список ALLOWED_HOSTS.

Перезагружаем сервер.

sudo reboot

Исправление ошибок

После перезагрузки служба seahub отказалась запускаться.

Пришлось переделать unit-файл:

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

[Service]
Environment="LC_ALL=ru_RU.UTF-8"
Type=forking
# change start to start-fastcgi if you want to run fastcgi
ExecStart=${seafile_dir}/seafile-server-latest/seahub.sh start
ExecStop=${seafile_dir}/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.target

Seafile — автозапуск

Проверка

Сервис работает.

-8

Источник:

Seafile 11 — переход на Seafile 12 | internet-lab.ru

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.