ONLYOFFICE DocSpace Build Tools

May 20, 2026 · View on GitHub

Release Notes License GitHub stars Open Issues

This repository contains the build, deployment, and infrastructure tooling for ONLYOFFICE DocSpace — build scripts, Docker configurations, installation packages, CI/CD pipelines, and application configuration.

For the full product overview, see the main repository README. For backend development, see the server README. For frontend development, see the client README.

Table of Contents

Project Structure

buildtools/
├── config/                     # Application configuration
│   ├── appsettings*.json      # App configs (various profiles)
│   ├── autofac*.json          # Dependency injection configs
│   ├── storage.json           # Storage backend config
│   ├── externalresources.json # CDN and external URLs
│   ├── nginx/                 # Web server configuration
│   │   ├── onlyoffice.conf
│   │   ├── includes/
│   │   └── templates/
│   ├── mysql/                 # Database configuration
│   ├── supervisor/            # Process management
│   ├── document-formats/      # Document format definitions (submodule)
│   └── *.json                 # Service-specific configs (redis, rabbitmq, etc.)
├── install/                    # Installation infrastructure
│   ├── OneClickInstall/       # Docker and package installers
│   ├── docker/                # Dockerfiles, Compose files, entrypoints
│   ├── common/                # Shared build and packaging scripts
│   ├── win/                   # Windows Advanced Installer projects
│   ├── deb/                   # Debian package metadata
│   ├── rpm/                   # RPM package metadata
│   └── snap/                  # Snap package configuration
├── run/                        # Per-service executables (28 services, .bat)
├── scripts/                    # Service startup scripts (identity, socketio, sso, webdav)
├── start/                      # Service lifecycle (start.sh, stop.sh, restart.sh)
├── tests/                      # Test utilities (lint, vagrant)
├── tools/                      # Utility scripts
├── .github/workflows/          # GitHub Actions (18 workflows)
├── build*.sh, build*.bat       # Platform-specific build scripts
├── run*.sh, run*.bat           # Test and migration runners
├── *.py                        # Python orchestration utilities
└── Jenkinsfile                 # Jenkins pipeline

Installation

OneClickInstall

The primary deployment method. Located in install/OneClickInstall/.

Universal installer:

# Quick install
bash install/OneClickInstall/docspace-install.sh

Docker:

bash install/OneClickInstall/install-Docker.sh

Linux Packages:

# Debian/Ubuntu
bash install/OneClickInstall/install-Debian.sh

# RHEL/CentOS/Fedora
bash install/OneClickInstall/install-RedHat.sh

Package metadata is maintained in install/deb/ and install/rpm/.

All installers support extensive flags for customization (see OneClickInstall README).

Windows Installer

Windows installation uses Advanced Installer projects (.aip files) located in install/win/, with WinSW for service management.

See the Windows installation guide for detailed instructions.

Docker

Dockerfiles

Located in install/docker/:

DockerfilePurpose
Dockerfile.appMain multi-stage build for DocSpace
Dockerfile.runtimeRuntime dependencies image

Multi-platform builds are supported via build.hcl (Docker Buildx).

Docker Compose Services

Located in install/docker/, the Compose setup is modular — each infrastructure component has its own file:

FileServices
docspace.ymlAll DocSpace application services
docspace-stack.ymlFull stack with all dependencies
docspace.profiles.ymlProfile-based service configurations
docspace.overcome.ymlOverrides for local development
db.yml / db.dev.ymlMySQL database
redis.ymlRedis cache
rabbitmq.ymlRabbitMQ message broker
opensearch.ymlOpenSearch engine
identity.ymlOAuth2 identity service
proxy.yml / proxy-ssl.ymlNginx reverse proxy (with/without SSL)
ds.ymlONLYOFFICE Document Server
migration-runner.ymlDatabase migration runner
fluent.ymlFluent Bit log collector
dashboards.ymlOpenSearch dashboards
healthchecks.ymlHealth check monitoring
notify.ymlNotification services
dnsmasq.ymlDNS resolution for local development

Environment Variables

The .env file in install/docker/ contains ~200 configuration variables covering all services. Key categories:

  • Service ports and endpoints
  • Database credentials
  • Redis and RabbitMQ connections
  • OpenSearch settings
  • Document Server integration
  • SSL/TLS configuration
  • Edition selection (Community/Enterprise/Developer)

Configuration

Application Settings

41 JSON configuration files in config/:

