README template structure
Each service README should follow this structure:What to document
Prerequisites
List all requirements before users attempt deployment:User permissions
User permissions
Note if the host user needs
docker group membership:Hardware access
Hardware access
Document GPU, video, render group requirements:
System dependencies
System dependencies
Any packages or kernel modules needed on the host.
Volumes
Explain which bind mounts should be pre-created:./config):
MagicDNS and Serve
Document when to enable MagicDNS:TS_CERT_DOMAIN should be set to:
.env
The serve configuration proxy port must match the service’s internal port. Update
"Proxy":"http://127.0.0.1:80" accordingly.Port exposure
Explain whether the commented port mapping is necessary:Service-specific gotchas
Call out common issues:Initial setup
Steps to complete after first launch (admin account creation, database initialization, etc.)
Default credentials
List any default usernames/passwords that should be changed
Path expectations
Paths the service expects to exist or specific directory structures
Group IDs
Required PGID/GUID values for file access
Health checks
Document what the health check validates:Upstream documentation
Always link to official resources:- Service homepage and documentation
- Installation/setup guides
- Official videos or tutorials
- GitHub repository
Files to check section
Remind users to verify configuration:Writing style
Be concise
Be concise
Users want to deploy quickly. Keep explanations brief and actionable.
Be specific
Be specific
Don’t say “configure the port” - say “update line 7 to use port 8080”.
Anticipate questions
Anticipate questions
If you struggled with something during setup, document it. Others will too.
Use examples
Use examples
Show real configuration snippets, not abstract descriptions.
Testing documentation
Before submitting:- Follow your own README from a fresh clone
- Verify all links work
- Test the
docker compose configvalidation - Confirm the service starts and is accessible via Tailscale
If someone unfamiliar with the service can deploy it using only your README, you’ve succeeded.
Example documentation
See existing services in theservices/ directory for examples of well-documented configurations. Pay attention to:
- How prerequisites are explained
- When and why ports are exposed
- How gotchas are called out
- The level of detail in configuration notes