
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Statuspage is a self-hosted status page with automatic service health checking, incident management, and multi-channel notifications.
bashcp .env.example .env # edit .env — at minimum set HTTP_PORT docker compose up -d
Open http://localhost/setup.php to run the first-time setup wizard.
Port 80 must be publicly reachable for the ACME HTTP-01 challenge.
bashcp .env.example .env # set HTTP_PORT=80, HTTPS_PORT=443 in .env docker compose up -d
Then in Admin → Settings → Let's Encrypt: enter your domain and email, save, and click Obtain / Renew Certificate. See docs/lets-encrypt.md for details.
statuspage/ ├── backend/ │ ├── cmd/server/main.go # Entry point │ └── internal/ │ ├── api/ │ │ ├── router.go # Chi routes │ │ ├── middleware/auth.go # JWT / session / RBAC │ │ └── handlers/ # One file per resource │ ├── certmanager/ # ACME HTTP-01 cert management │ ├── checker/ # HTTP/TCP/UDP/ICMP/gRPC/SMTP/IMAP │ ├── config/ # Config loading (env / .env / yml) │ ├── db/ # SQLite init, AutoMigrate, helpers │ ├── graphql/ # GraphQL schema + handler │ ├── importer/ # services.yml bulk import │ ├── metrics/ # Prometheus metrics │ ├── models/ # GORM models │ ├── notifier/ # 9 notification channels │ └── scheduler/ # Per-service timer scheduler ├── frontend/ │ ├── src/ │ │ ├── pages/admin/ # Admin dashboard pages │ │ ├── pages/ # Public status page, login, setup │ │ ├── includes/ # header, footer, nav │ │ ├── lang/ # en.php, de.php │ │ └── Lib/ # ApiClient.php, I18n.php │ └── public/ # Web root (assets, index.php) ├── docker/ │ ├── nginx.conf # HTTP server block (port 80) │ ├── supervisord.conf │ └── entrypoint.sh ├── tests/backend/ # Go tests ├── Dockerfile ├── docker-compose.yml ├── .env.example ├── config.yml.example ├── services.yml.example ├── openapi.json # Swagger/OpenAPI 3 spec └── schema.graphql
Priority order: environment variables > .env file > config.yml
| Variable | Default | Description |
|---|---|---|
PORT | 8080 | Go backend listen port (internal) |
HOST | 0.0.0.0 | Go backend listen address |
DB_PATH | /data/statuspage.db | SQLite database path |
LOG_LEVEL | info | debug / info / warn / error |
HTTP_PORT | 80 | Host port mapped to container port 80 |
HTTPS_PORT | 443 | Host port mapped to container port 443 |
SCHEDULER_CONCURRENCY | 50 | Max parallel service checks |
OIDC_ENABLED | false | Enable Keycloak/OIDC login |
OIDC_ISSUER | — | OIDC issuer URL |
OIDC_CLIENT_ID | — | OIDC client ID |
OIDC_CLIENT_SECRET | — | OIDC client secret |
OIDC_REDIRECT_URL | — | OIDC callback URL |
See .env.example and config.yml.example for the full list.
Place a services.yml next to the ***ary or mount it at /app/services.yml in Docker. Services are imported automatically on startup; SHA256-based deduplication skips existing entries.
bashcp services.yml.example services.yml # edit, then restart the container docker compose restart
See services.yml.example for all supported service types and fields.
Full reference: docs/api.md · Interactive UI: http://localhost/swagger
| Endpoint | Auth | Description |
|---|---|---|
GET /api/v1/health | — | Health check (badge-friendly) |
GET /api/v1/status | — | Overall status + per-service uptime |
GET /api/v1/services | — | Public service list |
POST /api/v1/auth/login | — | Login → JWT + session cookie |
GET /api/v1/admin/* | JWT | Protected admin endpoints |
GET /graphql | API key / JWT | GraphQL |
GET /metrics | API secret | Prometheus metrics |
statuspage_service_up{service,type,group} 1 = online, 0 = offline statuspage_service_latency_ms{service,type} last check latency (ms) statuspage_service_uptime_percent{service} 24-hour uptime % statuspage_service_checks_total{service,result} cumulative check counter statuspage_open_incidents_total number of open incidents
Secure with API_SECRET as a Bearer token: Authorization: Bearer <secret>
Configure via Admin → Notifiers. See docs/notifiers.md for per-channel field mappings.
| Channel | Method key |
|---|---|
| Email (SMTP) | email |
| Slack | slack |
| *** | discord |
| *** | telegram |
| Twilio SMS | twilio |
| Mattermost | mattermost |
| LINE Notify | line |
| Webhook | webhook |
| Shell command | command |
The scheduler runs a time.Timer per service. On each tick:
SCHEDULER_CONCURRENCY parallel checks)Check record; updates online, last_latency, last_checkFailure record and marks the service offlineFailure and marks the service onlinenotify_after consecutive failuresCheck records older than remove_after days (default 90) are purged automatically every hour.
See docs/lets-encrypt.md.
See docs/development.md.
MIT
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务