前回の基礎構築について知りたい方はこちらへ。

 

【LINUX】mastodonをローカルにインストールするまで – 基礎構築編 –

 

さて、mastodonをインストールするためのサーバー基礎構築が終わった状態でいよいよmastodonのインストールに入ります。

念のため言っておきますが、色々とネットで調べ、ネットで上がっている情報通りに作業してもすんなりとインストールできることはなく、何度も挑戦してようやく正常表示にたどり着くことができました。

すべての方がおなじ環境で作業しているわけではありません。そういう点から、私が上げる作業情報も必ずしも他の方が同じように作業して上手くインストールできる保証はありませんので、その辺をご了承の上参考にされてください。

一先ず今の基礎構築の状態を簡単にまとめると、

 

OSはUbuntu22.04をインストール
sshでリモート作業できるようにした
ファイアウォールを無効化しping反応確認
WebサーバーとしてNginxインストール
メールサーバーとしてPostfixインストール

 

という、簡易的なWebサーバーとメールサーバーを構築したという感じです。あくまでインストールするための仮想環境なのでセキュリティ面などは省きます。

HTMLとCSSのみでのWebサイト程度ならこれで良いと思いますが、Webサーバーとして充実されたいのであればPHPやFTP、SQLなど色々と導入する必要がありますがそれはいずれまた。

では、そろそろmastodonのインストールにいきたいと思います。

ネット上に数多くあるmastodonのインストール情報の中でもっとも有効で参考になったサイトは以下のサイトでした。

色々なサイトの情報も参考にしたのですが、どれも自分が行うとどこかしらでエラーが発生し、その原因解消する方法も見つけられずに終了としてましたが、このサイトにある情報通りにコマンドしていくとほぼエラーなく進み、無事ブラウザ表示にたどり着きました。海外サイトになります。本当に感謝します。

 

LinuxBabe
https://www.linuxbabe.com/ubuntu/how-to-install-mastodon-on-ubuntu

 

ここから以下のコマンドはLinuxBabeさんから部分引用していきますので、詳しい説明などは参考元サイトへ。

ssh接続してリモート作業が出来るような状態でいるという体でお話していきたいと思います。

 

// 前回設定した情報でSSH接続する場合
ssh ubuntu@192.168.0.20
password: 01234567

 

PostogreSQLインストール

mastodonはPostogreSQLを使用するそうです。前回の基礎構築中ではインストールしなかった理由がこれです。ここで作業する前にインストールし、バージョンなどの差異が生じて再インストールやアンインストールなど面倒な作業を避けたかったからです。

 

echo "deb [signed-by=/etc/apt/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

sudo mkdir -p /etc/apt/keyrings/

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/keyrings/postgresql.asc

 

この3行の作業ですが、読み取っても全く意味が分かりませんw

システムエンジニアって本当にすごいですね。尊敬します。

上記の内容としてはPostgreSQLのパブリックキーをインポートするんだとか。

そして次のコマンドでリポジトリをアップデートして、PostgreSQLをインストールします。

 

sudo apt update

 

※以下のようなエラーが発生しアップデート出来ていないことがあります。

 

リポジトリ 'http://apt.postgresql.org/pub/repos/apt jammy-pgdg InRelease' がアーキテクチャ 'i386' をサポートしないため設定ファイル 'main/binary-i386/Packages' の取得をスキップ

 

以下のファイルの中身を確認しました。

 

