CentOS 7へのMastodonのインストール

Mastodonは、オープンソースの自己ホスト型マイクロブログおよびソーシャルネットワーキングサーバーです。Twitterのような機能を提供します。単一の会社によって制御されるのではなく、ソーシャルネットワーキングのシステム全体を形成するために相互に接続する分散サーバーの連合です。小規模なチームは、Mastodonサーバーインスタンスを起動して、フェデレーションコミュニティの他のユーザーとだけでなく、チーム内で通信することができます。また、独自のプライバシーポリシーとモデレートポリシーを選択し、さまざまなサーバーの他のユーザーと通信する方法を定義することもできます。個々のユーザーが作成およびサブスクライブするコンテンツは、自分のアカウントが作成されたサーバーでホストされます。ユーザーは、同じサーバーでホストされていなくても、お互いをフォローできます。マストドンネットワーク内の各ユーザーは、@[email protected]フォーマット。Mastodonのクライアントアプリケーションは、ほぼすべてのプラットフォームで使用できます。

前提条件

注:social.example.comMastodonインスタンスに使用されるドメイン名として使用します。のすべての出現social.example.com箇所を、マストドンアプリケーションで使用する実際のドメイン名に置き換えます

必要に応じて、ガイド「CentOS 7のアップデート方法」を使用してベースシステムをアップデートします。システムが更新されたら、必要な依存関係のインストールに進みます。

依存関係のインストール

Mastodonが機能するには、いくつかの依存関係が必要です。Node.jsJavaScriptファイルのコンパイルに使用される最新バージョンのをインストールします。

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs

インストールYarnは、高速で信頼性が高く、安全な依存関係マネージャーアプリケーションです。Yarnを使用してNode.js依存関係をインストールします。

sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn

をインストールしますRedis。Redisは、メモリ内データ構造のストアおよびキャッシュアプ​​リケーションです。

sudo yum -y install redis

Redisを起動して、起動時に自動的に起動するようにします。

sudo systemctl start redis
sudo systemctl enable redis

インストールRubyおよびその他の依存関係を構築するために必要ないくつかの依存関係をインストールします。

sudo yum -y install ImageMagick git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-devel

開発ツールもインストールする必要があります。

sudo yum -y groupinstall 'Development Tools'

PostgreSQLのインストールと構成

PostgreSQLはオブジェクトリレーショナルデータベースシステムです。デフォルトのyumリポジトリには古いバージョンのアプリケーションが含まれているため、PostgreSQLリポジトリをシステムに追加する必要があります。

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

PostgreSQLデータベースサーバーをインストールします。

sudo yum -y install postgresql96-server postgresql96-contrib postgresql96-devel

データベースを初期化します。

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

pg_hba.confファイルを編集して、MD5ベース認証を有効にします。

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

次の行と変更検索peerするtrustidentしますmd5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

更新すると、構成は次のようになります。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

PostgreSQLサーバーを起動し、起動時に自動的に起動するようにします。

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

デフォルトのPostgreSQLユーザーのパスワードを変更します。

sudo passwd postgres

PostgreSQLユーザーとしてシェルにログインします。

sudo su - postgres

PostgreSQLMastodonの新しいユーザーを作成します。

createuser mastodon

PostgreSQLは、psqlデータベースでクエリを実行するためのシェルを提供します。実行して、PostgreSQLシェルに切り替えます。

psql

Mastodonデータベースの新しく作成されたユーザーのパスワードを設定し、新しいデータベースを追加する権限を提供します。

ALTER USER mastodon WITH ENCRYPTED password 'DBPassword' CREATEDB;

DBPassword強力なパスワードに置き換えます。psqlシェルを終了します。

\q

sudoユーザーに切り替えます。

exit

さらにいくつかの必要なPostgreSQL依存関係をインストールします。

sudo yum -y install libpqxx-devel protobuf-devel

Rubyをインストールする

Mastodonの新しいユーザーを作成し、新しく作成したユーザーに切り替えます。

sudo adduser mastodon -d /opt/mastodon
sudo su - mastodon

RubyバージョンマネージャーまたはRVMを使用して、最新バージョンのRubyをインストールします。Rubyの複数のバージョンをインストールおよび管理するために使用されます。

GPGRVM のキーをサーバーに追加します。

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

RVMをインストールします。

curl -sSL https://get.rvm.io | bash -s stable
source /opt/mastodon/.rvm/scripts/rvm

Rubyの利用可能なバージョンのリストを取得します。

rvm list known

次の出力が表示されます。

[mastodon@vultr ~]$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head

...

リストから最新バージョンのRubyをインストールします。

rvm install 2.4

インストールされているバージョンのRubyを使用します。

rvm use 2.4

バージョンを確認できるはずです。

ruby -v

同様の出力が表示されるはずです。

[mastodon@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

bundlerRubyアプリケーションの依存関係マネージャーであるをインストールします。

gem install bundler

ここで、Mastodonユーザーのホームディレクトリに切り替え、Githubからアプリケーションリポジトリファイルのクローンを作成します。

cd ~
git clone https://github.com/tootsuite/mastodon.git app

アプリケーションディレクトリを移動し、アプリケーションの最新リリースをチェックアウトします。

cd ~/app
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)

