案外あっけなくできた。ということで、備忘録を兼ねてメモを残しておきます。
## 前提・PC回りなど
- Windows 11 Home
- Mastodon(自分は派生フォークのkmyフォークでやったけど、ほぼ流れは同じ)
- 外部から・常時接続は考慮してない
## 大まかな流れ
1. 「Microsoft Store」から必要ソフトウェアをインストール
2. 「Linuxサブシステム」と「仮想マシンプラットフォーム」にチェック
3. Ubuntuの設定
4. Mastodon依存モジュールのインストール
5. Mastodonのインストール
6. Nginx・hostファイルの設定
7. サービス起動
## 詳細の流れ
### 1.Microsoft Storeで必要ソフトウェアをインストール
「Microsoft Store」から下記の2つをインストールします。
- Windows Subsystem for Linux
- Ubuntu 22.04
### 2.「Linux サブシステム」と「仮想マシンプラットフォーム」にチェック
Win11のバージョンかHomeだからか、「設定→アプリ→オプション機能→Windowsのその他の機能」で設定項目を見つけられず。私の場合「コントロールパネル→プログラムと機能→Windowsの機能の有効化または無効化」でいけました。
設定窓を開いたら「Linuxサブシステム」と「仮想マシンプラットフォーム」にチェックして再起動します。
### 3.Ubuntuの設定
ログインユーザー名とパスワードを求められるので、適当に入力しましょう。設定が終わったらでrootユーザーに切り替えます。
### 4.Mastodon依存モジュールのインストール
- [Installing from source Mastodon documentation](https://docs.joinmastodon.org/admin/install/)
Mastodon公式ドキュメントを参考にしつつ、「Setting up Mastodon」まで進めます。
### 5.Mastodonのインストール
```
$ RAILS_ENV=production bundle exec rake mastodon:setup
```
上記のコマンドを入力してMastodonの設定を行います。設定項目は「Domain name」以外いじる・設定する必要はありません。(メールもどうせ利用しないので空白でOK)
「Domain name」は適当なドメインで登録します。後でhostファイルをいじって設定するので、必ず覚えておいてください。
この時点で管理者アカウントを作っておくと楽になります。
### 6.Nginx・hostファイル・systemdの設定
#### Nginxの設定
下記の作業をrootユーザーで実行します。Mastodonのマニュアル通りにnginxファイルをコピー・リンク。コピーが終わったら、viで設定ファイルをいじっていきます。
```
$ cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
$ ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
$ rm /etc/nginx/sites-enabled/default
$ vi /etc/nginx/sites-available/mastodon
```
server 80・443の`server_name`を5で設定したドメイン名、443の`ssl_certificate`の項目の下部分に`+`で始まっている2行を追加します。
```
# ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
+ ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
+ ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
```
`mastdon`を編集後、ngnixの設定ファイルを編集します。
```
$ vi /etc/nginx/nginx.conf
```
`user www-data`の項目を`user mastodon`に書き換え、編集が終わったらNginxをリロードします。
#### hostファイルの設定
メモ帳を「管理者権限で実行」しながら開く
`C:\Windows\System32\drivers\etc\hosts`ファイルを開いて、`+`で始まっている2行を追加
```
127.0.0.1 localhost
::1 localhost
+ 127.0.0.1 mastodon.local
+ ::1 mastodon.local
```
下記項目の記入が終わったら保存します。
### system.dの設定
下記のコマンドをrootユーザーで実行します。
```
$ cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
$EDITOR /etc/systemd/system/mastodon-*.service
```
### 7.サービス起動
下記のコマンドをrootユーザーで実行して、Mastodonサービスを起動します。
```
$ systemctl daemon-reload
$ systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
```
実行後、指定したドメインをブラウザに入力します。潜在的なリスク云々出るが、警告を無視して(詳細設定→進む)で移動。移動先で無事にMastodonが表示されたら設定完了です、お疲れさまでした。
## その他覚え書き
### オレオレ証明書いる?
不要でした。設定しても結果は変わらなかったのですが、一応参考リンクだけ置いておきます。
- [nginx で オレオレ証明書をする Qiita](https://qiita.com/snowmoon/items/9c96ee0fa6ed096e8940)
### 派生フォークはどうやってインストールするの?
MastodonのGitを指定する時に派生フォークのGitを指定しましょう。あとは派生フォークのインストールガイドを見ながらインストールすればOK。
### 爆破したいときどうすればいい?
設定→アプリでUbuntuを削除。そのあとPowerShellなどで下記のコマンドを実行してからUbuntuを再インストールします。
```
$ wsl --unregister Ubuntu-22.04
```
上記コマンドを実行してからじゃないとうまくUbuntuが動かないので注意しましょう。
## 関連記事
鯖をメンテナンスするときの参考にしていただければ。
- [[【Mastodon・Misskey】Node.jsのアップデート方法をおさらいする]]
- [[【Mastodon】Rubyのメンテナンス方法をおさらいする]]
## 参考サイト
- [Ubuntu 22.04を使ってMastodon(非Docker)を動かす!正式リリースされたストア版WSL2で起動 PC Watch](https://pc.watch.impress.co.jp/docs/column/nishikawa/1468283.html)
- [Windows 10/11でLinux環境「WSL」を始める第一歩 @IT](https://atmarkit.itmedia.co.jp/ait/articles/2201/28/news029.html)
- [Installing from source Mastodon documentation](https://docs.joinmastodon.org/admin/install/)
- [nginx で オレオレ証明書をする - Qiita](https://qiita.com/snowmoon/items/9c96ee0fa6ed096e8940)