Added updated seafile stack config and files
This commit is contained in:
90
stacks/seafile/.env
Normal file
90
stacks/seafile/.env
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
#################################
|
||||||
|
# Docker compose configurations #
|
||||||
|
#################################
|
||||||
|
COMPOSE_FILE='seafile-server.yml,seadoc.yml,seasearch.yml,notification-server.yml,md-server.yml'
|
||||||
|
COMPOSE_PATH_SEPARATOR=','
|
||||||
|
|
||||||
|
## Images
|
||||||
|
SEAFILE_IMAGE=seafileltd/seafile-pro-mc:13.0.6-testing
|
||||||
|
SEAFILE_DB_IMAGE=mariadb:10.11
|
||||||
|
SEAFILE_REDIS_IMAGE=redis
|
||||||
|
SEADOC_IMAGE=seafileltd/sdoc-server:2.0.3-testing
|
||||||
|
NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:13.0.0-testing
|
||||||
|
SEASEARCH_IMAGE=seafileltd/seasearch:1.0.1-testing
|
||||||
|
MD_IMAGE=seafileltd/seafile-md-server:13.0.6-testing
|
||||||
|
|
||||||
|
## Storage
|
||||||
|
SEAFILE_VOLUME=/mnt/user/appdata/seafile/data
|
||||||
|
SEAFILE_MYSQL_VOLUME=/mnt/user/appdata/seafile/db-data
|
||||||
|
SS_DATA_PATH=/mnt/user/appdata/seafile/seasearch-data
|
||||||
|
SEADOC_VOLUME=/mnt/user/appdata/seafile/seadoc-data
|
||||||
|
BASIC_STORAGE_PATH=/mnt/user/appdata/seafile
|
||||||
|
|
||||||
|
### Storage type
|
||||||
|
SEAF_SERVER_STORAGE_TYPE=disk
|
||||||
|
MD_STORAGE_TYPE=s3
|
||||||
|
SS_STORAGE_TYPE=disk
|
||||||
|
|
||||||
|
### S3 for metadata server
|
||||||
|
S3_MD_BUCKET=seafile-md
|
||||||
|
S3_KEY_ID=AKIAQP5UUFQPMDXWPW4O
|
||||||
|
S3_SECRET_KEY=<REDACT>
|
||||||
|
S3_USE_V4_SIGNATURE=true
|
||||||
|
S3_PATH_STYLE_REQUEST=false
|
||||||
|
S3_AWS_REGION=us-east-1
|
||||||
|
S3_HOST=s3.amazonaws.com
|
||||||
|
S3_USE_HTTPS=true
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Startup parameters #
|
||||||
|
#################################
|
||||||
|
SEAFILE_SERVER_HOSTNAME=fileserver.rishighan.com
|
||||||
|
SEAFILE_SERVER_PROTOCOL=https
|
||||||
|
TIME_ZONE=Etc/UTC
|
||||||
|
JWT_PRIVATE_KEY=<REDACT>
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Third-party service configuration #
|
||||||
|
#####################################
|
||||||
|
## Database
|
||||||
|
SEAFILE_MYSQL_DB_HOST=db
|
||||||
|
SEAFILE_MYSQL_DB_USER=seafile
|
||||||
|
SEAFILE_MYSQL_DB_PASSWORD=<REDACT>
|
||||||
|
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
|
||||||
|
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
|
||||||
|
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
|
||||||
|
|
||||||
|
## Cache
|
||||||
|
CACHE_PROVIDER=redis
|
||||||
|
REDIS_HOST=redis
|
||||||
|
REDIS_PORT=6379
|
||||||
|
REDIS_PASSWORD=
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Initial variables #
|
||||||
|
######################################
|
||||||
|
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=<REDACT>
|
||||||
|
INIT_SEAFILE_ADMIN_EMAIL=frishi@me.com
|
||||||
|
INIT_SEAFILE_ADMIN_PASSWORD=<REDACT>
|
||||||
|
INIT_SS_ADMIN_USER=frishi@me.com
|
||||||
|
INIT_SS_ADMIN_PASSWORD=<REDACT>
|
||||||
|
|
||||||
|
############################################
|
||||||
|
# Additional configurations for extensions #
|
||||||
|
############################################
|
||||||
|
## SeaDoc
|
||||||
|
ENABLE_SEADOC=true
|
||||||
|
|
||||||
|
## SeaSearch
|
||||||
|
SS_MAX_OBJ_CACHE_SIZE=10GB
|
||||||
|
SS_LOG_TO_STDOUT=true
|
||||||
|
SS_LOG_OUTPUT=true
|
||||||
|
SS_LOG_LEVEL=info
|
||||||
|
|
||||||
|
## Notification
|
||||||
|
NOTIFICATION_SERVER_URL=https://notification.rishighan.com
|
||||||
|
INNER_NOTIFICATION_SERVER_URL=http://notification-server:8083
|
||||||
|
SEADOC_SERVER_URL=https://fileserver.rishighan.com/sdoc-server
|
||||||
|
|
||||||
|
## Seafile AI
|
||||||
|
ENABLE_SEAFILE_AI=false
|
||||||
@@ -1,31 +1,46 @@
|
|||||||
# Seafile Stack
|
# Seafile Pro Stack
|
||||||
|
|
||||||
Seafile 13 Pro with SeaDoc, SeaSearch, Notification Server, and Metadata Server.
|
Seafile Pro 13.0.6 with SeaDoc, SeaSearch, Notification Server, and Metadata Server.
|
||||||
|
|
||||||
## Services
|
## Important Notes
|
||||||
|
|
||||||
| Service | Port | Description |
|
This stack uses Seafile's official multi-file compose setup. It cannot be deployed via Portainer's git-based stack deployment due to the `COMPOSE_FILE` variable combining multiple yml files.
|
||||||
|---------|------|-------------|
|
|
||||||
| seafile | 8098:80 | Main Seafile server |
|
|
||||||
| seadoc | 8888:80 | Document collaboration |
|
|
||||||
| notification-server | 8083:8083 | Real-time notifications |
|
|
||||||
| seafile-md-server | 8084:8084 | Metadata server |
|
|
||||||
| seasearch | 4080:4080 | Full-text search |
|
|
||||||
| seafile-mysql | - | MariaDB database |
|
|
||||||
| seafile-redis | - | Redis cache |
|
|
||||||
|
|
||||||
## Configuration Files
|
**Deployment method:** Run from command line with `docker compose up -d`
|
||||||
|
|
||||||
Copy these to `/mnt/user/appdata/seafile/` before deploying:
|
## Files
|
||||||
|
|
||||||
- `seahub_settings.py` - Seahub configuration
|
- `.env` - All configuration variables
|
||||||
- `seafile.conf` - Seafile server configuration
|
- `seafile-server.yml` - Main Seafile + MariaDB + Redis
|
||||||
|
- `seadoc.yml` - SeaDoc server
|
||||||
|
- `seasearch.yml` - SeaSearch server
|
||||||
|
- `notification-server.yml` - Notification server
|
||||||
|
- `md-server.yml` - Metadata server
|
||||||
|
- `seahub_settings.py` - Seahub Python config (mounted into container)
|
||||||
|
|
||||||
## NGINX Proxy Manager Setup
|
## Deployment
|
||||||
|
|
||||||
### fileserver.rishighan.com
|
```bash
|
||||||
|
cd /mnt/user/appdata/seafile
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
Create HTTPS proxy with this Advanced config:
|
## Volumes
|
||||||
|
|
||||||
|
All data stored in `/mnt/user/appdata/seafile/`:
|
||||||
|
- `data/` - Seafile data and file storage
|
||||||
|
- `db-data/` - MariaDB database
|
||||||
|
- `seadoc-data/` - SeaDoc data
|
||||||
|
- `seasearch-data/` - SeaSearch index
|
||||||
|
|
||||||
|
## External Dependencies
|
||||||
|
|
||||||
|
- **OnlyOffice** - Running in documents stack at `https://office.rishighan.com`
|
||||||
|
- **NPM Proxy Hosts:**
|
||||||
|
- `fileserver.rishighan.com` → `192.168.1.75:8098`
|
||||||
|
- `notification.rishighan.com` → `192.168.1.75:8083`
|
||||||
|
|
||||||
|
## NPM Advanced Config for fileserver.rishighan.com
|
||||||
|
|
||||||
```nginx
|
```nginx
|
||||||
location / {
|
location / {
|
||||||
@@ -67,41 +82,22 @@ location /socket.io {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### notification.rishighan.com
|
## OnlyOffice JWT
|
||||||
|
|
||||||
Create separate HTTPS proxy pointing to `192.168.1.75:8083`
|
The JWT secret must match between `seahub_settings.py` and OnlyOffice's `/etc/onlyoffice/documentserver/local.json`. Check with:
|
||||||
|
|
||||||
## Migration from VM
|
|
||||||
|
|
||||||
1. Stop Seafile on VM:
|
|
||||||
```bash
|
```bash
|
||||||
ssh rishi@192.168.1.112
|
docker exec onlyoffice cat /etc/onlyoffice/documentserver/local.json | grep -A2 '"secret"'
|
||||||
cd /opt/seafile && docker compose down
|
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Create directories:
|
## Troubleshooting
|
||||||
```bash
|
|
||||||
mkdir -p /mnt/user/appdata/seafile/{data,db-data,seadoc-data,seasearch-data}
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Copy data:
|
### "Commit is missing" errors
|
||||||
```bash
|
The seafile data wasn't fully transferred. Re-rsync with proper permissions from source.
|
||||||
rsync -avP rishi@192.168.1.112:~/seafile/data/ /mnt/user/appdata/seafile/data/
|
|
||||||
rsync -avP rishi@192.168.1.112:~/seafile/db-data/ /mnt/user/appdata/seafile/db-data/
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Copy config files:
|
### OnlyOffice "document security token" error
|
||||||
```bash
|
JWT secret mismatch. Update `ONLYOFFICE_JWT_SECRET` in `seahub_settings.py` to match OnlyOffice config.
|
||||||
cp seahub_settings.py /mnt/user/appdata/seafile/
|
|
||||||
cp seafile.conf /mnt/user/appdata/seafile/
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Update NPM proxies to point to 192.168.1.75 instead of 192.168.1.112
|
### Search returns 500 error
|
||||||
|
Check if SeaSearch is accessible: `docker exec seafile curl -s http://seafile-seasearch:4080`
|
||||||
6. Deploy stack via Portainer
|
Check database for missing .ibd files in mysql logs.
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- Notifications only work for shared library events between users
|
|
||||||
- SeaDoc requires the `/sdoc-server/` and `/socket.io` proxy locations
|
|
||||||
- WebDAV is enabled on port 8080 at `/seafdav`
|
|
||||||
|
|||||||
45
stacks/seafile/md-server.yml
Normal file
45
stacks/seafile/md-server.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
services:
|
||||||
|
seafile-md-server:
|
||||||
|
image: ${MD_IMAGE:-seafileltd/seafile-md-server:latest}
|
||||||
|
container_name: seafile-md-server
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
|
||||||
|
environment:
|
||||||
|
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
|
||||||
|
- SEAFILE_MYSQL_DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
|
||||||
|
- SEAFILE_MYSQL_DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
|
||||||
|
- SEAFILE_MYSQL_DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
|
||||||
|
- SEAFILE_MYSQL_DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
|
||||||
|
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
|
||||||
|
- SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-false}
|
||||||
|
- MD_PORT=${MD_PORT:-8084}
|
||||||
|
- MD_LOG_LEVEL=${MD_LOG_LEVEL:-info}
|
||||||
|
- MD_MAX_CACHE_SIZE=${MD_MAX_CACHE_SIZE:-1GB}
|
||||||
|
- SEAF_SERVER_STORAGE_TYPE=${SEAF_SERVER_STORAGE_TYPE:-}
|
||||||
|
- MD_STORAGE_TYPE=${MD_STORAGE_TYPE:-disk}
|
||||||
|
- S3_COMMIT_BUCKET=${S3_COMMIT_BUCKET:-}
|
||||||
|
- S3_FS_BUCKET=${S3_FS_BUCKET:-}
|
||||||
|
- S3_BLOCK_BUCKET=${S3_BLOCK_BUCKET:-}
|
||||||
|
- S3_MD_BUCKET=${S3_MD_BUCKET:-}
|
||||||
|
- S3_HOST=${S3_HOST:-}
|
||||||
|
- S3_AWS_REGION=${S3_AWS_REGION:-}
|
||||||
|
- S3_USE_HTTPS=${S3_USE_HTTPS:-true}
|
||||||
|
- S3_PATH_STYLE_REQUEST=${S3_PATH_STYLE_REQUEST:-false}
|
||||||
|
- S3_KEY_ID=${S3_KEY_ID:-}
|
||||||
|
- S3_SECRET_KEY=${S3_SECRET_KEY:-}
|
||||||
|
- S3_USE_V4_SIGNATURE=${S3_USE_V4_SIGNATURE:-true}
|
||||||
|
- S3_SSE_C_KEY=${S3_SSE_C_KEY:-}
|
||||||
|
- CACHE_PROVIDER=${CACHE_PROVIDER:-redis}
|
||||||
|
- REDIS_HOST=${REDIS_HOST:-redis}
|
||||||
|
- REDIS_PORT=${REDIS_PORT:-6379}
|
||||||
|
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
- seafile-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
seafile-net:
|
||||||
|
name: seafile-net
|
||||||
28
stacks/seafile/notification-server.yml
Normal file
28
stacks/seafile/notification-server.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
notification-server:
|
||||||
|
image: ${NOTIFICATION_SERVER_IMAGE:-seafileltd/notification-server:13.0-latest}
|
||||||
|
container_name: notification-server
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ${SEAFILE_VOLUME:-/opt/seafile-data}/seafile/logs:/shared/seafile/logs
|
||||||
|
ports:
|
||||||
|
- "8083:8083"
|
||||||
|
environment:
|
||||||
|
- SEAFILE_MYSQL_DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
|
||||||
|
- SEAFILE_MYSQL_DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
|
||||||
|
- SEAFILE_MYSQL_DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
|
||||||
|
- SEAFILE_MYSQL_DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
|
||||||
|
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db}
|
||||||
|
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
|
||||||
|
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
|
||||||
|
- SEAFILE_LOG_TO_STDOUT=true
|
||||||
|
- NOTIFICATION_SERVER_LOG_LEVEL=${NOTIFICATION_SERVER_LOG_LEVEL:-info}
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
- seafile-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
seafile-net:
|
||||||
|
name: seafile-net
|
||||||
28
stacks/seafile/seadoc.yml
Normal file
28
stacks/seafile/seadoc.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
seadoc:
|
||||||
|
image: ${SEADOC_IMAGE:-seafileltd/sdoc-server:2.0.3-testing}
|
||||||
|
container_name: seadoc
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ${SEADOC_VOLUME:-/opt/seadoc-data/}:/shared
|
||||||
|
ports:
|
||||||
|
- "8888:80"
|
||||||
|
environment:
|
||||||
|
- DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
|
||||||
|
- DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
|
||||||
|
- DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
|
||||||
|
- DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
|
||||||
|
- DB_NAME=${SEADOC_MYSQL_DB_NAME:-seahub_db}
|
||||||
|
- TIME_ZONE=${TIME_ZONE:-Etc/UTC}
|
||||||
|
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
|
||||||
|
- NON_ROOT=${NON_ROOT:-false}
|
||||||
|
- SEAHUB_SERVICE_URL=${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
- seafile-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
seafile-net:
|
||||||
|
name: seafile-net
|
||||||
96
stacks/seafile/seafile-server.yml
Normal file
96
stacks/seafile/seafile-server.yml
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: ${SEAFILE_DB_IMAGE:-mariadb:10.11}
|
||||||
|
container_name: seafile-mysql
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
|
||||||
|
- MYSQL_LOG_CONSOLE=true
|
||||||
|
- MARIADB_AUTO_UPGRADE=1
|
||||||
|
volumes:
|
||||||
|
- "${SEAFILE_MYSQL_VOLUME:-/opt/seafile-mysql/db}:/var/lib/mysql"
|
||||||
|
networks:
|
||||||
|
- seafile-net
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "sh", "-c", "mysqladmin ping -h localhost -u root -p$$MYSQL_ROOT_PASSWORD"]
|
||||||
|
interval: 20s
|
||||||
|
start_period: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: ${SEAFILE_REDIS_IMAGE:-redis}
|
||||||
|
container_name: seafile-redis
|
||||||
|
restart: unless-stopped
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- redis-server --requirepass "$$REDIS_PASSWORD"
|
||||||
|
environment:
|
||||||
|
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
|
||||||
|
networks:
|
||||||
|
- seafile-net
|
||||||
|
|
||||||
|
seafile:
|
||||||
|
image: ${SEAFILE_IMAGE:-seafileltd/seafile-pro-mc:13.0.6-testing}
|
||||||
|
container_name: seafile
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8098:80"
|
||||||
|
volumes:
|
||||||
|
- ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
|
||||||
|
- ${BASIC_STORAGE_PATH}/seahub_settings.py:/shared/seafile/conf/seahub_settings.py
|
||||||
|
environment:
|
||||||
|
- INIT_SEAFILE_MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
|
||||||
|
- SEAFILE_MYSQL_DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
|
||||||
|
- SEAFILE_MYSQL_DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
|
||||||
|
- SEAFILE_MYSQL_DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
|
||||||
|
- SEAFILE_MYSQL_DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
|
||||||
|
- SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db}
|
||||||
|
- SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
|
||||||
|
- SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:-seahub_db}
|
||||||
|
- TIME_ZONE=${TIME_ZONE:-Etc/UTC}
|
||||||
|
- INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-me@example.com}
|
||||||
|
- INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD:-asecret}
|
||||||
|
- SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
|
||||||
|
- SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-http}
|
||||||
|
- SITE_ROOT=${SITE_ROOT:-/}
|
||||||
|
- NON_ROOT=${NON_ROOT:-false}
|
||||||
|
- JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
|
||||||
|
- SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-false}
|
||||||
|
- ENABLE_SEADOC=${ENABLE_SEADOC:-true}
|
||||||
|
- SEADOC_SERVER_URL=${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}/sdoc-server
|
||||||
|
- CACHE_PROVIDER=${CACHE_PROVIDER:-redis}
|
||||||
|
- REDIS_HOST=${REDIS_HOST:-redis}
|
||||||
|
- REDIS_PORT=${REDIS_PORT:-6379}
|
||||||
|
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
|
||||||
|
- MEMCACHED_HOST=${MEMCACHED_HOST:-memcached}
|
||||||
|
- MEMCACHED_PORT=${MEMCACHED_PORT:-11211}
|
||||||
|
- SEAF_SERVER_STORAGE_TYPE=${SEAF_SERVER_STORAGE_TYPE:-}
|
||||||
|
- S3_COMMIT_BUCKET=${S3_COMMIT_BUCKET:-}
|
||||||
|
- S3_FS_BUCKET=${S3_FS_BUCKET:-}
|
||||||
|
- S3_BLOCK_BUCKET=${S3_BLOCK_BUCKET:-}
|
||||||
|
- S3_KEY_ID=${S3_KEY_ID:-}
|
||||||
|
- S3_SECRET_KEY=${S3_SECRET_KEY:-}
|
||||||
|
- S3_USE_V4_SIGNATURE=${S3_USE_V4_SIGNATURE:-true}
|
||||||
|
- S3_AWS_REGION=${S3_AWS_REGION:-us-east-1}
|
||||||
|
- S3_HOST=${S3_HOST:-}
|
||||||
|
- S3_USE_HTTPS=${S3_USE_HTTPS:-true}
|
||||||
|
- S3_PATH_STYLE_REQUEST=${S3_PATH_STYLE_REQUEST:-false}
|
||||||
|
- S3_SSE_C_KEY=${S3_SSE_C_KEY:-}
|
||||||
|
- INNER_NOTIFICATION_SERVER_URL=${INNER_NOTIFICATION_SERVER_URL:-http://notification-server:8083}
|
||||||
|
- NOTIFICATION_SERVER_URL=${NOTIFICATION_SERVER_URL:-}
|
||||||
|
- ENABLE_SEAFILE_AI=${ENABLE_SEAFILE_AI:-false}
|
||||||
|
- SEAFILE_AI_SERVER_URL=${SEAFILE_AI_SERVER_URL:-http://seafile-ai:8888}
|
||||||
|
- SEAFILE_AI_SECRET_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
redis:
|
||||||
|
condition: service_started
|
||||||
|
networks:
|
||||||
|
- seafile-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
seafile-net:
|
||||||
|
name: seafile-net
|
||||||
@@ -22,7 +22,7 @@ METADATA_SERVER_URL = 'http://seafile-md-server:8084'
|
|||||||
ENABLE_ONLYOFFICE = True
|
ENABLE_ONLYOFFICE = True
|
||||||
VERIFY_ONLYOFFICE_CERTIFICATE = True
|
VERIFY_ONLYOFFICE_CERTIFICATE = True
|
||||||
ONLYOFFICE_APIJS_URL = 'https://office.rishighan.com/web-apps/apps/api/documents/api.js'
|
ONLYOFFICE_APIJS_URL = 'https://office.rishighan.com/web-apps/apps/api/documents/api.js'
|
||||||
ONLYOFFICE_JWT_SECRET = 'secret123'
|
ONLYOFFICE_JWT_SECRET = 'SgdxIRmL9tPORb8zdoOg9tzqTY4DBQqJ'
|
||||||
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods', 'csv')
|
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods', 'csv')
|
||||||
ONLYOFFICE_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx')
|
ONLYOFFICE_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx')
|
||||||
ONLYOFFICE_FORCE_SAVE = True
|
ONLYOFFICE_FORCE_SAVE = True
|
||||||
|
|||||||
46
stacks/seafile/seasearch.yml
Normal file
46
stacks/seafile/seasearch.yml
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
services:
|
||||||
|
seasearch:
|
||||||
|
image: ${SEASEARCH_IMAGE:-seafileltd/seasearch:1.0.1-testing}
|
||||||
|
container_name: seafile-seasearch
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 4080:4080
|
||||||
|
volumes:
|
||||||
|
- ${SS_DATA_PATH:-/opt/seasearch-data}:/opt/seasearch/data
|
||||||
|
environment:
|
||||||
|
- SS_FIRST_ADMIN_USER=${INIT_SS_ADMIN_USER:-}
|
||||||
|
- SS_FIRST_ADMIN_PASSWORD=${INIT_SS_ADMIN_PASSWORD:-}
|
||||||
|
- SS_MAX_OBJ_CACHE_SIZE=${SS_MAX_OBJ_CACHE_SIZE:-10GB}
|
||||||
|
- SS_STORAGE_TYPE=${SS_STORAGE_TYPE:-disk}
|
||||||
|
- S3_SS_BUCKET=${S3_SS_BUCKET:-}
|
||||||
|
- S3_KEY_ID=${S3_KEY_ID:-}
|
||||||
|
- S3_USE_V4_SIGNATURE=${S3_USE_V4_SIGNATURE:-true}
|
||||||
|
- S3_SECRET_KEY=${S3_SECRET_KEY:-}
|
||||||
|
- S3_HOST=${S3_HOST:-}
|
||||||
|
- S3_USE_HTTPS=${S3_USE_HTTPS:-true}
|
||||||
|
- S3_PATH_STYLE_REQUEST=${S3_PATH_STYLE_REQUEST:-true}
|
||||||
|
- S3_AWS_REGION=${S3_AWS_REGION:-us-east-1}
|
||||||
|
- S3_SSE_C_KEY=${S3_SSE_C_KEY:-}
|
||||||
|
- SS_LOG_TO_STDOUT=${SS_LOG_TO_STDOUT:-false}
|
||||||
|
- SS_LOG_DIR=${SS_LOG_DIR:-/opt/seasearch/data/log}
|
||||||
|
- SS_LOG_LEVEL=${SS_LOG_LEVEL:-info}
|
||||||
|
- SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-false}
|
||||||
|
- SEATABLE_LOG_TO_STDOUT=${SEATABLE_LOG_TO_STDOUT:-false}
|
||||||
|
- SS_SERVER_MODE=${SS_SERVER_MODE:-}
|
||||||
|
- SS_CLUSTER_ID=${SS_CLUSTER_ID:-}
|
||||||
|
- SS_CLUSTER_PROXY_HOST=${SS_CLUSTER_PROXY_HOST:-0.0.0.0}
|
||||||
|
- SS_CLUSTER_PROXY_PORT=${SS_CLUSTER_PROXY_PORT:-4082}
|
||||||
|
- SS_CLUSTER_MANAGER_ADDR=${SS_CLUSTER_MANAGER_ADDR:-127.0.0.1:4081}
|
||||||
|
- SS_ETCD_USERNAME=${SS_ETCD_USERNAME:-}
|
||||||
|
- SS_ETCD_PASSWORD=${SS_ETCD_PASSWORD:-}
|
||||||
|
- SS_ETCD_ENDPOINTS=${SS_ETCD_ENDPOINTS:-127.0.0.1:2379}
|
||||||
|
- SS_ETCD_PREFIX=${SS_ETCD_PREFIX:-/zinc}
|
||||||
|
- SS_CLUSTER_PROXY_LOG_DIR=${SS_CLUSTER_PROXY_LOG_DIR:--/opt/seasearch/data/log}
|
||||||
|
- SS_CLUSTER_MANAGER_HOST=${SS_CLUSTER_MANAGER_HOST:-0.0.0.0}
|
||||||
|
- SS_CLUSTER_MANAGER_PORT=${SS_CLUSTER_MANAGER_PORT:-4081}
|
||||||
|
networks:
|
||||||
|
- seafile-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
seafile-net:
|
||||||
|
name: seafile-net
|
||||||
@@ -1,7 +1,90 @@
|
|||||||
MYSQL_ROOT_PASSWORD=dexter
|
#################################
|
||||||
SEAFILE_MYSQL_DB_PASSWORD=dexter
|
# Docker compose configurations #
|
||||||
SEAFILE_SERVER_HOSTNAME=fileserver.rishighan.com
|
#################################
|
||||||
JWT_PRIVATE_KEY=Qo4s8XissWnJx6gIORcggOaU69ObAa3W84jC05yv
|
COMPOSE_FILE='seafile-server.yml,seadoc.yml,seasearch.yml,notification-server.yml,md-server.yml'
|
||||||
NOTIFICATION_SERVER_URL=https://notification.rishighan.com
|
COMPOSE_PATH_SEPARATOR=','
|
||||||
|
|
||||||
|
## Images
|
||||||
|
SEAFILE_IMAGE=seafileltd/seafile-pro-mc:13.0.6-testing
|
||||||
|
SEAFILE_DB_IMAGE=mariadb:10.11
|
||||||
|
SEAFILE_REDIS_IMAGE=redis
|
||||||
|
SEADOC_IMAGE=seafileltd/sdoc-server:2.0.3-testing
|
||||||
|
NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:13.0.0-testing
|
||||||
|
SEASEARCH_IMAGE=seafileltd/seasearch:1.0.1-testing
|
||||||
|
MD_IMAGE=seafileltd/seafile-md-server:13.0.6-testing
|
||||||
|
|
||||||
|
## Storage
|
||||||
|
SEAFILE_VOLUME=/mnt/user/appdata/seafile/data
|
||||||
|
SEAFILE_MYSQL_VOLUME=/mnt/user/appdata/seafile/db-data
|
||||||
|
SS_DATA_PATH=/mnt/user/appdata/seafile/seasearch-data
|
||||||
|
SEADOC_VOLUME=/mnt/user/appdata/seafile/seadoc-data
|
||||||
|
BASIC_STORAGE_PATH=/mnt/user/appdata/seafile
|
||||||
|
|
||||||
|
### Storage type
|
||||||
|
SEAF_SERVER_STORAGE_TYPE=disk
|
||||||
|
MD_STORAGE_TYPE=s3
|
||||||
|
SS_STORAGE_TYPE=disk
|
||||||
|
|
||||||
|
### S3 for metadata server
|
||||||
|
S3_MD_BUCKET=seafile-md
|
||||||
S3_KEY_ID=AKIAQP5UUFQPMDXWPW4O
|
S3_KEY_ID=AKIAQP5UUFQPMDXWPW4O
|
||||||
S3_SECRET_KEY=sO6z6GatkU3H4wuuEyl0AEziupiya6pjlRa9dDTw
|
S3_SECRET_KEY=sO6z6GatkU3H4wuuEyl0AEziupiya6pjlRa9dDTw
|
||||||
|
S3_USE_V4_SIGNATURE=true
|
||||||
|
S3_PATH_STYLE_REQUEST=false
|
||||||
|
S3_AWS_REGION=us-east-1
|
||||||
|
S3_HOST=s3.amazonaws.com
|
||||||
|
S3_USE_HTTPS=true
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Startup parameters #
|
||||||
|
#################################
|
||||||
|
SEAFILE_SERVER_HOSTNAME=fileserver.rishighan.com
|
||||||
|
SEAFILE_SERVER_PROTOCOL=https
|
||||||
|
TIME_ZONE=Etc/UTC
|
||||||
|
JWT_PRIVATE_KEY=Qo4s8XissWnJx6gIORcggOaU69ObAa3W84jC05yv
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Third-party service configuration #
|
||||||
|
#####################################
|
||||||
|
## Database
|
||||||
|
SEAFILE_MYSQL_DB_HOST=db
|
||||||
|
SEAFILE_MYSQL_DB_USER=seafile
|
||||||
|
SEAFILE_MYSQL_DB_PASSWORD=dexter
|
||||||
|
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
|
||||||
|
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
|
||||||
|
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
|
||||||
|
|
||||||
|
## Cache
|
||||||
|
CACHE_PROVIDER=redis
|
||||||
|
REDIS_HOST=redis
|
||||||
|
REDIS_PORT=6379
|
||||||
|
REDIS_PASSWORD=
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Initial variables #
|
||||||
|
######################################
|
||||||
|
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=dexter
|
||||||
|
INIT_SEAFILE_ADMIN_EMAIL=frishi@me.com
|
||||||
|
INIT_SEAFILE_ADMIN_PASSWORD=Titu@1588
|
||||||
|
INIT_SS_ADMIN_USER=frishi@me.com
|
||||||
|
INIT_SS_ADMIN_PASSWORD=Titu@1588
|
||||||
|
|
||||||
|
############################################
|
||||||
|
# Additional configurations for extensions #
|
||||||
|
############################################
|
||||||
|
## SeaDoc
|
||||||
|
ENABLE_SEADOC=true
|
||||||
|
|
||||||
|
## SeaSearch
|
||||||
|
SS_MAX_OBJ_CACHE_SIZE=10GB
|
||||||
|
SS_LOG_TO_STDOUT=true
|
||||||
|
SS_LOG_OUTPUT=true
|
||||||
|
SS_LOG_LEVEL=info
|
||||||
|
|
||||||
|
## Notification
|
||||||
|
NOTIFICATION_SERVER_URL=https://notification.rishighan.com
|
||||||
|
INNER_NOTIFICATION_SERVER_URL=http://notification-server:8083
|
||||||
|
SEADOC_SERVER_URL=https://fileserver.rishighan.com/sdoc-server
|
||||||
|
|
||||||
|
## Seafile AI
|
||||||
|
ENABLE_SEAFILE_AI=false
|
||||||
|
|||||||
Reference in New Issue
Block a user