From aec2f327075b541e446b8036df9e239890fbf79b Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Tue, 30 Dec 2025 00:19:22 -0500 Subject: [PATCH] Added updated seafile stack config and files --- stacks/seafile/.env | 90 ++++++++++++++++++++++++ stacks/seafile/README.md | 94 ++++++++++++------------- stacks/seafile/md-server.yml | 45 ++++++++++++ stacks/seafile/notification-server.yml | 28 ++++++++ stacks/seafile/seadoc.yml | 28 ++++++++ stacks/seafile/seafile-server.yml | 96 ++++++++++++++++++++++++++ stacks/seafile/seahub_settings.py | 2 +- stacks/seafile/seasearch.yml | 46 ++++++++++++ stacks/seafile/stack.env | 93 +++++++++++++++++++++++-- 9 files changed, 467 insertions(+), 55 deletions(-) create mode 100644 stacks/seafile/.env create mode 100644 stacks/seafile/md-server.yml create mode 100644 stacks/seafile/notification-server.yml create mode 100644 stacks/seafile/seadoc.yml create mode 100644 stacks/seafile/seafile-server.yml create mode 100644 stacks/seafile/seasearch.yml diff --git a/stacks/seafile/.env b/stacks/seafile/.env new file mode 100644 index 0000000..ba884d2 --- /dev/null +++ b/stacks/seafile/.env @@ -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= +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= + +##################################### +# Third-party service configuration # +##################################### +## Database +SEAFILE_MYSQL_DB_HOST=db +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 + +## Cache +CACHE_PROVIDER=redis +REDIS_HOST=redis +REDIS_PORT=6379 +REDIS_PASSWORD= + +###################################### +# Initial variables # +###################################### +INIT_SEAFILE_MYSQL_ROOT_PASSWORD= +INIT_SEAFILE_ADMIN_EMAIL=frishi@me.com +INIT_SEAFILE_ADMIN_PASSWORD= +INIT_SS_ADMIN_USER=frishi@me.com +INIT_SS_ADMIN_PASSWORD= + +############################################ +# 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 \ No newline at end of file diff --git a/stacks/seafile/README.md b/stacks/seafile/README.md index 091bf44..bcd968d 100644 --- a/stacks/seafile/README.md +++ b/stacks/seafile/README.md @@ -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 | -|---------|------|-------------| -| 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 | +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. -## 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 -- `seafile.conf` - Seafile server configuration +- `.env` - All configuration variables +- `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 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 -ssh rishi@192.168.1.112 -cd /opt/seafile && docker compose down +docker exec onlyoffice cat /etc/onlyoffice/documentserver/local.json | grep -A2 '"secret"' ``` -2. Create directories: -```bash -mkdir -p /mnt/user/appdata/seafile/{data,db-data,seadoc-data,seasearch-data} -``` +## Troubleshooting -3. Copy data: -```bash -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/ -``` +### "Commit is missing" errors +The seafile data wasn't fully transferred. Re-rsync with proper permissions from source. -4. Copy config files: -```bash -cp seahub_settings.py /mnt/user/appdata/seafile/ -cp seafile.conf /mnt/user/appdata/seafile/ -``` +### OnlyOffice "document security token" error +JWT secret mismatch. Update `ONLYOFFICE_JWT_SECRET` in `seahub_settings.py` to match OnlyOffice config. -5. Update NPM proxies to point to 192.168.1.75 instead of 192.168.1.112 - -6. Deploy stack via Portainer - -## 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` +### Search returns 500 error +Check if SeaSearch is accessible: `docker exec seafile curl -s http://seafile-seasearch:4080` +Check database for missing .ibd files in mysql logs. diff --git a/stacks/seafile/md-server.yml b/stacks/seafile/md-server.yml new file mode 100644 index 0000000..de19182 --- /dev/null +++ b/stacks/seafile/md-server.yml @@ -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 diff --git a/stacks/seafile/notification-server.yml b/stacks/seafile/notification-server.yml new file mode 100644 index 0000000..4435d66 --- /dev/null +++ b/stacks/seafile/notification-server.yml @@ -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 diff --git a/stacks/seafile/seadoc.yml b/stacks/seafile/seadoc.yml new file mode 100644 index 0000000..a52eba6 --- /dev/null +++ b/stacks/seafile/seadoc.yml @@ -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 diff --git a/stacks/seafile/seafile-server.yml b/stacks/seafile/seafile-server.yml new file mode 100644 index 0000000..94b6884 --- /dev/null +++ b/stacks/seafile/seafile-server.yml @@ -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 diff --git a/stacks/seafile/seahub_settings.py b/stacks/seafile/seahub_settings.py index 1330d9a..97c3164 100644 --- a/stacks/seafile/seahub_settings.py +++ b/stacks/seafile/seahub_settings.py @@ -22,7 +22,7 @@ METADATA_SERVER_URL = 'http://seafile-md-server:8084' ENABLE_ONLYOFFICE = True VERIFY_ONLYOFFICE_CERTIFICATE = True 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_EDIT_FILE_EXTENSION = ('docx', 'pptx', 'xlsx') ONLYOFFICE_FORCE_SAVE = True diff --git a/stacks/seafile/seasearch.yml b/stacks/seafile/seasearch.yml new file mode 100644 index 0000000..7ed4e24 --- /dev/null +++ b/stacks/seafile/seasearch.yml @@ -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 diff --git a/stacks/seafile/stack.env b/stacks/seafile/stack.env index f837c68..077419c 100644 --- a/stacks/seafile/stack.env +++ b/stacks/seafile/stack.env @@ -1,7 +1,90 @@ -MYSQL_ROOT_PASSWORD=dexter -SEAFILE_MYSQL_DB_PASSWORD=dexter -SEAFILE_SERVER_HOSTNAME=fileserver.rishighan.com -JWT_PRIVATE_KEY=Qo4s8XissWnJx6gIORcggOaU69ObAa3W84jC05yv -NOTIFICATION_SERVER_URL=https://notification.rishighan.com +################################# +# 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=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 +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