FilePurpose
appsettings.jsonMain application configuration
appsettings.developer.jsonDeveloper edition overrides
appsettings.enterprise.jsonEnterprise edition overrides
appsettings.services.jsonService-specific settings
appsettings.test.jsonTest environment settings
autofac.jsonDI container configuration
autofac.consumers.jsonConsumer service DI bindings
autofac.products.jsonProduct module DI bindings
storage.jsonStorage backend configuration
externalresources.jsonCDN and external resource URLs
redis.jsonRedis connection settings
rabbitmq.jsonRabbitMQ connection settings
elastic.jsonOpenSearch settings
socket.jsonSocket.IO settings
nlog.configStructured logging configuration

Nginx

Two separate nginx roles, each with its own config directory.

Application router (config/nginx/) — OpenResty-based, baked into the router Docker image:

  • onlyoffice.conf — Main routing config: location blocks for all services (API, login, doceditor, management, sdk, socket.io, ds-vpath, etc.)
  • onlyoffice-client.conf / onlyoffice-login.conf / onlyoffice-management.conf — Per-service nginx configs
  • proxy-frontend.conf / proxy-frontend-virt.conf — Frontend proxying rules
  • includes/onlyoffice-upstream-map.conf.template — Service URL maps (processed by envsubst at container start)
  • includes/onlyoffice-public.conf — Public-facing location rules
  • includes/server-dashboards.conf / server-static-headers.conf — Reusable include fragments
  • html/custom_4xx.html / custom_50x.html — Custom error pages

Router Docker image init (install/docker/config/nginx/router/) — copied into the router image at build time:

  • docker-entrypoint.sh — Entrypoint that runs docker-entrypoint.d/ scripts then starts nginx
  • docker-entrypoint.d/10-listen-on-ipv6-by-default.sh — Enables IPv6 listening
  • docker-entrypoint.d/15-local-resolvers.envsh — Sets $NGINX_LOCAL_RESOLVERS from /etc/resolv.conf
  • docker-entrypoint.d/20-envsubst-on-templates.sh — Processes *.template files with envsubst
  • docker-entrypoint.d/30-tune-worker-processes.sh — Auto-tunes worker processes
  • templates/upstream.conf.template — Static upstream definitions
  • templates/onlyoffice-upstream-map.conf.template — Dynamic service URL maps (reads SERVICE_* env vars)

Proxy (install/docker/config/nginx/proxy/) — mounted into the proxy container at runtime via proxy.yml:

  • onlyoffice-proxy.conf — HTTP reverse proxy: forwards all traffic to the router on port 8092
  • onlyoffice-proxy-ssl.conf — HTTPS variant with TLS termination, QUIC/HTTP3, HSTS
  • letsencrypt.conf — ACME challenge location for Let's Encrypt certificate renewal
  • templates/proxy.upstream.conf.template — upstream server address template

Shared (install/docker/config/nginx/):

  • nginx.conf.template — base nginx.conf used by both the proxy and router containers

Database

  • config/mysql/conf.d/mysql.cnf — MySQL server tuning

Process Management

Supervisor configurations in config/supervisor/:

FilePurpose
supervisord.confSupervisor daemon settings
dotnet_services.conf.NET service management
node_services.confNode.js service management
java_services.confJava service management

Database Migrations

# Linux/macOS
./runMigrations.sh

# Windows
runMigrations.bat

# Windows (standalone mode)
runMigrations.standalone.bat

Docker-based migrations are handled by migration-runner.yml Compose service.

CI/CD

GitHub Actions

18 workflows in .github/workflows/:

Build & Release:

WorkflowPurpose
main-build.ymlMulti-arch Docker build (dotnet, node, java)
build_packages.ymlDEB/RPM package building
config-build.ymlConfiguration-triggered builds
cron-build.ymlScheduled nightly builds
windows-build.ymlWindows installer build
release-docspace.yamlProduction release automation
offline-release.ymlOffline package building
oci-release.ymlContainer registry release

Testing & Quality:

WorkflowPurpose
ci-oci-docker-install.ymlOneClickInstall Docker testing
ci-oci-install.ymlLinux package installation testing
ci-oci-update.ymlUpdate mechanism testing
zap-scanner.yamlOWASP ZAP security scanning
check-comments.ymlCode review automation
claude-auto-review.ymlAutomated PR code review with Claude

Infrastructure:

WorkflowPurpose
rebuild-boxes.ymlVM box rebuilding
readme-update.ymlDocumentation automation

Jenkins

Jenkinsfile defines a declarative pipeline with:

  • Parallel Unix/Windows build stages
  • Automated testing
  • Telegram notifications

Licensing

ONLYOFFICE DocSpace is released under AGPLv3 license. See the LICENSE file for more information.

Need help for developers?

Check our official API documentation.