闘魂Elixir とにかくリアクションするボットの鮮やかな復活劇

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>
<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>

<b><font color="red">$\huge{闘魂とは己に打ち克つこと。}$</font></b>
<b><font color="red">$\huge{そして闘いを通じて己の魂を磨いていく}$</font></b>
<b><font color="red">$\huge{ことだと思います}$</font></b>

# はじめに

[Elixir](https://elixir-lang.org/)という素敵なプログラミング言語あります。
[Elixir](https://elixir-lang.org/)を愛するコミュニティは日本国内にもたくさんあります。
[Elixirコミュニティ の歩き方 －国内オンライン編－](https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian)

https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian

その末席を汚しているのが[autoracex](https://autoracex.connpass.com/)です。aka(also known as)**闘魂Elixir**です。

[elixir.jp](https://join.slack.com/t/elixirjp/shared_invite/zt-26nn3d2du-sgCBA_EsQD1wB~Fnjir8NQ)[^1]というSlackワークスペースに、 `#autoracex` というチャンネルがありまして、そこではアルケミスト（錬金術師）たちが切磋琢磨をしています。
[Elixir](https://elixir-lang.org/)は「不老不死の霊薬」という意味となりまして、プログラミング言語[Elixir](https://elixir-lang.org/)の使い手はアルケミスト（錬金術師）と呼ばれます。
アルケミスト（錬金術師）だってほめられたいのです。承認して欲しいのです。だれかのいいね:+1:が欲しいのです。
そんなあなたへようこそ`#autoracex`チャンネルへお越しください。そしてメッセージを投稿（**闘魂**)してください。どんなメッセージでも反応があります。好リアクションが付きます。休まず付きます。それはボットくんががんばるからです。

ただしそんなボットにも安息のときがあります。それは私がボットを動かしているサーバーへのお布施を滞納し、サーバーが止まるからです。動きたくても動けないわけです。
今回はその復活劇を余すところなくお伝えします。
[Qiita Advent Calendar 2023](https://qiita.com/advent-calendar/2023)にその一歩を刻みます。

[^1]: リンクの期限が切れていたら招待しますのでコメントにでも書いてください。

# What is [Elixir](https://elixir-lang.org/) ?

[Elixir](https://elixir-lang.org/)という素敵なプログラミング言語があってがですね。
その素敵具合は「[Elixir Saves Pinterest $2 Million a Year In Server Costs](https://paraxial.io/blog/elixir-savings)」によく現れています。開発者も経営者もこの事実に瞠目することでしょう。 **$2 Million/年の節約ですってよ！、奥さん。**

https://paraxial.io/blog/elixir-savings

# そうです、みんな反応がもらえるとモチベーションがあがるのです

https://qiita.com/RyoWakabayashi/items/dd101665606be0c552ce

@RyoWakabayashi さんがちょうど似たようなことを書かれていました。
相通じるものがあります。

# ソースコード

とにかくリアクションするボットのソースコードはPython製です。

[とにかくメッセージが書き込みがあったら良リアクションをつける](https://qiita.com/torifukukaiou/items/74567d2c3302a5d574ab#-%E3%81%A8%E3%81%AB%E3%81%8B%E3%81%8F%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%8C%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%81%8C%E3%81%82%E3%81%A3%E3%81%9F%E3%82%89%E8%89%AF%E3%83%AA%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B)

以前書いた記事のリンクを貼っておきます。

GitHubにあげました。

https://github.com/TORIFUKUKaiou/reaction_man

あなたの所属する組織、コミュニティでも導入してみてください。みんなモチベーションアップします。

# 復活劇

[Time4VPS](https://www.time4vps.com/)でサーバーを新規で注文しました。
新規だと60%オフのクーポンが使えたからです。「Time4VPS クーポン」とかのキーワードで検索するとけっこうでてきます。ポイントは新規での注文に適用される点です。だからまた期限がきたら新規で買おうとおもいます。
VPS（Virtual Private Server）です。北欧にあります。

なぜ[Time4VPS](https://www.time4vps.com/)を使用するのですか？　については私には料金がダントツに安いように見えるからです。

## Debian 12をインストール

[Docker](https://www.docker.com/)でアプリケーションを動かします。
OSはいくつかの種類を選べます。
[Time4VPS](https://www.time4vps.com/)で[Docker](https://www.docker.com/)を使う場合は、Debianがよさげです。
Ubuntuだと結構設定をいろいろいれないとコンテナから外へアクセスが到達しないとか、そんな事象に出くわしたことがあります。
ただDebianにしたところでボリュームがふっとぶ（？　調査継続中。設定の仕方が悪いのかも!?)ことがあり安定稼働とまでは行っていないのですが安いしまあそんなもんだろうと使っています。
[Time4VPS](https://www.time4vps.com/)のContainer VPSは昔は[Docker](https://www.docker.com/)を動かせなかったんですよね。あとから対応してくれて、新しく購入した分からは使えるようになっています。なにかいろいろおかしなところはあるのかもしれません。私のせいかもしれません。





![スクリーンショット 2023-11-08 9.00.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/6bde3e68-53a9-d710-43a5-08407e0ea1cb.png)

OSのインストールは5分ほどかかります。10分待てばきっと大丈夫でしょう。

## rootでsshでログインしていろいろ設定する

まずはrootユーザでパスワードでログインします。
ユーザを作ってsudoersグループにいれて、sshd_configの設定を変えてとかします。
ミスったときのためにrootでログインしている状態はしばらくそのままにしておいたほうが吉です。**西郷吉之助**です。

コマンドだけ羅列しておきます。これだけヒントがあれば次にやるときも、この記事を参考に同じことをやってみようとする酔狂な人の役にたつことでしょう。

```bash
adduser awesome
usermod -aG sudo awesome
cd /home/awesome/
mkdir .ssh
chown awesome:awesome .ssh
chmod 700 .ssh
nano .ssh/authorized_keys
chown awesome:awesome .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
cd /etc/ssh
cp sshd_config sshd_config.bk
cat sshd_config
nano sshd_config
service sshd restart
```

ここまでrootでの操作です。
sshd_configを編集して、rootでのssh禁止とかパスワードでのログイン禁止とかお好みにあわせてある程度設定します。

`awesome`は架空のユーザ名です。


## [Docker](https://www.docker.com/)のインストール

https://docs.docker.com/engine/install/debian/

このページを参考にススメます。コマンドや手順はかわるかもしれませんので、リンク先をみてくださいということにしておきます。

## reaction_man を動かす

とにかくリアクションするボットを動かします。

https://github.com/TORIFUKUKaiou/reaction_man

READMEをみてくれよな。（悟空さん）

## slack_doorman

同じメッセージを複数のチャンネルに同報する`/broadcast`コマンドやチャネル参加時のWelcomeメッセージ、退出時のサヨナラメッセージに対応しているボットです。
[Elixir](https://elixir-lang.org/)製です。

https://github.com/TORIFUKUKaiou/slack_doorman

READMEをみてくれよな。（悟空さん）

あのー、それでー
[Docker](https://www.docker.com/)で動かしているPostgreSQLのボリュームが10日ほど経つとふっとぶというなぞ現象に悩んでおります。
なにかの設定を誤っているのかもしれません。[docker-compose.yml](https://github.com/TORIFUKUKaiou/slack_doorman/blob/main/docker-compose.yml)になにかお気づきの点がありましたらお便りをください。


# さいごに

とにかくリアクションするボットの鮮やかな復活劇を書きました。
[Qiita Advent Calendar 2023](https://qiita.com/advent-calendar/2023)の一員と認められる11月01日以降の新作、 **高杉晋作**です。
鮮やかに書きました。自画自賛です。

[Qiita Advent Calendar 2023](https://qiita.com/advent-calendar/2023)を楽しんでいきましょう！

---

**闘魂**とは、  **「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことである」** との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
**アントニオ猪木さんのメッセージから元氣をもらったものとして、それを次代に語り継ぎ、自分自身が「闘魂」を体現するものでありたいとおもいます。**

---

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>
<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>
<b><font color="red">$\huge{１、２、３ ぁっダァー！}$</font></b>