設定bundlePostgreSQL設定のためのカスタムパスを使用します。また、Rubyの依存関係をインストールします。

bundle config build.pg --with-pg-config=/usr/pgsql-9.6/bin/pg_config
bundle install --deployment --without development test

Yarnを使用してNode.js依存関係をインストールします。

yarn install --pure-lockfile

Mastodonアプリケーションの構成ファイルを作成する必要があります。サンプル構成ファイルをコピーします。

cd ~/app
cp .env.production.sample .env.production

ファイルを編集する前にsecrets、次のコマンドを3回実行して、3つの異なるファイルを生成します。これらのシークレットを構成ファイルに設定する必要があります。

RAILS_ENV=production bundle exec rake secret

同様の出力が得られるはずです。

[mastodon@vultr app]$ RAILS_ENV=production bundle exec rake secret
0f17dab1cf4a07f6fac671ecd5815adcb59d012b338dae9350c66402250c6c729dccd6182b1a8f75c4fde55453ce283ea66e07ed4466cdc6d4d6974c98512967

nanoエディターを使用して構成ファイルを編集します。

nano .env.production

次の行を見つけて、それに応じて値を変更します。

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

PostgreSQLのインストール中に作成したデータベースユーザーに応じて、データベース認証情報を入力します。Mastodonは指定した名前でデータベースを自動的に作成するため、データベース名には任意の名前を付けます。

DB_HOST=127.0.0.1
DB_USER=mastodon
DB_NAME=mastodon
DB_PASS=DBPassword
DB_PORT=5432

アプリケーションのドメイン名を設定します。

LOCAL_DOMAIN=social.example.com

次の行を見つけ、その値を生成したシークレットに設定します。

PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=

ファイルを保存して、エディターを終了します。

ここで、次のコマンドを実行してWeb Push VAPIDキーを生成します。上記の構成ファイルでシークレットを設定していない場合、WebプッシュVAPIDキーの生成中にエラーが発生します。

RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key

次の出力が表示されます。

[mastodon@vultr app]$ RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key
VAPID_PRIVATE_KEY=DCMQdSPkdm-mepsNh4F3suc-UIvsABCvwFd03jSVemM=
VAPID_PUBLIC_KEY=BMMVcVXmqnV0C8S_ybZ7eQH-MXBEX2exqfdPSYQiMMUF2rRxfhoEtVF931i26ebMgmslHB_nvVadOdcBPhaFEjw=

構成ファイルを再度開き、生成されたキーをそれぞれの行に設定します。

VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=

最後に、アプリケーションがユーザーに電子メールを送信できるように、SMTPメールサーバーの情報を提供します。新規登録時にユーザーにアクティベーションリンクが記載された電子メールが送信されるため、正常に機能しているSMTPサーバーを使用することが重要です。新規ユーザーは、アカウントをアクティブ化するために、アクティブ化リンクをクリックする必要があります。

SMTP_SERVER=mail.example.com
SMTP_PORT=456
[email protected]
SMTP_PASSWORD=MailPassword
[email protected]
SMTP_TLS=true

完了したら、ファイルを保存してエディターを終了します。Mastodonインスタンスの基本設定が完了しました。

PostgreSQLデータベースを初めてセットアップします。

RAILS_ENV=production bundle exec rails db:setup

最初に、上記のコマンドは、構成に記載されている名前で新しいデータベースを作成します。次に、構成に従ってデータベースに書き込みます。

すべてのCSSおよびJavaScriptファイルをプリコンパイルして、キャッシュを作成します。

RAILS_ENV=production bundle exec rails assets:precompile

Mastodonがサーバーにインストールされました。次にNginx、アプリケーションを提供するWebサーバーをセットアップSystemdし、Mastodonサービスを実行するためのサービスをセットアップする必要があります。

これからは、sudoユーザーを使用してコマンドを実行する必要があります。

Let's Encrypt SSLを使用してNginxをインストールする

Nginx Webサーバーをリバースプロキシとして使用して、ユーザーにアプリケーションを提供します。Let's EncryptからSSL証明書を取得してインストールします。

NginxとCertbotをインストールします。Certbotは、Let's Encrypt CAの公式証明書発行クライアントです。

sudo yum -y install nginx certbot

Certbotがドメイン認証を確認するためにHTTP接続を確立する必要があるため、ファイアウォール設定を調整して、標準HTTPHTTPSポートがファイアウォールを通過できるようにします。

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

注:Let's Encrypt CAから証明書を取得するには、証明書を生成するドメインがサーバーに向けられていることを確認する必要があります。そうでない場合は、ドメインのDNSレコードに必要な変更を加え、DNSが伝播するのを待ってから、証明書要求を再度行ってください。証明書ボットは、証明書を提供する前にドメイン認証局をチェックします

次に、Certbotの組み込みWebサーバーを使用して、ドメインの証明書を生成します。

