長かった・・・

ホントに長かった・・・・

上級者はすぐに構築することができるんでしょうけど、インストール、設定しブラウザで表示確認するまでがホントに長かった・・・

そもそのなぜmastodonをインストールしてみようと思ったのかの経緯は、やはりTwitterの終了うわさ問題。マスク氏が買収しTwitterが終わってしまうのではといううわさから、別のサービスに移行する人が増えるだろうと予想される情報が広まり、ここで知り合った方々と離れ離れになるのも寂しいと感じ、微力ながらもこのまま仲が継続できる場所を用意するためにまず勉強と思い、代替えとして名が多く上がるmastodonの構築に挑戦しようというのが経緯。

ネットで調べながらあーでもないこーでもないと作業を繰り返し、ようやく表示したときはこころの中では発狂しましたよw

皆が同じ環境でやってるわけでもなく、公式の発表通りにやっても上手くいくわけでもなく、何日間試しながらやったか。

違いが分かる人はすぐにエラーログみたりファイルエディって調整したり出来るんでしょうけど。

どのような作業を行ってきたか、ここに残しておきます。

 

1.テスト環境づくり

メインPCはWindows10を使っていましたので、ここにVirtualBoxをインストールし、仮想サーバーを作ることにしました。
利用するOSはUbuntuの22.04(2022年12月現在)をインストールしました。大してコマンド入力で操作することを得意としてない私なので、GUIも入れたフルデスクトップにしています。Ubuntu側でフォルダ操作によるファイル有無確認とかとても楽なので。

 

テスト構築環境

【HostPC】
OS = Win10pro
メモリ = 8GB
HDD = 500GB
IP = 192.168.0.10
HOSTNAME = winpc

【Guest(VirtualBox)】
OS = Ubuntu 22.04.1 LTS
メモリ = 4GB
HDD = 100GB
IP = 192.168.0.20
HOSTNAME = ubuntu-VirtualBox

 

このVirtualBox、フリーということでとても便利なのですが、不具合もよくあることらしく、設定によっては動作が遅かったり、落ちて再度立ち上げようとするとエラーにより復帰不可になったりすることもあるそうなので、mastodonが動いた現在のVirtualBoxの設定は以下に残します。主にカスタムした設定だけです。

 

システム

メインメモリー:4096MB
プロセッサー:2
チップセットのタイプ:ICH9
アクセラレーション:VT-x/AMD-V、ネステッドページング、KVM準仮想化

ディスプレイ
ビデオメモリー:32MB
アクセラレーション:3D

ネットワーク
ネットワークアダプター:ブリッジアダプター

 

2.Ubuntuをインストールし、サーバーへカスタム

Ubuntuを仮想環境にインストールしたあと、mastodonをインストールする為の基礎構築を行っていきます。
Webサーバーとしての環境だけでなくその他の機能もインストールして、サーバーとして稼働出来るようになってからがmastodonをインストールできる状態となります。

ここまでの道のりも随分長かったですが、怠るとハマってしまいOSから入れなおしみたいな投げやりになることもあるので、しっかりと準備したいところです。

といっても、外部サーバーで構築するわけではないので、公開するための細かい設定(セキュリティ)などは省いていきます。目標はあくまでローカルでの仮想環境でmastodonをインストール、稼働、表示です。

まずはUbuntuのインストール。

インストーラーの手順通りに進めて構いません。サーバー構築はそのあとコマンド入力で手動で進めていくため、気にせずデフォルトに進めていきましょう。ユーザー作成は管理者にしておくと楽かもです。

今回はユーザー「ubuntu」、パスワードは「01234567」で作成しておきます。

また、ホスト名は分かりやすいものに変更しておいた方が良さそうです。私は「ubuntu-VirtualBox」としておきました。

Ubuntuのインストールが完了し、ログイン画面でユーザー情報入力してログインが出来たら、ここから設定の開始です。あくまで私自身がやってきたことを記録していきますので、Linux経験あり知識ある方で作業の中で省けると思った方は気にせず先に進んでください。

ここからは殆どがコマンド入力となります。

そして、ここからのUbuntuの基本設定はServer Worldさんを参考にして行っています。
本当にお世話になりました、ありがとうございます!

 

サーバーワールド
https://www.server-world.info/query?os=Ubuntu_22.04

 

rootユーザーのパスワード設定

これは、何かしらの作業で全管理者権限が必要になった場合のために設定しました。

 

ubuntu@ubuntu-VirtualBox:~$ sudo passwd root

