Add ONLYOFFICE DocSpace app (15 services, Community Edition)

This commit is contained in:
2026-04-11 12:17:35 +00:00
parent 20043aacab
commit d7269f94fb
7 changed files with 944 additions and 0 deletions

83
apps/docspace/config.json Normal file
View File

@@ -0,0 +1,83 @@
{
"name": "ONLYOFFICE DocSpace",
"id": "docspace",
"available": true,
"short_desc": "Collaborative room-based document management platform with built-in editors",
"author": "ONLYOFFICE",
"port": 8843,
"categories": ["utilities", "documents", "collaboration"],
"tipi_version": 1,
"version": "latest",
"source": "https://github.com/ONLYOFFICE/DocSpace",
"website": "https://www.onlyoffice.com/docspace.aspx",
"exposable": true,
"dynamic_config": true,
"supported_architectures": ["amd64"],
"min_tipi_version": "4.0.0",
"form_fields": [
{
"type": "random",
"label": "JWT Secret",
"hint": "Secret key for Document Server JWT authentication",
"env_variable": "DOCSPACE_JWT_SECRET",
"min": 32,
"encoding": "hex"
},
{
"type": "random",
"label": "MySQL Root Password",
"hint": "Root password for the MySQL database",
"env_variable": "DOCSPACE_MYSQL_ROOT_PASSWORD",
"min": 24,
"encoding": "hex"
},
{
"type": "random",
"label": "MySQL User Password",
"hint": "Password for the docspace MySQL user",
"env_variable": "DOCSPACE_MYSQL_PASSWORD",
"min": 24,
"encoding": "hex"
},
{
"type": "random",
"label": "App Machine Key",
"hint": "Core machine key used for encryption and signing",
"env_variable": "DOCSPACE_MACHINEKEY",
"min": 32,
"encoding": "hex"
},
{
"type": "random",
"label": "Identity Encryption Secret",
"hint": "Secret key for identity service encryption",
"env_variable": "DOCSPACE_IDENTITY_SECRET",
"min": 32,
"encoding": "hex"
},
{
"type": "random",
"label": "RabbitMQ Password",
"hint": "Password for the RabbitMQ message broker",
"env_variable": "DOCSPACE_RABBITMQ_PASSWORD",
"min": 24,
"encoding": "hex"
},
{
"type": "email",
"label": "Admin Email",
"hint": "Email address for the DocSpace administrator account",
"required": true,
"env_variable": "DOCSPACE_ADMIN_EMAIL"
},
{
"type": "fqdn",
"label": "DocSpace Domain",
"hint": "Domain name for accessing DocSpace (e.g., docspace.example.com)",
"required": false,
"env_variable": "DOCSPACE_DOMAIN"
}
],
"created_at": 1712793600000,
"updated_at": 1712793600000
}

View File

@@ -0,0 +1,4 @@
location ^~ /.well-known/acme-challenge/ {
root /letsencrypt;
default_type "text/plain";
}

View File

@@ -0,0 +1,33 @@
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
client_body_temp_path /tmp/client_temp;
proxy_temp_path /tmp/proxy_temp_path;
fastcgi_temp_path /tmp/fastcgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
scgi_temp_path /tmp/scgi_temp;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}

View File

@@ -0,0 +1,30 @@
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header Host $this_host;
proxy_set_header X-Forwarded-Host $proxy_x_forwarded_host;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header 'Server';
proxy_hide_header 'X-Powered-By';
proxy_buffering off;
proxy_http_version 1.1;
proxy_buffer_size 128k;
proxy_buffers 8 128k;
proxy_busy_buffers_size 256k;
access_log /var/log/nginx/access-proxy.log;
error_log /var/log/nginx/error-proxy.log;
server {
listen 0.0.0.0:80;
listen [::]:80 default_server;
client_max_body_size 4G;
location / {
proxy_pass http://$router_host:8092;
}
include includes/letsencrypt.conf;
}

View File

@@ -0,0 +1,32 @@
resolver 127.0.0.11 valid=30s;
map $http_host $this_host {
"" $host;
default $http_host;
}
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
default $http_x_forwarded_proto;
"" $scheme;
}
map $http_x_forwarded_host $proxy_x_forwarded_host {
default $http_x_forwarded_host;
"" $this_host;
}
map $http_x_forwarded_port $proxy_x_forwarded_port {
default $http_x_forwarded_port;
'' $server_port;
}
map $http_upgrade $proxy_connection {
default upgrade;
"" close;
}
map $ROUTER_HOST $router_host {
volatile;
default onlyoffice-router;
~^(.*)$ $1;
}

View File

