Skip to content

Template Registries

Publish a registry of Compose templates for your team or the community.

A template registry is a hosted registry.json file that lists Compose templates and their download URLs. Create one to share templates with your team. For container image registries, see private registries.

Give each template its own directory next to registry.json:

docker-templates/
├── registry.json
├── wordpress/
│ ├── docker-compose.yml
│ ├── .env.example
│ └── README.md
└── nextcloud/
├── docker-compose.yml
├── .env.example
└── README.md

Include $schema so editors can validate the file:

{
"$schema": "https://github.com/getarcaneapp/arcane-templates/schema.json",
"name": "My Company Templates",
"description": "Docker templates for internal applications",
"version": "1.0.0",
"author": "Your Team",
"url": "https://github.com/yourcompany/docker-templates",
"templates": [
{
"id": "internal-app",
"name": "Internal Application",
"description": "Company application stack with database",
"version": "1.0.0",
"author": "DevOps Team",
"compose_url": "https://raw.githubusercontent.com/yourcompany/docker-templates/main/internal-app/docker-compose.yml",
"env_url": "https://raw.githubusercontent.com/yourcompany/docker-templates/main/internal-app/.env.example",
"documentation_url": "https://github.com/yourcompany/docker-templates/tree/main/internal-app",
"tags": ["internal", "webapp", "postgres"]
}
]
}

Upload the files to GitHub or an HTTPS server. Download URLs must point directly to files, not repository pages: on GitHub use raw URLs, and on a custom domain enable CORS. For a repository named my-docker-templates, the registry URL is:

https://raw.githubusercontent.com/username/my-docker-templates/main/registry.json
  1. Validate registry.json against the schema.
  2. Open each file URL and check that it downloads.
  3. Add the registry in Customization → Templates → Add Registry and check that the templates appear.
  • Pin image versions, include health checks and restart policies, and test before publishing.
  • Document required variables in .env.example with working, non-secret values.
  • Use semantic versioning and keep images patched.

To submit a template to the community registry, open a pull request to getarcaneapp/templates.

The registry must match the schema at https://github.com/getarcaneapp/arcane-templates/schema.json (JSON Schema Draft 07). Other fields are rejected.

Field Required Description
$schema No URL of the registry schema, for editor validation.
name Yes Registry display name.
description Yes Short description.
version Yes Registry version (semver).
author Yes Registry maintainer.
url Yes Repository or homepage URL.
templates Yes Array of template objects, at least one.

All template fields are required.

Field Description
id Unique slug (lowercase, hyphens only).
name Display name.
description Detailed description.
version Template version (semver).
author Template author.
compose_url Direct URL to the Compose file.
env_url Direct URL to the .env.example file.
documentation_url URL to the template’s docs or README.
tags Array of unique slugs (lowercase, hyphens), at least one.