[sudo] password for ubuntu: # 自身のパスワード
New password: # root パスワード設定
Retype new password: # 確認再入力
passwd: password updated successfully

ubuntu@ubuntu-VirtualBox:~$ su -

Password: # root パスワード入力
root@ubuntu-VirtualBox:~# # スイッチ完了

 

システム最新化

rootユーザーに変更し、システムを最新化します。所々でこのコマンドは使用しました。

 

リスト最新化
root@ubuntu-VirtualBox:~# apt update

システム最新化
root@ubuntu-VirtualBox:~# apt -y upgrade

 

Vim(テキストエディタ)の設定

Vimというテキストエディタをインストールします。通常はviというコマンドを使用してファイルの中身を編集するのですが、何行目に何があるかが分かりづらく、編集に苦労しました。こちらをインストールすると把握しやすかったです。ただ、インストールしても設定ファイルはなにも触りませんでした。もしかして関係なかった?でも一応インストール。

 

root@localhost:~# apt -y install vim

 

SSHサーバーの設定

VirtualBoxで表示された画面内での操作は実寸とマウスの位置情報の誤差により正常な動きしなかったりとか、表示速度の遅さなど色々な障害により作業にストレスを感じることが多かったため、SSHでリモート作業できるようにしました。Windows10のPowerShellで作業がとても効率が上がりましたのでお勧めです。
ひとまずコマンド入力してインストール作業を行いました。

 

root@ubuntu-VirtualBox:~# apt -y install openssh-server
root@ubuntu-VirtualBox:~# vi /etc/ssh/sshd_config

# 33行目 : コメント解除して [no] に変更すると root ログイン一切禁止
PermitRootLogin no

root@ubuntu-VirtualBox:~# systemctl enable ssh
root@ubuntu-VirtualBox:~# systemctl restart ssh

 

ここでssh接続できるか試したいところですが、セキュリティ機能が作動して出来ない場合もあるので一先ず接続作業はおいといて、セキュリティ設定の変更します。

 

ファイアウォール解除

ローカル環境での作業なのでセキュリティ関係は解除していこうと思います。

 

root@ubuntu-VirtualBox:~# systemctl status ufw
この以下情報表示

● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2022-12-19 17:24:39 JST; 29min ago

 

Activeの場所に状態を示しますが、activeの場合は作動している状態なので、無効化します。

 

root@ubuntu-VirtualBox:~# systemctl disable --now ufw

 

status で再度確認し、inactiveになってたらOKです。

 

Active: inactive (dead)

 

そして、念のためもう一つのセキュリティも無効化します。こちらはufwと関連しているそうなので一先ず無効化作業しておきました。

 

root@ubuntu-VirtualBox:~# systemctl disable --now nftables

 

これで一応ファイアウォールが無効化され、ネットワーク内で繋がるようになったはずです。

序盤で良く確認したのはpingが通るかどうかでした。同じネットワーク内で環境作るとはいえ、pingが通らなければ例えWebサーバー構築したとしてもブラウザで確認出来なかったからです。

実はかなりここでハマってしまいました。ゲスト側からホスト側へのpingは通るが逆からは通らないという現象が起きて随分足止めを喰らいました。

もし同じ現象が起きている場合は別ページでそのお話をしていますので参考にしてみてください。pingで反応が確認できたらssh接続してみましょう。

Windows側から接続する方法は、PowerShellを立ち上げ、以下のような感じでコマンド入力します。

 

# ssh ubuntu@192.168.0.20

 

これでパスワードを聞いてきたらサーバーとの接触は成功し、パスワードはUbuntuにログインするパスワードと同じで、今回は「01234567」入力して接続成功できれば完了です。

 

ubuntu@192.168.0.20's password: 01234567と入力

接続成功
Last login: Fri Dec 16 13:20:28 2022 from 192.168.0.20
ubuntu@ubuntu-VirtualBox:~$

 

これからの作業はWindows側から出来ます。

ubuntuというユーザー名で作業する場合、rootではなくなるため、管理者権限での作業を代行するということでコマンドの頭に「sudo」という文字をいれて作業します。もじサーバー側から権限がないとか言われることがあればまずはこの「sudo」を追加し、それでもダメであればrootユーザーにスイッチして作業してみましょう。

 

Webサーバー構築

まずは普通にWebサーバーを構築しました。mastodonはapacheではなくNginxを使用するそうなので、Nginxのインストール作業です。

 

ubuntu@ubuntu-VirtualBox:~# sudo apt -y install nginx

 

