🙆‍♀️

Hello Nostr! のす本の演習 おかわり編

2023/06/03に公開

概略

これは、Nostr Idol Project - Hello Nostr!(通称のす本)の演習おかわり記事です。
リクエストがあり、ボットを動かしたいという方向けに記載しています。

のす本はこちら → https://nip-book.nost-jp.org/

以下の内容でお届けします。

  • ソースコードの公開準備をしよう
  • 自分のリポジトリへアップロードしよう
  • さくらインターネットでVPSサーバーを建てよう
  • VPSサーバー上でNode実行環境を建てよう
  • サーバーへデプロイして、スクリプトを動かそう
  • 自動起動を設定しよう

注意

  • お金がかかります。(月650円程度)
  • 作業者によって環境は異なります。必要に応じて読み替えてください
  • さくらのVPS、GitHubの設定や操作などは割愛させていただきます。

ソースコードの公開準備をしよう

ここではソースコードの公開に向けた準備をおこないます。
主にnsecの保護を目的としています。

nsecを保護しよう

ご存知のとおり、nsecが流出すると大変。その他にも守りたいものがあると思います。
それらの流出対策を設定しましょう。

dotenv パッケージを追加します。

以下のコマンドでパッケージを追加してください。

npm i dotenv

.envファイルに追記をする

.envファイルに機密情報を記載して、こちらで管理します。
例:nsec, nsecHex, その他、個別の情報など

PRIVATE_KEY_HEX=nsec...

.gitignoreを変更する

.envをGitに上げてしまわないように変更します。
最後の行に追記します

node_modules

yarn.lock
package-lock.json
pnpm-lock.yaml
.env

演習ファイルを以下のように変更します。
※ こちらの例は 1_3_post_text.js です

const dotenv = require("dotenv");
dotenv.config();

const PRIVATE_KEY_HEX = process.env.PRIVATE_KEY_HEX;

もとから記載されていた、PRIVATE_KEY_HEXは必ず削除してください

const PRIVATE_KEY_HEX = ???; <- 削除しよう!

投稿テストをしてみましょう。

node 1-3_post_text.js 投稿テスト

動いたらOK!

必ず、すべてのPRIVATE_KEY_HEXを同様に修正します。
忘れると大変なことになるよ!!

自分のリポジトリへアップロードしよう

GitHub のアカウントはお持ちですよね・・・?
え、持ってない!?。

じゃあ GitHub のアカウントを作りましょう。できたらまたこちらに戻ってきてください

リポジトリを作りましょう。

以下の画像を参考に。
リポジトリ名を入れたら、後は何でもOKです。NostrStudy なんてどうでしょうか。

おっと、画像が古いですね。Public になっている設定を Private にましょう

アップロードしましょう。

まずはアップロード前の準備です。
手順通りに clone https:// ... とやった場合は .git フォルダがあるとおもいます。
これを削除します。

最初の準備

以下のコマンドを打って Git の準備をします。

git init

公開前に確認

必須です!!
以下のコマンドを叩いて .env が対象ではないことを確認してください。

git status

これが含まれていたら Git の内容をもう一回確認しましょう

  • .envファイル

公開してみよう

GitHub とローカルを連携します。
[your-acount-name] はあなたの環境に合わせて適宜置き換えてください

git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/[your-account-name]/NostrStudy.git

以下のコマンドでアップロードできます

git push -u origin main

これで、アップロードが完了しました。

さくらインターネットで VPS サーバーを建てよう

※さくらのアカウントを作成し、お支払い方法を設定しておいてください。

  1. 以下のページにアクセスします
    https://vps.sakura.ad.jp/

  2. 石狩 590円 を選択します
    image alt

  3. 設定は以下の通り。

    • Ubuntu 20.04 amd64 を選択します
      • ※下向き矢印を押すとバージョンが選べます
    • 支払いはお好きなものを。月払い、年払いはご自由に
    • パスワードは 20文字 ぐらいの長いものを使用してください

    シリアルコンソールよりログインします。sshで接続できる方は、それでもOKです。
    このあたりの手順は割愛します。

VPSサーバー上でNode実行環境を建てよう

Node実行環境を構築します。
nvmというものでNode Version Managerの略。その名の通り、Node.jsのバージョンを管理してくれます

nvmのインストール

sudo apt install curl 
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash

nvmコマンドが使えるようにします

source ~/.profile

Nodeのバージョンを指定してインストールします。
この例ではNode 18を入れます。

nvm install v18

installされたNodeのバージョンを表示します

nvm list

使用できるNodeバージョンを設定します。
表示されたバージョンを入力してください。

nvm use 18.16.0

サーバーの実行を確認します

インストールされたNodeのバージョンを確認します。
コマンドを実行して以下のように表示されれば準備はOKです

node -v
v18.16.0

サーバー上で動かしてみよう

この先の次の手順で、サーバー上にデプロイして動かしてみましょう。

まずはソースコードを持ってきます。

git clone https://github.com/[your-account-name]/NostrStudy.git
cd NostrStudy

実行前の設定を行います。

npm install

個人別の設定を行います。
サーバーには .env ファイルが無いと思います。まずは .env ファイルを作成しましょう。
nano エディタが起動したらローカルとおなじ .env の設定を書きます。

touch .env
nano .env

テストしてみましょう

node 1-3_post_text.js サーモン食べたい

たぶん投稿できていると思います。

自動起動を設定しよう

いよいよ最終章です。
ここが終われば Nostr の Bot を動かすこともできるでしょう

Supervisor 導入

以下のコマンドで Supervisor をインストールして設定します

sudo apt install -y supervisor

設定を記載します

sudo touch /etc/supervisor/conf.d/app.conf
sudo nano /etc/supervisor/conf.d/app.conf

新規ファイルを作成し、編集します

[program:nostr-bot1]
command=/home/ubuntu/.nvm/versions/node/v18.16.0/bin/node /home/ubuntu/NostrStudy/2-3_reply_to_reply.js.js サーモン食べたい
directory=/home/ubuntu/NostrStudy
autostart=true
autorestart=true
environment=
  HOME="/home/ubuntu",
  NVM_DIR="/home/ubuntu/.nvm"
user=ubuntu

これで定期実行が動くようになるでしょう。

Supervisor の操作

設定を再読込しましょう

sudo supervisorctl reread

プログラムを修正したら、再実行しましょう

sudo supervisorctl update

緊急時は停止しましょう

sudo supervisorctl stop

以上、ありがとうございました。

Discussion