徒然なるままに プログラミングメモや日々の生活などつれづれとつづっていくblog

2017年4月20日

Mastodonをバージョンアップする

Filed under: 未分類 — ranpei @ 8:13 PM

この前v1.2.0が出たと思ったら

もうv1.2.2になってたのでサクッと更新しました。

※ docker環境での運用前提となります。

 

1.Mastodonリポジトリに移動


# cd mastodon

 

2.最新リポジトリを取り込みタグv1.2.2をチェックアウト


# git fetch

# git checkout -b 1.2.2 refs/tags/v1.2.2

 

3.コンテナの再ビルド


# docker-compose build web

# docker-compose build streaming

# docker-compose build sidekiq

 

4.DBを更新


# docker-compose run --rm web rails db:migrate

 

5.静的リソース(CSSや画像など)を更新


# docker-compose run --rm web rails assets:precompile

 

6.コンテナ起動


# docker-compose up -d

 

 

こんな感じでサクッと終わるのがDockerの良いとこです。

Mastodonで現在接続中のインスタンス一覧を取得する

Filed under: Docker,Mastodon — ranpei @ 1:33 AM

aboutなら接続中インスタンスの”数”ならわかるんですが、

実際どんなドメインと接続しているか知りたい場合に調べる方法です。
うちはdocker環境で運用していますが、PostgreSQLに接続してSQL叩ければOKです。

■ 接続ドメインの一覧を取得

# docker exec -it mastodon_db_1 bash
# psql -U postgres
# select * from (select distinct domain from accounts) as domains;
          domain
---------------------------
 social.targaryen.house

 mastodon.potproject.net
 gs.yvt.jp
 cksv.jp
 mstdnjp.wipiano.net
 mastodon.noraworld.jp
 pawoo.net
 z-socialgame.mstdn.cloud
 mstdn.h3z.jp
 mstdn.techdrive.top
 mstdn.hakai-macaron.com
 js4.in
 yontengop.com
 unnerv.jp
 mstdn.club
 md.ggtea.org
 friends.nico
 7144.party
 ostatus.ikeji.ma
 gnusocial.cardina1.red
 octodon.social
 cybre.space
 mastodon.social
 im-in.space
 mstdn-workers.com
 kero.ccsakura.jp
 m6n.onsen.tech
 mstdn.maud.io
 mstdn.kemono-friends.info
 mstdn.social
 boitam.eu
 mstdn.io
 mstdn.sanin.club
 mastodon.2502.net
 mastodon.paas.jp
 mstdn.nere9.help
 mstdn.nukaya.net
 mastodon.juggler.jp
 mstdn.mobilehackerz.jp
 mastodon.motcha.tech
 m.sighash.info
 jp-mstdn.com
 mastodon.cloud
 mstdn.aoitofu.net
 toot.mst-dn.me
 mdn.hinaloe.net
 mastodon.yumulab.org
 mstdn.jp
 mstdn.7kry.net
 ostatus.isidai.com
 pao.moe
 toot.kashishokunin.com
 mstdn.uec.tokyo
 oransns.com
 mstdn.haun.jp
 gs.smuglo.li
 mastodon.oresys.nagoya
 toot.yukimochi.jp
(59 rows)

空行が出てますがこれはローカルユーザーですので 59 – 1 = 58で接続インスタンス数にマッチしました。

 

追記)

v1.2.2で管理画面にUIが追加になりました。

