ADR-0009: Unraid Community Apps Registration

Status

Evaluating

Context

Unraid is a primary target platform for bosun. The Community Apps (CA) plugin is the standard way Unraid users discover and install Docker containers.

Question: Should we register bosun components with Unraid Community Apps?

Components to Consider

Component CA Candidate? Notes
Bosun Yes Core orchestrator, primary value prop
Tailscale Gateway No Official Tailscale template exists
Agentgateway Maybe Niche (MCP users only)
Manifest CLI No CLI tool, not a container

Registration Requirements

Based on Unraid CA documentation:

1. Docker Image on Registry

ghcr.io/cameronsjo/bosun-bosun:latest

2. XML Template

<?xml version="1.0"?>
<Container version="2">
  <Name>bosun-bosun</Name>
  <Repository>ghcr.io/cameronsjo/bosun-bosun</Repository>
  <Registry>https://github.com/cameronsjo/bosun/pkgs/container/bosun-bosun</Registry>
  <Branch>
    <Tag>latest</Tag>
    <TagDescription>Latest stable release</TagDescription>
  </Branch>
  <Network>bridge</Network>
  <Privileged>false</Privileged>
  <Support>https://forums.unraid.net/topic/XXXXX-bosun-bosun/</Support>
  <Project>https://github.com/cameronsjo/bosun</Project>
  <Overview>
    GitOps for Docker Compose on bare metal. Push to GitHub, your server updates.
    Encrypted secrets with SOPS, templated configs with Chezmoi, instant webhook deploys.
  </Overview>
  <Category>Tools: Productivity:</Category>
  <Icon>https://raw.githubusercontent.com/cameronsjo/bosun/main/assets/icon.png</Icon>
  <ExtraParams>--restart=unless-stopped</ExtraParams>
  <PostArgs/>
  <DonateText/>
  <DonateLink/>
  <DonateImg/>

  <Config Name="Config Path" Target="/config" Default="/mnt/user/appdata/bosun" Mode="rw" Description="Configuration directory" Type="Path" Display="always" Required="true" Mask="false"/>
  <Config Name="Repo URL" Target="REPO_URL" Default="" Mode="" Description="Git repository URL for your configs" Type="Variable" Display="always" Required="true" Mask="false"/>
  <Config Name="Webhook Port" Target="8080" Default="8080" Mode="tcp" Description="Webhook listener port" Type="Port" Display="always" Required="true" Mask="false"/>
  <Config Name="Age Key File" Target="SOPS_AGE_KEY_FILE" Default="/config/age-key.txt" Mode="" Description="Path to Age private key" Type="Variable" Display="always" Required="true" Mask="false"/>
  <Config Name="Docker Socket" Target="/var/run/docker.sock" Default="/var/run/docker.sock" Mode="ro" Description="Docker socket (read-only)" Type="Path" Display="advanced" Required="true" Mask="false"/>
</Container>

3. Support Thread

4. Template Repository

5. Submit to Squid

Alternative: Self-Hosted Templates

Skip CA registration, host templates ourselves:

Users add template repo URL manually:
https://github.com/cameronsjo/bosun/tree/main/unraid-templates

Pros:

Cons:

Decision Matrix

Factor CA Registration Self-Hosted
Discoverability High Low
Approval process Required None
Update speed Depends on CA Instant
User trust Higher (vetted) Lower
Maintenance Support thread required GitHub issues
Time investment Medium Low

Recommendation

Phase 1: Self-hosted templates

Phase 2: CA registration (when stable)

Implementation Tasks

Phase 1 Checklist

Phase 2 Checklist

Template Design Considerations

Docker Socket Access

Bosun needs Docker socket to run docker compose. Options:

  1. Direct mount (simpler, less secure)

    <Config Name="Docker Socket" Target="/var/run/docker.sock" Default="/var/run/docker.sock" Mode="ro" Description="Docker socket" Type="Path" Display="advanced" Required="true" Mask="false"/>
  2. Via socket proxy (more secure)

    <Config Name="Docker Host" Target="DOCKER_HOST" Default="tcp://dockersocket:2375" Mode="" Description="Docker socket proxy" Type="Variable" Display="advanced" Required="true" Mask="false"/>

    Requires separate dockersocket container.

Compose Manager Integration

Unraid’s Docker Compose Manager plugin stores projects in:

/boot/config/plugins/compose.manager/projects/

Bosun should be aware of this path for Unraid-specific deployments.

Network Considerations

Bosun may need access to:

Template should expose network configuration.

References