AI agents: use the documentation index at llms.txt to locate machine-readable pages. This section is indexed by https://docs.particular.net/servicecontrol/llms.txt. The markdown version of this page is served as plain text. An MCP server at /mcp serves the same content via the search_docs and read_doc tools; it is read-only and needs no credentials. Markdown versions of documentation pages are available by appending .md to the page URL. Directory URLs use index.md. They are served as text/plain because some retrieval backends reject text/markdown.

Managing ServiceControl RavenDB instances via Containers

Component:
ServiceControl
Version:
6.x

When ServiceControl is hosted in containers, the particular/servicecontrol-ravendb image provides the database storage to the Error and Audit instances.

The database container extends the official RavenDB container and is provided to ensure compatibility with ServiceControl instances. In other words, for any version x.y.z version of ServiceControl, the same version x.y.z of the database container should be used to ensure data storage compatibility.

Basic usage

This minimal example creates a database container using docker run:

docker run -d --name servicecontrol-db \
    -v db-config:/etc/ravendb \
    -v db-data:/var/lib/ravendb/data \
    particular/servicecontrol-ravendb:latest

Once the database container is running, the connection string http://servicecontrol-db:8080 can be used for the RAVENDB_CONNECTIONSTRING value for an Error instance or Audit instance.

Required settings

A volume must be mounted to /var/lib/ravendb/data to provide persistent storage for database contents between container updates. Failure to specify a path for the volume will result in loss of all data when the container is removed.

Additional settings

As the ServiceControl RavenDB container extends the official RavenDB container, additional configuration details can be found in the RavenDB Docker container documentation, according to this version map:

ServiceControl VersionsRavenDB VersionContainer Documentation
6.x6.2RavenDB 6.2 container docs
5.4 to 5.115.4RavenDB 5.4 container docs

Troubleshooting

The database container reports an AGPL license

A new database container reports AGPL - Open Source from its /license/status endpoint until the first database is created. RavenDB applies the bundled license at that point, so this status is expected before an Error or Audit instance has connected for the first time.

If the data volume was first used by a RavenDB server that did not have the ServiceControl license, for example a container based on the official ravendb/ravendb image, the database container keeps the unlicensed state stored in the volume. It doesn't apply the bundled license, and it doesn't log anything about licensing. In ServiceControl version 6.9 and later, the Error and Audit instances then stop at startup with the message Cannot validate the current RavenDB license.

To apply the bundled license to the existing data, run the following command, replacing servicecontrol-db with the name of the database container:

docker exec servicecontrol-db sh -c 'curl -s -X POST http://localhost:8080/admin/license/activate -H "Content-Type: application/json" --data-binary @/usr/lib/ravendb/servicecontrol-license.json'

Then restart the Error and Audit instances. RavenDB stores the license with the data in the volume, so the license remains in place when the database container is restarted or replaced by a new container that uses the same volume.