Community-curated Docker Compose templates for Arcane.
Important
The community registry has been updated to the new url https://registry.getarcane.app/registry.json, the old registry at https://templates.arcane.ofkm.dev/registry.json is considered deprecated and will be removed in the future
Add this URL in Arcane’s Templates settings:
https://registry.getarcane.app/registry.json
- Source of truth: each template lives under
templates/<id>/and includes:compose.yaml(orcompose.yml,docker-compose.yml,docker-compose.yaml).env.exampletemplate.json(metadata; see example below)
- Optional:
README.mdfor extra setup notes or caveats. - Auto-generation: scripts/build-registry.ts scans
templates/and generates registry.json that follows schema.json. - Do not edit or commit
registry.jsonin PRs — CI builds and publishes it on merge tomain. - Every generated template now includes a
content_hashfingerprint derived fromtemplate.json, the compose file,.env.example, andREADME.mdwhen present. - Versioning policy:
- New template IDs bump the registry version using
BUMP_PART(minor by default). - Updates to existing templates also bump the registry version so consumers can detect changes.
- Removals bump the registry version too.
- New template IDs bump the registry version using
- PR validation: GitHub Actions type-checks, validates the generated registry against schema.json, and runs
docker compose config -qagainst every template. - Deploy CI: GitHub Actions validates on
main, generates, and commits updatedregistry.json.
The generated registry entry shape looks like this:
{
"id": "homepage",
"name": "Homepage",
"description": "A modern, fully static application dashboard.",
"version": "1.0.0",
"author": "Community",
"compose_url": "https://registry.getarcane.app/templates/homepage/compose.yaml",
"env_url": "https://registry.getarcane.app/templates/homepage/.env.example",
"documentation_url": "https://github.com/getarcaneapp/templates/tree/main/templates/homepage",
"content_hash": "4c0ffee4c0ffee4c0ffee4c0ffee4c0ffee4c0ffee4c0ffee4c0ffee4c0ffee",
"tags": ["dashboard", "homepage"]
}-
Fork this repo
-
Create a directory in
templates/using a lowercase, hyphenated ID:
cd templates
mkdir my-awesome-template- Add required files:
templates/my-awesome-template/
├─ compose.yaml # preferred; compose.yml/docker-compose*.y*ml also work
├─ .env.example
└─ template.json
If the template needs extra setup notes, add README.md too.
- template.json example:
{
"name": "My Awesome Template",
"description": "What it does and why it’s useful.",
"version": "1.0.0",
"author": "Your Name or Org",
"tags": ["category", "another-tag"]
}- Test locally (Node 25+, pnpm, Docker Compose):
pnpm install
pnpm run format
pnpm run lint
pnpm run test
pnpm run validateFor non-interactive shells or CI-like environments, set CI=true before the commands above.
- Open a Pull Request
Tips:
- The generator accepts compose files named: compose.yaml, docker-compose.yml, docker-compose.yaml, compose.yml.
.env.exampleis required.- Tags should be lowercase, hyphenated.
README.mdchanges are included in the template fingerprint, so docs updates are visible in the published registry version.
- Validate data against the registry schema: schema.json
pnpm install
pnpm run format
pnpm run lint
pnpm run test
pnpm run validate
pnpm run generateEnvironment variables supported by the generator:
BUMP_PART: bump part used when brand new template IDs are added. Defaults tominor.CHANGED_TEMPLATE_BUMP_PART: bump part used when an existing template changes or is removed. Defaults topatch.PUBLIC_BASE,DOCS_BASE,SCHEMA_URL,REGISTRY_NAME,REGISTRY_DESCRIPTION,REGISTRY_AUTHOR,REGISTRY_URL: override generated registry metadata and URLs.
Community contributions welcome. By contributing you agree your changes are licensed under the repository’s license.