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.
Create a registry
Section titled “Create a registry”1. Lay out the files
Section titled “1. Lay out the files”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.md2. Write the registry file
Section titled “2. Write the registry file”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"] } ]}3. Host the files
Section titled “3. Host the files”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.json4. Test the registry
Section titled “4. Test the registry”- Validate
registry.jsonagainst the schema. - Open each file URL and check that it downloads.
- Add the registry in Customization → Templates → Add Registry and check that the templates appear.
Write templates others can rely on
Section titled “Write templates others can rely on”- Pin image versions, include health checks and restart policies, and test before publishing.
- Document required variables in
.env.examplewith 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.
Reference
Section titled “Reference”The registry must match the schema at https://github.com/getarcaneapp/arcane-templates/schema.json (JSON Schema Draft 07). Other fields are rejected.
Registry fields
Section titled “Registry fields”| 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. |
Template fields
Section titled “Template fields”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. |