LoginSignup
0
0

More than 1 year has passed since last update.

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

Posted at

ということで、

Question:先述(第二章参照)のスクリプトを実行したが”Mastodonユーザーの作成”まで進んだが、その先以降スクリプトが進まなくなった。原因を突き止めて修正版を作成して欲しい。

Answer:問題の原因は、sudo su - mastodon コマンドで Mastodon ユーザーに切り替えているため、その後のコマンドが実行されないことです。代わりに、Mastodon ユーザーとしてコマンドを実行するには sudo -u mastodon を使用します。

修正版のスクリプトは以下の通りです。

#!/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

# Mastodonのクローンと設定
echo "Mastodonをクローンし、設定ファイルを作成します。"
sudo -u mastodon git clone https://github.com/tootsuite/mastodon.git /home/mastodon/live
sudo -u mastodon sh -c "cd /home/mastodon/live; git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)"
sudo -u mastodon sh -c "cd /home/mastodon/live; bundle install --deployment --without development test"
sudo -u mastodon sh -c "cd /home/mastodon/live; yarn install --pure-lockfile"
sudo -u mastodon cp /home/mastodon/live/.env.production.sample /home/mastodon/live/.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ファイルにパラメータを設定
sudo -u mastodon sed -i "s/LOCAL_DOMAIN=.*/LOCAL_DOMAIN=$domain/" /home/mastodon/live/.env.production
sudo -u mastodon sed -i "s/SMTP_SERVER=.*/SMTP_SERVER=$smtp_server/" /home/mastodon/live/.env.production
sudo -u mastodon sed -i "s/SMTP_PORT=.*/SMTP_PORT=$smtp_port/" /home/mastodon/live/.env.production
sudo -u mastodon sed -i "s/SMTP_LOGIN=.*/SMTP_LOGIN=$smtp_username/" /home/mastodon/live/.env.production
sudo -u mastodon sed -i "s/SMTP_PASSWORD=.*/SMTP_PASSWORD=$smtp_password/" /home/mastodon/live/.env.production
sudo -u mastodon sed -i "s/SMTP_FROM_ADDRESS=.*/SMTP_FROM_ADDRESS=noreply@$domain/" /home/mastodon/live/.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;"
sudo -u mastodon sh -c "cd /home/mastodon/live; 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のインストールが完了しました!"

この修正版のスクリプトでは、sudo su - mastodon の代わりに sudo -u mastodon を使用して、Mastodon ユーザーとして各コマンドを実行しています。これにより、スクリプトが途中で停止することなく完了するはずです。

さて上手く完成するかな?

0
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
0
0