Ubuntu 16.04をインストールしたAlibaba Cloud ECS上でDockerを使ってMastodonを設定する
このチュートリアルでは、Ubuntu 16.04をインストールしたAlibaba Cloud Elastic Compute Service (ECS)上でMastodonを設定します。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
前提条件
- Alibaba Cloud Elastic Compute Service (ECS)を有効にし、有効な支払い方法を確認する必要があります。新規ユーザーの場合は、新規アカウントに300ドル~1200ドル相当のAlibaba Cloudクレジットを獲得できます。ECSインスタンスのセットアップ方法がわからない場合は、こちらのチュートリアルまたはクイックスタートガイドを参照してください。ECSインスタンスは、少なくとも2GBのRAMと2コアプロセッサを搭載している必要があります。
- Alibaba Cloudから登録されたドメイン名。すでにAlibaba Cloudまたは他のホストからドメインを登録している場合は、そのドメインネームサーバーレコードを更新することができます。
-
ドメイン名は、あなたのAlibaba Cloud ECSのIPアドレスを指している必要があります。
- Alibaba CloudのVNCコンソールまたはPCにインストールされているSSHクライアントにアクセスします。
- サーバーのホスト名を設定し、root権限を持つユーザーを作成します。
サーバーの設定
パッケージのインストールを進める前に、以下のコマンドを使用してUbuntuシステムをアップデートしてください。このコマンドを実行するには、root 以外のユーザから sudo 権限でログインすることを忘れないでください。
# sudo apt update && sudo apt upgrade
Docker CEをインストールするためには、サポートされているファイルを取得するためにsoftware-properties-commonパッケージが必要です。software-properties-commonをインストールするには、以下のコマンドを実行します。
# sudo apt-get install software-properties-common -y
Docker CEのインストールには、Apt-transport-https、ca-certificates、curlが必要です。これらをインストールするには、以下のコマンドを実行します。
# sudo apt-get install apt-transport-https -y
# sudo apt-get install ca-certificates -y
# sudo apt-get install curl -y
Docker CEとDocker Composeのインストール
以下のコマンドを実行して、Docker用のGPGキーを追加します。
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
以下のコマンドを実行して、GPG キーのフィンガープリントを確認します。
# sudo apt-key fingerprint 0EBFCD88
以下のコマンドを実行してDockerリポジトリを追加します。
# sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
以下のコマンドを実行してシステムをアップデートし、追加されたリポジトリをロードします。
# sudo apt update
以下のコマンドを実行してDockerをインストールします。
# sudo apt install docker-ce
以下のコマンドを実行して、ユーザ名をdockerグループに追加します。
# sudo adduser aareez docker
現在のシェルセッションを閉じて、新しいセッションを開始してください。そうしないとDockerを実行できず、パーミッションエラーが表示される可能性があります。
以下のコマンドを実行して、dockerが正しく実行されているかどうかを確認します。
# docker run hello-world
Docker Composeをダウンロードしてインストールするには、以下のコマンドを実行します。
# sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Docker Composeファイルのパーミッションを設定するには、以下のコマンドを実行します。
# sudo chmod +x /usr/local/bin/docker-compose
Mastodonをインストール
以下のコマンドを実行して、GitリポジトリからMastodonをクローンします。
# git clone https://github.com/tootsuite/mastodon
以下のコマンドを実行して、ダウンロードしたディレクトリに移動してください。
# cd mastodon
以下のコマンドを実行して、.env.production.sampleを.env.productionにコピーします。
# cp .env.production.sample .env.production
秘密鍵を生成するには、Dockerイメージをビルドして実行する必要があります。ビルドするには、以下のコマンドを実行します。
# docker-compose build
Dockerイメージの構築に成功しました。設定に必要な3つの秘密鍵を生成する必要があります。SECRET_KEY_BASEを生成するには、以下のコマンドを実行します。
# SECRET_KEY_BASE=$(docker-compose run --rm web bundle exec rake secret)
以下のコマンドを実行して、.env.productionファイルにSECRET_KEY_BASEの値を挿入します。
# sed -i -e "s/SECRET_KEY_BASE=/&${SECRET_KEY_BASE}/" .env.production
OTP_SECRETを生成するには、以下のコマンドを実行します。
# OTP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
以下のコマンドを実行して、.env.productionファイルにSECRET_KEY_BASEの値を挿入します。
# sed -i -e "s/OTP_SECRET=/&${OTP_SECRET}/" .env.production
PAPERCLIP_SECRETを生成するには、以下のコマンドを実行します。
# PAPERCLIP_SECRET=$(docker-compose run --rm web bundle exec rake secret)
以下のコマンドを実行して、.env.productionファイルにPAPERCLIP_SECRETの値を挿入します。
# sed -i -e "s/PAPERCLIP_SECRET=/&${PAPERCLIP_SECRET}/" .env.production
LOCAL_DOMAINの値を更新する必要があります。そのためには、テキストエディタで.env.productionファイルを開く必要があります。以下のコマンドを実行して、.env.productionファイルを開きます。
# sudo nano ~/mastodon/.env.production
LOCAL_DOMAIN変数を見つけ、その値をexample.comからECSのドメイン名またはIPアドレスに変更し、更新したファイルを保存します。
mastodonに移動します。
# cd mastodon
上記で変更したので、再度Dockerイメージをビルドする必要があります。ビルドするには、以下のコマンドを実行します。
# docker-compose build
を実行してマイグレーションを実行します。
# docker-compose run --rm web rails db:migrate
物事をよりスムーズにするためには、アセットを事前にコンパイルする必要があります。そのためには、以下のコマンドを実行します。
# docker-compose run --rm web rails assets:precompile
以下のコマンドを実行してコンテナを実行します。
# docker-compose up -d
Nginxサーバーのインストールと設定
Nginxの設定を作成してMastodonを動作させ、SSL証明書をインストールするには、Nginxサーバーをインストールする必要があります。
以下のコマンドを実行してnginxサーバーをインストールします。
# sudo apt-get install nginx
以下のコマンドを実行して、デフォルトサイトのNginx設定を削除する必要があります。
# sudo rm /etc/nginx/sites-available/default
以下のコマンドを実行して、デフォルトサイトのシンボリックリンクを削除します。
# sudo rm /etc/nginx/sites-enabled/default
以下のコマンドを実行して、Mastodon用のNginx設定ファイルを作成します。
# sudo touch /etc/nginx/sites-available/mastodon
以下のコマンドを実行して、Mastodonのシンボリックリンクを作成します。
# sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
以下のコマンドを実行して、Mastodon Nginxの設定ファイルをnanoのテキストエディタで開きます。
# sudo nano /etc/nginx/sites-available/mastodon
開いているファイルに以下のテキストをコピーペーストし、変更内容を保存します。
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name softpedia.xyz;
root /home/mastodon/live/public;
# Useful for Encrypt
location /.well-known/acme-challenge/ { allow all; }
location / { return 301 https://$host$request_uri; }
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name softpedia.xyz;
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/softpedia.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/softpedia.xyz/privkey.pem;
keepalive_timeout 70;
sendfile on;
client_max_body_size 80m;
root /home/mastodon/live/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 /sw.js {
add_header Cache-Control "public, max-age=0";
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証明書をインストール
Let's Encrypt with Certbotを使ってSSL証明書をインストールします。そのためには、以下の手順を実行します。
パッケージを更新します。
# sudo apt-get update
software-properties-commonをインストールします。
# sudo apt-get install software-properties-common.
以下のコマンドを使用して、サートボットのリポジトリを追加します。
# sudo add-apt-repository ppa:certbot/certbot
追加された certbot リポジトリを読み込むようにパッケージを更新します。
# sudo apt-get update
SSL証明書発行前にapacheを停止します。
# sudo systemctl stop apache2
以下のコマンドでpython-certbot-apacheをインストールします。
# sudo apt-get install python-certbot-apache
以下のコマンドを実行して、Let's Encrypt SSLを発行してもらいます。
# sudo certbot --apache -d softpedia.xyz
オプション2を選択してリンクをhttpsにリダイレクトし、SSLのバーチャルホスト設定を更新します。apacheサーバを再起動します。
# sudo systemctl start apache2
あなたのウェブサイトにアクセスするには、https://your_domain_name.tld
これで完了です。Alibaba Cloud ECSサーバーにMastodonをインストールすることに成功しました。データベースのデフォルトパスワードを変更し、管理者アカウントを設定することで安全にインストールできます。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ
Author And Source
この問題について(Ubuntu 16.04をインストールしたAlibaba Cloud ECS上でDockerを使ってMastodonを設定する), 我々は、より多くの情報をここで見つけました https://qiita.com/KentOhwada_AlibabaCloudJapan/items/2fcab282d993b5c0bdfe著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .