diff --git a/manual/config/README.md b/manual/config/README.md
index 2ca61ca3d..423b138ec 100644
--- a/manual/config/README.md
+++ b/manual/config/README.md
@@ -4,7 +4,7 @@
The config files used in Seafile include:
-* [environment variables](.env.md): contains environment variables, the items here are shared between different components. Newly introduced components, like sdoc-server and notificaiton server, read configuraitons from environment variables and have no config files.
+* [environment variables](env.md): contains environment variables, the items here are shared between different components. Newly introduced components, like sdoc-server and notificaiton server, read configuraitons from environment variables and have no config files.
* [seafile.conf](seafile-conf.md): contains settings for seafile daemon and fileserver.
* [seahub_settings.py](seahub_settings_py.md): contains settings for Seahub
* [seafevents.conf](seafevents-conf.md): contains settings for background tasks and file search.
diff --git a/manual/config/seafile-conf.md b/manual/config/seafile-conf.md
index ffcf9d752..4616b597b 100644
--- a/manual/config/seafile-conf.md
+++ b/manual/config/seafile-conf.md
@@ -290,7 +290,6 @@ You may configure Seafile to use various kinds of object storage backends.
- [S3 or S3-compatible object storage](../setup/setup_with_s3.md)
- [Ceph RADOS](../setup/setup_with_ceph.md)
-- [Alibaba Cloud OSS](../setup/setup_with_oss.md)
- [OpenStack Swift](../setup/setup_with_swift.md)
You may also configure Seafile to use [multiple storage backends](../setup/setup_with_multiple_storage_backends.md) at the same time.
diff --git a/manual/extension/libreoffice_online.md b/manual/extension/libreoffice_online.md
index f3d9ef6ad..ff193f901 100644
--- a/manual/extension/libreoffice_online.md
+++ b/manual/extension/libreoffice_online.md
@@ -21,10 +21,8 @@
=== "Deploy from binary packages"
- Please follow the links to enable https:
+ Please follow the links to enable https by [Nginx](../setup_binary/https_with_nginx.md)
- - [Nginx](../setup_binary/https_with_nginx.md)
- - [Apache](../setup_binary/https_with_apache.md)
Download the `collabora.yml`
diff --git a/manual/setup_binary/deploy_in_a_cluster.md b/manual/setup_binary/deploy_in_a_cluster.md
index 9ab9268df..41e38d361 100644
--- a/manual/setup_binary/deploy_in_a_cluster.md
+++ b/manual/setup_binary/deploy_in_a_cluster.md
@@ -198,10 +198,7 @@ You also need to add the settings for backend cloud storage systems to the confi
Nginx/Apache with HTTP need to set it up on each machine running Seafile server. This is make sure only port 80 need to be exposed to load balancer. (HTTPS should be setup at the load balancer)
-Please check the following documents on how to setup HTTP with Nginx/Apache. (HTTPS is not needed)
-
-* [Nginx](./https_with_nginx.md)
-* [Apache](./https_with_apache.md)
+Please check the following documents on how to setup HTTP with [Nginx](./https_with_nginx.md). (HTTPS is not needed)
### Run and Test the Single Node
diff --git a/manual/setup_binary/https_with_apache.md b/manual/setup_binary/https_with_apache.md
deleted file mode 100644
index f6a3ae22d..000000000
--- a/manual/setup_binary/https_with_apache.md
+++ /dev/null
@@ -1,197 +0,0 @@
-# Enabling HTTPS with Apache
-
-After completing the installation of [Seafile Server Community Edition](./installation_ce.md) and [Seafile Server Professional Edition](./installation_pro.md), communication between the Seafile server and clients runs over (unencrypted) HTTP. While HTTP is ok for testing purposes, switching to HTTPS is imperative for production use.
-
-HTTPS requires a SSL certificate from a Certificate Authority (CA). Unless you already have a SSL certificate, we recommend that you get your SSL certificate from [Let’s Encrypt](https://letsencrypt.org/) using Certbot. If you have a SSL certificate from another CA, skip the section "Getting a Let's Encrypt certificate".
-
-A second requirement is a reverse proxy supporting SSL. [Apache](https://httpd.apache.org/), a popular web server and reverse proxy, is a good option. The full documentation of Apache is available at https://httpd.apache.org/docs/.
-
-The recommended reverse proxy is Nginx. You find instructions for [enabling HTTPS with Nginx here](./https_with_nginx.md).
-
-## Setup
-
-The setup of Seafile using Apache as a reverse proxy with HTTPS is demonstrated using the sample host name `seafile.example.com`.
-
-This manual assumes the following requirements:
-
-* Seafile Server Community Edition/Professional Edition was set up according to the instructions in this manual
-* A host name points at the IP address of the server and the server is available on port 80 and 443
-
-If your setup differs from thes requirements, adjust the following instructions accordingly.
-
-The setup proceeds in two steps: First, Apache is installed. Second, a SSL certificate is integrated in the Apache configuration.
-
-### Installing Apache
-
-Install and enable apache modules:
-
-```bash
-# Ubuntu
-$ sudo a2enmod rewrite
-$ sudo a2enmod proxy_http
-```
-
-**Important: Due to the [security advisory](https://www.djangoproject.com/weblog/2013/aug/06/breach-and-django/) published by Django team, we recommend to disable [GZip compression](http://httpd.apache.org/docs/2.2/mod/mod_deflate.html) to mitigate [BREACH attack](http://breachattack.com/). No version earlier than Apache 2.4 should be used.**
-
-### Configuring Apache
-
-Modify Apache config file. For CentOS, this is `vhost.conf.` For Debian/Ubuntu, this is `sites-enabled/000-default`.
-
-```apache
-
- ServerName seafile.example.com
- # Use "DocumentRoot /var/www/html" for CentOS
- # Use "DocumentRoot /var/www" for Debian/Ubuntu
- DocumentRoot /var/www
- Alias /media /opt/seafile/seafile-server-latest/seahub/media
-
- AllowEncodedSlashes On
-
- RewriteEngine On
-
-
- Require all granted
-
-
- #
- # seafile fileserver
- #
- ProxyPass /seafhttp http://127.0.0.1:8082
- ProxyPassReverse /seafhttp http://127.0.0.1:8082
- RewriteRule ^/seafhttp - [QSA,L]
-
- #
- # seahub
- #
- SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
- ProxyPreserveHost On
- ProxyPass / http://127.0.0.1:8000/
- ProxyPassReverse / http://127.0.0.1:8000/
-
-```
-
-### Getting a Let's Encrypt certificate
-
-Getting a Let's Encrypt certificate is straightforward thanks to [Certbot](https://certbot.eff.org/). Certbot is a free, open source software tool for requesting, receiving, and renewing Let's Encrypt certificates.
-
-First, go to the [Certbot](https://certbot.eff.org/) website and choose your web server and OS.
-
-![grafik](../images/certbot.png)
-
-Second, follow the detailed instructions then shown.
-
-![grafik](../images/certbot-step2.png)
-
-
-
-We recommend that you get just a certificate and that you modify the Apache configuration yourself:
-
-```bash
-sudo certbot --apache certonly
-```
-
-Follow the instructions on the screen.
-
-Upon successful verification, Certbot saves the certificate files in a directory named after the host name in ```/etc/letsencrypt/live```. For the host name seafile.example.com, the files are stored in `/etc/letsencrypt/live/seafile.example.com`.
-
-### Adjusting Apache configuration
-
-To use HTTPS, you need to enable mod_ssl:
-
-```bash
-$ sudo a2enmod ssl
-```
-
-Then modify your Apache configuration file. Here is a sample:
-
-```apache
-
- ServerName seafile.example.com
- DocumentRoot /var/www
-
- SSLEngine On
- SSLCertificateFile /etc/letsencrypt/live/seafile.example.com/fullchain.pem; # Path to your fullchain.pem
- SSLCertificateKeyFile /etc/letsencrypt/live/seafile.example.com/privkey.pem; # Path to your privkey.pem
-
- Alias /media /opt/seafile/seafile-server-latest/seahub/media
-
-
- Require all granted
-
-
- RewriteEngine On
-
- #
- # seafile fileserver
- #
- ProxyPass /seafhttp http://127.0.0.1:8082
- ProxyPassReverse /seafhttp http://127.0.0.1:8082
- RewriteRule ^/seafhttp - [QSA,L]
-
- #
- # seahub
- #
- SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
- ProxyPreserveHost On
- ProxyPass / http://127.0.0.1:8000/
- ProxyPassReverse / http://127.0.0.1:8000/
-
-```
-
-Finally, make sure the virtual host file does not contain syntax errors and restart Apache for the configuration changes to take effect:
-
-```bash
-sudo service apache2 restart
-```
-
-### Modifying seahub_settings.py
-
-The `SERVICE_URL` in [seahub_settings.py](../config/seahub_settings_py.md) informs Seafile about the chosen domain, protocol and port. Change the `SERVICE_URL`so as to account for the switch from HTTP to HTTPS and to correspond to your host name (the `http://`must not be removed):
-
-
-```python
-SERVICE_URL = 'https://seafile.example.com'
-```
-
-The `FILE_SERVER_ROOT` in [seahub_settings.py](../config/seahub_settings_py.md) informs Seafile about the location of and the protocol used by the file server. Change the `FILE_SERVER_ROOT`so as to account for the switch from HTTP to HTTPS and to correspond to your host name (the trailing `/seafhttp` must not be removed):
-
-```python
-FILE_SERVER_ROOT = 'https://seafile.example.com/seafhttp'
-```
-
-Note: The `SERVICE_URL` and `FILE_SERVER_ROOT` can also be modified in Seahub via System Admininstration > Settings. If they are configured via System Admin and in seahub_settings.py, the value in System Admin will take precedence.
-
-
-### Modifying seafile.conf (optional)
-
-To improve security, the file server should only be accessible via Apache.
-
-Add the following line in the [fileserver] block on `seafile.conf` in `/opt/seafile/conf`:
-
-```ini
-host = 127.0.0.1 ## default port 0.0.0.0
-```
-
-After his change, the file server only accepts requests from Apache.
-
-### Starting Seafile and Seahub
-
-Restart the seaf-server and Seahub for the config changes to take effect:
-
-```bash
-$ su seafile
-$ cd /opt/seafile/seafile-server-latest
-$ ./seafile.sh restart
-$ ./seahub.sh restart
-```
-
-## Troubleshooting
-
-If there are problems with paths or files containing spaces, make sure to have at least Apache 2.4.12.
-
-References
-
- * https://github.com/haiwen/seafile/issues/1258#issuecomment-188866740
- * https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1284641
- * https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1284641/comments/5
- * https://svn.apache.org/viewvc/httpd/httpd/tags/2.4.12/CHANGES?view=markup#l45
diff --git a/manual/setup_binary/https_with_nginx.md b/manual/setup_binary/https_with_nginx.md
index 97210e009..530e14e46 100644
--- a/manual/setup_binary/https_with_nginx.md
+++ b/manual/setup_binary/https_with_nginx.md
@@ -6,8 +6,6 @@ HTTPS requires a SSL certificate from a Certificate Authority (CA). Unless you a
A second requirement is a reverse proxy supporting SSL. [Nginx](http://nginx.org/), a popular and resource-friendly web server and reverse proxy, is a good option. Nginx's documentation is available at http://nginx.org/en/docs/.
-If you prefer Apache, you find instructions for [enabling HTTPS with Apache here](./https_with_apache.md).
-
## Setup
The setup of Seafile using Nginx as a reverse proxy with HTTPS is demonstrated using the sample host name `seafile.example.com`.
@@ -25,14 +23,9 @@ The setup proceeds in two steps: First, Nginx is installed. Second, a SSL certif
Install Nginx using the package repositories:
-=== "Debian/Ubuntu"
- ```sh
- sudo apt install nginx -y
- ```
-=== "CentOS"
- ```bash
- sudo yum install nginx -y
- ```
+```sh
+sudo apt install nginx -y
+```
After the installation, start the server and enable it so that Nginx starts at system boot:
@@ -43,45 +36,28 @@ sudo systemctl enable nginx
### Preparing Nginx
-The configuration of a proxy server in Nginx differs slightly between CentOS and Debian/Ubuntu. Additionally, the restrictive default settings of SELinux's configuration on CentOS require a modification.
-
-=== "Debian/Ubuntu"
- Create a configuration file for seafile in `/etc/nginx/sites-available/`:
-
- ```bash
- touch /etc/nginx/sites-available/seafile.conf
- ```
+Create a configuration file for seafile in `/etc/nginx/sites-available/`:
- Delete the default files in `/etc/nginx/sites-enabled/` and `/etc/nginx/sites-available`:
-
- ````bash
- rm /etc/nginx/sites-enabled/default
- rm /etc/nginx/sites-available/default
- ````
-
- Create a symbolic link:
+```bash
+touch /etc/nginx/sites-available/seafile.conf
+```
- ````bash
- ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
- ````
-=== "CentOS"
+Delete the default files in `/etc/nginx/sites-enabled/` and `/etc/nginx/sites-available`:
- Switch SELinux into permissive mode and perpetuate the setting:
+````bash
+rm /etc/nginx/sites-enabled/default
+rm /etc/nginx/sites-available/default
+````
- ``` bash
- sudo setenforce permissive
- sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
- ```
+Create a symbolic link:
- Create a configuration file for seafile in `/etc/nginx/conf.d`:
-
- ```bash
- touch /etc/nginx/conf.d/seafile.conf
- ```
+````bash
+ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
+````
### Configuring Nginx
-Copy the following sample Nginx config file into the just created `seafile.conf` and modify the content to fit your needs:
+Copy the following sample Nginx config file into the just created `seafile.conf` (i.e., `nano /etc/nginx/sites-available/seafile.conf`) and modify the content to fit your needs:
```nginx
log_format seafileformat '$http_x_forwarded_for $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_response_time';
@@ -176,7 +152,7 @@ Upon successful verification, Certbot saves the certificate files in a directory
### Modifying Nginx configuration file
!!! tip
- Normally, your nginx configuration can be automatically managed by a certificate manager (e.g., CertBot) after you install the certificate. If you find that your nginx is already listening on port 443 through the certificate manager after installing the certificate, you can skip this step.
+ Normally, your nginx configuration can be automatically managed by a certificate manager (e.g., ***CertBot***) after you install the certificate. If you find that your nginx is already listening on port 443 through the certificate manager after installing the certificate, you can skip this step.
Add an server block for port 443 and a http-to-https redirect to the `seafile.conf` configuration file in `/etc/nginx`.
@@ -242,24 +218,31 @@ If you have WebDAV enabled it is recommended to add the same:
}
```
+### Modify .env
+
+Modify the following field to `https`
+
+```sh
+SEAFILE_SERVER_PROTOCOL=https
+```
### Modifying seahub_settings.py
-The `SERVICE_URL` in [seahub_settings.py](../config/seahub_settings_py.md) informs Seafile about the chosen domain, protocol and port. Change the `SERVICE_URL`so as to account for the switch from HTTP to HTTPS and to correspond to your host name (the `http://` must not be removed):
+!!! tip "More convenient"
+ The `SERVICE_URL` and `FILE_SERVER_ROOT` can also be modified in Seahub via **System Admininstration** > **Settings**. If they are configured via System Admin and in seahub_settings.py, the value in System Admin will take precedence.
+- The `SERVICE_URL` in [seahub_settings.py](../config/seahub_settings_py.md) informs Seafile about the chosen domain, protocol and port. Change the `SERVICE_URL`so as to account for the switch from HTTP to HTTPS and to correspond to your host name (the `http://` must not be removed):
-```python
-SERVICE_URL = 'https://seafile.example.com'
-```
-The `FILE_SERVER_ROOT` in [seahub_settings.py](../config/seahub_settings_py.md) informs Seafile about the location of and the protocol used by the file server. Change the `FILE_SERVER_ROOT` so as to account for the switch from HTTP to HTTPS and to correspond to your host name (the trailing `/seafhttp` must not be removed):
+ ```python
+ SERVICE_URL = 'https://seafile.example.com'
+ ```
-```python
-FILE_SERVER_ROOT = 'https://seafile.example.com/seafhttp'
-```
+- The `FILE_SERVER_ROOT` in [seahub_settings.py](../config/seahub_settings_py.md) informs Seafile about the location of and the protocol used by the file server. Change the `FILE_SERVER_ROOT` so as to account for the switch from HTTP to HTTPS and to correspond to your host name (the trailing `/seafhttp` must not be removed):
-!!! tip "More convenient"
- The `SERVICE_URL` and `FILE_SERVER_ROOT` can also be modified in Seahub via **System Admininstration** > **Settings**. If they are configured via System Admin and in seahub_settings.py, the value in System Admin will take precedence.
+ ```python
+ FILE_SERVER_ROOT = 'https://seafile.example.com/seafhttp'
+ ```
### Modifying seafile.conf (optional)
diff --git a/manual/setup_binary/installation_ce.md b/manual/setup_binary/installation_ce.md
index 17c18d7e5..10a1d48ae 100644
--- a/manual/setup_binary/installation_ce.md
+++ b/manual/setup_binary/installation_ce.md
@@ -20,93 +20,73 @@ Seafile uses the mysql_native_password plugin for authentication. The versions o
### Installing prerequisites
+!!! tip
+ The standard directory `/opt/seafile` is assumed for Seafile's program and we will use it on the rest of this manual. If you decide to put Seafile in another directory, modify the commands accordingly.
-=== "Seafile 10.0.x"
- === "Ubuntu 22.04/Ubuntu 20.04/Debian 11/Debian 10"
- ```
- sudo apt-get update
- sudo apt-get install -y python3 python3-setuptools python3-pip libmysqlclient-dev
- sudo apt-get install -y memcached libmemcached-dev
-
- sudo pip3 install --timeout=3600 django==3.2.* future==0.18.* mysqlclient==2.1.* \
- pymysql pillow==10.2.* pylibmc captcha==0.5.* markupsafe==2.0.1 jinja2 sqlalchemy==1.4.44 \
- psd-tools django-pylibmc django_simple_captcha==0.5.20 djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml
-
- ```
-=== "Seafile 11.0.x"
- === "Debian 11/Ubuntu 22.04"
-
- ```
- # Ubuntu 22.04 (almost the same for Ubuntu 20.04 and Debian 11, Debian 10)
- sudo apt-get update
- sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmysqlclient-dev ldap-utils libldap2-dev
- sudo apt-get install -y memcached libmemcached-dev
-
- sudo pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* \
- pymysql pillow==10.2.* pylibmc captcha==0.5.* markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 \
- psd-tools django-pylibmc django_simple_captcha==0.6.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
-
- ```
- === "Debian 12"
- !!! note
- Debian 12 and Ubuntu 24.04 are now discouraging system-wide installation of python modules with pip. It is preferred now to install modules into a virtual environment which keeps them separate from the files installed by the system package manager, and enables different versions to be installed for different applications. With these python virtual environments (venv for short) to work, you have to activate the venv to make the packages installed in it available to the programs you run. That is done here with `source python-venv/bin/activate`.
-
- ```
- # Debian 12
- sudo apt-get update
- sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv
- sudo apt-get install -y memcached libmemcached-dev
-
- mkdir /opt/seafile
- cd /opt/seafile
-
- # create the vitual environment in the python-venv directory
- python3 -m venv python-venv
-
- # activate the venv
- source python-venv/bin/activate
- # Notice that this will usually change your prompt so you know the venv is active
-
- # install packages into the active venv with pip (sudo isn't needed because this is installing in the venv, not system-wide).
- pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
- ```
- === "Ubuntu 24.04 with virtual env"
- !!! note
- Debian 12 and Ubuntu 24.04 are now discouraging system-wide installation of python modules with pip. It is preferred now to install modules into a virtual environment which keeps them separate from the files installed by the system package manager, and enables different versions to be installed for different applications. With these python virtual environments (venv for short) to work, you have to activate the venv to make the packages installed in it available to the programs you run. That is done here with `source python-venv/bin/activate`.
-
- ```
- # Ubuntu 24.04
- sudo apt-get update
- sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmysqlclient-dev ldap-utils libldap2-dev python3.12-venv
- sudo apt-get install -y memcached libmemcached-dev
-
- mkdir /opt/seafile
- cd /opt/seafile
-
- # create the vitual environment in the python-venv directory
- python3 -m venv python-venv
-
- # activate the venv
- source python-venv/bin/activate
- # Notice that this will usually change your prompt so you know the venv is active
-
- # install packages into the active venv with pip (sudo isn't needed because this is installing in the venv, not system-wide).
- pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* \
- pymysql pillow==10.2.* pylibmc captcha==0.5.* markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 \
- psd-tools django-pylibmc django_simple_captcha==0.6.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.16.0 lxml python-ldap==3.4.3
- ```
-
-### Creating the program directory
-
-The standard directory for Seafile's program files is `/opt/seafile`. Create this directory and change into it:
+=== "Ubuntu 24.04"
+ !!! note
+ Debian 12 and Ubuntu 24.04 are now discouraging system-wide installation of python modules with pip. It is preferred now to install modules into a virtual environment which keeps them separate from the files installed by the system package manager, and enables different versions to be installed for different applications. With these python virtual environments (venv for short) to work, you have to activate the venv to make the packages installed in it available to the programs you run. That is done here with `source python-venv/bin/activate`.
-```
-sudo mkdir /opt/seafile
-cd /opt/seafile
-```
+ ```
+ # Ubuntu 24.04
+ sudo apt-get update
+ sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmysqlclient-dev ldap-utils libldap2-dev python3.12-venv
+ sudo apt-get install -y memcached libmemcached-dev
-!!! tip
- The program directory can be changed. The standard directory `/opt/seafile` is assumed for the rest of this manual. If you decide to put Seafile in another directory, modify the commands accordingly.
+ mkdir /opt/seafile
+ cd /opt/seafile
+
+ # create the vitual environment in the python-venv directory
+ python3 -m venv python-venv
+
+ # activate the venv
+ source python-venv/bin/activate
+ # Notice that this will usually change your prompt so you know the venv is active
+
+ # install packages into the active venv with pip (sudo isn't needed because this is installing in the venv, not system-wide).
+ pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* \
+ pymysql pillow==10.2.* pylibmc captcha==0.5.* markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 \
+ psd-tools django-pylibmc django_simple_captcha==0.6.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.16.0 lxml python-ldap==3.4.3
+ ```
+=== "Debian 12"
+ !!! note
+ Debian 12 and Ubuntu 24.04 are now discouraging system-wide installation of python modules with pip. It is preferred now to install modules into a virtual environment which keeps them separate from the files installed by the system package manager, and enables different versions to be installed for different applications. With these python virtual environments (venv for short) to work, you have to activate the venv to make the packages installed in it available to the programs you run. That is done here with `source python-venv/bin/activate`.
+
+ ```
+ # Debian 12
+ sudo apt-get update
+ sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv
+ sudo apt-get install -y memcached libmemcached-dev
+
+ mkdir /opt/seafile
+ cd /opt/seafile
+
+ # create the vitual environment in the python-venv directory
+ python3 -m venv python-venv
+
+ # activate the venv
+ source python-venv/bin/activate
+ # Notice that this will usually change your prompt so you know the venv is active
+
+ # install packages into the active venv with pip (sudo isn't needed because this is installing in the venv, not system-wide).
+ pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
+ ```
+=== "Debian 11/Ubuntu 22.04"
+
+ ```
+ # Ubuntu 22.04 (almost the same for Ubuntu 20.04 and Debian 11, Debian 10)
+ sudo apt-get update
+ sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmysqlclient-dev ldap-utils libldap2-dev
+ sudo apt-get install -y memcached libmemcached-dev
+
+ sudo mkdir /opt/seafile
+ cd /opt/seafile
+
+ sudo pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* \
+ pymysql pillow==10.2.* pylibmc captcha==0.5.* markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 \
+ psd-tools django-pylibmc django_simple_captcha==0.6.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
+
+ ```
### Creating user seafile
@@ -136,7 +116,7 @@ su seafile
Download the install package from the [download page](https://www.seafile.com/en/download/) on Seafile's website using wget.
-We use Seafile CE version 8.0.4 as an example in the rest of this manual.
+We use Seafile CE version 12.0.6 as an example in the rest of this manual.
### Uncompressing the package
@@ -145,7 +125,7 @@ The install package is downloaded as a compressed tarball which needs to be unco
Uncompress the package using tar:
```
-tar xf seafile-server_8.0.4_x86-64.tar.gz
+tar xf seafile-server_12.0.6_x86-64.tar.gz
```
Now you have:
@@ -153,14 +133,23 @@ Now you have:
```
$ tree -L 2
.
-├── seafile-server-8.0.4
+├── python-venv # you will not see this directory if you use ubuntu 22/debian 10
+│ ├── bin
+│ ├── include
+│ ├── lib
+│ ├── lib64 -> lib
+│ └── pyvenv.cfg
+├── seafile-server-12.0.6
│ ├── check_init_admin.py
+│ ├── migrate_ldapusers.py
+│ ├── pro
│ ├── reset-admin.sh
│ ├── runtime
│ ├── seaf-fsck.sh
│ ├── seaf-fuse.sh
│ ├── seaf-gc.sh
│ ├── seafile
+│ ├── seafile-monitor.sh
│ ├── seafile.sh
│ ├── seahub
│ ├── seahub.sh
@@ -169,8 +158,7 @@ $ tree -L 2
│ ├── setup-seafile.sh
│ ├── sql
│ └── upgrade
-└── seafile-server_8.0.4_x86-64.tar.gz
-
+└── seafile-server_12.0.6_x86-64.tar.gz
```
### Setting up Seafile CE
@@ -183,17 +171,37 @@ The install package comes with a script that sets Seafile up for you. Specifical
!!! note "While ccnet server was merged into the seafile-server in Seafile 8.0, the corresponding database is still required for the time being"
+!!! tip
+ For installations using python virtual environment, activate it if it isn't already active
+
+ ```sh
+ source python-venv/bin/activate
+ ```
+
Run the script as user seafile:
```
-# For installations using python virtual environment, activate it if it isn't already active
-source python-venv/bin/activate
-
-cd seafile-server-8.0.4
+cd seafile-server-12.0.6
./setup-seafile-mysql.sh
```
+!!! note
+ If you don't have the root password, you need someone who has the privileges, e.g., the database admin, to create the three databases required by Seafile, as well as a MySQL user who can access the databases. For example, to create three databases `ccnet_db` / `seafile_db` / `seahub_db` for ccnet/seafile/seahub respectively, and a MySQL user "seafile" to access these databases run the following SQL queries:
+
+ ```
+ 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 'seafile';
+
+ 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;
+
+ ```
+
Configure your Seafile Server by specifying the following three parameters:
| Option | Description | Note |
@@ -202,36 +210,36 @@ Configure your Seafile Server by specifying the following three parameters:
| server's ip or domain | IP address or domain name used by the Seafile Server | Seafile client program will access the server using this address |
| fileserver port | TCP port used by the Seafile fileserver | Default port is 8082, it is recommended to use this port and to only change it if is used by other service |
-
-
In the next step, choose whether to create new databases for Seafile or to use existing databases. The creation of new databases requires the root password for the SQL server.
![grafik](../images/seafile-setup-database.png)
-When choosing "\[1] Create new ccnet/seafile/seahub databases", the script creates these databases and a MySQL user that Seafile Server will use to access them. To this effect, you need to answer these questions:
-
-| Question | Description | Note |
-| ------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| mysql server host | Host address of the MySQL server | Default is localhost |
-| mysql server port | TCP port used by the MySQL server | Default port is 3306; almost every MySQL server uses this port |
-| mysql root password | Password of the MySQL root account | The root password is required to create new databases and a MySQL user |
-| mysql user for Seafile | MySQL user created by the script, used by Seafile's components to access the databases | Default is seafile; the user is created unless it exists |
-| mysql password for Seafile user | Password for the user above, written in Seafile's config files | Percent sign ('%') is not allowed |
-| database name | Name of the database used by ccnet | Default is "ccnet_db", the database is created if it does not exist |
-| seafile database name | Name of the database used by Seafile | Default is "seafile_db", the database is created if it does not exist |
-| seahub database name | Name of the database used by seahub | Default is "seahub_db", the database is created if it does not exist |
-
-When choosing "\[2] Use existing ccnet/seafile/seahub databases", this are the prompts you need to answer:
-
-| Question | Description | Note |
-| ------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
-| mysql server host | Host address of the MySQL server | Default is localhost |
-| mysql server port | TCP port used by MySQL server | Default port is 3306; almost every MySQL server uses this port |
-| mysql user for Seafile | User used by Seafile's components to access the databases | The user must exists |
-| mysql password for Seafile user | Password for the user above | |
-| ccnet database name | Name of the database used by ccnet, default is "ccnet_db" | The database must exist |
-| seafile database name | Name of the database used by Seafile, default is "seafile_db" | The database must exist |
-| seahub dabase name | Name of the database used by Seahub, default is "seahub_db" | The database must exist |
+=== "\[1] Create new ccnet/seafile/seahub databases"
+ The script creates these databases and a MySQL user that Seafile Server will use to access them. To this effect, you need to answer these questions:
+
+ | Question | Description | Note |
+ | ------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
+ | mysql server host | Host address of the MySQL server | Default is localhost |
+ | mysql server port | TCP port used by the MySQL server | Default port is 3306; almost every MySQL server uses this port |
+ | mysql root password | Password of the MySQL root account | The root password is required to create new databases and a MySQL user |
+ | mysql user for Seafile | MySQL user created by the script, used by Seafile's components to access the databases | Default is seafile; the user is created unless it exists |
+ | mysql password for Seafile user | Password for the user above, written in Seafile's config files | Percent sign ('%') is not allowed |
+ | database name | Name of the database used by ccnet | Default is "ccnet_db", the database is created if it does not exist |
+ | seafile database name | Name of the database used by Seafile | Default is "seafile_db", the database is created if it does not exist |
+ | seahub database name | Name of the database used by seahub | Default is "seahub_db", the database is created if it does not exist |
+
+=== "\[2] Use existing ccnet/seafile/seahub databases"
+ The prompts you need to answer:
+
+ | Question | Description | Note |
+ | ------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
+ | mysql server host | Host address of the MySQL server | Default is localhost |
+ | mysql server port | TCP port used by MySQL server | Default port is 3306; almost every MySQL server uses this port |
+ | mysql user for Seafile | User used by Seafile's components to access the databases | The user must exists |
+ | mysql password for Seafile user | Password for the user above | |
+ | ccnet database name | Name of the database used by ccnet, default is "ccnet_db" | The database must exist |
+ | seafile database name | Name of the database used by Seafile, default is "seafile_db" | The database must exist |
+ | seahub dabase name | Name of the database used by Seahub, default is "seahub_db" | The database must exist |
If the setup is successful, you see the following output:
@@ -241,55 +249,51 @@ The directory layout then looks as follows:
```sh
$ tree /opt/seafile -L 2
-seafile
+/opt/seafile
├── ccnet
├── conf
-│ └── gunicorn.conf.py
-│ └── seafdav.conf
-│ └── seafile.conf
-│ └── seahub_settings.py
+│ ├── gunicorn.conf.py
+│ ├── seafdav.conf
+│ ├── seafevents.conf
+│ ├── seafile.conf
+│ └── seahub_settings.py
+├── pro-data
+├── python-venv # you will not see this directory if you use ubuntu 22/debian 10
+│ ├── bin
+│ ├── include
+│ ├── lib
+│ ├── lib64 -> lib
+│ └── pyvenv.cfg
├── seafile-data
-│ └── library-template
-├── seafile-server-8.0.4
-│ └── check_init_admin.py
+│ └── library-template
+├── seafile-server-12.0.6
+│ ├── check_init_admin.py
+│ ├── migrate_ldapusers.py
+│ ├── pro
│ ├── reset-admin.sh
│ ├── runtime
-│ └── seaf-fsck.sh
-│ └── seaf-gc.sh
+│ ├── seaf-fsck.sh
+│ ├── seaf-fuse.sh
+│ ├── seaf-gc.sh
│ ├── seafile
+│ ├── seafile-monitor.sh
│ ├── seafile.sh
│ ├── seahub
│ ├── seahub.sh
-│ └── setup-seafile-mysql.py
+│ ├── setup-seafile-mysql.py
│ ├── setup-seafile-mysql.sh
-│ └── sql
+│ ├── setup-seafile.sh
+│ ├── sql
│ └── upgrade
-├── seafile-server-latest -> seafile-server-8.0.6
-├── seahub-data
-│ └── avatars
+├── seafile-server-latest -> seafile-server-12.0.6
+├── seafile-server_12.0.6_x86-64.tar.gz
+└── seahub-data
+ └── avatars
```
The folder `seafile-server-latest` is a symbolic link to the current Seafile Server folder. When later you upgrade to a new version, the upgrade scripts update this link to point to the latest Seafile Server folder.
-
-
-!!! note
- If you don't have the root password, you need someone who has the privileges, e.g., the database admin, to create the three databases required by Seafile, as well as a MySQL user who can access the databases. For example, to create three databases `ccnet_db` / `seafile_db` / `seahub_db` for ccnet/seafile/seahub respectively, and a MySQL user "seafile" to access these databases run the following SQL queries:
-
- ```
- 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 'seafile';
-
- 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;
-
- ```
-
### Setup Memory Cache
Seahub caches items(avatars, profiles, etc) on file system by default(/tmp/seahub_cache/). You can replace with Memcached or Redis.
@@ -298,7 +302,7 @@ Seahub caches items(avatars, profiles, etc) on file system by default(/tmp/seahu
Use the following commands to install memcached and corresponding libraies on your system:
- ```
+ ```sh
# on Debian/Ubuntu 18.04+
apt-get install memcached libmemcached-dev -y
pip3 install --timeout=3600 pylibmc django-pylibmc
@@ -308,7 +312,7 @@ Seahub caches items(avatars, profiles, etc) on file system by default(/tmp/seahu
Add the following configuration to `seahub_settings.py`.
- ```
+ ```py
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
@@ -333,37 +337,61 @@ Seafile's config files as created by the setup script are prepared for Seafile r
To access Seafile's web interface and to create working sharing links without a reverse proxy, you need to modify two configuration files in `/opt/seafile/conf`:
-- `seahub_settings.py` (if you use 9.0.x): Add port 8000 to the `SERVICE_URL` (i.e., SERVICE_URL = 'http://1.2.3.4:8000/').
-* `ccnet.conf` (if you use 8.0.x or 7.1.x): Add port 8000 to the `SERVICE_URL` (i.e., SERVICE_URL = http://1.2.3.4:8000/).
-* `gunicorn.conf.py`: Change the bind to "0.0.0.0:8000" (i.e., bind = "0.0.0.0:8000")
+- `seahub_settings.py`: Add port 8000 to the `SERVICE_URL` (i.e., SERVICE_URL = 'http://seafile.example.com:8000/').
+- `gunicorn.conf.py`: Change the bind to "0.0.0.0:8000" (i.e., bind = "0.0.0.0:8000")
+
+### Create the `.env` file in `conf/` directory
+
+```sh
+nano /opt/seafile/conf/.env
+```
+
+!!! tip
+ `JWT_PRIVATE_KEY`, A random string with a length of no less than 32 characters can be generated from:
+ ```sh
+ pwgen -s 40 1
+ ```
+
+```env
+JWT_PRIVATE_KEY=
+SEAFILE_SERVER_PROTOCOL=https
+SEAFILE_SERVER_HOSTNAME=seafile.example.com
+SEAFILE_MYSQL_DB_HOST=
+SEAFILE_MYSQL_DB_PORT=3306
+SEAFILE_MYSQL_DB_USER=seafile
+SEAFILE_MYSQL_DB_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
+```
## Starting Seafile Server
Run the following commands in `/opt/seafile/seafile-server-latest`:
-```
-# For installations using python virtual environment, activate it if it isn't already active
-source python-venv/bin/activate
+!!! tip
+ For installations using python virtual environment, activate it if it isn't already active
+
+ ```sh
+ source python-venv/bin/activate
+ ```
+```sh
./seafile.sh start # starts seaf-server
./seahub.sh start # starts seahub
-
```
!!! success
The first time you start Seahub, the script prompts you to create an admin account for your Seafile Server. Enter the email address of the admin user followed by the password.
-Now you can access Seafile via the web interface at the host address and port 8000 (e.g., http://1.2.3.4:8000)
-
-!!! warning
- On CentOS, the firewall blocks traffic on port 8000 by default.
+Now you can access Seafile via the web interface at the host address and port 8000 (e.g., http://seafile.example.com:8000)
## Stopping and Restarting Seafile and Seahub
### Stopping
-```
+```sh
./seahub.sh stop # stops seahub
./seafile.sh stop # stops seaf-server
@@ -371,10 +399,14 @@ Now you can access Seafile via the web interface at the host address and port 80
### Restarting
-```
-# For installations using python virtual environment, activate it if it isn't already active
-source python-venv/bin/activate
+!!! tip
+ For installations using python virtual environment, activate it if it isn't already active
+
+ ```sh
+ source python-venv/bin/activate
+ ```
+```
./seafile.sh restart
./seahub.sh restart
@@ -384,10 +416,4 @@ source python-venv/bin/activate
It is strongly recommended to switch from unencrypted HTTP (via port 8000) to encrypted HTTPS (via port 443).
-This manual provides instructions for enabling HTTPS for the two most popular web servers and reverse proxies:
-
-* [Nginx](https_with_nginx.md)
-* [Apache](https_with_apache.md)
-
-
-
+This manual provides instructions for enabling HTTPS for the two most popular web servers and reverse proxies (e.g, [Nginx](https_with_nginx.md))
diff --git a/manual/setup_binary/installation_pro.md b/manual/setup_binary/installation_pro.md
index a20a4b6a5..c9e846c45 100644
--- a/manual/setup_binary/installation_pro.md
+++ b/manual/setup_binary/installation_pro.md
@@ -2,7 +2,6 @@
This manual explains how to deploy and run Seafile Server Professional Edition (Seafile PE) on a Linux server from a pre-built package using MySQL/MariaDB as database. The deployment has been tested for Debian/Ubuntu.
-
## Requirements
Seafile PE requires a minimum of 2 cores and 2GB RAM. If elasticsearch is installed on the same server, the minimum requirements are 4 cores and 4 GB RAM.
@@ -13,20 +12,24 @@ Seafile PE can be used without a paid license with up to three users. Licenses f
### Installing and preparing the SQL database
-These instructions assume that MySQL/MariaDB server and client are installed and a MySQL/MariaDB root user can authenticate using the mysql_native_password plugin.
+Seafile supports MySQL and MariaDB. We recommend that you use the preferred SQL database management engine included in the package repositories of your distribution.
+
+You can find step-by-step how-tos for installing MySQL and MariaDB in the [tutorials on the Digital Ocean website](https://www.digitalocean.com/community/tutorials).
+
+Seafile uses the `mysql_native_password` plugin for authentication. The versions of MySQL and MariaDB installed on CentOS 8, Debian 10, and Ubuntu 20.04 use a different authentication plugin by default. It is therefore required to change to authentication plugin to `mysql_native_password` for the root user prior to the installation of Seafile. The above mentioned tutorials explain how to do it.
### Installing prerequisites
!!! tip
The standard directory `/opt/seafile` is assumed for the rest of this manual. If you decide to put Seafile in another directory, some commands need to be modified accordingly
-!!! note
- Debian 12 and Ubuntu 24.04 are now discouraging system-wide installation of python modules with pip. It is preferred now to install modules into a virtual environment which keeps them separate from the files installed by the system package manager, and enables different versions to be installed for different applications. With these python virtual environments (venv for short) to work, you have to activate the venv to make the packages installed in it available to the programs you run. That is done here with `source python-venv/bin/activate`.
+=== "Ubuntu 24.04"
+ !!! note
+ Debian 12 and Ubuntu 24.04 are now discouraging system-wide installation of python modules with pip. It is preferred now to install modules into a virtual environment which keeps them separate from the files installed by the system package manager, and enables different versions to be installed for different applications. With these python virtual environments (venv for short) to work, you have to activate the venv to make the packages installed in it available to the programs you run. That is done here with `source python-venv/bin/activate`.
-=== "Debian 12"
- ```
+ ```sh
sudo apt-get update
- sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv
+ sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmysqlclient-dev ldap-utils libldap2-dev python3.12-venv
sudo apt-get install -y memcached libmemcached-dev
# create the data directory
@@ -41,12 +44,16 @@ These instructions assume that MySQL/MariaDB server and client are installed and
# Notice that this will usually change your prompt so you know the venv is active
# install packages into the active venv with pip (sudo isn't needed because this is installing in the venv, not system-wide).
- pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
- ```
-=== "Ubuntu 24.04"
+ pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* \
+ pymysql pillow==10.2.* pylibmc captcha==0.5.* markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 \
+ psd-tools django-pylibmc django_simple_captcha==0.6.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.16.0 lxml python-ldap==3.4.3
```
+=== "Debian 12"
+ !!! note
+ Debian 12 and Ubuntu 24.04 are now discouraging system-wide installation of python modules with pip. It is preferred now to install modules into a virtual environment which keeps them separate from the files installed by the system package manager, and enables different versions to be installed for different applications. With these python virtual environments (venv for short) to work, you have to activate the venv to make the packages installed in it available to the programs you run. That is done here with `source python-venv/bin/activate`.
+ ```sh
sudo apt-get update
- sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmysqlclient-dev ldap-utils libldap2-dev python3.12-venv
+ sudo apt-get install -y python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv
sudo apt-get install -y memcached libmemcached-dev
# create the data directory
@@ -61,9 +68,21 @@ These instructions assume that MySQL/MariaDB server and client are installed and
# Notice that this will usually change your prompt so you know the venv is active
# install packages into the active venv with pip (sudo isn't needed because this is installing in the venv, not system-wide).
- pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* \
+ pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
+ ```
+=== "Ubuntu 22.04/Debian 11"
+ ```sh
+ # on (on , it is almost the same)
+ apt-get update
+ apt-get install -y python3 python3-dev python3-setuptools python3-pip python3-ldap libmysqlclient-dev ldap-utils libldap2-dev dnsutils
+ apt-get install -y memcached libmemcached-dev
+ apt-get install -y poppler-utils
+ # create the data directory
+ mkdir /opt/seafile
+ cd /opt/seafile
+ sudo pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* \
pymysql pillow==10.2.* pylibmc captcha==0.5.* markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 \
- psd-tools django-pylibmc django_simple_captcha==0.6.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.16.0 lxml python-ldap==3.4.3
+ psd-tools django-pylibmc django_simple_captcha==0.6.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 python-ldap==3.4.3 lxml
```
### Creating user seafile
@@ -131,7 +150,7 @@ Now you have:
$ tree -L 2 /opt/seafile
.
├── seafile-license.txt
-├── python-venv # this section only exists in Debian 12 and Ubuntu 24.04
+├── python-venv # you will not see this directory if you use ubuntu 22/debian 10
│ ├── bin
│ ├── include
│ ├── lib
@@ -280,7 +299,7 @@ The directory layout then looks as follows:
│ ├── seafile.conf
│ └── seahub_settings.py
├── pro-data
-├── python-venv
+├── python-venv # you will not see this directory if you use ubuntu 22/debian 10
│ ├── bin
│ ├── include
│ ├── lib
@@ -369,12 +388,14 @@ Memory cache is mandatory for pro edition. You may use Memcached or Reids as cac
### Enabling HTTP/HTTPS (Optional but Recommended)
-You need at least setup HTTP to make Seafile's web interface work. This manual provides instructions for enabling HTTP/HTTPS for the two most popular web servers and reverse proxies:
+You need at least setup HTTP to make Seafile's web interface work. This manual provides instructions for enabling HTTP/HTTPS for the two most popular web servers and reverse proxies (e.g., [Nginx](./https_with_nginx.md)).
+
-* [Nginx](./https_with_nginx.md)
-* [Apache](./https_with_apache.md)
+### Create the `.env` file in `conf/` directory
-### Create the `.env` file in conf/ directory
+```sh
+nano /opt/seafile/conf/.env
+```
!!! tip
`JWT_PRIVATE_KEY`, A random string with a length of no less than 32 characters can be generated from:
@@ -382,10 +403,6 @@ You need at least setup HTTP to make Seafile's web interface work. This manual p
pwgen -s 40 1
```
-```sh
-nano /opt/seafile/conf/.env
-```
-
```env
JWT_PRIVATE_KEY=
SEAFILE_SERVER_PROTOCOL=https
diff --git a/manual/setup_binary/outline_ce.md b/manual/setup_binary/outline_ce.md
index 99b32e7b3..b6ffb6a3a 100644
--- a/manual/setup_binary/outline_ce.md
+++ b/manual/setup_binary/outline_ce.md
@@ -1,18 +1,17 @@
# Deploying Seafile
-We provide two ways to deploy Seafile services. **Docker is the recommended way**.
+We provide two ways to deploy Seafile services and recommend to deploy with Docker.
!!! warning
Since version 12.0, binary based deployment for community edition is deprecated and will not be supported in a future release.
-* Using [Docker](../setup/setup_ce_by_docker.md)
+* Using [Docker](../setup/setup_ce_by_docker.md) (***Recommend***)
* Manually installing Seafile and setting up database, memcached and Nginx/Apache. See the following section.
## Manually deployment options
* [Deploying Seafile with MySQL](installation_ce.md)
* [Enabling Https with Nginx](https_with_nginx.md)
-* [Enabling Https with Apache](https_with_apache.md)
* [Start Seafile at System Bootup](start_seafile_at_system_bootup.md)
* [Logrotate](using_logrotate.md)
diff --git a/manual/setup_binary/outline_pro.md b/manual/setup_binary/outline_pro.md
index a39df29ec..df692559d 100644
--- a/manual/setup_binary/outline_pro.md
+++ b/manual/setup_binary/outline_pro.md
@@ -2,12 +2,12 @@
There are two ways to deploy Seafile Pro Edition. Since version 8.0, the recommend way to install Seafile Pro Edition is using Docker.
-- Method 1: Deploy Seafile with [Docker](../setup/setup_pro_by_docker.md)
+- Method 1 (***Recommend***): Deploy Seafile with [Docker](../setup/setup_pro_by_docker.md)
- Method 2: [Download and Setup Seafile Professional Server Step by Step](./installation_pro.md)
## Migration from community edition
-- [Migrate from Seafile Community edition](migrate_from_seafile_community_server.md)
+- [Migrate from Seafile Community edition](../setup/migrate_ce_to_pro_with_docker.md)
## S3 Storage Backends
diff --git a/manual/upgrade/upgrade.md b/manual/upgrade/upgrade.md
index d32e20ce7..c45b4278c 100644
--- a/manual/upgrade/upgrade.md
+++ b/manual/upgrade/upgrade.md
@@ -2,7 +2,7 @@
There are three types of upgrade, i.e., major version upgrade, minor version upgrade and maintenance version upgrade. This page contains general instructions for the three types of upgrade.
-* After upgrading, you may need to clean [seahub cache](../deploy/add_memcached.md) if it doesn't behave as expect.
+* After upgrading, you may need to clean ***seahub cache*** if it doesn't behave as expect.
* If you are using a Docker based deployment, please read [upgrade a Seafile docker instance](upgrade_docker.md)
* If you are running a **cluster**, please read [upgrade a Seafile cluster](upgrade_a_cluster.md).
* If you are using a binary package based deployment, please read instructions below.
diff --git a/mkdocs.yml b/mkdocs.yml
index 3c3113ed2..2f634ef23 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -109,7 +109,6 @@ nav:
- Outline: setup_binary/outline_ce.md
- Installation: setup_binary/installation_ce.md
- HTTPS with Nginx: setup_binary/https_with_nginx.md
- - HTTPS with Apache: setup_binary/https_with_apache.md
- Seafile Professional Setup:
- Outline: setup_binary/outline_pro.md
- Installation: setup_binary/installation_pro.md