
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
已停止维护,如需ssb-pub的维护替代方案,请参见https://github.com/ssb-ngi-pointer/go-ssb-room%E3%80%82
在Docker容器中轻松托管您自己的Secure ScuttleButt (SSB)节点。
如果您愿意分享您的节点,请将其添加到https://github.com/ssbc/scuttlebot/wiki/Pub-Servers%E4%B8%AD%EF%BC%8C%E4%BD%9C%E4%B8%BA%E5%B8%A6%E6%9C%89%E6%82%A8%E8%81%94%E7%B3%BB%E4%BF%A1%E6%81%AF%E7%9A%84%E7%A7%81%E6%9C%89%E8%8A%82%E7%82%B9%EF%BC%8C%E4%BB%A5%E4%BE%BF%E6%96%B0%E6%89%8B%E5%8F%AF%E4%BB%A5%E5%90%91%E6%82%A8%E8%AF%B7%E6%B1%82%E9%82%80%E8%AF%B7%EF%BC%81
(如果您运行的节点版本低于2.2.0,请升级!:tada:)
:heart:
ssb-pub镜像sbot容器ssb-viewer插件ssb-pub镜像(目前已损坏,抱歉)
!digital-butt-step-1.png
!digital-butt-step-2.png
!digital-butt-step-3.png
ssh登录服务器shellssh root@your.ip.address.here
shell./sbot whoami
shell./sbot invite.create 1
!digital-butt-step-4.png
- 为您的节点命名并添加描述
./sbot publish --type about --about "@your.pubs.id.here" --name "Pubby McPubFace" --description "每个人都应该有一个节点,这是我的"
- 设置节点的域名
将域名(example.com)指向节点服务器的IP地址(使用DNS A记录)
编辑
~/ssb-pub-data/config,将connections.incoming.net[].external属性从服务器IP地址更改为您的域名:json{ "connections": { "incoming": { "net": [ { "scope": "public", "host": "0.0.0.0", "external": "hostname.yourdomain.tld", "transform": "shs", "port": 8008 } ] }, "outgoing": { "net": [ { "transform": "shs" } ] } } }然后重启sbot:
shelldocker restart sbot
(感谢https://github.com/seven1m/do-install-button%E6%8F%90%E4%BE%9BDigital Ocean安装程序)
要运行节点,您需要有静态公网IP,理想情况下带有DNS记录(即<hostname.yourdomain.tld>)
在全新的Debian 9服务器上,以root用户身份执行:
shellapt update apt upgrade -y apt install -y apt-transport-https ca-certificates curl software-properties-common wget https://download.docker.com/linux/debian/gpg -O docker-gpg sudo apt-key add docker-gpg echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee -a /etc/apt/sources.list.d/docker.list apt update apt install -y docker-ce systemctl start docker systemctl enable docker
ssb-pub镜像(选项a)从Docker Hub拉取镜像
shelldocker pull ahdinosaur/ssb-pub
(选项b)从源码构建镜像
从GitHub:
shellgit clone https://github.com/ahdinosaur/ssb-pub.git cd ssb-pub docker build -t ahdinosaur/ssb-pub .
sbot容器步骤1. 在Docker主机上创建目录以持久化节点数据
shellmkdir ~/ssb-pub-data chown -R 1000:1000 ~/ssb-pub-data
如果从旧服务器迁移,现在复制您的旧
secret和gossip.json(可能还有blobs)。rsync -avz ~/ssb-pub-data/blobs/sha256/ $HOST:~/ssb-pub-data/blobs/sha256/
步骤2. 设置ssb配置
shellEXTERNAL=<hostname.yourdomain.tld> cat > ~/ssb-pub-data/config <<EOF { "connections": { "incoming": { "net": [ { "scope": "public", "host": "0.0.0.0", "external": "${EXTERNAL}", "transform": "shs", "port": 8008 } ] }, "outgoing": { "net": [ { "transform": "shs" } ] } } } EOF
步骤3. 运行容器
创建./create-sbot脚本:
shellcat > ./create-sbot <<EOF #!/bin/bash memory_limit="\$((\$(free -b --si | awk '/Mem\:/ { print \$2 }') - 200*(10**6)))" docker run -d --name sbot \ -v ~/ssb-pub-data/:/home/node/.ssb/ \ -p 8008:8008 \ --restart unless-stopped \ --memory "\$memory_limit" \ ahdinosaur/ssb-pub EOF
其中:
--memory设置内存上限为总内存减去200 MB(例如:在1 GB服务器上可简化为--memory 800m)然后:
shell# 使脚本可执行 chmod +x ./create-sbot # 运行脚本 ./create-sbot
步骤4. 创建./sbot脚本
我们现在将在./sbot中创建一个shell脚本来帮助我们管理运行中的Scuttlebutt服务器:
shell# 创建脚本 cat > ./sbot <<EOF #!/bin/sh docker exec -it sbot sbot \$@ EOF
然后:
shell# 使脚本可执行 chmod +x ./sbot # 测试脚本 ./sbot whoami
ssb-pub内置健康检查:sbot whoami。
当sbot变得不健康时(它会!),我们希望终止容器,以便Docker自动重启它。
为此,我们将使用https://github.com/somarat/healer%EF%BC%9A
shelldocker pull ahdinosaur/healer
shelldocker run -d --name healer \ -v /var/run/docker.sock:/tmp/docker.sock \ --restart unless-stopped \ ahdinosaur/healer
有时sbot或healer容器会停止运行(尽管有--restart unless-stopped!)。
针对这种情况,我们将设置两个cron任务脚本:
shellprintf '#!/bin/sh\n\ndocker start sbot\n' | tee /etc/cron.hourly/sbot && chmod +x /etc/cron.hourly/sbot printf '#!/bin/sh\n\ndocker start healer\n' | tee /etc/cron.hourly/healer && chmod +x /etc/cron.hourly/healer
因为docker start <service>是幂等的,如果服务已运行,它不会改变任何东西,但如果服务未运行,它将启动服务。
ssb-viewer插件进入sbot容器:
shelldocker exec -it sbot bash
然后运行:
shellnpm install -g git-ssb mkdir -p ~/.ssb/node_modules cd ~/.ssb/node_modules git clone ssb://%MeCTQrz9uszf9EZoTnKCeFeIedhnKWuB3JHW2l1g9NA=.sha256 ssb-viewer cd ssb-viewer npm install sbot plugins.enable ssb-viewer
编辑配置文件,添加:
json{ "plugins": { "ssb-viewer": true }, "viewer": { "host": "0.0.0.0" } }
编辑./create-sbot,添加-p 8807:8807。
停止、删除并重新创建sbot:
shelldocker stop sbot docker rm sbot ./create-sbot
Kubernetes的Yaml配置文件包含在本仓库的hack/k8s/deployment.yaml中。此配置已在DigitalOcean上测试,其他提供商的集群可能需要调整。
SSB配置文件作为卷挂载注入容器。您应使用外部IP或域名更新部署文件中的ssb-config配置映射,以及任何其他所需的更改。不幸的是,由于这是在subPath上完成的,配置映射的更改不会自动传播。如果您需要进行配置更改,请记住这一点,或欢迎提交拉取请求。
SSB需要持久化存储来存储日志、密钥。包含的配置中默认选择5GB,但您应根据流量将其提高到合理水平。如果发现卷已满,请按照提供商的说明增加大小或迁移到更大的卷。
更新配置后,您可以使用以下命令将SSB安装到集群中:
shellkubectl apply -f hack/k8s/deployment.yaml
这将执行以下操作:
scuttlebutt的命名空间/home/node/.ssb的5GB持久卷与手动安装相比,许多内容保持不变。但是,由于在这种情况下我们使用Kubernetes进行编排,因此无需运行额外的服务(如healer等),因为部署配置已处理了存活检查。
我选择短期内不暴露对运行中容器的ssh访问,但您可以通过首先获取运行中的pod名称,然后:
shellkubectl exec -it <your pod name> -n scuttlebutt /bin/bash
从这里您可以调用下面详述的任何命令。
从服务器:
shell./sbot invite.create 1
从本地机器,使用ssh:
shellssh -t root@server ./sbot invite.create 1
对于sbot:
docker stop sbotdocker start sbotdocker restart sbot对于healer:
docker stop healerdocker start healerdocker restart healerssb-pub镜像shelldocker pull ahdinosaur/ssb-pub docker stop sbot docker rm sbot # 必要时编辑~/ssb-pub-data/config ./create-sbot
<2.2.0迁移到2.2.0+编辑~/ssb-pub-data/config,将**connections.incoming.net[].external** 从字符串数组更改为单个字符串。
diff{ "connections": { "incoming": { "net": [ { "scope": "public", "host": "0.0.0.0", - "external": ["hostname.yourdomain.tld"], + "external": "hostname.yourdomain.tld", "transform": "shs", "port": 8008 } ] }, "outgoing": { "net": [ { "transform": "shs" } ] } } }
v1迁移到v2对于v1节点所有者,要更新到最新的v2版本的ssb-pub:
docker pull ahdinosaur/ssb-pubdocker stop sbotdocker rm sbot~/ssb-pub-data/config./create-sbot./create-sbot使用docker logs sbot和./sbot whoami检查是否正常工作:tada:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务