プログラミング知識ほぼ0の俺がマストドンインスタンス作ってみた感想。

この記事は、分散型SNSアドベントカレンダーの12/17の記事です。
https://adventar.org/calendars/4408

#読者の対象
・マストドンの鯖作りたいけど、「プログラミング？なにそれおいしいの？」状態の人
・マストドンの鯖缶の皆様

#経緯

8月度までmstdn.jp( https://mstdn.jp/ )に籍を置いていたが、鯖の不安定さが問題となり、他鯖に移動することを検討しはじめる。しかしながら、「オリジナリティが欲しい」という謎のわがままを捨てられずプログラミングができないのに自鯖の制作を決意。2時間で挫折。結局ムトーのマストドンサービス( https://free.m.to/ )経由で初代自鯖であるyknk.work( https://yknk.work/ )を設立。
11月中旬、初代自鯖のコスパの悪さとスペックの不足が気になり、満を持して自鯖制作リベンジを行う。この記事はこの2代目自鯖であるnoisemaker.tokyo( https://noisemaker.tokyo )の制作奮闘記である。

12/17追記:2代目自鯖は諸事情により死亡しました。なんでや...

#自己紹介
初めまして。初投稿となります。焼肉ハブられたマンと申します。焼肉をハブられたので、焼肉ハブられたマンといいます。

さて、マストドンというSNSサービスを利用し始めたのはもう1年以上前です。当時はまだぬるかる氏がmstdn.jpの管理者でした。しかしながら、ある日、管理者がぬるかる氏からきぼうソフトに委託。そこから鯖が不安定になっていったというのは、マストドンユーザーである方であれば周知の事実であるはず。
2019年11月上旬現在に至っては、鯖が「Error 521」を叩き出してアクセスできないという体たらく。故に上記でも述べたように、自鯖を作るという動機に至ったわけです。

###12/3追記:現在はmstdn.jpは復活しております。

#筆者のプログラミング力
例えるなら、ドラゴンボールの戦闘力５の農民レベルです。高校2年生の時に学校の先生が薦めてくれたプログラミング教室体験入学に行ったことがあります。そこではC++を学びました。

###何がどうなってそうなったのかが全く理解できないまま終わりました。

僕に限った話ではないと思うのですが、プログラミングの根本を覚えられないというか、エラーを吐き出すとパニクって脳内回路がショートする体質です。アレルギー反応起こします。故にプログラミングからは疎遠な人生を過ごしてました。
ちなみに母親はバリバリのプログラマーです。

さて、私自身の自己紹介はこれくらいにして、今回の自鯖で使ったサービスなどをご紹介していきます。

#必要となるもの/今回利用したサービス

###鯖
今回はベーシックに王道を行く「さくらのクラウド」( https://cloud.sakura.ad.jp/ )を利用しました。もちろん、探せばこれよりコスパの良い鯖はいっぱいあるのでしょうが、いかんせん導入したところで何すればいいかわからないので、マストドンのスタートアップサービスを行っている「さくらのクラウド」を利用しました。

###ドメイン
統一した方がいいだろ、ってことで同じくさくらインターネットが提供している「さくらのドメイン」( https://domain.sakura.ad.jp/ )を利用。noisemaker.tokyoは年2,200円でした。

#さて、どうしようか。
鯖を作ったものの、じゃあまず何をすればいいのかわからない。
とりあえず、ググる。qiitaの記事がいっぱい出てくる。

う～ん。

###さっぱりわからん。

何を読んでも、腑に落ちない。スッキリしない。
そんなことを考え頭を悩ませていたら、こんなサイトを見つけました。

https://sakuramarina.com/mastodon_001/

...

な...

###なんだこのめちゃくちゃ分かりやすいサイトは！！！！

基本的な鯖の設定やDNSの設定に関してはこのサイトを参考にしました。
なお、この時このサイトに決定的なトラップがあることに私は気付いていなかった...

このサイト通りにやっていくとなんと、ほんの1時間程度でマストドンが出来上がりました。やはり、「さくらのクラウド」はスタートアップスクリプトとして、マストドンが搭載されてるので、簡単でした。

#ここからが本当の地獄だった...
さて、マストドンも出来上がったことだし、さっそくアカウント作ってログインして鯖の照会文でも書こ～と思ったら、１つ問題が起きました。

あれ。

###このアカウント、管理者じゃねぇ

そうです。あくまで外部からアカウントを作ったので、内部から「このアカウントをこの鯖のアドミンとする！」という指示を出さない限り、一般ユーザーとなります。

参ったな...と再びgoogleという広い海原へ航海に旅立ちます。

すると、鯖のコンソールでtootctlというものを用いれば、指定したアカウントを管理者に昇格することができると分かりました。

https://docs.toot.app/administration/post-installation/#%E7%AE%A1%E7%90%86%E8%80%85%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90

よっしゃ！じゃあさっそくコンソールでやるぞ！

すると、何やらパスワードを要求されました。
まぁ、さっき鯖を作る際に設定したやつでええのかな～と思い同じやつを入力

```Login incorrect```

あ、あれ。もっかい。


```Login incorrect```

な、正しいはずなのに...

多分30分くらいずっとこれやってたと思います。
原因は簡単です。

###ユーザー名がrootであることに気が付いてないからです。

事実、rootという言葉をさっきまでしりませんでした（真顔
なので、そんなことに気が付けるはずもなく...

「な、なんだ。できないじゃん！」とコンソール画面を閉じてまた検索をかけます。

すると次はSSH接続で鯖にログインする方法を見つけます。

よっしゃ！これならできるだろ！と思い早速コマンドスクリプトでやろうとします。

すると...

```permission denied (publickey)```

と出てこちらも何もできず。

###あぁ。詰んだ。

と思っていたら、マストドンの鯖をすでに運営されている方が救ってくれました。

rootでログインして、その後作ったアカウントを鯖のコンソールでtootctlを使ってadminに昇格。

この単純明快な仕組みに半日も費やしてしまいました。(SSH接続に関しては現在に至るまで出来てないです。秘密鍵、公開鍵辺りが悪さをしてるんじゃないかと思いますが、原因は今だ掴めていません。)
#自鯖を作って思ったこと
あくまでプログラミング初心者の視点ですので、ツッコミどころ満載かもしれませんが、お許しください。

１つ１つ箇条書きしていきます。
###・作れるっちゃ作れるけど、最低限の知識は本当に必要だった
今回は既に中規模のマストドンインスタンスの管理人を行っている方々に手取り足取り本当に細かいところまで教えてもらいながらやりました。なので、このように完成形にできたわけですが、個人的に今思い返して思うのは、1人だとできなかった、ということです。
今回僕が行った方法は、現状一番簡単(ホスティングサービスは除く)な作り方だと思うのですが、これで半日程度苦戦してたら、1から作るとか話にならないな、としみじみ思います。

###・参考になるサイト、資料が少なすぎる
マストドンを作る上で、多くのサイトを利用しました。しかしながら、多くのサイトがバージョンが古すぎて現在のマストドンの最新バージョンに対応してなかったり、「ここをXXしてください」的なことを書かれていてもその部分が存在せず、とりまスキップしたら後々正常に動かなかったり...と本当に彷徨いました。玉石混合のレベルじゃない。古い玉すら石の状態でした。だからといって、最新の情報はあまり出て来ず...初心者の方はまず鯖を作る前に鯖缶さんと仲良くなりましょうｗ

###・普通に利用する分には手出ししない方が良い
今回僕はJPに代わる良いインスタンスが見つからず、自分で作りました。当たり前ですが、先駆者様が作った鯖というのは数多あり、そちらの方が機能が充実しています。一方こうやって作った鯖は最低限の機能しかありません。僕は「トゥートできれば何でもいい」という思想だったので、何弊害なく現在まで使用していますが、身の拠り所が本当に見当たらない限り手を出すもんじゃないな～と思いました。

###・あとはほんとに金。
お金はかかります。余裕がある人が手を出す領域だとは思ってます。そもそも普通にマストドンを利用していたら、自分から「鯖を作ろう」なんていう発想には至るはずもない訳ですがｗ
大富豪系マストドナーはどんどんマストドンインスタンスを建てましょう()

最後に。中身の薄い記事になってしまった件については申し訳ないです。
見苦しい部分とかもあったと思います。
ただ、自分で書ける知識の最大限を尽くした結果がこれなので許してください。
あと、もう一つ言わせてください。

###もうプログラミングは俺には無理や(真顔)