在飞牛NAS上搭个SillyTavern酒馆:Docker拉不动?那就Node裸跑
最近捣鼓了个SillyTavern,圈里都叫"酒馆",就是个AI角色扮演的网页应用,界面好看,玩法也多。我这台飞牛NAS闲着也是闲着,就把它装了上去,内网随时能玩,还能走穿透在外面连。
装之前先说明下思路:正常来说这货有官方Docker镜像,一条命令的事;但国内拉ghcr.io的镜像经常拉不动,我这次就是踩了坑,最后改用Node直接跑源码。两种方法都写出来,你们按情况选。
一、常规方法:Docker部署(首选)
SillyTavern官方发布了镜像,直接用docker compose就行。建个目录,写docker-compose.yml:
services:
sillytavern:
image: ghcr.io/sillytavern/sillytavern:latest
container_name: sillytavern
ports:
- "8000:8000"
volumes:
- ./config:/home/node/app/config
- ./data:/home/node/app/data
- ./plugins:/home/node/app/plugins
- ./extensions:/home/node/app/public/scripts/extensions/third-party
restart: unless-stopped然后:
docker compose up -d等它拉完镜像,浏览器开 http://NAS的IP:8000 就能进酒馆了。第一次启动会自动生成config和data目录;后续升级就 docker compose pull && docker compose up -d,数据都在挂载目录里,不会丢。restart: unless-stopped 保证NAS重启后酒馆自己爬起来。
坑在这:镜像在ghcr.io,国内直连基本拉不动。解决办法:
- 给Docker配代理,拉镜像时走旁路由或代理机
- 用镜像加速器(注意:很多公共加速器对ghcr支持不好,有的直接404/401)
我这次就是加速器试了一圈全拉不动,才退而求其次走下面的方法。
二、兜底方法:Node直接跑源码
Docker实在拉不动,就本地跑源码,效果一模一样,就是少了容器那层隔离,开机自启要自己配。
# 拉源码(release分支是稳定版,github建议走代理)
git clone -b release https://github.com/SillyTavern/SillyTavern.git
cd SillyTavern
# 只装生产依赖,省时间
npm install --omit=dev
# 启动
nohup node server.js > /tmp/sillytavern.log 2>&1 &默认监听8000端口,浏览器开 http://NAS的IP:8000。
开机自启用crontab:
crontab -e
# 加一行,路径换成你自己的
@reboot cd /你的路径/SillyTavern && nohup node server.js > /tmp/sillytavern.log 2>&1 &以后更新就 git pull 然后重启进程,比docker pull还省事。
三、接DeepSeek的API
酒馆本身不带模型,要自己接API。我用的是DeepSeek:
- 打开酒馆,点左上角的API连接(插头图标)
选Custom(自定义),填:
- API地址:
https://api.deepseek.com - 模型:
deepseek-chat
- API地址:
- 把API Key填进去,保存
如果走内网穿透在外面访问,建议把流式输出关掉(stream_openai设成False),不然隔着穿透有时候聊着聊着就卡住,改成一次性返回稳一点。
四、角色卡
酒馆的角色卡是PNG格式,数据直接内嵌在图片里,从Chub这些网站下下来,拖进"角色"页面就能用。顺便说一句,看到那种标注未成年的卡就别下了,懂的都懂。
最后提醒一句:酒馆这玩意玩起来容易上头,注意别耽误正事。都是中年人了,心里有数。