con un clic
self-hosted-services
自托管服务部署 — AList网盘、Uptime Kuma监控、Memos笔记等轻量Docker服务
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
自托管服务部署 — AList网盘、Uptime Kuma监控、Memos笔记等轻量Docker服务
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
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
| 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 看容器