Merge pull request #629 from haiwen/seafile_binary_upgrade_12_to_13
Some checks are pending
Deploy CI - 13.0 / deploy (push) Waiting to run

seafile binary upgrade 12 to 13
This commit is contained in:
Daniel Pan 2025-12-03 15:16:00 +08:00 committed by GitHub
commit 386aee59d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -37,41 +37,33 @@ Deploying Seafile with binary package is no longer supported for community editi
Elasticsearch version is not changed in Seafile version 13.0 Elasticsearch version is not changed in Seafile version 13.0
## New system libraries (TO be updated) ## New system libraries
=== "Ubuntu 24.04/22.04" === "Ubuntu 24.04/22.04"
```sh ```sh
apt-get install -y default-libmysqlclient-dev build-essential pkg-config libmemcached-dev apt-get install -y python3 python3-dev python3-setuptools python3-pip python3-ldap python3-rados libmysqlclient-dev memcached libmemcached-dev redis-server libhiredis-dev ldap-utils libldap2-dev python3.12-venv default-libmysqlclient-dev build-essential pkg-config
``` ```
=== "Debian 11" === "Debian 12/13"
```sh ```sh
apt-get install -y libsasl2-dev apt-get install -y python3 python3-dev python3-setuptools python3-pip python3-ldap python3-rados libmariadb-dev-compat memcached libmemcached-dev redis-server libhiredis-dev ldap-utils libldap2-dev libsasl2-dev pkg-config python3.13-venv
``` ```
## New Python libraries (TO be updated) ## New Python libraries
Note, you should install Python libraries system wide using root user or sudo mode. Note, you should install Python libraries system wide using root user or sudo mode.
=== "Ubuntu 24.04 / Debian 12" === "Ubuntu 24.04 / Debian 12"
```sh ```sh
sudo pip3 install future==1.0.* mysqlclient==2.2.* pillow==10.4.* sqlalchemy==2.0.* pillow_heif==0.18.0 \ pip3 install --timeout=3600 boto3 oss2 twilio configparser pytz \
gevent==24.2.* captcha==0.6.* django_simple_captcha==0.6.* djangosaml2==1.9.* \ sqlalchemy==2.0.* pymysql==1.1.* jinja2 django-pylibmc pylibmc redis django-redis psd-tools lxml \
pysaml2==7.3.* pycryptodome==3.20.* cffi==1.17.0 python-ldap==3.4.* django==5.2.* cffi==1.17.1 future==1.0.* mysqlclient==2.2.* captcha==0.7.* django_simple_captcha==0.6.* \
pyjwt==2.10.* djangosaml2==1.11.* pysaml2==7.5.* pycryptodome==3.23.* python-ldap==3.4.* pillow==11.3.* pillow-heif==1.0.* cairosvg==2.8.*
``` ```
=== "Ubuntu 22.04 / Debian 11"
```sh
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
```
## Upgrade to 13.0 (for binary installation) ## Upgrade to 13.0 (for binary installation)
The following instruction is for binary package based installation. If you use Docker based installation, please see [*Updgrade Docker*](./upgrade_docker.md) The following instruction is for binary package based installation. If you use Docker based installation, please see [*Updgrade Docker*](./upgrade_docker.md)
@ -85,41 +77,79 @@ If you have a large number of `Activity` in MySQL, clear this table first [Clean
Install new system libraries and Python libraries for your operation system as documented above. Install new system libraries and Python libraries for your operation system as documented above.
### 3) Stop Seafile-11.0.x server ### 3) Stop Seafile-12.0.x server
In the folder of Seafile 11.0.x, run the commands: In the folder of Seafile 12.0.x, run the commands:
```sh ```sh
./seahub.sh stop
./seafile.sh stop ./seafile.sh stop
./seahub.sh stop
``` ```
### 4) Run Seafile 12.0.x upgrade script ### 4) Run Seafile 13.0.x upgrade script
In the folder of Seafile 12.0.x, run the upgrade script In the folder of Seafile 13.0.x, run the upgrade script
```sh ```sh
upgrade/upgrade_11.0_12.0.sh upgrade/upgrade_12.0_13.0.sh
``` ```
### 5) Create the `.env` file in `conf/` directory ### 5) Modify the `.env` file in `conf/` directory
conf/.env conf/.env
```env ```env
TIME_ZONE=UTC IS_PRO_VERSION=true
JWT_PRIVATE_KEY=xxx JWT_PRIVATE_KEY=<Your jwt private key>
SEAFILE_SERVER_PROTOCOL=https SEAFILE_SERVER_PROTOCOL=https
SEAFILE_SERVER_HOSTNAME=seafile.example.com SEAFILE_SERVER_HOSTNAME=seafile.example.com
SEAFILE_MYSQL_DB_HOST=db # your MySQL host SEAFILE_MYSQL_DB_HOST=<your database host>
SEAFILE_MYSQL_DB_PORT=3306 SEAFILE_MYSQL_DB_PORT=3306
SEAFILE_MYSQL_DB_USER=seafile SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=<your MySQL password> SEAFILE_MYSQL_DB_PASSWORD=<your MySQL password>
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
## Cache
CACHE_PROVIDER=redis # options: redis (recommend), memcached
### Redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
### Memcached
MEMCACHED_HOST=memcached
MEMCACHED_PORT=11211
``` ```
!!! tip
Redis is recommended as the cache server, you need to install the following dependencies.
```sh
apt-get install -y redis-server libhiredis-dev
# activate the venv
source python-venv/bin/activate
pip3 install redis django-redis
systemctl enable --now redis-server
```
If you are using memcached as the cache server, you need to install the following dependencies.
```sh
apt-get install memcached libmemcached-dev -y
# activate the venv
source python-venv/bin/activate
pip3 install pylibmc django-pylibmc
systemctl enable --now memcached
```
!!! tip !!! tip
JWT_PRIVATE_KEY, A random string with a length of no less than 32 characters, can be generated by JWT_PRIVATE_KEY, A random string with a length of no less than 32 characters, can be generated by
@ -127,9 +157,9 @@ SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
pwgen -s 40 1 pwgen -s 40 1
``` ```
### 6) Start Seafile-12.0.x server ### 6) Start Seafile-13.0.x server
In the folder of Seafile 12.0.x, run the command: In the folder of Seafile 13.0.x, run the command:
``` ```
./seafile.sh start # starts seaf-server ./seafile.sh start # starts seaf-server
@ -138,15 +168,23 @@ In the folder of Seafile 12.0.x, run the command:
### 7) (Optional) Upgrade notification server ### 7) (Optional) Upgrade notification server
Since seafile 12.0, we use docker to deploy the notification server. Please follow the document of [notification server](../extension/notification-server.md) to re-deploy notification server.
!!! note Notification server and Seafile binary package
Notification server is designed to be work with Docker based deployment. To make it work with **Seafile binary package** on the same server, you will need to add Nginx rules for notification server properly.
### 8) (Optional) Upgrade SeaDoc from 1.0 to 2.0 ### 8) (Optional) Upgrade SeaDoc from 1.0 to 2.0
Since seafile 12.0, we use docker to deploy the seadoc server. Please see the document [Setup SeaDoc](../extension/setup_seadoc.md) to install SeaDoc on a separate machine and integrate with your binary packaged based Seafile server v13.0.
!!! note "SeaDoc and Seafile binary package"
Deploying SeaDoc and **Seafile binary package** on the same server is no longer officially supported. You will need to add Nginx rules for SeaDoc server properly.
## FAQ ## FAQ
We have documented common issues encountered by users when upgrading to version 12.0 in our FAQ <https://cloud.seatable.io/dtable/external-links/7b976c85f504491cbe8e/?tid=0000&vid=0000>. We have documented common issues encountered by users when upgrading to version 13.0 in our FAQ <https://cloud.seatable.io/dtable/external-links/7b976c85f504491cbe8e/?tid=0000&vid=0000>.
If you encounter any issue, please give it a check. If you encounter any issue, please give it a check.