ドメイン取得したりヴァーチャルホストなどでドメインによるブラウザ表示したい場合は以下のファイルを設定します。IPアドレスで表示確認したい場合は特に必要ないと思います。

 

ファイル設定
ubuntu@ubuntu-VirtualBox:~# vi /etc/nginx/sites-available/default
# 46行目 : 自身のサーバー名に変更
server_name 192.168.0.20;

ubuntu@ubuntu-VirtualBox:~# sudo systemctl reload nginx

 

これでホスト、ゲストでブラウザを立ち上げ、URLに192.168.0.20と入力し、Nginxという文字が入った画面が表示されたら成功です。もし表示しない場合は以下の方法を確認してみてください。

 

ネットワーク設定の見直し
IPアドレス、サブネット、デフォルトゲートウェイなどの確認
ファイアウォールなどセキュリティの無効化
Nginxのリスタート
ubuntu@ubuntu-VirtualBox:~# sudo systemctl restart nginx
Nginxの設定ファイル見直し
セミコロンがなくて読み込みエラーが起きていた等

 

メールサーバー構築

mastodonはメール送信機能があり、SMTP情報を設定する場面があったため、メールサーバーとしてPostfixをインストールしておきました。mastodonをローカルにインストールするだけでメール機能もローカル内でという方は次の工程にすっ飛ばしてください。

 

ubuntu@ubuntu-VirtualBox:~# sudo apt -y install postfix sasl2-bin

インストール途中で表示する
Postfix Configuration ここではNo configurationを選択してEnter

ubuntu@ubuntu-VirtualBox:~# sudo cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf

ubuntu@ubuntu-VirtualBox:~# sudo vi /etc/postfix/main.cf

# 78行目 : コメント解除
mail_owner = postfix

# 94行目 : コメント解除しホスト名指定
myhostname = ubuntu-VirtualBox

# 102行目 : コメント解除しドメイン名指定
mydomain = localhost

# 123行目 : コメント解除
myorigin = $mydomain

# 137行目 : コメント解除
inet_interfaces = all

# 185行目 : コメント解除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 228行目 : コメント解除
local_recipient_maps = unix:passwd.byname $alias_maps

# 270行目 : コメント解除
mynetworks_style = subnet

# 287行目 : 自ネットワーク追記
mynetworks = 127.0.0.0/8, 192.168.0.0/24

# 407行目 : コメント解除
alias_maps = hash:/etc/aliases

# 418行目 : コメント解除
alias_database = hash:/etc/aliases

# 440行目 : コメント解除
home_mailbox = Maildir/

# 576行目 : コメントにしてその下に追記
# SMTP ソフトウェアの種類やバージョンは非表示にする
#smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_banner = $myhostname ESMTP

# 650行目 : 追記
sendmail_path = /usr/sbin/postfix

# 655行目 : 追記
newaliases_path = /usr/bin/newaliases

# 660行目 : 追記
mailq_path = /usr/bin/mailq

# 666行目 : 追記
setgid_group = postdrop

# 670行目 : コメント化
#html_directory =

# 674行目 : コメント化
#manpage_directory =

# 679行目 : コメント化
#sample_directory =

# 683行目 : コメント化
#readme_directory =

# 684行目 : IPv6 もリスンする場合は [all] に変更
inet_protocols = ipv4

# 以下 最終行へ追記
# SMTP VRFY コマンドは無効にする
disable_vrfy_command = yes

# クライアントに対して HELO コマンドを要求する
smtpd_helo_required = yes

# 1 メールのサイズを制限する
# 下例は 10M バイト
message_size_limit = 10240000

# SMTP-Auth の設定
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject

ubuntu@ubuntu-VirtualBox:~# newaliases

 

ドメイン名のところでゲストのIPアドレスを指定したのですが、エラーが表示したためlocalhostに変更しました。

 

ubuntu@ubuntu-VirtualBox:~# systemctl restart postfix

 

これでメールサーバー設定は終了になりますが、送信テストは別に行いません。statusでactiveになっていれば現段階は大丈夫でした。

 

以上で、mastodonをインストールする前準備のUbuntuサーバー基礎構築が終了しました。

mastodonのインストール失敗の繰り返しでこの作業を何度行ったかw

本来Webサーバーとして使用する場合はさらにPHPやFTPなどのインストールも必要になってくるのですが、今回はローカル環境での構築なため省いています。また、mastodonはpostgresqlを使用しますが、これはmastodonをインストールする道中で同時に行いますので現段階はインストールしません。

では、今回はここまで。