之前介绍过 最小化部署自己的 Nostr Relay 和 Blossom 媒体上传服务,又发现两个 Relay 程序,都可以用 Docker Compose 很方便的一键部署:
rnostr 是 rust 写的一个 Nostr 中继器程序,支持的 NIPs 非常多。
docker-compose.yml
services:
rnostr:
image: rnostr/rnostr:latest
container_name: rnostr
user: "0:0"
ports:
- "8080:8080"
volumes:
- ./data:/rnostr/data
- ./config:/rnostr/config
restart: unless-stopped
我是使用 Root 运行,指定了 user: "0:0"
。你也可以不写这行,或者换为 user: "1000:1000"
这是配置示例,放在 ./config/rnostr.toml
我只修改了以下部分,其他的按需修改或保持默认的注释掉。
# 修改你的 Relay 基本信息
[information]
name = "rnostr"
description = "A high-performance and scalable nostr relay written in Rust."
software = "https://github.com/rnostr/rnostr"
# 管理员公钥 hex
pubkey = ""
# 联系方式,可注释掉不写
contact = ""
# 其他的省略...
# 开启认证,防止 SPAM
[auth]
enabled = true
# 方式一:NIP‑42 验证客户端身份,并限定客户端 pubkey
pubkey_whitelist = ["PUBKEY1","PUBKEY2"]
pubkey_blacklist = ["PUBKEY_BAD"]
# 方式二:仅过滤事件作者,不要求客户端认证
event_pubkey_whitelist = ["AUTHOR_PUBKEY_ALLOWED"]
event_pubkey_blacklist = ["AUTHOR_PUBKEY_BANNED"]
allow_mentioning_whitelisted_pubkeys = true
这只是部分示例,请从官方示例获得完整配置,方法一是依赖 NIP-42 来验证,不过有的客户端还不支持,或者自己用脚本自动发布,不支持 NIP-42 的话用方法二认证。
目录结构如下,在 docker-compose.yml
所在文件夹执行 docker compose up -d
即可启动
.
├── data/
├── config/
│ └── rnostr.toml
└── docker-compose.yml
Khatru Pyramid是一个邀请制的中继器,除了管理员外,其余的白名单账户必须由另一个白名单账户邀请。默认一个账户可以邀请另外的3个,不过这个可以在配置里改。
docker-compose.yml
services:
khatru-pyramid:
image: tijlxyz/khatru-pyramid:latest
container_name: khatru-pyramid
ports:
- "3334:3334"
environment:
DOMAIN: "nostr.235421.xyz"
RELAY_NAME: "Nostr Relay"
RELAY_PUBKEY: "77c2969ea4db4ca1859305d7ebabf6053fd132ddcc88e1b178bfd938a33cfa50"
RELAY_CONTACT: "admin@joomaen.com"
RELAY_ICON: "https://media.235421.xyz/favicon.png"
MAX_INVITES_PER_PERSON: "3"
volumes:
- ./users.json:/app/users.json
- ./db:/app/db
restart: unless-stopped
users.json
是运行的用户列表
{
"77c2969ea4db4ca1859305d7ebabf6053fd132ddcc88e1b178bfd938a33cfa50": "",
"64b49df8f2aeb8714b2a710a33b2ac7e6bb9ca6d3278b5bbd08825e0f54c5eaf": "77c2969ea4db4ca1859305d7ebabf6053fd132ddcc88e1b178bfd938a33cfa50",
"312366b557678b5a5e9248eeb3137a5ede47846fae78641dcddd6b3da2ea34fe": "77c2969ea4db4ca1859305d7ebabf6053fd132ddcc88e1b178bfd938a33cfa50"
}
第一行的是管理员账户,无需被邀请,其余的需要在后面写明邀请者公钥。
这个很简洁,也不用怎么配置,将这两个文件放在同一个文件夹然后执行 docker compose up -d
即可启动 Docker 容器在后台运行,使用 Nginx 反代 3334 端口即可。