sudo vi /etc/apt/sources.list.d/pgdg.list
deb [signed-by=/etc/apt/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main

 

括弧の中身を次のように変更

 

[arch=amd64]

sudo apt install -y postgresql postgresql-contrib

sudo ss -lnpt | grep postgres

sudo systemctl start postgresql

 

これでPostogresSQLが起動したことになりますが、実際に動いているかの確認はstatusで見てみましょう。

もしくは以下のコマンドでPostgreSQLに接続してみましょう。

 

sudo -u postgres -i psql

 

接続が成功できれば起動してることになりますので、そのままデータベースとユーザーを作成します。

 

データベース作成
CREATE DATABASE mastodon;

ユーザー作成
CREATE USER mastodon;

パスワード設定(シングルコーテーション内に任意のパスワード)
ALTER USER mastodon WITH ENCRYPTED PASSWORD 'your_preferred_password';

ALTER USER mastodon createdb;

ALTER DATABASE mastodon OWNER TO mastodon;

\q

 

これで一先ずPostgreSQLの準備は出来ましたが、気を付けて欲しいのは、

 

ユーザー名、データベース名、パスワードを記録しておく
コマンド作業で最後にセミコロンは忘れずに

 

ということくらいでしょうか。私は、この作業そのまま進めたため、mastodonの設定時にPostgreSQLの情報ってなんだっけ?と悩んだことを覚えていますw

現段階ではpostgresユーザーではパスワードなく接続できるそうなので、mastodonユーザーのパスワードを忘れた場合は以下のコマンドで入って再設定すると良いかもです。

 

su - postgres

psql

alter role postgres with password '01234567'; /*任意のパスワード*/

 

ちなみに、postgresユーザーのデフォルトパスワードはpostgresなんだそう。(どのバージョンまで?)

 

Rubyインストール

次にプログラム言語のRubyをインストールします。mastodonはRubyなんですね。WebシステムはPHPよりRubyやPythonで開発されてるほうが多いんですね。

 

sudo apt -y install ruby ruby-dev

ruby -v

ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]

 

私の動作してる環境(2022年12月現在)では3.0.2でした。
これでRubyのインストールは完了です。

 

mastodon ダウンロード

gitコマンド使ってgithubにあるmastodonをダウンロードします。ここからの作業はubuntuユーザーではなくmastodonユーザーを作成してmastodonユーザーで作業することになります。システムの権限者?所有者?を一括にmastodonと分かりやすくするためですかね?

また、gitを使えるようにここでインストールします。

 

mastodonユーザー作成
sudo adduser mastodon --system --group --disabled-login
ユーザー作成した時点で/homeディレクトリにmastodonというフォルダが作成されます。

gitインストール
sudo apt -y install git

git clone https://github.com/tootsuite/mastodon.git

 

ここでclone(Download)できないエラーが発生しました。どうやらこのコマンドつかってダウンロードするソースを保存しようとする場所に書き込み権限がないとダメなんだそう。

ls というコマンドを使用するとその階層にある他ファイルやディレクトリなどが確認できるんですが、手っ取り早く他の場所に移動した方が作業がはかどります。

自分の場合はmastodonユーザーを作成したときにできた/homeディレクトリにある/mastodonというフォルダ内でcloneしました。

もしディレクトリがない場合は、以下のコマンドで作成して良いかと思います。

 

mastodonディレクトリ作成
sudo mkdir /home/mastodon

mastodonディレクトリに移動
cd /home/mastodon

mastodonファイルダウンロード
git clone https://github.com/tootsuite/mastodon.git

 

終了するとさらにmastodonというディレクトリが出来ておりその中にシステムのファイルが入っています。これらのファイルを今度はWeb公開するディレクトリに移動させます。

通常Webサーバーを構築すると/varディレクトリに/wwwというディレクトリがあり、ここにHTMLファイルやCSSファイルなどを置いて公開するディレクトリがあるんですが、(Apacheの場合はさらに/htmlというディレクトリがあったり?)ない場合は作成しておきましょう。インストールを紹介してくれている作業フローを守るためにw

 

sudo mkdir -p /var/www/

mastodonシステムファイルをディレクトリごと移動
sudo mv mastodon/ /var/www/

所有者をmastodonに変更
sudo chown mastodon:mastodon /var/www/mastodon/ -R

移動させたmastodonディレクトリに移動
cd /var/www/mastodon/

sudo -u mastodon git checkout v4.0.2

 

以下のような文字が表示したら終了のようです。

 

