-
@ FWEnoir
2023-07-19 04:10:57在這篇文章中,我將向大家介紹如何自行架設 nostr relay。在這裡,我們將使用 strfry 作為我們的 nostr relay server,並透過 nginx 作為反向代理(reverse proxy),最後利用 letsencrypt 來進行 SSL 簽章。
參考資源: - strfry GitHub repo - strfry relay installation guide
步驟一:建立使用者
首先,我們需要創建一個新的系統使用者
strfry
。這樣可以確保運行 strfry 的過程中,如果發生問題,不會影響到系統的其他部分。bash adduser --gecos "" --disabled-password strfry su - strfry
步驟二:建置 strfry
接著,我們需要安裝必要的套件並且編譯 strfry。這些套件包含 git、build-essential、libyaml-perl、libtemplate-perl、libregexp-grammars-perl、libssl-dev、zlib1g-dev、liblmdb-dev、libflatbuffers-dev、libsecp256k1-dev、libzstd-dev。
bash sudo apt install -y git build-essential libyaml-perl libtemplate-perl libregexp-grammars-perl libssl-dev zlib1g-dev liblmdb-dev libflatbuffers-dev libsecp256k1-dev libzstd-dev git submodule update --init make setup-golpe make -j4
步驟三:設定 strfry 工作空間
我將 strfry 的工作空間放置在
/home/strfry
底下,因此首先需要創建一個strfry-db
資料夾,然後將範例的配置文件複製到/home/strfry
底下。bash mkdir /home/strfry/strfry-db cp /home/strfry/strfry/strfry.conf ./
步驟四:修改配置文件
接著我們需要修改配置文件,特別是
info
部分的內容,包括伺服器名稱、描述、公鑰,以及聯絡方式。```yaml info { # NIP-11: Name of this server. Short/descriptive (< 30 characters) name = "strfry default"
# NIP-11: Detailed information about relay, free-form description = "This is a strfry instance." # NIP-11: Administrative nostr pubkey, for contact purposes pubkey = "unset" # NIP-11: Alternative administrative contact (email, website, etc) contact = "unset"
} ```
步驟五:設定 nginx
首先,我們需要以 root 使用者身分來運行以下命令。接著,我們需要安裝 nginx、certbot 以及 python3-certbot-nginx。然後刪除預設的 nginx 設定檔,並貼上新的設定檔。最後重啟 nginx。
```bash
run as root
su root
Install nginx
apt install nginx certbot python3-certbot-nginx
Delete the default nginx settings file
rm -rf /etc/nginx/sites-available/default
Paste in new settings file.
sudo vim /etc/nginx/sites-available/default
Restart nginx
sudo service nginx restart
set DNS A Record
Request SSL cert from letsencrypt/certbot
sudo certbot --nginx -d subdomain.yourdomain.org ```
nginx 設定檔內容如下:
nginx server { server_name subdomain.yourdomain.org; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://127.0.0.1:7777; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
步驟六:設定 systemd
接著,我們需要建立一個 systemd 服務單元檔案,讓我們的 strfry 可以作為一個服務來運行。
bash vim /etc/systemd/system/strfry.service
內容如下:
```ini [Unit] Description=Strfry Relay After=network.target
[Service] WorkingDirectory=/home/strfry ExecStart=/home/strfry/strfry/strfry relay KillSignal=SIGINT
Type=simple Restart=always RestartSec=30 TimeoutSec=240 LimitNOFILE=1000000
User=strfry
[Install] WantedBy=multi-user.target ```
接著我們需要啟用並啟動 strfry 服務,並確認其運行狀態。
```bash
Enable strfry service
systemctl enable strfry
Start strfry
systemctl start strfry
Check status
systemctl status strfry ```
至此,你已經完成了 nostr relay 的設定。你可以透過 Websocket King 確認你的 nostr relay 是否正常運作。