Skip to content

Deploying Open VSX

Thomas Neidhart edited this page Sep 10, 2026 · 38 revisions

Architectural Overview

Overview diagram

The central element is the server application, which is available in the openvsx-server Docker image. It is a Spring Boot application and needs an application.yml file to configure the deployment. Open VSX does not provide any facility to deploy the other components (database, search engine etc.) because there are numerous ways how the infrastructure can be set up. Using Kubernetes is one option, but that is not mandatory.

The database holding all metadata of published extensions is a PostgreSQL instance. Up until version 0.17.0 all files are stored as binary data in the database in case no additional file storage is used. Though this setup is supported by Open VSX, it considerably increases storage and network throughput of the database. From version 0.18.0 files are stored on the local file system. For larger scale deployments using an external file storage is recommended. Currently Azure Blob Storage and Google Cloud Storage are supported as external storage providers.

Elasticsearch is used as default search engine for search queries from the web UI. As an alternative, you can choose to search via database queries, which will likely result in worse performance, or to completely disable the search functionality. In the latter case, all other Open VSX features are still available.

User authentication is done with OAuth. GitHub is the default OAuth provider. Other OAuth providers can be configured too, see the OAuth2 section for more information.

Configuring and Running a Deployment

The deployment guide lives in the repository, so that it is versioned with the server it describes and can be updated in the same pull request as the code:

  • doc/deployment.md - getting started, where application.yml goes, the web UI, the upstream registry, and HTTPS with a reverse proxy.
  • doc/configuration.md - every configuration property the server understands, with its type, default and the release that introduced it.

Both links show main. Pick the tag matching the version you are deploying to read them as they stood for that release.

Clone this wiki locally