ワンクリックで
self-hosted-services
自托管服务部署 — AList网盘、Uptime Kuma监控、Memos笔记等轻量Docker服务
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
自托管服务部署 — AList网盘、Uptime Kuma监控、Memos笔记等轻量Docker服务
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | self-hosted-services |
| description | 自托管服务部署 — AList网盘、Uptime Kuma监控、Memos笔记等轻量Docker服务 |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| metadata | {"hermes":{"tags":["self-hosted","docker","alist","uptime-kuma","memos","file-sharing","monitoring"]}} |
在中国大陆服务器上,必须先配置镜像源再拉取镜像,否则极慢。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Pitfall: 不配镜像源直接pull,一个100MB的镜像可能要10分钟+。
sudo docker run -d \
--restart=always \
--name alist \
-p 5244:5244 \
-v /opt/alist/data:/opt/alist/data \
xhofe/alist:latest
sudo docker logs alist 2>&1 | grep -i "password"
⚠️ AList用 --restart=always 部署,kill进程无效,Docker会自动重启。
sudo docker stop alist # 停止
sudo docker start alist # 启动
sudo docker restart alist # 重启
Pitfall: ps aux | grep alist 能看到进程,但 sudo kill -9 <pid> 会被Docker立刻重启。必须用 docker stop。
当前服务器同时有AList(Docker)和自定义Flask网盘"aivos的网盘",都用端口5244,互斥运行:
sudo docker start/stop alistcd /opt/aivos-disk && /home/admin/.hermes/hermes-agent/venv/bin/python app.py(background模式启动)/opt/aivos-disk/storage/切换时先停一个再启另一个。
# 1. 用初始密码登录获取token
TOKEN=$(curl -s http://localhost:5244/api/auth/login -X POST \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"初始密码"}' | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['token'])")
# 2. 修改用户名和密码
# 注意:role必须是数组 [2],不是数字 2
curl -s http://localhost:5244/api/admin/user/update -X POST \
-H "Content-Type: application/json" \
-H "Authorization: $TOKEN" \
-d '{"id":2,"username":"新用户名","password":"新密码","role":[2],"disabled":false,"permission":65535,"base_path":"/","sso_id":""}'
⚠️ 重要:存储路径必须在Docker挂载点 /opt/alist/data 内,否则会报 "storage not found" 错误。
# 创建存储目录(必须在Docker挂载点内)
sudo mkdir -p /opt/alist/data/storage
sudo chmod 777 /opt/alist/data/storage
TOKEN=...
curl -s http://localhost:5244/api/admin/storage/create -X POST \
-H "Content-Type: application/json" \
-H "Authorization: $TOKEN" \
-d '{
"mount_path": "/",
"order": 0,
"driver": "Local",
"cache_expiration": 30,
"status": "work",
"addition": "{\"root_folder_path\":\"/opt/alist/data/storage\",\"thumbnail\":false,\"show_hidden\":true,\"mkdir_perm\":\"777\",\"recycle_bin_path\":\"delete permanently\"}"
}'
# 禁用guest用户
curl -s http://localhost:5244/api/admin/user/update -X POST \
-H "Content-Type: application/json" \
-H "Authorization: $TOKEN" \
-d '{"id":1,"username":"guest","password":"","role":[1],"disabled":true,"permission":0,"base_path":"/","sso_id":""}'
curl -s "http://localhost:5244/api/fs/list" -X POST \
-H "Content-Type: application/json" \
-d '{"path":"/","password":"","page":1,"per_page":5}'
# 应返回 {"code":401,"message":"Guest user is disabled, login please"}
如果更新用户后文件消失,检查并修复存储配置:
# 检查当前存储配置
sqlite3 /opt/alist/data/data.db "SELECT id, addition FROM x_storages;"
# 如果root_folder_path错误,更新它
sqlite3 /opt/alist/data/data.db "UPDATE x_storages SET addition='{\"root_folder_path\":\"/opt/alist/data/storage\",\"thumbnail\":false,\"thumb_cache_folder\":\"\",\"show_hidden\":true,\"mkdir_perm\":\"777\",\"recycle_bin_path\":\"delete permanently\"}' WHERE id=1;"
# 重启容器
sudo docker restart alist
:ro是只读,用户无法上传/创建文件夹"role":[2] 不是 "role":2,否则报错/api/auth/login(登录), /api/admin/user/update(更新用户), /api/admin/storage/create(创建存储), /api/fs/list(列出文件)/opt/alist/data,所以存储路径必须是 /opt/alist/data/storage,不能是 /opt/alist/storage。否则报 "storage not found" 错误x_storages 表的 root_folder_path 是否正确--restart=always 容器不能靠kill停止 — 必须用 docker stop,直接kill进程会被Docker立刻重启。排查端口占用时先 docker ps 看容器Delegate coding to OpenAI Codex CLI (features, PRs).
Configure, extend, or contribute to Hermes Agent.
Manage multiple remote servers from Hermes via SSH — deploy services, configure firewalls, transfer files, run commands across servers
Clone/create/fork repos; manage remotes, releases.
Parallel data collection from web sources, APIs, and documentation sites
Deploy static sites to GitHub Pages via API — create repo, push, enable Pages, all from CLI