这是一个快速入门指南,供那些希望运行Nostr Relay的人使用。有几十种中继服务器的选择和实现,但为了让网络新手保持简单,我使用了友好的nostream
,在TypeScript中构建并打包成Docker Compose YML文件。
Nostr Recap
nostr - Notes and Other Stuff Transmitted by Relays
Nostr 是最简单的开放协议,能够一劳永逸地创建一个抗审查的全球 "社会 "网络。它不依赖于任何受信任的中央服务器,因此它是有弹性的;它基于加密密钥和签名,因此它是不可篡改的;它不依赖于P2P技术,因此它是有效的。
最近,杰克-多尔西检查了由ZEBEDEE开发者Fiatjaf首次发布的Nostr协议,并意识到该协议的设计决定有很大的前景和价值。以至于他部署了约25万美元来促进Nostr开发社区。
虽然我们已经在nostr.zebedee.cloud上运行了一个强大的生产就绪的nostr中继,但我想为那些希望运行中继服务器并开始自己与网络互动的新人做一个简单的指导。
顺便说一句:这个设置与nostr.zebedee.cloud
的基础设施设置不同。
设置 VPS
选择你喜欢的虚拟机提供商--无论你喜欢Linode、Digital Ocean、AWS、GCP、Azure等。在这个快速指南中,我在DigitalOcean使用了以下设置。
Ubuntu 22.10,8GB内存,160GB NVME SSDs
我在这次中继搭建中使用了这些规格,但目前还没有足够的基准来建议到底应该选择哪种规格。
一旦你都设置好了,SSH进入该虚拟机,并遵循接下来的步骤。
CLI Commands
# Update deps
sudo apt update
# Install nodejs, npm, nginx, certbot
sudo apt install nodejs npm nginx certbot python3-certbot-nginx
# Setup Docker GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Setup `apt` Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Check installation is successful by checking verions
docker --version
npm --version
node --version
# Clone `nostream` repo
git clone https://github.com/Cameri/nostream.git
# Delete the default nginx settings file
rm -rf /etc/nginx/sites-available/default
# Paste in new settings file contents (see heading NGINX SETTINGS below)
sudo nano /etc/nginx/sites-available/default
# Restart nginx
sudo service nginx restart
# Map DNS A record to IP of VM machine (see DNS SETTINGS below)
# Request SSL cert from letsencrypt/certbot
sudo certbot --nginx -d subdomain.mydomain.com
# Open a TMUX session (to be able to detach and maintain process running)
tmux
# Start the relay
npm run docker:compose:start
# To detach from the TMUX session
Ctrl+B + D
# To re-attach to the TMUX session
tmux a
Nginx Settings
Use the contents below as the contents of the `default` nginx setting.
server{
server_name subdomain.domain.com;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8008;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
设置 DNS A Record
要把你的虚拟机的IP地址映射到你的子域.mydomain.com,你需要在你的域名DNS设置中拥有一条如下的A记录。
你可能需要设置一个静态/保留的IP地址,以便将A记录映射到子域.mydomain.com。
检查 Relay Websocket 连接性
打开这个网站 WebSocketKing 检查 subdomain.domain.com.
结论
已经全部设置好了。这个nostr服务器将摄取并转发任何和所有广播到它的事件。这不一定是一个生产服务器所希望的运行方式,但这是一个好的开始。
有关限制和事件类型配置的更多信息,请阅读nostream GitHub仓库。另外请注意,nostream目前只支持以下NIPs(Nostr改进协议)。
探索 Nostr!
加入#nostr Telegram小组,加入这个项目的开发社区。你可能想把你的继电器添加到nostr.watch上,以便于发现。