https://github.com/tootsuite/mastodon/releases

  • List of known instances in admin UI (#2095)

 

2017年4月18日

Mastodonの永続化を忘れた場合の対処

Filed under: 未分類 — ranpei @ 8:32 PM

Mastodonの永続化をうっかり忘れた場合に

データを保ったまま永続化する手順です。

 

 

やり方は簡単で2種類のDBのバックアップを取り、

volumeの設定を施して再ビルドした後レストアするだけになります。

 

■バックアップ

・PostgreSQLのバックアップ


# docker exec mastodon_db_1 pg_dump -U > db_dump.sql

・Redisのバックアップ


# docker exec mastodon_redis_1 redis-cli save

# docker cp mastodon_redis_1:/data/dump.rdb redis_dump.rdb

 

■レストア

・PostgreSQL


# docker cp db_dump.sql mastodon_db_1:/tmp/dump.sql
# docker exec mastodon_db_1 bash -C "psql -U /tmp/dump.sql"

・Redis

# docker stop mastodon_redis_1
# docker run -it -v redis_dump.rdb:/data/redis_dump.rdb mastodon_redis_1 /bin/bash
# docker start mastodon_redis_1

 

 

 

P.S 半分記憶を頼りに書いてるので誤りがあれば連絡ください。

Mastodonインスタンスの立て方おさらい

Filed under: Docker,Mastodon — ranpei @ 8:04 PM

前回はさらっと流したけど、設定の足りていない部分などもあって

ちょくちょくいじっていたので整理も含めておさらいしてみます。

なお、構築環境は CentOS 7.0 (64bit)で以下はすでにあるものとして話しを進めます。

  • 外部送信可能なメールサーバー
  • 独自ドメイン

 

■Mastodonインスタンスの構築

・前提条件

Docker、Docker-Compose、Gitがインストール済みであること(なければここを参考にインストールしてください。)

・構築手順

1. 任意の場所にGitリポジトリをClone


# git clone https://github.com/tootsuite/mastodon.git

2. データ永続化

# cd mastodon
# vi docker-compose.yml
-----------------------------------------------------------
# volumes:
# - ./postgres:/var/lib/postgresql/data
  ↓ コメントを外す
 volumes:
 - /opt/mastodon/postgres:/var/lib/postgresql/data

# volumes:
# - ./redis:/data
  ↓ コメントを外す
 volumes:
 - /opt/mastodon/redis:/data
-----------------------------------------------------------

単にコメントを除去するだけでも良いのですが、
事故防止のためリポジトリの外に保存するようにしています。

 

3. 本番設定ファイルを編集


# cp .env.production.sample .env.production
# vi .env.production

-----------------------------------------------------------
LOCAL_DOMAIN=[独自ドメイン]
LOCAL_HTTPS=false ← いったんHTTPとしておきます(Nginx設定時に書き換えます)

PAPERCLIP_SECRET=[docker-compose run --rm web rake secretの実行結果(1回目)]
SECRET_KEY_BASE=[docker-compose run --rm web rake secretの実行結果(2回目)]
OTP_SECRET=[docker-compose run --rm web rake secretの実行結果(3回目)]

SMTP_SERVER=[SMTPサーバー]
SMTP_PORT=[SMTPポート]
SMTP_LOGIN=[SMTP認証ユーザー]
SMTP_PASSWORD=[SMTP認証パスワード]
SMTP_FROM_ADDRESS=[送信メールアドレス] ← このアドレスで通知メールが送られます
-----------------------------------------------------------

※ PAPERCLIP_SECRET、SECRET_KEY_BASE、OTP_SECRETに注意が必要です。
それぞれに別々のキーが必要なため生成コマンドを計3回実行して別々のキーを設定してください。

 

4. Dockerコンテナのビルド

# docker-compose build

 

5. 初期データ構築(DBテーブルや静的ファイルなど)

# docker-compose run --rm web rails db:migrate ← DB構築(正確にはDBマイグレーションというらしい)
# docker-compose run --rm web rails assets:precompile ← 静的ファイル作成みたい

6. Dockerコンテナ群の起動

# docker-compose up -d

“# docker ps -a”で5つのコンテナすべてが「UP」となっていることを確認後、
ブラウザを開き http://[ドメイン or IP]:3000 で画面が表示されることを確認しましょう。

 

■Nginxの設定(SSL対応)

・前提条件

Nginx、Gitがインストール済み

・構築手順

1. Let’s Encryptのインストール

# git clone https://github.com/letsencrypt/letsencrypt.git
# cd letsencrypt
# ./letsencrypt-auto --help ← これで必要なパッケージがインストールされる

 

2. 証明書作成

# git clone https://github.com/letsencrypt/letsencrypt.git
# cd letsencrypt
# ./letsencrypt-auto --help ← これで必要なパッケージがインストールされる
 ※初めての場合は途中で規約同意とメールアドレスを求められますので入力します。

生成が完了すると /etc/letsencrypt/archive/[独自ドメイン]/ 配下に必要ファイルが生成されています。

3. Nginxの設定(VirtualHost)

# cd /etc/nginx/conf.d
# vi [独自ドメイン].conf
 -----------------------------------------------------------
 server {
  listen 80;
  listen [::]:80;
  server_name [独自ドメイン];
  return 301 https://$host$request_uri;
 }
 server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name [独自ドメイン];
 
  ssl_certificate /etc/letsencrypt/archive/[独自ドメイン]/fullchain1.pem;
  ssl_certificate_key /etc/letsencrypt/archive/[独自ドメイン]/privkey1.pem;

  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Forwarded-Host $http_host;
  proxy_set_header X-Forwarded-Server $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_read_timeout 600s;
  proxy_connect_timeout 10s;
 
  location / {
   proxy_set_header Host $host;
 
   proxy_pass http://127.0.0.1:3000/;
   proxy_redirect http://127.0.0.1:3000/ https://$host/;
 
   proxy_redirect default;
  }
  location /api/v1/streaming { ← 初期の手順では抜けてることが多いです。
   proxy_set_header Host $host;
   proxy_set_header Proxy "";
   proxy_http_version 1.1;
   proxy_set_header Upgrade "upgrade";
   proxy_set_header Connection $connection_upgrade;
 
   proxy_pass http://127.0.0.1:4000;
   proxy_redirect http://concrete https://$host;
 
   tcp_nodelay on;
  }
 }
 -----------------------------------------------------------

