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
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
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
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
- 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
- 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
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
| 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
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. |