GCE無料枠でAkkomaインスタンスを作る!その1
⚠注意 この記事は超超超超初心者が遊び半分でインスタンスを建てた際の記録のようなものです。ここで書いてある以外にも気をつけないと行けないことやマナーなどもありますので、インスタンスを建てる際は他の情報も調べるようにしてください。
※ここではドメインの設定などについて説明していません。その2もご覧ください。
こんにちは、Hakoです。
最近MisskeyやMastodonなどの分散型SNSが話題になっています。そこで、「おひとり様インスタンス」というものを作ってみることにしました。
自分専用のインスタンスでのんびり過ごそうというわけです。
だがしかし、金欠Hakoはどうしてもコストを抑えたいです。
ということで、ドメインは今持っている hako.lol
を使い、サーバーはGoogle CloudのCompute Engineを使うことにしました。無料枠で使えるe2-microはスペックが低く、MastodonやMisskeyは動かないようなので、今回はAkkomaを使用することにしました。
1.VMインスタンスを作成
Console → プロジェクトの選択から自分のプロジェクトを選択 → Compute Engineを選択 → VMインスタンスを選択し、インスタンスを作成 をクリック
これでインスタンスを作成する画面になると思います。
以下設定です
- 名前 :
Akkoma
など好きなのでいいです。 - リージョン : 日本から一番近い
us-west1
- ゾーン :
us-west-a
us-west-b
us-west-c
どれでもいいです。 - マシンの構成 : 汎用 →
E2
- マシンタイプ :
e2-micro
- ブートディスク
- OS :
Debian
- バージョン :
Debian GNU/Linux 12 (bookworm) x86/64, amd built on 20230629
- ブートディスクの種類 :
標準永続ディスク
- サイズ :
30GB
- OS :
- ファイアウォール :
HTTP トラフィックを許可する
とHTTPS トラフィックを許可する
両方にチェックを入れる。 - 詳細オプション
- ネットワーキング
- ネットワーク インターフェース
- 外部IPv4アドレス : 静的外部IPアドレスを予約 → 好きな名前を入れて 予約 をクリック → 完了 をクリック
- ネットワーク インターフェース
- ネットワーキング
これで作成しましょう。
月間予測が$6.11になっていますが気にしなくていいようです。
インスタンスが作成されるとVMインスタンスのところに作成したものが出てくるので、右の方にあるSSHの隣の矢印から ブラウザ ウィンドウで開く
をクリックするとブラウザのウィンドウでSSHが開けます。
2.Akkoma バックエンドの構築
いよいよAkkomaをインストールしていきます。基本的に公式ガイドに沿ってインストールします。
まずはシステムを更新しましょう。
sudo apt update && sudo apt full-upgrade -y
時間がかかるので気長に待ちましょう。
更新が終わったら、必要なパッケージをインストールします。
sudo apt install git build-essential postgresql postgresql-contrib cmake libmagic-dev wget -y
ElixirとErlangをインストールします。
sudo apt update
sudo apt install elixir erlang-dev erlang-nox -y
オプションのパッケージもインストールします。
sudo apt install imagemagick ffmpeg libimage-exiftool-perl -y
Akkomaユーザーを追加します。
sudo useradd -r -s /bin/false -m -d /var/lib/akkoma -U akkoma
Akkomaのリポジトリをcloneし、Akkomaユーザーをディレクトリの所有者にします。
sudo mkdir -p /opt/akkoma
sudo chown -R akkoma:akkoma /opt/akkoma
sudo -Hu akkoma git clone https://akkoma.dev/AkkomaGang/akkoma.git -b stable /opt/akkoma
新しいディレクトリに移動します。
cd /opt/akkoma
Akkomaの依存関係をインストールします。Hexのインストールを求められたら、yと入力しenterを押しましょう。
sudo -Hu akkoma mix deps.get
Akkomaの構成を追加します。rebar3のインストールを求められたら、先程と同じくyと入力しenterを押しましょう。
sudo -Hu akkoma MIX_ENV=prod mix pleroma.instance gen
これには時間がかかります。
途中でインスタンスについていくつかの質問に答えます。内容などは以下の通りです。
- What domain will your instance use? (このインスタンスで使うドメインはなんですか?) :
example.com
(あなたのインスタンスのドメイン) - What is the name of your instance? (このインスタンスの名前はなんですか?) :
EXAMPLE AKKOMA INSTANCE
(何でも良い 何も書かずにそのままEnterを押すと先程のドメインと同じになる) - What is admin email address? (管理者のメールアドレスは?) :
example@email.com
(あなたのemailアドレス) - What email address do you want to use for sending email notifications? (メール通知を送信するのに使うアドレスは?) : そのままEnterで先程と同じアドレスになります。大抵の場合それで良いでしょう。
- Do you want search engines to index your site? (y/n) (検索エンジンにあなたのサイトをインデックスさせたいですか?) : インデックスさせたかったらyを送信、もしくはそのままEnter。させたくなかったらnを送信。
- Do you want to store the configuration in the database (allows controlling it from admin-fe)? (y/n) (admin-feでコンフィグをコントロールできるようにしますか?) : yを送信することを推奨します。 あとは全部Enterで良いでしょう。
この設定をAkkomaがロードするように名前を変更します。
sudo -Hu akkoma mv config/{generated_config.exs,prod.secret.exs}
続いて実行します。
sudo -Hu postgres psql -f config/setup_db.psql
データベースの移行を実行します。
sudo -Hu akkoma MIX_ENV=prod mix ecto.migrate
これでAkkomaを起動できるようになりました。
sudo -Hu akkoma MIX_ENV=prod mix phx.server
一回起動したらctrl+c → a で終了しましょう。
cd
を実行し一番上のディレクトリに戻ります。
Nginxをインストールします。
sudo apt install nginx -y
certbotもインストールします。
sudo apt install certbot -y
Nginxを一旦停止します
sudo nginx -s stop
それぞれを設定します。
sudo mkdir -p /var/lib/letsencrypt/
sudo certbot certonly --email メアド -d ドメイン --standalone
yを送信して進めますx2
nginxの設定の例をコピーして有効にします。
sudo cp /opt/akkoma/installation/nginx/akkoma.nginx /etc/nginx/sites-available/akkoma.nginx
sudo ln -s /etc/nginx/sites-available/akkoma.nginx /etc/nginx/sites-enabled/akkoma.nginx
設定のファイルがあるディレクトリに移動します
cd /etc/nginx/sites-enabled
vimで設定のファイルを編集します
sudo vi akkoma.nginx
vimで5箇所のexample.tldをあなたのドメインに置き換えます
iキーで編集モードに入り、escで編集モードを終わります。:wqと入力し、Enterを押すことで保存できます。
保存を終えたらcd
を実行し上のディレクトリに戻ります。
nginxを有効にして起動します。
sudo systemctl enable --now nginx.service
サンプルサービスファイルをコピーします。
sudo cp /opt/akkoma/installation/akkoma.service /etc/systemd/system/akkoma.service
akkomaを有効にして起動します。
sudo systemctl enable --now akkoma.service
これでバックエンドは完成です!
3.Akkoma フロントエンドのインストール
次はフロントエンドをインストールしていきます。
akkomaディレクトリに移動します。
cd /opt/akkoma
akkomaユーザーでpleroma-feをインストールします。時間がかかります。
sudo -Hu akkoma mix pleroma.frontend install pleroma-fe --ref stable
akkomaユーザーでadmin-feをインストールします。
sudo -Hu akkoma mix pleroma.frontend install admin-fe --ref stable
cd ../
を2回実行し一番上のディレクトリに戻ります。
一応再起動しておきます。
sudo systemctl restart akkoma.service
これでドメインにアクセスするとakkomaのインスタンスが表示されるはずです
今回はとりあえずここまで。次回はユーザーの追加やadmin-feでのインスタンスの設定変更などをしていきます。