HEAD is now at 03b0f3ac8 Bump version to 4.0.2 (#20725)

 

Rubyのなんちゃらマネージャーをインストール

 

sudo gem install bundler

 

次にNode.jsをインストールするのですが、curlというコマンドを使ってnot foundが出る場合はこれを先にインストールする必要があります。

 

sudo apt -y install curl

 

Node.jsインストール

 

curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -

 

上記のコマンドで以下のような文言が表示することがあります。

 

取得:1 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
エラー:1 https://dl.yarnpkg.com/debian stable InRelease

公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 23E7166788B63E1E

 

apt updateを行った際にでることがあるエラーなんだそう。同時に行われてたんですね。
で、このようなエラーがでた場合、下記のようなコマンドで最後の英数字を、NO_PUBKEYのあとにある英数字にして実行してください。

 

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 23E7166788B63E1E

インストール

sudo apt -y install nodejs

バージョン確認
node -v
v16.19.0

 

ここで最新をインストールしないようにしてください。(2022年12月確認時はv18)最新が良いんだろうと思いこみv18インストールしたらmastodonは動作しませんでした。ここではv16をインストールします。

 

Yarnインストール

次にYarnとなるものをインストールします。

 

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

sudo apt update

sudo apt -y install yarn

$ yarn -v
1.22.19

 

上手くここまでくると、次はソースのコンパイルに必須なパッケージを一気にインストールします。ちなみに既にインストールされてしまっているものは上書きされずにスキップもしくは保留されるようなので気にせず実行して良いかと思います。

 

sudo apt -y install redis-server optipng pngquant jhead jpegoptim gifsicle nodejs imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file g++ libprotobuf-dev protobuf-compiler pkg-config gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev libidn11-dev libicu-dev libjemalloc-dev

 

私の場合は何の問題もなくインストールが終了しました。中身を見るとnodejsとかふつうに入ってますねw

恐らくnodejsはスキップされていると思います。後でバージョン確認しても一緒でした。

次にmastodonに必要なパッケージをインストールするそうです。

 

sudo -u mastodon bundle config deployment 'true'

sudo -u mastodon bundle config without 'development test'

sudo -u mastodon bundle install -j$(getconf _NPROCESSORS_ONLN)

 

ここまで何もエラーが発生せずインストールが出来たのであれば後はmastodonを起動させるための必要情報を設定する場面に入れます。次のコマンドを入力して、必要な情報入力して設定します。参考サイトにも進めていく手順が載っていますが、今回は私の設定手順を載せておきます。

 

sudo -u mastodon RAILS_ENV=production bundle exec rake mastodon:setup

Domain name: 192.168.0.20

Single user mode disables registrations and redirects the landing page to your public profile. Do you want to enable single user mode? Yes

Are you using Docker to run Mastodon? No

PostgreSQL host: localhost
PostgreSQL port: 5432
Name of PostgreSQL database: mastodon
Name of PostgreSQL user: mastodon
Password ob PostgreSQL user: 01234567
/* 成功するとなんちゃらwork!となる文字が表示 */

Redis host: localhost
Redis port: 6379
Redis password: そのままEnter
/* 成功するとなんちゃらwork!となる文字が表示 */

Do you want to store uploaded files on the cloud? No

Do you want to send e-mails from localhost? Yes
※ここでNoにするとSMTPサーバーの情報を聞いてくるのでローカルにSMTP構築しているのであればその情報を
入れても良いとは思うが今回はなし

E-mail address to send e-mails "from": Mastodon <notifications@192.168.0.20>

Send a test e-mail with this configuration right now? No

This configration will be written to .env.production Save configuration? Yes

Now that configuration is saved, the database schema must be loaded.
If the database already exists, this will erase its contents.
Prepare the database now? y

Running `RAILS_ENV=production rails db:setup` ...
これ以降で凄くファイルを読み込んでいる感の文字がでる

The final step is compiling CSS/JS assets.
This may take a while and consume a lot of RAM.
Compile the assets now? (Y/n) y

Running `RAILS_ENV=production rails assets:precompile` ...
更にこのあたりで凄くファイルを読み込んでいる感の文字がでる

以下のような文字が表示すると終了になります。
All done! You can now power on the Mastodon server

 

その後、管理者の作成するか的な文字が出てくるのでここで作成しておきましょう。メールアドレスがログインIDとなります。

 

Do you want to create an admin user straight away? Yes
Username: admin
E-mail: test@localhost
上記二つを入力すると自動でパスワード生成され表示します。
You can login with the password: 0c6c1a15c2578dc55c954ec5ef4b5a5b /* 表示したパスワードはシステムが自動で作成 */

 

上記で表示したパスワードは必ず保存しておきましょう。再発行する際は恐らくメールアドレスが必要になると思うので、受信可能なメールアドレスを使った方が良さそうです。

 

You can change your password once you login.

 

ここまでくると大分作業は進み、後はサーバー側とmastodonを紐づけて起動するように設定を行っていく工程となります。

ずいぶんと長くなりましたので、設定編は次回にしたいと思います。それではまた。