AgentSkillsCN

homepage-docker

为首页仪表板配置docker.yaml——配置Docker套接字、远程主机、TLS、Swarm,以及自动发现标签。

SKILL.md
--- frontmatter
name: homepage-docker
description: Configure docker.yaml for Homepage dashboard - Docker socket, remote hosts, TLS, swarm, and auto-discovery labels
license: MIT
compatibility: opencode
metadata:
  project: homepage
  type: yaml-config

Homepage docker.yaml Configuration

Reference for Docker integration.

Structure

yaml
---
server-name:
  socket: /var/run/docker.sock

Local Socket

yaml
my-docker:
  socket: /var/run/docker.sock

docker-compose mount:

yaml
homepage:
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock

Note: Homepage must run as root for socket access.

Remote TCP

yaml
my-remote-docker:
  host: 192.168.0.101
  port: 2375

TLS Configuration

yaml
my-remote-docker:
  host: 192.168.0.101
  port: 2375
  tls:
    keyFile: tls/key.pem
    caFile: tls/ca.pem
    certFile: tls/cert.pem

HTTPS via Reverse Proxy

yaml
my-docker:
  host: dockerproxy
  port: 443
  protocol: https

Docker Socket Proxy

Using docker-socket-proxy:

yaml
my-docker:
  host: dockerproxy
  port: 2375

docker-compose:

yaml
dockerproxy:
  image: ghcr.io/tecnativa/docker-socket-proxy:latest
  environment:
    - CONTAINERS=1
    - SERVICES=1
    - POST=0
  ports:
    - 127.0.0.1:2375:2375
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock:ro

HTTP Headers

For reverse proxy with auth:

yaml
my-docker:
  host: dockerproxy
  port: 443
  protocol: https
  headers:
    Authorization: Basic <base64-credentials>

Docker Swarm

yaml
my-docker:
  socket: /var/run/docker.sock
  swarm: true

Deploy on manager node:

yaml
deploy:
  placement:
    constraints:
      - node.role == manager

Service Integration

In services.yaml:

yaml
- Emby:
    server: my-docker # Matches docker.yaml key
    container: emby # Container name
    showStats: true

Auto-Discovery Labels

Add to container labels:

yaml
services:
  emby:
    labels:
      - homepage.group=Media
      - homepage.name=Emby
      - homepage.icon=emby.png
      - homepage.href=http://emby.home/
      - homepage.description=Media server
      - homepage.widget.type=emby
      - homepage.widget.url=http://emby.home
      - homepage.widget.key=your-api-key

Multiple Widgets via Labels

yaml
labels:
  - homepage.widgets[0].type=emby
  - homepage.widgets[0].url=http://emby.home
  - homepage.widgets[0].key=api-key
  - homepage.widgets[1].type=uptimekuma
  - homepage.widgets[1].url=http://uptimekuma.home
  - homepage.widgets[1].slug=emby-status

Multiple Instances

For multiple Homepage deployments:

yaml
labels:
  - homepage.group=Media
  - homepage.name=Emby
  - homepage.instance.internal.href=http://emby.lan/
  - homepage.instance.public.href=https://emby.domain.com/

In settings.yaml:

yaml
instanceName: internal # or public

Complete Example

yaml
---
# Local Docker
local:
  socket: /var/run/docker.sock

# Remote Unraid server
Unraid:
  host: unraid.bun-delta.ts.net
  port: 2375

# Remote with TLS
production:
  host: prod.example.com
  port: 2376
  tls:
    keyFile: tls/key.pem
    caFile: tls/ca.pem
    certFile: tls/cert.pem