
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个轻量级多工具Docker镜像,主要用于:
mkcert + certify)mkhost)+ 模板delhost)senv)notifierd + notify + 主机docknotify)docker-cli + compose + lazydocker)netx、dig、mtr、traceroute、nmap等)git、jq、yq、rg、fd、sqlite、shellcheck、nano等)mkcertcertify扫描/etc/share/vhosts/**下的虚拟主机并生成:
.p12文件)example.com.conf → example.com + *.example.com)localhost、127.0.0.1、::1CAROOT=/etc/share/rootCA提供稳定CA根证书mkhost使用预定义模板生成Nginx/Apache虚拟主机配置/etc/share/runtime-versions.json(可通过RUNTIME_VERSIONS_DB覆盖)ACTIVE_PHP_PROFILE、ACTIVE_NODE_PROFILE、APACHE_ACTIVE)age + sopssenv提供.env ↔ .env.enc的简洁工作流./.sops.yaml(最高优先级)/etc/share/sops下的全局回退配置/密钥(可挂载)notifierd监听TCP(默认9901)并使用前缀(默认__HOST_NOTIFY__)向标准输出发送稳定的单行事件notify向容器内的notifierd发送事件docknotify可从主机向容器推送事件docker-cli + composelazydocker(需挂载docker socket)netx(工具集包装器)curl、wget、ping、ncdig/nslookup(bind-tools)iproute2、traceroute、mtrnmapgit + gitx(工具集)jq、yqripgrep (rg)、fdsqlite + sqlitex(工具集)shellcheckzip、unzip、tree、ncdunano作为默认EDITOR和VISUAL/etc/nanorc配置为在可用时加载语***则chromacat、figlet、show-banner shell钩子| 命令 | 用途 |
|---|---|
mkcert | 本地CA + 受信任TLS证书 |
certify | 扫描虚拟主机并生成服务器/客户端证书 |
mkhost | 生成虚拟主机配置(Nginx/Apache)+ 可选Node compose |
delhost | 删除域名的虚拟主机配置(Nginx/Apache/Node yaml) |
senv | SOPS/Age工作流(.env + .env.enc) |
lazydocker | Docker终端用户界面(需docker socket) |
notify | 向notifierd发送通知 |
notifierd | TCP → 标准输出桥接(用于主机监控) |
gitx | Git辅助命令行工具 |
chromacat | 彩色输出 |
sqlitex | SQLite辅助命令行工具 |
netx | 网络辅助包装器 |
本镜像设计为可将所有生成的+持久化工件保存在单个configuration/文件夹中,并挂载到容器内。
经验法则:
- 若容器需在目录中生成/更新文件(
certify、mkhost、senv init/keygen),则挂载为读写(RW)。- 若仅需"只读使用"(适用于共享密钥仓库),则挂载为只读(RO)。
. ├─ configuration/ │ ├─ apache/ # 生成/管理的Apache虚拟主机(*.conf) │ ├─ nginx/ # 生成/管理的Nginx虚拟主机(*.conf) │ ├─ ssl/ # 生成的证书(.pem、.p12、密钥) │ ├─ rootCA/ # mkcert CA存储(跨重建持久化) │ └─ sops/ # 全局SOPS Model B(持久化) │ ├─ age.keys # 全局Age密钥(回退) │ ├─ .sops.yaml # 全局回退配置(senv init在可写时创建) │ ├─ keys/ # 每个项目的密钥 │ │ ├─ projectA.age.keys │ │ └─ projectB.age.keys │ └─ config/ # 可选的每个项目配置 │ ├─ projectA.sops.yaml │ └─ projectB.sops.yaml │ ├─ secrets-repo/ # 可选共享加密环境存储(通常为RO挂载) │ ├─ projectA/ │ │ └─ .env.enc │ └─ projectB/ │ └─ prod/.env.enc │ └─ docker-compose.yml
| 主机路径 | 容器路径 | 用途 |
|---|---|---|
./configuration/apache | /etc/share/vhosts/apache | mkhost、certify |
./configuration/nginx | /etc/share/vhosts/nginx | mkhost、certify |
./configuration/ssl | /etc/mkcert | certify、mkcert |
./configuration/rootCA | /etc/share/rootCA | mkcert(CA存储) |
./configuration/sops | /etc/share/sops | senv init、senv keygen、senv enc/dec/edit |
./secrets-repo | /etc/share/vhosts/sops | senv dec --in=...(别名输入源) |
/var/run/docker.sock | /var/run/docker.sock | docker、lazydocker |
yamlservices: tools: image: infocyph/tools:latest container_name: docker-tools volumes: - ./configuration/apache:/etc/share/vhosts/apache - ./configuration/nginx:/etc/share/vhosts/nginx - ./configuration/ssl:/etc/mkcert - ./configuration/rootCA:/etc/share/rootCA - ./configuration/sops:/etc/share/sops - ./secrets-repo:/etc/share/vhosts/sops:ro - /var/run/docker.sock:/var/run/docker.sock environment: - TZ=Asia/Dhaka # - NOTIFY_TCP_PORT=9901 # - NOTIFY_PREFIX=__HOST_NOTIFY__ # - NOTIFY_TOKEN=
使用方式:
docker run --rm ... infocyph/tools certifynotifierdbashdocker run --rm -it \ -v "$(pwd)/configuration/apache:/etc/share/vhosts/apache" \ -v "$(pwd)/configuration/nginx:/etc/share/vhosts/nginx" \ -v "$(pwd)/configuration/ssl:/etc/mkcert" \ -v "$(pwd)/configuration/rootCA:/etc/share/rootCA" \ -v "$(pwd)/configuration/sops:/etc/share/sops" \ -v /var/run/docker.sock:/var/run/docker.sock \ infocyph/tools:latest
容器启动时,入口点会运行certify(尽力而为)。其流程:
/etc/share/vhosts/**下所有*.conf文件.conf的基名)*.domain)localhost、127.0.0.1、::1mkcert生成服务器和客户端证书| 文件名 | 生成的域名 |
|---|---|
test.local.conf | test.local、*.test.local |
example.com.conf | example.com、*.example.com |
internal.dev.site.conf | internal.dev.site、*.internal.dev.site |
所有证书写入/etc/mkcert。
| 证书类型 | 生成的文件 |
|---|---|
| Apache(服务器) | apache-server.pem、apache-server-key.pem |
| Apache(客户端) | apache-client.pem、apache-client-key.pem |
| Nginx(服务器) | nginx-server.pem、nginx-server-key.pem |
| Nginx(代理) | nginx-proxy.pem、nginx-proxy-key.pem |
| Nginx(客户端) | nginx-client.pem、nginx-client-key.pem、nginx-client.p12 |
mkhost是"域名设置向导",可生成:
/etc/share/vhosts/nginx/<domain>.conf/etc/share/vhosts/apache/<domain>.conf/etc/share/vhosts/node/<token>.yaml运行方式:
bashdocker exec -it docker-tools mkhost
它运行9步引导流程(PHP与Node略有不同):
域名(验证)
应用类型:PHP 或 Node
服务器类型(仅PHP):Nginx 或 Apache
HTTP/HTTPS模式(保留HTTP、重定向或HTTPS)
文档根目录(/app/<path>)
客户端请求体大小
运行时版本选择:
若启用HTTPS:可选客户端证书验证(双向TLS)
若启用HTTPS,mkhost会自动触发certify以确保所需证书存在。
mkhost将"活动选择"存储到环境变量中(供server包装器启用compose配置文件使用)。可查询/重置这些值:
bashmkhost --RESET mkhost --ACTIVE_PHP_PROFILE mkhost --ACTIVE_NODE_PROFILE mkhost --APACHE_ACTIVE
--RESET:清除所有活动选择。--ACTIVE_PHP_PROFILE:打印所选PHP配置文件(若选择PHP)。--ACTIVE_NODE_PROFILE:打印所选Node配置文件(若选择Node)。--APACHE_ACTIVE:当选择Apache模式时打印apache。delhost删除域名的生成文件:
/etc/share/vhosts/nginx/<domain>.conf/etc/share/vhosts/apache/<domain>.conf/etc/share/vhosts/node/<token>.yaml(token为域名的安全slug)运行方式:
bashdocker exec -it docker-tools delhost example.com
交互模式(无参数):
bashdocker exec -it docker-tools delhost
行为:
y/N)2退出(对脚本有用)初始化(仅在可写/挂载时创建缺失默认值):
bashsenv init
在当前目录初始化仓库本地配置:
bashsenv init --local
仅本地初始化(不影响/etc/share/sops):
bashsenv init --local-only
状态/信息:
bashsenv info
加密/解密(默认):
bashsenv enc # .env -> .env.enc senv dec # .env.enc -> .env senv edit # 使用sops编辑器模式编辑.env.enc
显式输入/输出:
bashsenv enc --in=./.env --out=./.env.enc senv dec --in=./.env.enc --out=./.env
使用"共享加密环境仓库"作为输入源:
bash# 从/etc/share/vhosts/sops/demo.env.enc读取 # 写入到./demo.env(除非设置--out) senv dec --in=demo.env.enc # 共享仓库内的嵌套路径 senv dec --in=projectA/prod/.env.enc --out=./.env
推拉快捷操作(共享加密仓库):
bash# 拉取/etc/share/vhosts/sops/<project>/.env.enc -> ./.env senv pull --project projectA # 推送./.env -> /etc/share/vhosts/sops/<project>/.env.enc senv push --project projectA
notifierdnotifierd监听TCP(默认9901)并使用固定前缀(默认__HOST_NOTIFY__)向标准输出发送单行事件。
notify(工具容器内)bashnotify "构建完成" "所有服务均健康 ✅"
docknotify主机端配套工具,使用稳定的单行TCP协议向工具的notifierd服务发送通知。
协议(制表符分隔): token timeout urgency source title body
bashsudo curl -fsSL \ "https://raw.githubusercontent.com/infocyph/Scriptomatic/refs/heads/main/bash/docknotify.sh" \ -o /usr/local/bin/docknotify \ && sudo chmod +x /usr/local/bin/docknotify
bashdocknotify "构建完成" "所有服务均健康 ✅"
bashdocker logs -f docker-tools 2>/dev/null | awk -v p="__HOST_NOTIFY__" ' index($0, p) == 1 { line = $0 sub("^" p "[ \t]*", "", line) n = split(line, a, "\t") if (n >= 6) { urgency = a[3] source = a[4] title = a[5] body = a[6] for (i = 7; i <=
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


来自真实用户的反馈,见证轩辕镜像的优质服务