@@ -0,0 +1,725 @@
{
"schemaVersion": 2,
"$schema": "https://schemas.runtipi.io/dynamic-compose.json",
"services": [
{
"name": "docspace-mysql",
"image": "mysql:8.3.0",
"capAdd": ["SYS_NICE"],
"user": "mysql",
"environment": [
{ "key": "MYSQL_ROOT_PASSWORD", "value": "${DOCSPACE_MYSQL_ROOT_PASSWORD}" },
{ "key": "MYSQL_DATABASE", "value": "docspace" },
{ "key": "MYSQL_USER", "value": "onlyoffice_user" },
{ "key": "MYSQL_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/mysql",
"containerPath": "/var/lib/mysql"
}
],
"healthCheck": {
"test": "mysql -u onlyoffice_user --password=${DOCSPACE_MYSQL_PASSWORD} -e ';'",
"interval": "10s",
"timeout": "5s",
"retries": 5
}
},
{
"name": "docspace-redis",
"image": "redis:7",
"healthCheck": {
"test": "redis-cli ping",
"interval": "10s",
"timeout": "10s",
"retries": 3
}
},
{
"name": "docspace-rabbitmq",
"image": "rabbitmq:3",
"environment": [
{ "key": "RABBITMQ_DEFAULT_USER", "value": "guest" },
{ "key": "RABBITMQ_DEFAULT_PASS", "value": "${DOCSPACE_RABBITMQ_PASSWORD}" }
],
"healthCheck": {
"test": "rabbitmq-diagnostics status",
"interval": "10s",
"timeout": "10s",
"retries": 5
}
},
{
"name": "docspace-opensearch",
"image": "onlyoffice/opensearch:2.18.0",
"environment": [
{ "key": "discovery.type", "value": "single-node" },
{ "key": "bootstrap.memory_lock", "value": "true" },
{ "key": "OPENSEARCH_JAVA_OPTS", "value": "-Xms1g -Xmx1g -Dlog4j2.formatMsgNoLookups=true" },
{ "key": "indices.fielddata.cache.size", "value": "30%" },
{ "key": "indices.memory.index_buffer_size", "value": "30%" },
{ "key": "DISABLE_INSTALL_DEMO_CONFIG", "value": "true" },
{ "key": "DISABLE_SECURITY_PLUGIN", "value": "true" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/opensearch",
"containerPath": "/usr/share/opensearch/data"
}
],
"ulimits": {
"memlock": { "soft": -1, "hard": -1 },
"nofile": { "soft": 65536, "hard": 65536 }
},
"healthCheck": {
"test": "curl -f http://localhost:9200/_cluster/health?pretty",
"interval": "30s",
"timeout": "10s",
"retries": 5
}
},
{
"name": "docspace-document-server",
"image": "onlyoffice/documentserver:latest",
"environment": [
{ "key": "JWT_ENABLED", "value": "true" },
{ "key": "JWT_SECRET", "value": "${DOCSPACE_JWT_SECRET}" },
{ "key": "JWT_HEADER", "value": "AuthorizationJwt" },
{ "key": "JWT_IN_BODY", "value": "true" },
{ "key": "AMQP_URI", "value": "amqp://guest:${DOCSPACE_RABBITMQ_PASSWORD}@docspace-rabbitmq:5672/" },
{ "key": "REDIS_SERVER_HOST", "value": "docspace-redis" },
{ "key": "REDIS_SERVER_PORT", "value": "6379" },
{ "key": "REDIS_SERVER_USER", "value": "" },
{ "key": "REDIS_SERVER_PASS", "value": "" },
{ "key": "REDIS_SERVER_DB", "value": "0" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/ds-app",
"containerPath": "/var/www/onlyoffice/Data"
},
{
"hostPath": "${APP_DATA_DIR}/data/ds-log",
"containerPath": "/var/log/onlyoffice"
},
{
"hostPath": "${APP_DATA_DIR}/data/ds-fonts",
"containerPath": "/usr/share/fonts"
}
],
"healthCheck": {
"test": "curl -f http://localhost:8000/info/info.json",
"interval": "30s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-redis": { "condition": "service_healthy" },
"docspace-rabbitmq": { "condition": "service_healthy" }
}
},
{
"name": "docspace-migration-runner",
"image": "onlyoffice/docspace-migration-runner:latest",
"environment": [
{ "key": "MYSQL_CONTAINER_NAME", "value": "docspace-mysql" },
{ "key": "MYSQL_HOST", "value": "" },
{ "key": "MYSQL_PORT", "value": "3306" },
{ "key": "MYSQL_DATABASE", "value": "docspace" },
{ "key": "MYSQL_USER", "value": "onlyoffice_user" },
{ "key": "MYSQL_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" }
],
"dependsOn": {
"docspace-mysql": { "condition": "service_healthy" }
}
},
{
"name": "docspace-dotnet",
"image": "onlyoffice/docspace-dotnet:latest",
"user": "root:root",
"environment": [
{ "key": "APP_CORE_BASE_DOMAIN", "value": "${DOCSPACE_DOMAIN:-localhost}" },
{ "key": "APP_CORE_MACHINEKEY", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "APP_CORE_SERVER_ROOT", "value": "" },
{ "key": "APP_KNOWN_NETWORKS", "value": "" },
{ "key": "APP_KNOWN_PROXIES", "value": "" },
{ "key": "APP_URL_PORTAL", "value": "http://docspace-router:8092" },
{ "key": "CERTIFICATE_PATH", "value": "" },
{ "key": "DEBUG_INFO", "value": "false" },
{ "key": "DOCUMENT_CONTAINER_NAME", "value": "docspace-document-server" },
{ "key": "DOCUMENT_SERVER_JWT_HEADER", "value": "AuthorizationJwt" },
{ "key": "DOCUMENT_SERVER_JWT_SECRET", "value": "${DOCSPACE_JWT_SECRET}" },
{ "key": "DOCUMENT_SERVER_URL_EXTERNAL", "value": "" },
{ "key": "DOCUMENT_SERVER_URL_PUBLIC", "value": "/ds-vpath/" },
{ "key": "ELK_HOST", "value": "docspace-opensearch" },
{ "key": "ELK_PORT", "value": "9200" },
{ "key": "ELK_SCHEME", "value": "http" },
{ "key": "IDENTITY_API_SERVER_PORT", "value": "9090" },
{ "key": "IDENTITY_AUTHORIZATION_SERVER_PORT", "value": "8080" },
{ "key": "INSTALLATION_TYPE", "value": "COMMUNITY" },
{ "key": "JDBC_DATABASE", "value": "docspace" },
{ "key": "JDBC_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "JDBC_URL", "value": "docspace-mysql" },
{ "key": "JDBC_USER_NAME", "value": "onlyoffice_user" },
{ "key": "LOG_LEVEL", "value": "Warning" },
{ "key": "MYSQL_CONTAINER_NAME", "value": "docspace-mysql" },
{ "key": "MYSQL_DATABASE", "value": "docspace" },
{ "key": "MYSQL_HOST", "value": "" },
{ "key": "MYSQL_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "MYSQL_PORT", "value": "3306" },
{ "key": "MYSQL_ROOT_PASSWORD", "value": "${DOCSPACE_MYSQL_ROOT_PASSWORD}" },
{ "key": "MYSQL_USER", "value": "onlyoffice_user" },
{ "key": "NODE_CONTAINER_NAME", "value": "docspace-node" },
{ "key": "NODE_OPTIONS", "value": "--max_old_space_size=4096" },
{ "key": "OAUTH_REDIRECT_URL", "value": "https://service.onlyoffice.com/oauth2.aspx" },
{ "key": "RABBIT_HOST", "value": "docspace-rabbitmq" },
{ "key": "RABBIT_PASSWORD", "value": "${DOCSPACE_RABBITMQ_PASSWORD}" },
{ "key": "RABBIT_PORT", "value": "5672" },
{ "key": "RABBIT_PROTOCOL", "value": "amqp" },
{ "key": "RABBIT_USER_NAME", "value": "guest" },
{ "key": "RABBIT_VIRTUAL_HOST", "value": "/" },
{ "key": "REDIS_DB", "value": "0" },
{ "key": "REDIS_HOST", "value": "docspace-redis" },
{ "key": "REDIS_PASSWORD", "value": "" },
{ "key": "REDIS_PORT", "value": "6379" },
{ "key": "REDIS_USER_NAME", "value": "" },
{ "key": "ROUTER_HOST", "value": "docspace-router" },
{ "key": "SERVICE_AI_PORT", "value": "5157" },
{ "key": "SERVICE_AI_SERVICE_PORT", "value": "5124" },
{ "key": "SERVICE_API_PORT", "value": "5000" },
{ "key": "SERVICE_API_SYSTEM_PORT", "value": "5010" },
{ "key": "SERVICE_BACKUP_BACKGRUOND_TASKS_PORT", "value": "5032" },
{ "key": "SERVICE_BACKUP_PORT", "value": "5012" },
{ "key": "SERVICE_CLEAR_EVENTS_PORT", "value": "5027" },
{ "key": "SERVICE_DOCEDITOR_PORT", "value": "5013" },
{ "key": "SERVICE_FILES_PORT", "value": "5007" },
{ "key": "SERVICE_FILES_SERVICES_PORT", "value": "5009" },
{ "key": "SERVICE_HEALTHCHECKS_PORT", "value": "5033" },
{ "key": "SERVICE_LOGIN_PORT", "value": "5011" },
{ "key": "SERVICE_MANAGEMENT_PORT", "value": "5015" },
{ "key": "SERVICE_NOTIFY_PORT", "value": "5005" },
{ "key": "SERVICE_PEOPLE_SERVER_PORT", "value": "5004" },
{ "key": "SERVICE_SDK_PORT", "value": "5099" },
{ "key": "SERVICE_SOCKET_PORT", "value": "9899" },
{ "key": "SERVICE_SSOAUTH_PORT", "value": "9834" },
{ "key": "SERVICE_STUDIO_NOTIFY_PORT", "value": "5006" },
{ "key": "SERVICE_STUDIO_PORT", "value": "5003" },
{ "key": "SERVICE_TELEGRAM_PORT", "value": "5075" },
{ "key": "SPRING_APPLICATION_ENCRYPTION_SECRET", "value": "${DOCSPACE_IDENTITY_SECRET}" },
{ "key": "SPRING_APPLICATION_SIGNATURE_SECRET", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "SPRING_PROFILES_ACTIVE", "value": "dev,server" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/app",
"containerPath": "/app/onlyoffice/data"
},
{
"hostPath": "${APP_DATA_DIR}/data/log",
"containerPath": "/var/log/onlyoffice"
}
],
"healthCheck": {
"test": "supervisorctl status | grep -v 'ASC.Migration.Runner' | grep -qv RUNNING && exit 1 || exit 0",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-migration-runner": { "condition": "service_completed_successfully" },
"docspace-mysql": { "condition": "service_healthy" },
"docspace-redis": { "condition": "service_healthy" },
"docspace-rabbitmq": { "condition": "service_healthy" },
"docspace-opensearch": { "condition": "service_healthy" }
}
},
{
"name": "docspace-java",
"image": "onlyoffice/docspace-java:latest",
"user": "root:root",
"environment": [
{ "key": "APP_CORE_BASE_DOMAIN", "value": "${DOCSPACE_DOMAIN:-localhost}" },
{ "key": "APP_CORE_MACHINEKEY", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "APP_CORE_SERVER_ROOT", "value": "" },
{ "key": "APP_KNOWN_NETWORKS", "value": "" },
{ "key": "APP_KNOWN_PROXIES", "value": "" },
{ "key": "APP_URL_PORTAL", "value": "http://docspace-router:8092" },
{ "key": "CERTIFICATE_PATH", "value": "" },
{ "key": "DEBUG_INFO", "value": "false" },
{ "key": "DOCUMENT_CONTAINER_NAME", "value": "docspace-document-server" },
{ "key": "DOCUMENT_SERVER_JWT_HEADER", "value": "AuthorizationJwt" },
{ "key": "DOCUMENT_SERVER_JWT_SECRET", "value": "${DOCSPACE_JWT_SECRET}" },
{ "key": "DOCUMENT_SERVER_URL_EXTERNAL", "value": "" },
{ "key": "DOCUMENT_SERVER_URL_PUBLIC", "value": "/ds-vpath/" },
{ "key": "ELK_HOST", "value": "docspace-opensearch" },
{ "key": "ELK_PORT", "value": "9200" },
{ "key": "ELK_SCHEME", "value": "http" },
{ "key": "IDENTITY_API_SERVER_PORT", "value": "9090" },
{ "key": "IDENTITY_AUTHORIZATION_SERVER_PORT", "value": "8080" },
{ "key": "INSTALLATION_TYPE", "value": "COMMUNITY" },
{ "key": "JDBC_DATABASE", "value": "docspace" },
{ "key": "JDBC_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "JDBC_URL", "value": "docspace-mysql" },
{ "key": "JDBC_USER_NAME", "value": "onlyoffice_user" },
{ "key": "LOG_LEVEL", "value": "Warning" },
{ "key": "MYSQL_CONTAINER_NAME", "value": "docspace-mysql" },
{ "key": "MYSQL_DATABASE", "value": "docspace" },
{ "key": "MYSQL_HOST", "value": "" },
{ "key": "MYSQL_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "MYSQL_PORT", "value": "3306" },
{ "key": "MYSQL_ROOT_PASSWORD", "value": "${DOCSPACE_MYSQL_ROOT_PASSWORD}" },
{ "key": "MYSQL_USER", "value": "onlyoffice_user" },
{ "key": "NODE_CONTAINER_NAME", "value": "docspace-node" },
{ "key": "NODE_OPTIONS", "value": "--max_old_space_size=4096" },
{ "key": "OAUTH_REDIRECT_URL", "value": "https://service.onlyoffice.com/oauth2.aspx" },
{ "key": "RABBIT_HOST", "value": "docspace-rabbitmq" },
{ "key": "RABBIT_PASSWORD", "value": "${DOCSPACE_RABBITMQ_PASSWORD}" },
{ "key": "RABBIT_PORT", "value": "5672" },
{ "key": "RABBIT_PROTOCOL", "value": "amqp" },
{ "key": "RABBIT_USER_NAME", "value": "guest" },
{ "key": "RABBIT_VIRTUAL_HOST", "value": "/" },
{ "key": "REDIS_DB", "value": "0" },
{ "key": "REDIS_HOST", "value": "docspace-redis" },
{ "key": "REDIS_PASSWORD", "value": "" },
{ "key": "REDIS_PORT", "value": "6379" },
{ "key": "REDIS_USER_NAME", "value": "" },
{ "key": "ROUTER_HOST", "value": "docspace-router" },
{ "key": "SERVICE_AI_PORT", "value": "5157" },
{ "key": "SERVICE_AI_SERVICE_PORT", "value": "5124" },
{ "key": "SERVICE_API_PORT", "value": "5000" },
{ "key": "SERVICE_API_SYSTEM_PORT", "value": "5010" },
{ "key": "SERVICE_BACKUP_BACKGRUOND_TASKS_PORT", "value": "5032" },
{ "key": "SERVICE_BACKUP_PORT", "value": "5012" },
{ "key": "SERVICE_CLEAR_EVENTS_PORT", "value": "5027" },
{ "key": "SERVICE_DOCEDITOR_PORT", "value": "5013" },
{ "key": "SERVICE_FILES_PORT", "value": "5007" },
{ "key": "SERVICE_FILES_SERVICES_PORT", "value": "5009" },
{ "key": "SERVICE_HEALTHCHECKS_PORT", "value": "5033" },
{ "key": "SERVICE_LOGIN_PORT", "value": "5011" },
{ "key": "SERVICE_MANAGEMENT_PORT", "value": "5015" },
{ "key": "SERVICE_NOTIFY_PORT", "value": "5005" },
{ "key": "SERVICE_PEOPLE_SERVER_PORT", "value": "5004" },
{ "key": "SERVICE_SDK_PORT", "value": "5099" },
{ "key": "SERVICE_SOCKET_PORT", "value": "9899" },
{ "key": "SERVICE_SSOAUTH_PORT", "value": "9834" },
{ "key": "SERVICE_STUDIO_NOTIFY_PORT", "value": "5006" },
{ "key": "SERVICE_STUDIO_PORT", "value": "5003" },
{ "key": "SERVICE_TELEGRAM_PORT", "value": "5075" },
{ "key": "SPRING_APPLICATION_ENCRYPTION_SECRET", "value": "${DOCSPACE_IDENTITY_SECRET}" },
{ "key": "SPRING_APPLICATION_SIGNATURE_SECRET", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "SPRING_PROFILES_ACTIVE", "value": "dev,server" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/app",
"containerPath": "/app/onlyoffice/data"
},
{
"hostPath": "${APP_DATA_DIR}/data/log",
"containerPath": "/var/log/onlyoffice"
}
],
"healthCheck": {
"test": "supervisorctl status | grep -v 'ASC.Migration.Runner' | grep -qv RUNNING && exit 1 || exit 0",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-migration-runner": { "condition": "service_completed_successfully" },
"docspace-mysql": { "condition": "service_healthy" },
"docspace-redis": { "condition": "service_healthy" },
"docspace-rabbitmq": { "condition": "service_healthy" },
"docspace-opensearch": { "condition": "service_healthy" }
}
},
{
"name": "docspace-node",
"image": "onlyoffice/docspace-node:latest",
"user": "root:root",
"environment": [
{ "key": "APP_CORE_BASE_DOMAIN", "value": "${DOCSPACE_DOMAIN:-localhost}" },
{ "key": "APP_CORE_MACHINEKEY", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "APP_CORE_SERVER_ROOT", "value": "" },
{ "key": "APP_KNOWN_NETWORKS", "value": "" },
{ "key": "APP_KNOWN_PROXIES", "value": "" },
{ "key": "APP_URL_PORTAL", "value": "http://docspace-router:8092" },
{ "key": "CERTIFICATE_PATH", "value": "" },
{ "key": "DEBUG_INFO", "value": "false" },
{ "key": "DOCUMENT_CONTAINER_NAME", "value": "docspace-document-server" },
{ "key": "DOCUMENT_SERVER_JWT_HEADER", "value": "AuthorizationJwt" },
{ "key": "DOCUMENT_SERVER_JWT_SECRET", "value": "${DOCSPACE_JWT_SECRET}" },
{ "key": "DOCUMENT_SERVER_URL_EXTERNAL", "value": "" },
{ "key": "DOCUMENT_SERVER_URL_PUBLIC", "value": "/ds-vpath/" },
{ "key": "ELK_HOST", "value": "docspace-opensearch" },
{ "key": "ELK_PORT", "value": "9200" },
{ "key": "ELK_SCHEME", "value": "http" },
{ "key": "IDENTITY_API_SERVER_PORT", "value": "9090" },
{ "key": "IDENTITY_AUTHORIZATION_SERVER_PORT", "value": "8080" },
{ "key": "INSTALLATION_TYPE", "value": "COMMUNITY" },
{ "key": "JDBC_DATABASE", "value": "docspace" },
{ "key": "JDBC_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "JDBC_URL", "value": "docspace-mysql" },
{ "key": "JDBC_USER_NAME", "value": "onlyoffice_user" },
{ "key": "LOG_LEVEL", "value": "Warning" },
{ "key": "MYSQL_CONTAINER_NAME", "value": "docspace-mysql" },
{ "key": "MYSQL_DATABASE", "value": "docspace" },
{ "key": "MYSQL_HOST", "value": "" },
{ "key": "MYSQL_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "MYSQL_PORT", "value": "3306" },
{ "key": "MYSQL_ROOT_PASSWORD", "value": "${DOCSPACE_MYSQL_ROOT_PASSWORD}" },
{ "key": "MYSQL_USER", "value": "onlyoffice_user" },
{ "key": "NODE_CONTAINER_NAME", "value": "docspace-node" },
{ "key": "NODE_OPTIONS", "value": "--max_old_space_size=4096" },
{ "key": "OAUTH_REDIRECT_URL", "value": "https://service.onlyoffice.com/oauth2.aspx" },
{ "key": "RABBIT_HOST", "value": "docspace-rabbitmq" },
{ "key": "RABBIT_PASSWORD", "value": "${DOCSPACE_RABBITMQ_PASSWORD}" },
{ "key": "RABBIT_PORT", "value": "5672" },
{ "key": "RABBIT_PROTOCOL", "value": "amqp" },
{ "key": "RABBIT_USER_NAME", "value": "guest" },
{ "key": "RABBIT_VIRTUAL_HOST", "value": "/" },
{ "key": "REDIS_DB", "value": "0" },
{ "key": "REDIS_HOST", "value": "docspace-redis" },
{ "key": "REDIS_PASSWORD", "value": "" },
{ "key": "REDIS_PORT", "value": "6379" },
{ "key": "REDIS_USER_NAME", "value": "" },
{ "key": "ROUTER_HOST", "value": "docspace-router" },
{ "key": "SERVICE_AI_PORT", "value": "5157" },
{ "key": "SERVICE_AI_SERVICE_PORT", "value": "5124" },
{ "key": "SERVICE_API_PORT", "value": "5000" },
{ "key": "SERVICE_API_SYSTEM_PORT", "value": "5010" },
{ "key": "SERVICE_BACKUP_BACKGRUOND_TASKS_PORT", "value": "5032" },
{ "key": "SERVICE_BACKUP_PORT", "value": "5012" },
{ "key": "SERVICE_CLEAR_EVENTS_PORT", "value": "5027" },
{ "key": "SERVICE_DOCEDITOR_PORT", "value": "5013" },
{ "key": "SERVICE_FILES_PORT", "value": "5007" },
{ "key": "SERVICE_FILES_SERVICES_PORT", "value": "5009" },
{ "key": "SERVICE_HEALTHCHECKS_PORT", "value": "5033" },
{ "key": "SERVICE_LOGIN_PORT", "value": "5011" },
{ "key": "SERVICE_MANAGEMENT_PORT", "value": "5015" },
{ "key": "SERVICE_NOTIFY_PORT", "value": "5005" },
{ "key": "SERVICE_PEOPLE_SERVER_PORT", "value": "5004" },
{ "key": "SERVICE_SDK_PORT", "value": "5099" },
{ "key": "SERVICE_SOCKET_PORT", "value": "9899" },
{ "key": "SERVICE_SSOAUTH_PORT", "value": "9834" },
{ "key": "SERVICE_STUDIO_NOTIFY_PORT", "value": "5006" },
{ "key": "SERVICE_STUDIO_PORT", "value": "5003" },
{ "key": "SERVICE_TELEGRAM_PORT", "value": "5075" },
{ "key": "SPRING_APPLICATION_ENCRYPTION_SECRET", "value": "${DOCSPACE_IDENTITY_SECRET}" },
{ "key": "SPRING_APPLICATION_SIGNATURE_SECRET", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "SPRING_PROFILES_ACTIVE", "value": "dev,server" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/app",
"containerPath": "/app/onlyoffice/data"
},
{
"hostPath": "${APP_DATA_DIR}/data/log",
"containerPath": "/var/log/onlyoffice"
}
],
"healthCheck": {
"test": "supervisorctl status | grep -v 'ASC.Migration.Runner' | grep -qv RUNNING && exit 1 || exit 0",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-migration-runner": { "condition": "service_completed_successfully" },
"docspace-mysql": { "condition": "service_healthy" },
"docspace-redis": { "condition": "service_healthy" },
"docspace-rabbitmq": { "condition": "service_healthy" },
"docspace-opensearch": { "condition": "service_healthy" }
}
},
{
"name": "docspace-router",
"image": "onlyoffice/docspace-router:latest",
"user": "root:root",
"environment": [
{ "key": "DASHBOARDS_CONTAINER_NAME", "value": "" },
{ "key": "DASHBOARDS_PASSWORD", "value": "" },
{ "key": "DASHBOARDS_USERNAME", "value": "" },
{ "key": "DOCUMENT_CONTAINER_NAME", "value": "docspace-document-server" },
{ "key": "DOCUMENT_SERVER_URL_EXTERNAL", "value": "" },
{ "key": "REDIS_CONTAINER_NAME", "value": "docspace-redis" },
{ "key": "REDIS_DB", "value": "0" },
{ "key": "REDIS_HOST", "value": "" },
{ "key": "REDIS_PASSWORD", "value": "" },
{ "key": "REDIS_PORT", "value": "6379" },
{ "key": "SERVICE_AI", "value": "docspace-dotnet:5157" },
{ "key": "SERVICE_AI_SERVICE", "value": "docspace-dotnet:5124" },
{ "key": "SERVICE_API", "value": "docspace-dotnet:5000" },
{ "key": "SERVICE_API_SYSTEM", "value": "docspace-dotnet:5010" },
{ "key": "SERVICE_BACKUP", "value": "docspace-dotnet:5012" },
{ "key": "SERVICE_CLEAR_EVENTS", "value": "docspace-dotnet:5027" },
{ "key": "SERVICE_DOCEDITOR", "value": "docspace-node:5013" },
{ "key": "SERVICE_FILES", "value": "docspace-dotnet:5007" },
{ "key": "SERVICE_FILES_SERVICES", "value": "docspace-dotnet:5009" },
{ "key": "SERVICE_HEALTHCHECKS", "value": "docspace-dotnet:5033" },
{ "key": "SERVICE_IDENTITY", "value": "docspace-java:8080" },
{ "key": "SERVICE_IDENTITY_API", "value": "docspace-java:9090" },
{ "key": "SERVICE_LOGIN", "value": "docspace-node:5011" },
{ "key": "SERVICE_MANAGEMENT", "value": "docspace-node:5015" },
{ "key": "SERVICE_NOTIFY", "value": "docspace-dotnet:5005" },
{ "key": "SERVICE_PORT", "value": "5050" },
{ "key": "SERVICE_PEOPLE_SERVER", "value": "docspace-dotnet:5004" },
{ "key": "SERVICE_SDK", "value": "docspace-node:5099" },
{ "key": "SERVICE_SOCKET", "value": "docspace-node:9899" },
{ "key": "SERVICE_SSOAUTH", "value": "docspace-node:9834" },
{ "key": "SERVICE_STUDIO", "value": "docspace-dotnet:5003" },
{ "key": "SERVICE_STUDIO_NOTIFY", "value": "docspace-dotnet:5006" },
{ "key": "SERVICE_TELEGRAM", "value": "docspace-dotnet:5075" },
{ "key": "WRONG_PORTAL_NAME_URL", "value": "" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/log",
"containerPath": "/var/log/onlyoffice"
}
],
"healthCheck": {
"test": "nginx -t || exit 1",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-dotnet": { "condition": "service_healthy" },
"docspace-java": { "condition": "service_healthy" },
"docspace-node": { "condition": "service_healthy" }
}
},
{
"name": "docspace-identity-authorization",
"image": "onlyoffice/docspace-identity-authorization:latest",
"user": "root:root",
"environment": [
{ "key": "SPRING_PROFILES_ACTIVE", "value": "dev,server" },
{ "key": "SPRING_APPLICATION_SIGNATURE_SECRET", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "SPRING_APPLICATION_ENCRYPTION_SECRET", "value": "${DOCSPACE_IDENTITY_SECRET}" },
{ "key": "MYSQL_CONTAINER_NAME", "value": "docspace-mysql" },
{ "key": "MYSQL_HOST", "value": "" },
{ "key": "MYSQL_PORT", "value": "3306" },
{ "key": "MYSQL_DATABASE", "value": "docspace" },
{ "key": "MYSQL_USER", "value": "onlyoffice_user" },
{ "key": "MYSQL_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "RABBIT_CONTAINER_NAME", "value": "docspace-rabbitmq" },
{ "key": "RABBIT_PROTOCOL", "value": "amqp" },
{ "key": "RABBIT_HOST", "value": "" },
{ "key": "RABBIT_USER_NAME", "value": "guest" },
{ "key": "RABBIT_PASSWORD", "value": "${DOCSPACE_RABBITMQ_PASSWORD}" },
{ "key": "RABBIT_VIRTUAL_HOST", "value": "/" },
{ "key": "REDIS_HOST", "value": "" },
{ "key": "REDIS_PORT", "value": "6379" },
{ "key": "REDIS_USER_NAME", "value": "" },
{ "key": "REDIS_PASSWORD", "value": "" },
{ "key": "REDIS_CONTAINER_NAME", "value": "docspace-redis" },
{ "key": "SERVER_PORT", "value": "8080" },
{ "key": "GRPC_CLIENT_REGISTRATION_ADDRESS", "value": "static://docspace-identity-api:8888" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/log",
"containerPath": "/var/log/onlyoffice"
}
],
"healthCheck": {
"test": "curl --fail http://docspace-identity-authorization:8080/health/ || exit 1",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-migration-runner": { "condition": "service_completed_successfully" },
"docspace-mysql": { "condition": "service_healthy" },
"docspace-redis": { "condition": "service_healthy" },
"docspace-rabbitmq": { "condition": "service_healthy" }
}
},
{
"name": "docspace-identity-api",
"image": "onlyoffice/docspace-identity-api:latest",
"user": "root:root",
"environment": [
{ "key": "SPRING_PROFILES_ACTIVE", "value": "dev,server" },
{ "key": "SPRING_APPLICATION_SIGNATURE_SECRET", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "SPRING_APPLICATION_ENCRYPTION_SECRET", "value": "${DOCSPACE_IDENTITY_SECRET}" },
{ "key": "MYSQL_CONTAINER_NAME", "value": "docspace-mysql" },
{ "key": "MYSQL_HOST", "value": "" },
{ "key": "MYSQL_PORT", "value": "3306" },
{ "key": "MYSQL_DATABASE", "value": "docspace" },
{ "key": "MYSQL_USER", "value": "onlyoffice_user" },
{ "key": "MYSQL_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "RABBIT_CONTAINER_NAME", "value": "docspace-rabbitmq" },
{ "key": "RABBIT_PROTOCOL", "value": "amqp" },
{ "key": "RABBIT_HOST", "value": "" },
{ "key": "RABBIT_USER_NAME", "value": "guest" },
{ "key": "RABBIT_PASSWORD", "value": "${DOCSPACE_RABBITMQ_PASSWORD}" },
{ "key": "RABBIT_VIRTUAL_HOST", "value": "/" },
{ "key": "REDIS_HOST", "value": "" },
{ "key": "REDIS_PORT", "value": "6379" },
{ "key": "REDIS_USER_NAME", "value": "" },
{ "key": "REDIS_PASSWORD", "value": "" },
{ "key": "REDIS_CONTAINER_NAME", "value": "docspace-redis" },
{ "key": "SERVER_PORT", "value": "9090" },
{ "key": "GRPC_CLIENT_AUTHORIZATION_ADDRESS", "value": "static://docspace-identity-authorization:9999" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/log",
"containerPath": "/var/log/onlyoffice"
}
],
"healthCheck": {
"test": "curl --fail http://docspace-identity-api:9090/health/ || exit 1",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-migration-runner": { "condition": "service_completed_successfully" },
"docspace-mysql": { "condition": "service_healthy" },
"docspace-redis": { "condition": "service_healthy" },
"docspace-rabbitmq": { "condition": "service_healthy" }
}
},
{
"name": "docspace-notify",
"image": "onlyoffice/docspace-notify:latest",
"environment": [
{ "key": "MYSQL_CONTAINER_NAME", "value": "docspace-mysql" },
{ "key": "MYSQL_HOST", "value": "" },
{ "key": "MYSQL_PORT", "value": "3306" },
{ "key": "MYSQL_ROOT_PASSWORD", "value": "${DOCSPACE_MYSQL_ROOT_PASSWORD}" },
{ "key": "MYSQL_DATABASE", "value": "docspace" },
{ "key": "MYSQL_USER", "value": "onlyoffice_user" },
{ "key": "MYSQL_PASSWORD", "value": "${DOCSPACE_MYSQL_PASSWORD}" },
{ "key": "DATABASE_MIGRATION", "value": "false" },
{ "key": "APP_DOTNET_ENV", "value": "" },
{ "key": "APP_KNOWN_NETWORKS", "value": "" },
{ "key": "APP_KNOWN_PROXIES", "value": "" },
{ "key": "APP_CORE_SERVER_ROOT", "value": "" },
{ "key": "APP_CORE_BASE_DOMAIN", "value": "${DOCSPACE_DOMAIN:-localhost}" },
{ "key": "APP_CORE_MACHINEKEY", "value": "${DOCSPACE_MACHINEKEY}" },
{ "key": "APP_URL_PORTAL", "value": "http://docspace-router:8092" },
{ "key": "INSTALLATION_TYPE", "value": "COMMUNITY" },
{ "key": "OAUTH_REDIRECT_URL", "value": "https://service.onlyoffice.com/oauth2.aspx" },
{ "key": "DOCUMENT_SERVER_JWT_SECRET", "value": "${DOCSPACE_JWT_SECRET}" },
{ "key": "DOCUMENT_SERVER_JWT_HEADER", "value": "AuthorizationJwt" },
{ "key": "DOCUMENT_SERVER_URL_PUBLIC", "value": "/ds-vpath/" },
{ "key": "DOCUMENT_CONTAINER_NAME", "value": "docspace-document-server" },
{ "key": "DOCUMENT_SERVER_URL_EXTERNAL", "value": "" },
{ "key": "ELK_CONTAINER_NAME", "value": "docspace-opensearch" },
{ "key": "ELK_SCHEME", "value": "http" },
{ "key": "ELK_HOST", "value": "" },
{ "key": "ELK_PORT", "value": "9200" },
{ "key": "REDIS_CONTAINER_NAME", "value": "docspace-redis" },
{ "key": "REDIS_HOST", "value": "" },
{ "key": "REDIS_PORT", "value": "6379" },
{ "key": "REDIS_USER_NAME", "value": "" },
{ "key": "REDIS_PASSWORD", "value": "" },
{ "key": "RABBIT_CONTAINER_NAME", "value": "docspace-rabbitmq" },
{ "key": "RABBIT_PROTOCOL", "value": "amqp" },
{ "key": "RABBIT_HOST", "value": "" },
{ "key": "RABBIT_PORT", "value": "5672" },
{ "key": "RABBIT_VIRTUAL_HOST", "value": "/" },
{ "key": "RABBIT_USER_NAME", "value": "guest" },
{ "key": "RABBIT_PASSWORD", "value": "${DOCSPACE_RABBITMQ_PASSWORD}" },
{ "key": "ROUTER_HOST", "value": "docspace-router" },
{ "key": "LOG_LEVEL", "value": "Warning" },
{ "key": "DEBUG_INFO", "value": "false" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/app",
"containerPath": "/app/onlyoffice/data"
},
{
"hostPath": "${APP_DATA_DIR}/data/log",
"containerPath": "/var/log/onlyoffice"
}
],
"healthCheck": {
"test": "curl --fail http://docspace-notify:5005/health/ || exit 1",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-migration-runner": { "condition": "service_completed_successfully" },
"docspace-mysql": { "condition": "service_healthy" },
"docspace-redis": { "condition": "service_healthy" },
"docspace-rabbitmq": { "condition": "service_healthy" }
}
},
{
"name": "docspace-healthchecks",
"image": "onlyoffice/docspace-healthchecks:latest",
"environment": [
{ "key": "LOG_LEVEL", "value": "Warning" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/app",
"containerPath": "/app/onlyoffice/data"
}
],
"healthCheck": {
"test": "curl --fail http://docspace-healthchecks:5033/liveness/ || exit 1",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-dotnet": { "condition": "service_healthy" }
}
},
{
"name": "docspace",
"image": "nginx:latest",
"isMain": true,
"internalPort": 80,
"environment": [
{ "key": "ROUTER_HOST", "value": "docspace-router" }
],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/nginx-log",
"containerPath": "/var/log/nginx"
},
{
"hostPath": "${APP_DATA_DIR}/config/nginx/nginx.conf.template",
"containerPath": "/etc/nginx/nginx.conf",
"readOnly": true
},
{
"hostPath": "${APP_DATA_DIR}/config/nginx/letsencrypt.conf",
"containerPath": "/etc/nginx/includes/letsencrypt.conf",
"readOnly": true
},
{
"hostPath": "${APP_DATA_DIR}/config/nginx/proxy.upstream.conf.template",
"containerPath": "/etc/nginx/templates/proxy.upstream.conf.template",
"readOnly": true
},
{
"hostPath": "${APP_DATA_DIR}/config/nginx/onlyoffice-proxy.conf",
"containerPath": "/etc/nginx/conf.d/default.conf",
"readOnly": true
}
],
"healthCheck": {
"test": "nginx -t || exit 1",
"interval": "60s",
"timeout": "10s",
"retries": 5
},
"dependsOn": {
"docspace-router": { "condition": "service_healthy" }
}
}
]
}

View File

@@ -0,0 +1,37 @@
# ONLYOFFICE DocSpace
ONLYOFFICE DocSpace is a collaborative room-based document management platform that enables teams to create, edit, and manage documents, spreadsheets, and presentations in real-time.
## Key Features
- **Room-based collaboration** — Organize work into dedicated rooms with granular access controls for teams, departments, or external partners
- **Built-in document editors** — Full-featured editors for documents, spreadsheets, presentations, and fillable forms powered by ONLYOFFICE Docs
- **File management** — Upload, organize, and share files with version history and audit trails
- **Third-party integrations** — Connect external storage providers (Google Drive, Dropbox, OneDrive, Nextcloud, etc.)
- **Guest access** — Invite external users with limited permissions for secure document sharing
- **Customizable branding** — White-label the interface with your organization's logo and colors
## Architecture
This deployment includes the full DocSpace stack:
- **Nginx proxy** — Reverse proxy and entry point
- **DocSpace router** — Internal request routing
- **.NET services** — Core backend APIs (files, people, backup, studio, etc.)
- **Java services** — Identity and authorization (OAuth2/OpenID Connect)
- **Node.js services** — Frontend apps (login, editor, SDK, management)
- **ONLYOFFICE Document Server** — Real-time document editing engine
- **MySQL 8.3** — Primary database
- **Redis 7** — Caching and session storage
- **RabbitMQ 3** — Message queue for async operations
- **OpenSearch 2.18** — Full-text search indexing
## System Requirements
- **RAM:** Minimum 8GB recommended (OpenSearch alone needs 1GB+)
- **Disk:** 10GB+ for application data
- **Architecture:** amd64 only
## First Launch
After installation, navigate to the app URL and complete the initial setup wizard to create your administrator account.