あくまでメモなので最小限ですが公式に設定ファイルのサンプルがありますので、
そちらを編集した方がよいでしょう。

 

4. 本番設定ファイルを編集

# vi .env.production
 -----------------------------------------------------------
 //確認のためHTTPとしていた箇所をHTTPSオンリーに変更します。
 LOCAL_HTTPS=false
  ↓
 LOCAL_HTTPS=true
 -----------------------------------------------------------

 

5. 設定反映

# docker-compose up -d ← これで.env.productionファイルが反映されます(再ビルドの必要はありません)
# service nginx restart

ブラウザを開き https://[独自ドメイン] で画面が表示されることを確認しましょう。

 

以上が今までやってきたことのまとめになります。

2017年4月15日

Mastodonインスタンス(サーバー)を構築してみる

Filed under: Docker,Mastodon — ranpei @ 8:53 PM

ここ数日何やらMastodonというのが話題となっているらしく、

新しいもの好きとして早速試してみました。

 

 

当サーバーはDocker導入済みのため、

GitHubからCloneして、GitHub上説明をもとに構築するとサーバー構築自体はあっさりと終わりました。

やはりこういうところがDockerの強みだな・・と改めて思いましたね。(唐突な所感w)

 

ただ、アカウントを作成しようとしたところで少し躓きましたのでメモ。

 

■発生した問題

Mastodonにアカウントを登録すると確認メールが送信されてくるのですが、

なぜかそのメールがいくら待っても送られてこないのです。

 

自前のメールサーバーに問題があるのか?と思い調べてみても

コマンドやメールクライアントからの送信は普通にできるため

何が原因だろうと思っていたら以外な方法で解決してしまいました。

 

■解決した方法

この問題、メールサーバーをIPアドレスで指定せず、ドメインで指定することで送られるようになりましたw

 

実装がどうなっているかわかりませんが、

設定ファイルのコメントで外部メールサーバー(https://sparkpo.st/smtp)の利用を推奨しているので

IPアドレスで接続するのはそもそも想定していない?のか??

 

まあ、何はともあれこれで利用できるようになったのでいいとしますか。(内部DNS作っててよかった~)

 

以下のドメインで公開しておりますので試しに触ってみたいという方はどうぞ

https://mstdn-jp.site/

 

 

P.S

メールに関して少し調べると「メール送信の遅延」が確認されているとのことですが、

私の勝手な想像ですが、みんなsparkpo.stを使うもんだからアクセス数が増大して

遅延してるんじゃないんですかね・・・

Powered by WordPress