はじめに
以下の記事を以前読んでからHonk鯖建立をやってみたいなぁと思い、建ててみました。
建てたサーバー
建てるにあたってやったこと
サーバーの用意
サーバー自体はCreatodonの運用関係で利用しているさくらのVPSサーバーを併用することにしました。
VPSのスペックとしては
という感じです。
実際にHonkを建ててみた印象では、メモリ512MBでもサクサク動きそうなのでGoogle Cloud PlatformのCoumpute EngineやApp Engineなどでもスペック的には十分そうでした。
なので新規でサーバーを建てられる場合はVPSではなく、そちらのクラウドサービス上にサーバーを用意しても良いかもしれません。
DNS周りの設定
さくらのVPSをすでに借りていたので、IPアドレスを控えておきました。
あとはDNS設定でサブドメインとして「honk.gamelinks007.net」を作成し、そのアドレスとIPアドレスを紐づけておきました。
先にこちらの手順をやっておくと後で証明書の発行するのが楽なので、このタイミングでやっといた感じですねー。
必要な依存関係のインストール
HonkではSQLite3をデータベースとして利用しています。
そのためビルド時にSQLite3周りのライブラリが必要になるのでインストールしておきます。
sudo apt install libsqlite3-dev
僕の場合はすでにBotなどを動かしていた関係で依存関係はこれだけで済んでいますが、まっさらなサーバーからHonkを建てる場合はおそらくほかにも依存関係が必要になるかと思います。
Goのインストール
次に、Goをインストールします。
後々Honkで利用するGoのバージョンが変更になることも考慮して、今回はgoenvを利用しました。
詳細は省きますが、以下のコマンドをすべて実行すればHonkのビルドに必要なGoがインストールされます。
git clone https://github.com/syndbg/goenv.git ~/.goenv
echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.bashrc
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.bashrcecho 'eval "$(goenv init -)"' >> ~/.bashrc
exec $SHELL
goenv install 1.16.15
goenv global 1.16.15
Honkのビルド
まずはHonkのソースコードを落としてきます。
wget https://humungus.tedunangst.com/r/honk/d/honk-0.9.91.tgz -O honk.tgz
tar -xvf honk.tgz
mv honk-0.9.91 honk
次に、Honkのビルドを行います。honkディレクトリに移動し、makeコマンドを実行すればOKです。
cd honk
make
Honkの初期設定
Honkのビルドが完了したら、honk initコマンドで初期設定を行います。
./honk init
すると以下の設定をプロンプトで確認されます。
- ユーザーID(アンダーバーなどの一部記号はログインできなくなるので利用できないです)
- パスワード
- listenするポート(localhost:3000のように設定)
- サーバー名(honk.gamelinks007.netのように実際に利用するドメインを指定)
以上の項目を入力すると初期設定は完了です。
証明書の発行
次に証明書の発行を行います。
まずはletsencryptをインストールします。
sudo apt install letsencrypt
次に、指定したドメイン名で証明書の発行を行います。
sudo letsencrypt certonly --standalone -d honk.gamelinks007.net
正常に処理が終了すれば証明書の発行は完了です。
Nginxの設定
次に、Nginxの設定を進めます。
まずはNginxをインストールします。
sudo apt install nginx
次に、以下のコマンドでHonk用のNginxの設定ファイルを追加します。
sudo vi /etc/nginx/sites-enabled/honk.gamelinks007.net.conf
設定ファイルには以下の内容を貼り付けました。
server {
server_name honk.gamelinks007.net;location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/honk.gamelinks007.net/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/honk.gamelinks007.net/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
}server {
if ($host = honk.gamelinks007.net) {
return 301 https://$host$request_uri;
} # managed by Certbotlisten 80;
server_name honk.gamelinks007.net;
return 404; # managed by Certbot
}
証明書へのパスやhttp://honk.gamelinks007.netへアクセスされた際のリダイレクト処理などを追加しています。
Nginxの設定に関しては以下の記事を参考にしています。
あとはNginxの設定を再読み込みさせます。
sudo systemctl reload nginx
サービスの追加と起動
最期にHonkをsystemdで実行できるようにサービスを追加します。
以下のコマンドでサービスを追加します。
sudo vi /etc/systemd/system/honk.service
サービスには以下の内容を張り付けました。
[Unit]
Description=honk
After=network.target[Service]
Type=simple
User=honk
WorkingDirectory=/home/honk/honk
ExecStart=/home/honk/honk/honk
TimeoutSec=15
Restart=always[Install]
WantedBy=multi-user.target
あとは以下のコマンドで追加したサービスを有効化し、実行すればOKです。
sudo systemctl enable honk
sudo systemctl start honk
これで指定したドメインにアクセスすればHonkサーバーが利用できるようになっているかと思います。
Honkサーバーを建てみて
連合周りがまだよくわかっていない(フォロー・フォロワー周り)感じではありますが、かなり軽量なのがいいですねー。
特にBotとかガンガン動かしてメモリかつかつなサーバーでもサクサク動く感じなのは非常に良い感じです。
あと、基本的に外部からの通知などは受け取る部分がない(というより表示箇所がわかっていないというのもありますが......)ので壁打ちで考え事を書くには非常にいい感じですねー。
ただ、公開範囲の設定などは見当たらないので誰にも見られたくない壁打ちという意味合いでは使いにくいかもです。
あと何よりも他のActivityPub対応のものに比べると圧倒的に簡単に建てれるのは良いですねー。
最近CalckeyやMisskey を建てた時も「簡単で良いな」と思ったんですが、それをはるかに上回る簡単さでした。
なので、特に通知や交流などが必要ないお一人様サーバーとしてはかなり建てやすいのでいいかもしれないです。