1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

某AIにお手軽にMastodonを構築するためのスクリプトを作らせた 第二章

Last updated at Posted at 2023-05-03

前回のスクリプトでは必要なパラメータを手動でエディタなどを用いて作成する必要があった。
そこで対話形式でパラメータを入力するだけでお手軽にMastodonサーバを構築できるように聞いてみた。

Question : ubuntu環境下でMastodonをbashのみだけで構築できるようにしたい。個別に必要なパラメータは対話形式で入力させること。

Answer : Mastodonのインストールと設定を完全に自動化するスクリプトを提供します。このスクリプトでは、対話形式で必要なパラメータを入力できます。Ubuntu環境でbashのみを使ってMastodonを構築するために、以下のスクリプトを使用してください。

まず、install_mastodon.shという名前で新しいファイルを作成し、以下のコードを貼り付けます。

#!/bin/bash

echo "Mastodonインストールスクリプトへようこそ!"

# 依存関係のインストール
echo "依存関係をインストールします。"
sudo apt update
sudo apt install -y wget curl git imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev redis-server redis-tools

# Node.jsとYarnのインストール
echo "Node.jsとYarnをインストールします。"
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install -y yarn

# rbenvとRubyのインストール
echo "rbenvとRubyをインストールします。"
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv install 2.7.2
rbenv global 2.7.2

# Mastodonユーザーの作成
echo "Mastodonユーザーを作成します。"
sudo adduser --disabled-login --gecos "" mastodon
sudo su - mastodon

# Mastodonのクローンと設定
echo "Mastodonをクローンし、設定ファイルを作成します。"
git clone https://github.com/tootsuite/mastodon.git live
cd live
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
bundle install --deployment --without development test
yarn install --pure-lockfile
cp .env.production.sample .env.production

# 対話形式で必要なパラメータを入力
echo "必要なパラメータを入力してください。"
read -p "ドメイン名 (例: example.com): " domain
read -p "管理者のメールアドレス: " admin_email
read -p "SMTPサーバーアドレス: " smtp_server
read -p "SMTPポート: " smtp_port
read -p "SMTPユーザー名: " smtp_username
read -p "SMTPパスワード: " smtp_password

# .env.productionファイルにパラメータを設定
sed -i "s/LOCAL_DOMAIN=.*/LOCAL_DOMAIN=$domain/" .env.production
sed -i "s/SMTP_SERVER=.*/SMTP_SERVER=$smtp_server/" .env.production
sed -i "s/SMTP_PORT=.*/SMTP_PORT=$smtp_port/" .env.production
sed -i "s/SMTP_LOGIN=.*/SMTP_LOGIN=$smtp_username/" .env.production
sed -i "s/SMTP_PASSWORD=.*/SMTP_PASSWORD=$smtp_password/" .env.production
sed -i "s/SMTP_FROM_ADDRESS=.*/SMTP_FROM_ADDRESS=noreply@$domain/" .env.production

# データベースの設定
echo "データベースを設定します。"
sudo apt install -y postgresql postgresql-contrib
sudo -u postgres psql -c "CREATE USER mastodon CREATEDB;"
sudo -u postgres psql -c "CREATE DATABASE mastodon OWNER mastodon;"
RAILS_ENV=production bundle exec rake mastodon:setup

# Nginxのインストールと設定
echo "Nginxをインストールし、設定します。"
sudo apt install -y nginx
sudo rm /etc/nginx/sites-enabled/default
sudo cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/
sudo sed -i "s/example\.com/$domain/" /etc/nginx/sites-enabled/mastodon

# Let's Encrypt証明書の取得
echo "Let's Encrypt証明書を取得します。"
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d $domain --agree-tos --email $admin_email --redirect

# サービスの設定
echo "サービスを設定します。"
sudo cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
sudo systemctl enable /etc/systemd/system/mastodon-*.service
sudo systemctl start mastodon-web.service mastodon-sidekiq.service mastodon-streaming.service

# ファイアウォールの設定
echo "ファイアウォールを設定します。"
sudo apt install -y ufw
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw --force enable

echo "Mastodonのインストールが完了しました!"

次に、スクリプトに実行権限を与えて実行します。

chmod +x install_mastodon.sh
./install_mastodon.sh

スクリプトを実行すると、対話形式で必要なパラメータを聞かれます。適切な値を入力して進めてください。インストールが完了すると、Mastodonインスタンスが起動し、指定したドメインでアクセスできるようになります。

ということらしいのですが、途中でカレントユーザーをmastodonに移行したためそこから先のスクリプトが動かない・・・
だめじゃーんということで修正させるか・・・

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?