IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    另外两个 Nostr Relay 程序

    Joomaen发表于 2025-06-21 14:24:59
    love 0

    之前介绍过 最小化部署自己的 Nostr Relay 和 Blossom 媒体上传服务,又发现两个 Relay 程序,都可以用 Docker Compose 很方便的一键部署:

    rnostr

    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

    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 端口即可。



沪ICP备19023445号-2号
友情链接