sudo certbot certonly --standalone -d social.example.com

生成された証明書は、/etc/letsencrypt/live/social.example.com/ディレクトリに格納される可能性があります。SSL証明書はとして保持されfullchain.pem、秘密鍵はとして保存されprivkey.pemます。

証明書を暗号化しましょう90���で有効期限が切れるので、cronジョブを使用して証明書の自動更新を設定することをお勧めします。Cronは、定期的なタスクを実行するために使用されるシステムサービスです。

cronジョブファイルを開きます。

sudo crontab -e

次の行を追加します。

0 0 * * * /usr/bin/certbot renew --quiet

上記のcronジョブは毎日午前0時に実行されます。証明書の有効期限が切れる場合、証明書は自動的に更新されます。

次に、Mastodonサイト用の新しいNginxサーバーブロックを作成します。

sudo nano /etc/nginx/conf.d/mastodon.conf

これをファイルに入力します。

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen 80;
  listen [::]:80;
  server_name social.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name social.example.com;

  ssl_protocols TLSv1.2;
  ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  ssl_certificate     /etc/letsencrypt/live/social.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/social.example.com/privkey.pem;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 0;

  root /opt/mastodon/app/public;

  gzip on;
  gzip_disable "msie6";
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

  add_header Strict-Transport-Security "max-age=31536000";

  location / {
    try_files $uri @proxy;
  }

  location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
    add_header Cache-Control "public, max-age=31536000, immutable";
    try_files $uri @proxy;
  }

  location @proxy {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Proxy "";
    proxy_pass_header Server;

    proxy_pass http://127.0.0.1:3000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  location /api/v1/streaming {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Proxy "";

    proxy_pass http://127.0.0.1:4000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  error_page 500 501 502 503 504 /500.html;
}

ドメイン名とSSL証明書へのパスを必ず変更してください。

これで、Nginx Webサーバーを起動して、起動時に自動的に起動できるようにすることができます。

sudo systemctl start nginx
sudo systemctl enable nginx

4000ポートはストリーミングAPIサービスを提供するため、ポートがファイアウォールを通過できるようにする必要もあります。

sudo firewall-cmd --permanent --zone=public --add-port=4000/tcp
sudo firewall-cmd --reload

Mastodonディレクトリの実行権限を付与します。

sudo chmod +x /opt/mastodon

Systemdサービスのセットアップ

Mastodonサーバーを正常に開始するには、3つの異なるプロセスを開始する必要があります。Systemdサービスを使用すると、起動時にMastodonサーバーが自動的に起動し、障害が処理されます。

Mastodon Webサービスを実行するための新しいsystemdサービスを作成します。このサービスは、組み込みWebサーバーをポートで起動します3000

sudo nano /etc/systemd/system/mastodon-web.service

ファイルに次の内容を入力します。

[Unit]
Description=Mastodon Web Service
After=network.target

[Service]
Type=simple
User=mastodon
Group=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="RAILS_ENV=production"
Environment="PORT=3000"
ExecStart=/bin/bash -lc 'bundle exec puma -C config/puma.rb'
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

Mastodonバックグラウンドキューサービスを実行する2番目のSystemdサービスを作成します。Mastodonキューサービスは、すべてのバックグラウンドタスクを処理します。

sudo nano /etc/systemd/system/mastodon-queue.service

ファイルに次の内容を入力します。

[Unit]
Description=Mastodon Queue Service
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="RAILS_ENV=production"
Environment="DB_POOL=5"
ExecStart=/bin/bash -lc 'bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push'
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

最後に、MastodonストリーミングAPIサービスの最後のサービスファイルを作成します。

sudo nano /etc/systemd/system/mastodon-api.service

ファイルに次の内容を入力します。

[Unit]
Description=Mastodon Streaming
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="NODE_ENV=production"
Environment="PORT=4000"
ExecStart=/bin/npm run start
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

ブート時にMastodonサービスが自動的に開始されるようにします。

sudo systemctl enable mastodon-web mastodon-queue mastodon-api 

Mastodonサービスを開始するには、これを実行できます。

sudo systemctl start mastodon-web mastodon-queue mastodon-api 

サービスのステータスを確認するには、これを実行できます。

sudo systemctl status mastodon-web mastodon-queue mastodon-api 

結論

にアクセスして、Mastodonアプリケーションにアクセスできますhttps://social.example.com。サーバーに新しいユーザーアカウントを作成し、メールで送信されたリンクを開いてユーザーアカウントを確認します。作成したアカウントに管理者権限を付与するには、これを実行します。

sudo su - mastodon && cd ~/app
RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME=<user_name>

<user_name>Mastodonインターフェースでアカウントを作成するために使用した実際のユーザー名に置き換えます。

これでMastodonインスタンスがインストールされ、実行するように構成されました。最初に友達を招待してインスタンスに参加させ、Mastodonが提供する機能を探ります。モバイルでソーシャルネットワーキングサイトを使用するには、さまざまなプラットフォームで利用可能なアプリケーションをダウンロードします。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。