Documentation site¶
This site is built with MkDocs Material and deployed to HomeCloud SO static website hosting.
URL: https://docs.web.holab.abrdns.com
How it works¶
flowchart LR
Push[git push main] --> CI[GitHub Actions]
CI --> Build[mkdocs build]
Build --> Sync[homecloud so sync]
Sync --> Bucket[so://docs/]
Bucket --> Web[docs.web.holab.abrdns.com]
One-time homelab setup¶
1. Create bucket docs¶
Console → Storage → Create bucket → name: docs
2. Enable static website¶
Console → bucket docs → Website tab:
| Setting | Value |
|---|---|
| Enabled | ✓ |
| Index document | index.html |
| Error document | 404.html |
MkDocs Material generates index.html and 404.html automatically.
3. Public read (website)¶
Bucket policy — allow public so:GetObject:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": ["so:GetObject"],
"Resource": ["arn:holab:so:::docs/*"]
}
]
}
4. CI Access Key¶
Create IAM Access Key with:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["so:ListBucket", "so:PutObject", "so:DeleteObject"],
"Resource": ["arn:holab:so:::docs", "arn:holab:so:::docs/*"]
}
]
}
5. GitHub secrets (homecloud-docs repo)¶
| Secret | Value |
|---|---|
HOMECLOUD_ACCESS_KEY_ID |
HCAK… |
HOMECLOUD_SECRET_ACCESS_KEY |
secret |
HOMECLOUD_APEX |
holab.abrdns.com |
Local development¶
pip install -r requirements.txt
mkdocs serve
# → http://127.0.0.1:8000 (English)
# → http://127.0.0.1:8000/he/ (Hebrew)
Source pages live under docs/en/ and docs/he/ (Hebrew falls back to English when a page is not translated yet). Theme and chrome match the HomeCloud console (docs/stylesheets/homecloud.css).
Manual deploy¶
Crawlers and LLMs¶
The site ships discovery files at the bucket root (synced with each deploy):
| Path | Purpose |
|---|---|
/robots.txt |
Allow crawl + point at sitemap |
/sitemap.xml |
Full URL inventory (MkDocs) |
/llms.txt |
Compact index for AI assistants (llmstxt.org) |
SO static website returns HTTP 404 (with 404.html body) for missing paths — not a soft 404 with status 200.
CI workflow¶
See .github/workflows/deploy.yml — runs on every push to main.