Mastodonって何?
2016年10月に公開された新しいタイプのSNS.それが,2ヶ月前の4月から爆発的にユーザ数が増え云々等という詳しい情報はWikipediaを見て戴くとして,誰でも自前のインスタンスを立ち上げられるというのが最大の特徴.
いつも通り(直ぐ挫折するくせに・・・)「取りあえずやってみよう」と言う軽い気持ちで,私もこの新SNS,Mastodonのインスタンスを立てて見ました.
SNSのインスタンスを立てるには,最低限「インターネットに繋がるサーバ」を確保する必要があるのですが,これが結構コストが掛かります.まぁ,RaspberryPiでThe Internetに常時接続と言う猛者も居られますが・・・
常時接続を個人のPCで運用するには,かなり敷居が高そう(って,30年以上前には運用してましたが^^;)なので,VPSを借りることに.
VPSの用意
さくらのVPSが最も有名で,始めやすそうですが,可能な限りコストを抑えたい私としては,無料の環境をと言う事で,GCP(Google Cloud Platform)のサービス,GCE(Google Compute Engine)を利用させて戴きました.
制約内で使う分にはAlways Freeとのことで以下の構成になります.非常にチープです.
- マシンタイプ f1-micro
- 仮想CPUコア 1
- メモリー 0.60GB
- HDD 25GB
リージョンがus限定だという事なので,
- ゾーン us-west1-a
OSイメージは,何でも御座れと言わんばかりなリストの中から,最近は使わなくなったモノの少しは理解できるUbuntuを選択(ver 17.04は2018/01でサポート切れ).その他いろいろ設定.
- OS Ubuntu 16.04LTS
- 外部IP エフェメラルを固定IP予約取得に・・・直ぐに割当完了
- firewall HTTP,HTTPSにチェック
ひとまずこれで,最低限のVPS環境は手に入りました.
ここで,今回お世話になった(参考にさせて戴いた)サイトをまとめておきます.有り難うございました.下記以外にも一見させて戴いたサイトは数知れず・・・併せて,有り難うございました.
- さくらのVPSで自分の Mastodon サーバを最速でつくる方法
- Production guide ・・・ 以下,単に「マニュアル」.
- さくらの VPS + CentOS7 で 俺専用 Mastodon インスタンスを立ててみた話
- MastodonをGoogle Cloud Platformで構築する
- Let's Encrypt 総合ポータル
- User Guide - Certbot 0.15.0.dev0 documentation
- v1.4.1 リリースノート
- Mastodonマストドンのアップデート方法メモ
SSH接続後に最初に行うこと
1.スワップ確保
メモリーが0.6GBしかないので何はともあれスワップ領域が絶対に必要!
$ sudo fallocate -l 4G /swapfile $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile $ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab $ cat /proc/swaps
2.パッケージの更新
$ sudo apt-get update $ sudo apt-get upgrade
いよいよMastodon環境造り
1.依存パッケージのインストール
$ sudo apt-get install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev nodejs file git curl $ curl -sL https://deb.nodesource.com/setup_4.x | sudo bash - $ sudo apt-get install nodejs $ sudo npm install -g yarn
2.Redis のインストール
$ sudo apt-get install redis-server redis-tools
3.Postgres のインストールとセットアップ
$ sudo apt-get install postgresql postgresql-contrib
postgresユーザとなって,MastodonのユーザとDBのセットアップ.
$ sudo su - postgres postgres$ psql psgl (9.5.6) Type "help" for help.
から,postgres端末に入り,
postgres=# CREATE USER mastodon CREATEDB; CREATE ROLE postgres=# \q postgres$ exit
この部分は,最新のマニュアルではこうなっている.
$ sudo -u postgres psql postgres=# CREATE USER mastodon CREATEDB; \q
4.Ubuntu 16.04以前の要求事項
マニュアル内で,以下の指示があるので,
Under Ubuntu 16.04, you will need to explicitly enable ident authentication so that local users can connect to the database without a password:
$ sudo sed -i '/^local.*postgres.*peer$/a host all all 127.0.0.1/32 ident' /etc/postgresql/9.?/main/pg_hba.conf $ sudo apt-get install pidentd $ sudo systemctl enable pidentd $ sudo systemctl start pidentd $ sudo systemctl restart postgresql
5.rubyの実行環境セットアップ
ここから先は別サイトの説明文を見ながらになるので,ちょっとスキルが必要.私は何度も転けた.
事前準備として,以下,諸々をインストール.
$ sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
次いで,Rbenvのインストール作業に入りますが,ここで始めて【mastodonユーザの追加】を行い,mastodonユーザで作業を行います.パスワード無しがミソ.
$ sudo adduser --disabled-password --disabled-login mastodon ? $ sudo su - mastodon
いよいよrbenvのインストール.
mastodon$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
マニュアルでは,高速対応オプションとして,以下の設定を勧めている.失敗しても良いらしいが,私の場合は成功した(様に思う).
mastodon$ cd ~/.rbenv && src/configure && make -C src
またまた,Ubuntu Desktop note: Modify your ~/.bashrc instead of ~/.bash_profile.と指示されているので,以下の設定では.bash_profileでは無く,.bashrcを使用.
mastodon/.rbenv$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc mastodon/.rbenv$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
ここで一旦,シェルの再起動をしておく.
mastodon/.rbenv$ source ~/.bashrc
以下のコマンドでrbenvの定義らしきモノが表示されれば,インストールの確認完了.
mastodon/.rbenv$ type rbenv
ここで,念のためにrbenvを最新にしておくと良いとのこと.
mastodon/.rbenv$ git pull
Rubyをインストールするためのプラグイン,ruby-buildのインストール.
mastodon/.rbenv$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
ここでも,念のためにruby-buildを最新にしておく.
mastodon/.rbenv$ cd ~/.rbenv/plugins/ruby-build mastodon/.rbenv/plugins/ruby-build$ git pull
やっとここで,rubyのインストールとなる.この手順を間違うと,後々厄介.
mastodon/.rbenv/plugins/ruby-build$ cd ~/.rbenv mastodon/.rbenv$ rbenv install 2.4.1 mastodon/.rbenv$ rbenv rehash mastodon/.rbenv$ rbenv global 2.4.1
mastodon のインストール
1.mastodonを取り込む
liveに移動することを忘れずに.
mastodon/.rbenv$ cd ~ mastodon$ git clone https://github.com/tootsuite/mastodon.git live mastodon$ cd live mastodon/live$ git checkout $(git tag | tail -n 1)
2.プロジェクトの依存関係をインストール
yarn installに[--pure-lockfile]が必要になったので,ここも注意.
mastodon/live$ gem install bundler mastodon/live$ bundle install --deployment --without development test mastodon/live$ yarn install --pure-lockfile
3.設定ファイルのコピー
mastodon/live$ cp .env.production.sample .env.production
4.秘密鍵を生成(要コピー):3回分
mastodon/live$ rake secret mastodon/live$ rake secret mastodon/live$ rake secret
5..env.production の要変更内容
mastodon/live$ vim .env.production
REDIS_HOST=(localhost or 127.0.0.1 )
DB_HOST=localhost or 127.0.0.1
DB_USER=mastodon
DB_NAME=mastodon ← マニュアルでは mastodon_production
DB_PATH=(空欄)
DB_PORT=5432
LOCAL_DOMAIN=(取得済のドメイン名)
LOCAL_HTTPS=false ← 後で,true に
PAPERCLIP_SECRET= (rake secret 1個目の結果)
SECRET_KEY_BASE= (rake secret 2個目の結果)
OPT_SECRET= (rake secret 3個目の結果)
SINGLE_USER_MODE=true
DEFAULT_LOCALE=ja
SMTP_SERVER=(実は何でもよい・・・)
SMTP_PORT=587
SMTP_LOGIN=(適当に)
SMTP_PASSWORD=(要注意)
SMTP_FROM_ADDRESS=(まぁ,これもそれなりに)
SMTP_OPENSSL_VERIFY_MODE=none
SMTP_DOMAIN=(これも適当)
※ SMTP関係は適当にしていますが,[SINGLE_USER_MPDE]で運用しますので,ユーザアカウントも手動で登録します.
6.データベースの初期化
mastodon/live$ RAILS_ENV=production bundle exec rails db:setup
7.CSS,JavaScript の生成
mastodon/live$ RAILS_ENV=production bundle exec rails assets:precompile
(su 出来るユーザに戻る)
mastodon/live$ exit
8.systemd 関連の設定
以下のファイルを作成し,マニュアルの内容を貼りつける
$ sudo touch /etc/systemd/system/mastodon-web.service $ sudo touch /etc/systemd/system/mastodon-sidekiq.service $ sudo touch /etc/systemd/system/mastodon-streaming.service
【各サービスの起動設定+起動】
$ sudo systemctl enable /etc/systemd/system/mastodon-*.service $ sudo systemctl start mastodon-web.service mastodon-sidekiq.service mastodon-streaming.service
http/httpsサーバ環境構築
1.nginx のインストール
この時点までに GCP 側でファイアウォールルールに tcp:3000 を設定し,インスタンスに設定したネットワークタグを追加しておく
$ sudo apt-get install nginx
※ http://(ドメイン名):3000 → http://(ドメイン名):3000/admin で「Mastodon」画面表示
2.Nginx設定ファイルの作成
$ sudo touch /etc/nginx/conf.d/mastodon.conf $ sudo vim /etc/nginx/conf.d/mastodon.conf
設定をまるごとコピーし,ssl証明書部分のドメイン部分を書き換えてコメントアウト
※ http://(ドメイン名)で,Nginx の画面へ
3.Let's EncryptからSSH/TLS証明書取得
certbotの導入
$ cd /usr/local $ sudo git clone https://github.com/certbot/certbot $ cd certbot
正常インストールの確認
$ ./certbot-auto --help
【証明書の取得】
$ ./certbot-auto certonly --standalone -d (ドメイン名) -m (連絡先メールアドレス) --agree-tos -n
4.Nginx設定ファイル編集
ssl証明書部分をコメントインして加筆
$ cd ~ $ sudo vim /etc/nginx/conf.d/mastodon.conf
※ ssl_dhparam /etc/ssl/certs/dhparam.pem; コメントアウト!
註:2017/06/09時点では,マニュアルから削除されているが,後ほど投稿する記事の通り,この設定を生かすことで,SSL Server Testの評価が上がる.
$ sudo su - mastodon mastodon$ cd live mastodon@live$ vim .env.production
LOCAL_HTTPS=true に戻すして,サーバを再起動.
mastodon@live$ exit $ sudo systemctl reload nginx
※ GCP 側でインスタンスに設定したネットワークタグを削除しておく
管理者権限のユーザ登録
1.ユーザ登録
ユーザ登録でログイン画面に移るが,メール送信が機能していないと確認メールは届かないので,ユーザーを手動で有効にする
※ メール機能が有効ならこの操作は不要
$ sudo su - mastodon mastodon$ cd live mastodon@live$ RAILS_ENV=production bundle exec rails mastodon:confirm_email USER_EMAIL={user e-mail} mastodon@live$ exit
なお,未確認ユーザを一括消去するなら以下のコマンドを.
RAILS_ENV=production rake mastodon:users:clear
2.管理者設定・・・未確認ユーザでも登録されていれば昇格可能
$ sudo su - mastodon mastodon$ cd live mastodon@live$ RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME={username}
Mastodonの管理画面
で,設定画面に・・・(設定からは[管理]→[サイト設定])
・[新規登録を受け付ける] 有効 → 無効
ぐらいは最低限設定しておこう・・・
※ 次回からは
でOK?
実は未だ,いろいろ微調整が必要なようですが,それはまた別の記事で・・・
コメント