diff --git a/compose/.env-release b/compose/.env-release index 95f9495..637cf58 100644 --- a/compose/.env-release +++ b/compose/.env-release @@ -22,3 +22,4 @@ REDIS_PASSWORD= # shared secret for secure communication JWT_PRIVATE_KEY= +SECRET_KEY= diff --git a/compose/app-server-standalone.yml b/compose/app-server-standalone.yml new file mode 100644 index 0000000..4df5453 --- /dev/null +++ b/compose/app-server-standalone.yml @@ -0,0 +1,43 @@ +services: + app-server: + image: ${APP_SERVER_IMAGE:-seatable/custom-app-server:6.2.1} + restart: unless-stopped + container_name: app-server + ports: + - 8088:8088 + volumes: + - ${SEATABLE_VOLUMES:-/opt/seatable-server}:/shared + environment: + - SEATABLE_LOG_TO_STDOUT=${LOG_TO_STDOUT:-false} + - NON_ROOT==${NON_ROOT:-false} + - TZ=${TIME_ZONE:-UTC} + - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} + - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} + - SEATABLE_MYSQL_DB_USER=root + - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=${SEATABLE_MYSQL_DB_DTABLE_DB_NAME:-dtable_db} + - SEATABLE_MYSQL_DB_SEAFILE_DB_NAME=${SEATABLE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db} + - SEATABLE_MYSQL_DB_CCNET_DB_NAME=${SEATABLE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db} + - CACHE_PROVIDER=${CACHE_PROVIDER:-redis} + - REDIS_HOST=${REDIS_HOST:-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD:-} + - 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:-} + healthcheck: + test: ["CMD-SHELL", "curl -f http://127.0.0.1:8088/ping || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s diff --git a/compose/app-server.yml b/compose/app-server.yml new file mode 100644 index 0000000..5717e10 --- /dev/null +++ b/compose/app-server.yml @@ -0,0 +1,60 @@ +services: + app-server: + image: ${APP_SERVER_IMAGE:-seatable/custom-app-server:6.2.1} + restart: unless-stopped + container_name: app-server + volumes: + - ${SEATABLE_VOLUMES:-/opt/seatable-server}:/shared + environment: + - SEATABLE_LOG_TO_STDOUT=${LOG_TO_STDOUT:-false} + - NON_ROOT==${NON_ROOT:-false} + - TZ=${TIME_ZONE:-UTC} + - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} + - SEATABLE_MYSQL_DB_PORT=${MARIADB_PORT:-3306} + - SEATABLE_MYSQL_DB_USER=root + - SEATABLE_MYSQL_DB_PASSWORD=${MARIADB_PASSWORD:?Variable is not set or empty} + - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=${SEATABLE_MYSQL_DB_DTABLE_DB_NAME:-dtable_db} + - SEATABLE_MYSQL_DB_SEAFILE_DB_NAME=${SEATABLE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db} + - SEATABLE_MYSQL_DB_CCNET_DB_NAME=${SEATABLE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db} + - CACHE_PROVIDER=${CACHE_PROVIDER:-redis} + - REDIS_HOST=${REDIS_HOST:-redis} + - REDIS_PORT=${REDIS_PORT:-6379} + - REDIS_PASSWORD=${REDIS_PASSWORD:-} + - 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:-} + depends_on: + mariadb: + condition: service_healthy + redis: + condition: service_started + networks: + - frontend-net + - backend-seatable-net + healthcheck: + test: ["CMD-SHELL", "curl -f http://127.0.0.1:8088/ping || exit 1"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s + labels: + caddy: ${SEATABLE_SERVER_PROTOCOL:-https}://${SEATABLE_SERVER_HOSTNAME} + caddy.route: /app-server/* + caddy.route.handle_path: /app-server/* + caddy.route.handle_path.reverse_proxy: "{{upstreams 8088}}" + +networks: + frontend-net: + name: frontend-net + backend-seatable-net: + name: backend-seatable-net diff --git a/compose/seatable-ai-standalone.yml b/compose/seatable-ai-standalone.yml index c619115..f8e5182 100644 --- a/compose/seatable-ai-standalone.yml +++ b/compose/seatable-ai-standalone.yml @@ -1,11 +1,11 @@ --- services: seatable-ai: - image: ${SEATABLE_AI_IMAGE:-seatable/seatable-ai:6.1.8} + image: ${SEATABLE_AI_IMAGE:-seatable/seatable-ai:6.2.1} restart: unless-stopped container_name: seatable-ai volumes: - - ${SEATABLE_AI_VOLUME:-/opt/seatable-ai/}:/shared + - ${SEATABLE_VOLUME:-/opt/seatable-server/}:/shared ports: - "8888:8888" environment: @@ -22,14 +22,6 @@ services: - SEATABLE_SERVER_URL=${SEATABLE_SERVER_URL:?Variable is not set or empty} - INNER_DTABLE_SERVER_URL=${INNER_DTABLE_SERVER_URL:?Variable is not set or empty} - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:?Variable is not set or empty} - - SEATABLE_AI_LLM_TYPE=${SEATABLE_AI_LLM_TYPE:?Variable is not set or empty} - - SEATABLE_AI_LLM_URL=${SEATABLE_AI_LLM_URL:-} - - SEATABLE_AI_LLM_KEY=${SEATABLE_AI_LLM_KEY:-} - - SEATABLE_AI_LLM_MODEL=${SEATABLE_AI_LLM_MODEL:?Variable is not set or empty} - - SEATABLE_AI_LLM_TIMEOUT=${SEATABLE_AI_LLM_TIMEOUT:-180} - - ENABLE_SEARCH=${ENABLE_SEARCH:-false} - - SEASEARCH_SERVER_URL=${SEASEARCH_SERVER_URL:-} - - SEASEARCH_TOKEN=${SEASEARCH_TOKEN:-} healthcheck: test: ["CMD-SHELL", "curl --fail http://localhost:8888 || exit 1"] interval: 20s diff --git a/compose/seatable-ai.yml b/compose/seatable-ai.yml index 40be77e..bbae7f8 100644 --- a/compose/seatable-ai.yml +++ b/compose/seatable-ai.yml @@ -1,11 +1,11 @@ --- services: seatable-ai: - image: ${SEATABLE_AI_IMAGE:-seatable/seatable-ai:6.1.8} + image: ${SEATABLE_AI_IMAGE:-seatable/seatable-ai:6.2.1} restart: unless-stopped container_name: seatable-ai volumes: - - ${SEATABLE_AI_VOLUME:-/opt/seatable-ai/}:/shared + - ${SEATABLE_VOLUME:-/opt/seatable-server/}:/shared environment: - TIME_ZONE=${TIME_ZONE} - SEATABLE_MYSQL_DB_HOST=${MARIADB_HOST:-mariadb} @@ -20,14 +20,6 @@ services: - SEATABLE_SERVER_URL=${SEATABLE_SERVER_URL:-http://seatable-server} - INNER_DTABLE_SERVER_URL=${INNER_DTABLE_SERVER_URL:-http://seatable-server:5000} - INNER_DTABLE_DB_URL=${INNER_DTABLE_DB_URL:-http://seatable-server:7777} - - SEATABLE_AI_LLM_TYPE=${SEATABLE_AI_LLM_TYPE:?Variable is not set or empty} - - SEATABLE_AI_LLM_URL=${SEATABLE_AI_LLM_URL:-} - - SEATABLE_AI_LLM_KEY=${SEATABLE_AI_LLM_KEY:-} - - SEATABLE_AI_LLM_MODEL=${SEATABLE_AI_LLM_MODEL:?Variable is not set or empty} - - SEATABLE_AI_LLM_TIMEOUT=${SEATABLE_AI_LLM_TIMEOUT:-180} - - ENABLE_SEARCH=${ENABLE_SEARCH:-false} - - SEASEARCH_SERVER_URL=${SEASEARCH_SERVER_URL:-} - - SEASEARCH_TOKEN=${SEASEARCH_TOKEN:-} depends_on: - mariadb - redis diff --git a/compose/seatable-s3.yml b/compose/seatable-s3.yml index a39f612..73384e3 100644 --- a/compose/seatable-s3.yml +++ b/compose/seatable-s3.yml @@ -2,6 +2,7 @@ services: seatable-server: environment: - STORAGE_TYPE=s3 + - S3_AVATAR_BUCKET=${S3_AVATAR_BUCKET:?Variable is not set or empty} - S3_STORAGE_BUCKET=${S3_STORAGE_BUCKET:?Variable is not set or empty} - S3_COMMIT_BUCKET=${S3_COMMIT_BUCKET:?Variable is not set or empty} - S3_FS_BUCKET=${S3_FS_BUCKET:?Variable is not set or empty} diff --git a/compose/seatable-server.yml b/compose/seatable-server.yml index 4153782..513739d 100644 --- a/compose/seatable-server.yml +++ b/compose/seatable-server.yml @@ -1,7 +1,7 @@ --- services: seatable-server: - image: ${SEATABLE_IMAGE:-seatable/seatable-enterprise:6.1.8} + image: ${SEATABLE_IMAGE:-seatable/seatable-enterprise:6.2.1} restart: unless-stopped container_name: seatable-server volumes: @@ -26,6 +26,7 @@ services: - REDIS_PORT=${REDIS_PORT:-6379} - REDIS_PASSWORD=${REDIS_PASSWORD:?Variable is not set or empty} - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} + - SECRET_KEY=${SECRET_KEY:?Variable is not set or empty} - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-https} - SEATABLE_ADMIN_EMAIL=${SEATABLE_ADMIN_EMAIL:?Variable is not set or empty} @@ -48,9 +49,9 @@ services: - SEATABLE_TEMPLATE_TABLE_NAME=${SEATABLE_TEMPLATE_TABLE_NAME:-} - SEATABLE_ENABLE_CREATE_BASE_FROM_TEMPLATE=${SEATABLE_ENABLE_CREATE_BASE_FROM_TEMPLATE:-} - SEATABLE_HELP_LINK=${SEATABLE_HELP_LINK:-https://help.seatable.com} - - SEATABLE_LOG_LEVEL=${SEATABLE_LOG_LEVEL:-INFO} + - LOG_LEVEL=${LOG_LEVEL:-INFO} - ENABLE_SEATABLE_AI=${ENABLE_SEATABLE_AI:-false} - - SEATABLE_AI_SERVER_URL=${SEATABLE_AI_SERVER_URL:-http://seatable-ai:8888} + - INNER_SEATABLE_AI_SERVER_URL=${INNER_SEATABLE_AI_SERVER_URL:-http://seatable-ai:8888} labels: caddy_0: ${SEATABLE_SERVER_PROTOCOL:-https}://${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} caddy_0.reverse_proxy: "{{upstreams 80}}"