Hello Nostr! のす本の演習 おかわり編
概略
これは、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 サーバーを建てよう
※さくらのアカウントを作成し、お支払い方法を設定しておいてください。
-
以下のページにアクセスします
https://vps.sakura.ad.jp/ -
石狩 590円 を選択します
-
設定は以下の通り。
- Ubuntu 20.04 amd64 を選択します
- ※下向き矢印を押すとバージョンが選べます
- 支払いはお好きなものを。月払い、年払いはご自由に
- パスワードは 20文字 ぐらいの長いものを使用してください
シリアルコンソールよりログインします。sshで接続できる方は、それでもOKです。
このあたりの手順は割愛します。 - Ubuntu 20.04 amd64 を選択します
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