架設你自己的 mastodon instance

mastodon 是個最近突然爆紅的去中心化的 twitter clone。

mastodon 概念上類似 mail server:每個人都能架設他自己的 instance,每個 instance 之間都能互相溝通,使用者可以跨 instance follow、reply、reblog… 等等。

以下是架設 g0v.social (v1.1.2)過程的筆記:

update: 我已不再用 docker-compose 執行 production 環境。細節請參考 https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Production-guide.md


取得 SSL certificate

參考 let’s encrypt.tw 的詳盡說明。

安裝 nginx、docker、docker-compose

根據你用的 linux distro,參考對應的文件:nginx, docker, docker-compose

取得 mastodon 最新的 release 版本

$ git clone git@github.com:tootsuite/mastodon.git 
$ cd mastodon
$ git fetch --all --tags --prune
$ git checkout tags/v1.2 -b v1.2 # 目前的最新版本是 v1.2

設定 nginx.conf

參考以下範例,其中 <YOUR DOMAIN NAME> , <YOUR CERTIFICATE PATH> , 與 <YOUR MASTODON PATH> 請自行代換。

填入你的設定值後,啟動 nginx

$ nginx -c /PATH/TO/nginx.conf

啟動 mastodon

到你下載的 mastodon 路徑下建立設定檔:

$ cp .env.production.sample .env.production

修改 docker-compose.yml,打開 DB/Redis persistence

https://github.com/tootsuite/mastodon/blob/972f6bc861affd9bc40181492833108f905a04b6/docker-compose.yml#L7-L16

建立 docker image:

$ docker-compose build

打開 .env.production ,填上:

  • LOCAL_DOMAIN: 你的 domain
  • LOCAL_HTTPS : true
  • PAPER_CLIP_SECRET, SECRET_KEY_BASE, OTP_SECRET :執行 `docker-compose run --rm web rake secret 三次,取得三個 secret-key 後分別填在三個欄位內
  • SMTP_* : 註冊 mailgun 後將對應的設定值填過來

最後:

$ docker-compose up

連上你的 domain,應該就能看到登入畫面了。

其他

參考 Production Guide