diff --git a/manual/config/ccnet-conf.md b/manual/config/ccnet-conf.md index 8982379e8..a0238b7ff 100644 --- a/manual/config/ccnet-conf.md +++ b/manual/config/ccnet-conf.md @@ -3,14 +3,11 @@ Ccnet is the internal RPC framework used by Seafile server and also manages the user database. A few useful options are in ccnet.conf. -!!! note - ccnet.conf is removed in version 12.0. +!!! warning "`ccnet.conf` is removed in version 12.0" ## Options that moved to .env file -ccnet.conf is removed in version 12.0. - -The following informaiton is read from `.env` file +Due to `ccnet.conf` is removed in version 12.0, the following informaiton is read from `.env` file ``` SEAFILE_MYSQL_DB_USER: The database user, the default is seafile diff --git a/manual/config/env.md b/manual/config/env.md index ced012ca8..53cb9659c 100644 --- a/manual/config/env.md +++ b/manual/config/env.md @@ -35,6 +35,18 @@ SEAFILE_SERVER_PROTOCOL=https INIT_SEAFILE_ADMIN_EMAIL=me@example.com INIT_SEAFILE_ADMIN_PASSWORD=asecret +INIT_S3_STORAGE_BACKEND_CONFIG=false # pro edition only +INIT_S3_COMMIT_BUCKET= # pro edition only +INIT_S3_FS_BUCKET= # pro edition only +INIT_S3_BLOCK_BUCKET= # pro edition only +INIT_S3_KEY_ID= # pro edition only +INIT_S3_SECRET_KEY= # pro edition only + +CLUSTER_INIT_MODE=true # cluster only +CLUSTER_INIT_MEMCACHED_HOST= # cluster only +CLUSTER_INIT_ES_HOST= # cluster only +CLUSTER_INIT_ES_PORT= # cluster only +CLUSTER_MODE=frontend # cluster only SEADOC_IMAGE=seafileltd/sdoc-server:1.0-latest @@ -92,3 +104,23 @@ SEADOC_SERVER_URL=http://example.seafile.com/sdoc-server - `ENABLE_SEADOC`: Enable the SeaDoc server or not, default is `false`. - `SEADOC_SERVER_URL`: Only valid in `ENABLE_SEADOC=true`. Url of Seadoc server (e.g., http://example.seafile.com/sdoc-server). + +## Cluster init configuration + +- `CLUSTER_INIT_MODE`: (only valid in pro edition at deploying first time). Cluster initialization mode, in which the necessary configuration files for the service to run will be generated (but **the service will not be started**). If the configuration file already exists, no operation will be performed. The default value is `true`. When the configuration file is generated, ***be sure to set this item to `false`***. +- `CLUSTER_INIT_MEMCACHED_HOST`: (only valid in pro edition at deploying first time). Cluster Memcached host. (If your Memcached server dose not use port `11211`, please modify the [seahub_settings.py](./seahub_settings_py.md) and [seafile.conf](./seafile-conf.md)). +- `CLUSTER_INIT_ES_HOST`: (only valid in pro edition at deploying first time). Your cluster Elasticsearch server host. +- `CLUSTER_INIT_ES_PORT`: (only valid in pro edition at deploying first time). Your cluster Elasticsearch server port. +- `CLUSTER_MODE`: Seafile service node type, i.e., `frontend` (default) or `backend` + +## S3 storage backend configurations (only valid in pro edition at deploying first time) + +- `INIT_S3_STORAGE_BACKEND_CONFIG`: Whether to configure S3 storage backend synchronously during initialization (i.e., the following features in this section, for more details, please refer to [AWS S3](../setup/setup_with_amazon_s3.md#aws-s3)), default is `false`. +- `INIT_S3_COMMIT_BUCKET`: S3 storage backend fs objects bucket +- `INIT_S3_FS_BUCKET`: S3 storage backend block objects bucket +- `INIT_S3_BLOCK_BUCKET`: S3 storage backend block objects bucket +- `INIT_S3_KEY_ID`: S3 storage backend key ID +- `INIT_S3_SECRET_KEY`: S3 storage backend secret key +- `INIT_S3_USE_V4_SIGNATURE`: Use the v4 protocol of S3 if enabled, default is `true` +- `INIT_S3_AWS_REGION`: Region you create the buckets, default is `us-east-1`. (Only valid when `INIT_S3_USE_V4_SIGNATURE` sets to `true`) +- `INIT_S3_USE_HTTPS`: Use HTTPS connections to S3 if enabled, default is `true` diff --git a/manual/docker/cluster/env b/manual/docker/cluster/env new file mode 100644 index 000000000..40e613837 --- /dev/null +++ b/manual/docker/cluster/env @@ -0,0 +1,34 @@ +COMPOSE_FILE='seafile-server.yml' +COMPOSE_PATH_SEPARATOR=',' +SEAFILE_IMAGE=docker.seadrive.org/seafileltd/seafile-pro-mc:12.0-latest +SEAFILE_VOLUME=/opt/seafile/shared +SEAFILE_SERVER_HOSTNAME=seafile.example.com +SEAFILE_SERVER_PROTOCOL=http + +# mysql +SEAFILE_MYSQL_DB_HOST= +INIT_SEAFILE_MYSQL_ROOT_PASSWORD= +SEAFILE_MYSQL_DB_USER=seafile +SEAFILE_MYSQL_DB_PASSWORD= + +# Cluster +CLUSTER_INIT_MODE=true # if you have the configurations file, please set to false +CLUSTER_INIT_MEMCACHED_HOST= # only valid in config init +CLUSTER_INIT_ES_HOST= # only valid in config init +CLUSTER_INIT_ES_PORT= # only valid in config init + +CLUSTER_MODE=frontend # backend for backend node + +# Time zone +TIME_ZONE=UTC + +# S3 storage backend (the below configurations are only valid in configuration - files initial mode) +INIT_S3_STORAGE_BACKEND_CONFIG=false # if you use S3 as backend storage, please set to true +INIT_S3_COMMIT_BUCKET= +INIT_S3_FS_BUCKET= +INIT_S3_BLOCK_BUCKET= +INIT_S3_KEY_ID= +INIT_S3_SECRET_KEY= +INIT_S3_USE_V4_SIGNATURE=true +INIT_S3_AWS_REGION=us-east-1 +INIT_S3_USE_HTTPS=true diff --git a/manual/docker/cluster/seafile-server.yml b/manual/docker/cluster/seafile-server.yml new file mode 100644 index 000000000..a0dd2940f --- /dev/null +++ b/manual/docker/cluster/seafile-server.yml @@ -0,0 +1,30 @@ +services: + seafile: + image: ${SEAFILE_IMAGE:-docker.seadrive.org/seafileltd/seafile-pro-mc:12.0-latest} + container_name: seafile + ports: + - 80:80 + volumes: + - ${SEAFILE_VOLUME:-/opt/seafile/shared}:/shared + environment: + - DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db} + - DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306} + - DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:?Variable is not set or empty} + - DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty} + - CLUSTER_SERVER=true + - CLUSTER_INIT_MODE=${CLUSTER_INIT_MODE:-false} + - CLUSTER_INIT_MEMCACHED_HOST=${CLUSTER_MEMCACHED_HOST} + - CLUSTER_INIT_ES_HOST=${CLUSTER_ES_HOST} + - CLUSTER_INIT_ES_PORT=${CLUSTER_INIT_ES_PORT} + - CLUSTER_MODE=${CLUSTER_MODE:-frontend} + - TIME_ZONE=${TIME_ZONE:-UTC} + - INIT_S3_STORAGE_BACKEND_CONFIG=${INIT_S3_STORAGE_BACKEND_CONFIG:-false} + - INIT_S3_COMMIT_BUCKET=${INIT_S3_COMMIT_BUCKET} + - INIT_S3_FS_BUCKET=${INIT_S3_FS_BUCKET} + - INIT_S3_BLOCK_BUCKET=${INIT_S3_BLOCK_BUCKET} + - INIT_S3_KEY_ID=${INIT_S3_KEY_ID} + - INIT_S3_SECRET_KEY=${INIT_S3_SECRET_KEY} + - INIT_S3_USE_V4_SIGNATURE=${INIT_S3_USE_V4_SIGNATURE:-true} + - INIT_S3_AWS_REGION=${INIT_S3_AWS_REGION:-us-east-1} + - INIT_S3_USE_HTTPS=${INIT_S3_USE_HTTPS:-true} + diff --git a/manual/docker/pro/env b/manual/docker/pro/env index 1740a9d83..2e5e8e349 100644 --- a/manual/docker/pro/env +++ b/manual/docker/pro/env @@ -27,6 +27,15 @@ SEAFILE_SERVER_PROTOCOL=http INIT_SEAFILE_ADMIN_EMAIL=me@example.com INIT_SEAFILE_ADMIN_PASSWORD=asecret +INIT_S3_STORAGE_BACKEND_CONFIG=false +INIT_S3_COMMIT_BUCKET= +INIT_S3_FS_BUCKET= +INIT_S3_BLOCK_BUCKET= +INIT_S3_KEY_ID= +INIT_S3_SECRET_KEY= +INIT_S3_USE_V4_SIGNATURE=true +INIT_S3_AWS_REGION=us-east-1 +INIT_S3_USE_HTTPS=true SEADOC_IMAGE=seafileltd/sdoc-server:1.0-latest diff --git a/manual/docker/pro/seafile-server.yml b/manual/docker/pro/seafile-server.yml index 2159217b0..038703145 100644 --- a/manual/docker/pro/seafile-server.yml +++ b/manual/docker/pro/seafile-server.yml @@ -58,6 +58,15 @@ services: - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} - ENABLE_SEADOC=${ENABLE_SEADOC:-false} - SEADOC_SERVER_URL=${SEADOC_SERVER_URL:-http://example.example.com/sdoc-server} + - INIT_S3_STORAGE_BACKEND_CONFIG=${INIT_S3_STORAGE_BACKEND_CONFIG:-false} + - INIT_S3_COMMIT_BUCKET=${INIT_S3_COMMIT_BUCKET} + - INIT_S3_FS_BUCKET=${INIT_S3_FS_BUCKET} + - INIT_S3_BLOCK_BUCKET=${INIT_S3_BLOCK_BUCKET} + - INIT_S3_KEY_ID=${INIT_S3_KEY_ID} + - INIT_S3_SECRET_KEY=${INIT_S3_SECRET_KEY} + - INIT_S3_USE_V4_SIGNATURE=${INIT_S3_USE_V4_SIGNATURE:-true} + - INIT_S3_AWS_REGION=${INIT_S3_AWS_REGION:-us-east-1} + - INIT_S3_USE_HTTPS=${INIT_S3_USE_HTTPS:-true} labels: caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty} caddy.reverse_proxy: "{{upstreams 80}}" diff --git a/manual/setup/cluster_deploy_with_docker.md b/manual/setup/cluster_deploy_with_docker.md index 453884831..b1e120a70 100644 --- a/manual/setup/cluster_deploy_with_docker.md +++ b/manual/setup/cluster_deploy_with_docker.md @@ -12,282 +12,102 @@ Seafile Server: 2 frontend nodes, 1 backend node We assume you have already deployed memcache, MariaDB, ElasticSearch in separate machines and use S3 like object storage. -## Deployment preparation - -Create the three databases ccnet_db, seafile_db, and seahub_db required by Seafile on MariaDB/MySQL, and authorize the \`seafile\` user to be able to access these three databases: - -``` -$ mysql -h{your mysql host} -u[username] -p[password] - -mysql> -create user 'seafile'@'%' identified by 'PASSWORD'; - -create database `ccnet_db` character set = 'utf8'; -create database `seafile_db` character set = 'utf8'; -create database `seahub_db` character set = 'utf8'; - -GRANT ALL PRIVILEGES ON `ccnet_db`.* to 'seafile'@'%'; -GRANT ALL PRIVILEGES ON `seafile_db`.* to 'seafile'@'%'; -GRANT ALL PRIVILEGES ON `seahub_db`.* to 'seafile'@'%'; - -``` - -You also need to create a table in \`seahub_db\` - -``` -mysql> -use seahub_db; -CREATE TABLE `avatar_uploaded` ( - `filename` text NOT NULL, - `filename_md5` char(32) NOT NULL, - `data` mediumtext NOT NULL, - `size` int(11) NOT NULL, - `mtime` datetime NOT NULL, - PRIMARY KEY (`filename_md5`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -``` - ## Deploy Seafile service ### Deploy seafile frontend nodes -Create the mount directory +1. Create the mount directory -``` -$ mkdir -p /opt/seafile/shared + ```sh + mkdir -p /opt/seafile/shared + ``` -``` +2. Pulling Seafile image -Create the docker-compose.yml file + Log into Seafile's private repository and pull the Seafile image: -``` -$ cd /opt/seafile -$ vim docker-compose.yml + ```bash + docker login docker.seadrive.org + docker pull docker.seadrive.org/seafileltd/seafile-pro-mc:12.0-latest + ``` -``` + When prompted, enter the username and password of the private repository. They are available on the download page in the [Customer Center](https://customer.seafile.com/downloads). -``` -services: - seafile: - image: docker.seadrive.org/seafileltd/seafile-pro-mc:latest - container_name: seafile - ports: - - 80:80 - volumes: - - /opt/seafile/shared:/shared - environment: - - CLUSTER_SERVER=true - - CLUSTER_MODE=frontend - - TIME_ZONE=UTC # Optional, default is UTC. Should be uncomment and set to your local time zone. + !!! note + Older Seafile PE versions are also available in the repository (back to Seafile 7.0). To pull an older version, replace '12.0-latest' tag by the desired version. -``` +3. Download the `seafile-server.yml` and `.env` -!!! note - - `CLUSTER_SERVER=true` means seafile cluster mode - - `CLUSTER_MODE=frontend` means this node is seafile frontend server + ```sh + wget -O .env https://manual.seafile.com/12.0/docker/cluster/env + wget https://manual.seafile.com/12.0/docker/cluster/seafile-server.yml + ``` -Start the seafile docker container +4. Modify the [variables](../config/env.md) in `.env` (especially terms like `<...>`). -``` -$ cd /opt/seafile -$ docker compose up -d + !!! tip + If you have already deployed AWS S3 storage backend and plan to apply it to Seafile cluster, you can modify the variables in `.env` to [set them synchronously during initialization](../config/env.md#s3-storage-backend-configurations-only-valid-in-pro-edition-at-deploying-first-time). -``` -#### Initial configuration files +5. Start the seafile docker in **cluster init mode** -1\. Manually generate configuration files + ```sh + $ cd /opt/seafile + $ docker compose up -d + ``` -``` -$ docker exec -it seafile bash +6. Check and modify the configuration files (e.g., MySQL, Memcached, Elasticsearch) in configuration files + - [ccnet.conf](../config/ccnet-conf.md) + - [seafevents.conf](../config/seafevents-conf.md) + - [seafile.conf](../config/seafile-conf.md) + - [seahub_settings.py](../config/seahub_settings_py.md) -# cd /scripts && ./cluster_conf_init.py -# cd /opt/seafile/conf +7. After initailizing the cluster, the following fields can be removed or noted in `.env` + - `CLUSTER_INIT_MODE` + - `CLUSTER_INIT_MEMCACHED_HOST` + - `CLUSTER_INIT_ES_HOST` + - `CLUSTER_INIT_ES_PORT` + - `INIT_S3_STORAGE_BACKEND_CONFIG` + - `INIT_S3_COMMIT_BUCKET` + - `INIT_S3_FS_BUCKET` + - `INIT_S3_BLOCK_BUCKET` + - `INIT_S3_KEY_ID` + - `INIT_S3_SECRET_KEY` -``` - -2\. Modify the mysql configuration options (user, host, password) in configuration files such as ccnet.conf, seafevents.conf, seafile.conf and seahub_settings.py. - -3\. Modify the memcached configuration option in seahub_settings.py - -``` -CACHES = { - 'default': { - 'BACKEND': 'django_pylibmc.memcached.PyLibMCCache', - 'LOCATION': 'memcached:11211', - }, -... -} - | - v - -CACHES = { - 'default': { - 'BACKEND': 'django_pylibmc.memcached.PyLibMCCache', - 'LOCATION': '{you memcached server host}:11211', - }, -... -} - -``` - -4\. Modify the \[INDEX FILES] configuration options in seafevents.conf - -``` -[INDEX FILES] -es_port = {your elasticsearch server port} -es_host = {your elasticsearch server host} -enabled = true -highlight = fvh -interval = 10m -... - -``` - -5\. Add some configurations in seahub_settings.py - -```python -SERVICE_URL = 'http{s}://{your server IP or sitename}/' -FILE_SERVER_ROOT = 'http{s}://{your server IP or sitename}/seafhttp' -AVATAR_FILE_STORAGE = 'seahub.base.database_storage.DatabaseStorage' - -``` - -6\. Add cluster special configuration in seafile.conf - -``` -[cluster] -enabled = true -``` +8. Restart to container to start the service in frontend node -7\. Add memory cache configuration in seafile.conf - -``` -[memcached] -memcached_options = --SERVER={you memcached server host} --POOL-MIN=10 --POOL-MAX=100 -``` - -#### Import the tables of seahub_db, seafile_db and ccnet_db - -Enter the container, and then execute the following commands to import tables - -``` -$ docker exec -it seafile bash - -# apt-get update && apt-get install -y mysql-client - -# mysql -h{your mysql host} -u[username] -p[password] ccnet_db < /opt/seafile/seafile-server-latest/sql/mysql/ccnet.sql -# mysql -h{your mysql host} -u[username] -p[password] seafile_db < /opt/seafile/seafile-server-latest/sql/mysql/seafile.sql -# mysql -h{your mysql host} -u[username] -p[password] seahub_db < /opt/seafile/seafile-server-latest/seahub/sql/mysql.sql - -``` - -Start Seafile service - -``` -$ docker exec -it seafile bash - -# cd /opt/seafile/seafile-server-latest -# ./seafile.sh start && ./seahub.sh start - -``` - -When you start it for the first time, seafile will guide you to set up an admin user. - -When deploying the second frontend node, you can directly copy all the directories generated by the first frontend node, including the docker-compose.yml file and modified configuration files, and then start the seafile docker container. + ```sh + docker compose down + docker compose up -d + ``` ### Deploy seafile backend node -Create the mount directory - -``` -$ mkdir -p /opt/seafile/shared - -``` - -Create the docker-compose.yml file - -``` -$ cd /opt/seafile -$ vim docker-compose.yml - -``` - -``` -services: - seafile: - image: docker.seadrive.org/seafileltd/seafile-pro-mc:latest - container_name: seafile - ports: - - 80:80 - volumes: - - /opt/seafile/shared:/shared - environment: - - CLUSTER_SERVER=true - - CLUSTER_MODE=backend - - TIME_ZONE=UTC # Optional, default is UTC. Should be uncomment and set to your local time zone. - -``` - -!!! note - - `CLUSTER_SERVER=true` means seafile cluster mode - - `CLUSTER_MODE=backend` means this node is seafile backend server +1. Create the mount directory -Start the seafile docker container + ``` + $ mkdir -p /opt/seafile/shared -``` -$ cd /opt/seafile -$ docker compose up -d - -``` + ``` -Copy configuration files of the frontend node, and then start Seafile server of the backend node +2. Pulling Seafile image, see [here](#deploy-seafile-frontend-nodes) for the details -``` -$ docker exec -it seafile bash - -# cd /opt/seafile/seafile-server-latest -# ./seafile.sh start && ./seafile-background-tasks.sh start +3. Copy `seafile-server.yml`, `.env` and configuration files from frontend node -``` + !!! note + The configuration files from frontend node have to be put in the same path as the frontend node, i.e., `/opt/seafile/shared/seafile/conf/*` -### Use S3 as backend storage +4. Modify `.env`, set `CLUSTER_MODE` to `backend` -Modify the seafile.conf file on each node to configure S3 storage. - -vim seafile.conf - -``` -[commit_object_backend] -name = s3 -bucket = {your-commit-objects} # The bucket name can only use lowercase letters, numbers, and dashes -key_id = {your-key-id} -key = {your-secret-key} -use_v4_signature = true -aws_region = eu-central-1 # eu-central-1 for Frankfurt region - -[fs_object_backend] -name = s3 -bucket = {your-fs-objects} -key_id = {your-key-id} -key = {your-secret-key} -use_v4_signature = true -aws_region = eu-central-1 - -[block_backend] -name = s3 -bucket = {your-block-objects} -key_id = {your-key-id} -key = {your-secret-key} -use_v4_signature = true -aws_region = eu-central-1 - -``` +5. Start the service in the backend node -### Deployment load balance (Optional) + ```sh + docker compose up -d + ``` + +## Deployment load balance (Optional) -#### Install HAproxy and Keepalived services +### Install HAproxy and Keepalived services Execute the following commands on the two Seafile frontend servers: diff --git a/manual/setup/setup_pro_by_docker.md b/manual/setup/setup_pro_by_docker.md index d701e9249..d5eb11c05 100644 --- a/manual/setup/setup_pro_by_docker.md +++ b/manual/setup/setup_pro_by_docker.md @@ -82,8 +82,17 @@ The following fields merit particular attention: | `SEAFILE_SERVER_HOSTNAME` | Seafile server hostname or domain | (required) | | `SEAFILE_SERVER_PROTOCOL` | Seafile server protocol (http or https) | `http` | | `TIME_ZONE` | Time zone | `UTC` | -| `INIT_SEAFILE_ADMIN_EMAIL` | Admin username | me@example.com | -| `INIT_SEAFILE_ADMIN_PASSWORD` | Admin password | asecret | +| `INIT_SEAFILE_ADMIN_EMAIL` | Synchronously set admin username during initialization | me@example.com | +| `INIT_SEAFILE_ADMIN_PASSWORD` | Synchronously set admin password during initialization | asecret | +| `INIT_S3_STORAGE_BACKEND_CONFIG` | Whether to configure S3 storage backend synchronously during initialization (i.e., the following variables with prefix `INIT_S3_*`, for more details, please refer to [AWS S3](./setup_with_amazon_s3.md#aws-s3)) | false | +| `INIT_S3_COMMIT_BUCKET` | S3 storage backend commit objects bucket (only valid when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | (required when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | +| `INIT_S3_FS_BUCKET` | S3 storage backend fs objects bucket (only valid when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | (required when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | +| `INIT_S3_BLOCK_BUCKET` | S3 storage backend block objects bucket (only valid when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | (required when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | +| `INIT_S3_KEY_ID` | S3 storage backend key ID (only valid when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | (required when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | +| `INIT_S3_SECRET_KEY` | S3 storage backend secret key (only valid when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | (required when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | +| `INIT_S3_USE_V4_SIGNATURE` | Use the v4 protocol of S3 if enabled (only valid when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | `true` | +| `INIT_S3_AWS_REGION` | Region you create the buckets (only valid when `INIT_S3_STORAGE_BACKEND_CONFIG` and `INIT_S3_USE_V4_SIGNATURE` sets to `true`) | `us-east-1` | +| `INIT_S3_USE_HTTPS` | Use HTTPS connections to S3 if enabled (only valid when `INIT_S3_STORAGE_BACKEND_CONFIG` sets to `true`) | `true` | To conclude, set the directory permissions of the Elasticsearch volumne: diff --git a/manual/setup/setup_with_amazon_s3.md b/manual/setup/setup_with_amazon_s3.md index ca1e0549c..6b3ddc3f4 100644 --- a/manual/setup/setup_with_amazon_s3.md +++ b/manual/setup/setup_with_amazon_s3.md @@ -1,10 +1,24 @@ # Setup With S3 Storage +!!! tip "New feature from 12.0 pro edition" + If your will deploy Seafile server in Docker, you can modify the following fields in `.env` **before starting the services**: + + ```sh + INIT_S3_STORAGE_BACKEND_CONFIG=true + INIT_S3_COMMIT_BUCKET= + INIT_S3_FS_BUCKET= + INIT_S3_BLOCK_BUCKET= + INIT_S3_KEY_ID= + INIT_S3_SECRET_KEY= + ``` + + The above modifications will generate the same configuration file as [AWS S3](#aws-s3) and will take effect when the service is started for the first time. + ## Prepare To setup Seafile Professional Server with Amazon S3: -- Setup the basic Seafile Professional Server following the guide on [Download and setup Seafile Professional Server](../setup_binary/installation_pro.md) +- Setup the basic Seafile Professional Server following the guide on [setup Seafile Professional Server](./setup_pro_by_docker.md) - Install the python `boto` library. It's needed to access S3 service. === "Seafile 10.0 or earlier"