用AWS的EC2最小的努力来构建Mastodon

    • mastodonをとりあえず動かした時のメモ

 

    今回はAWSというよりミドルより上寄りの話なのでEC2内というかubuntuの話しかしません

Mastodon 是什么?

    • 今トレンドのツイッターみたいなやつ

 

    • dockerとdocker-composeさえあれば一応動く

https://github.com/tootsuite/mastodon

前提条件 (Qiantí

    • AWSのアカウント

 

    • SESの制限解除をしておくと楽

アカウント承認用のメールサーバーは含まれてないので外部か自分でpostfix上げるなり何なりする必要がある
SESの横着した使い方はまた今度

流动

    • EC2を上げる(ubuntuを想定)

 

    • gitでもzipファイルの転送でもなんでもいいのでソースをインスタンスに乗せる

 

    • dockerとdocker-composeをいれる

 

    • postfix でも SES でもなんでもいいのでSMTPのサーバーを上げる

 

    • 設定ファイルを書く

 

    • docker-compose up

 

    以上

梦想

risou.jpg

现实(此页面所涵盖的范围)

新規キャンバス.jpg

操作步骤

ec2.jpg
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
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y python3-pip unzip docker.io
sudo pip3 install docker-compose  #pipでdocker-composeを入れないとyml読み込むときにエラーを吐く
unzip mastodon-master.zip
cd mastodon-master
    • とりあえず動かす為に必要なファイルは

env.production

最初自带源文件中的示例文件进行复制并创建。

cp .env.production.sample .env.production
# Service dependencies この項目はDockerを使うなら触らない
REDIS_HOST=redis
REDIS_PORT=6379
DB_HOST=db
DB_USER=postgres
DB_NAME=postgres
DB_PASS=
DB_PORT=5432

# Federation くせもの
LOCAL_DOMAIN=<自分のドメイン.com>
LOCAL_HTTPS=false  #とりあえずfalseで

# Application secrets 後述
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=

# Optionally change default language
# DEFAULT_LOCALE=de
DEFAULT_LOCALE=ja

# E-mail configuration
# Note: Mailgun and SparkPost (https://sparkpo.st/smtp) each have good free tiers
SMTP_SERVER=<任意のメールサーバー SESなら email-smtp.us-east-1.amazonaws.com とか>
SMTP_PORT=587
SMTP_LOGIN=<ログインID>
SMTP_PASSWORD=<パス>
SMTP_FROM_ADDRESS=<送信元アドレス@自分のドメインとか.com>
#SMTP_DELIVERY_METHOD=smtp # delivery method can also be sendmail
#SMTP_AUTH_METHOD=plain
#SMTP_OPENSSL_VERIFY_MODE=peer
#SMTP_ENABLE_STARTTLS_AUTO=true

##### S3 とかの設定はまたこんど
    • PAPERCLIP_SECRET=

 

    • SECRET_KEY_BASE=

 

    • OTP_SECRET=

 

    は後で書くのでとりあえずビルドする

sudo docker-compose build -> 使用sudo docker-compose build

自分みたいにセコく使ってる t2.nano だとメモリが足りなくてビルドができないので最初のswapの設定とかをしましょうね -> 如果你像我一样使用有点小气的t2.nano,内存不够而无法进行构建,所以让我们进行一些初始的swap设置吧。

t2.nanoだと5分くらいかかるので待ちましょう -> 如果使用t2.nano,可能需要等待约5分钟。

お金持ちは時間を金で買ってください -> 如果你有钱,请用金钱来买时间。

ちなみにこの手順だと sudo しないとdockerをちゃんと読んでくれません -> 顺便一提,按照这个步骤,如果不使用sudo,docker可能无法正确地被读取。

运行以下代码来生成上面三个项目的密钥:
sudo docker-compose run –rm web rake secret
并将结果添加到之前的配置文件中。

PAPERCLIP_SECRET=592859d9exsuggoinagaimojiretudayo8d792a37c1cb14b2c1124nagainagai08afba854bf702aa90aa6da21595c53534ec5f2748f8c06f14227842004314a91
SECRET_KEY_BASE=d792a37c1cb14b2c1sakkitohachigausuggoinagaimojiretudayo8124nagainagai08afba854bf702aa90aa6da21595c53534ec5f2748f8004314a91c06f14227842
OTP_SECRET=14b2c1124koremosakkitochigausuggoinagaimojiretudayo8d792a37c1cbnagainagai08afba854bf702aa90aa6da21595c5306f14227842004314a91534ec5f2748f8c

我会用类似的方式写。

还需要处理一些数据库等的初始设置。

sudo docker-compose run --rm web rails db:migrate
sudo docker-compose run --rm web rails assets:precompile

启动

在查看日志等状态的情况下,通过sudo docker-compose up命令可以使其以守护进程方式运行。然后可以通过访问http://localhost:3000/或者http://<自定义域名>:3000/来查看(请确保安全组已开放3000端口)。

注册管理员

ユーザーを管理者にするときは
sudo docker-compose run –rm web rails mastodon:make_admin USERNAME=<ユーザー名>
って感じで登録してやってください
http://<さっきつくったmastodonのURL>/admin/settings
で管理者用の設定ができます(ページ名とか説明とか)

当你感到困惑时

    もう一回これをやる
sudo docker-compose run --rm web rails db:migrate
sudo docker-compose run --rm web rails assets:precompile

其他

    • 3000にリダイレクトするのが面倒なのでELBを前に置くと楽

 

    • ハマりどころとしては、

https -> ELB -> http -> EC2 とした場合、ユーザー承認メールが https://のリンクになってくれない事ですかね

全然无关紧要,但我喜欢这种东西

redis_1      |                 _._                                                  
redis_1      |            _.-``__ ''-._                                             
redis_1      |       _.-``    `.  `_.  ''-._           Redis 3.2.8 (00000000/0) 64 bit
redis_1      |   .-`` .-```.  ```\/    _.,_ ''-._                                   
redis_1      |  (    '      ,       .-`  | `,    )     Running in standalone mode
redis_1      |  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
redis_1      |  |    `-._   `._    /     _.-'    |     PID: 1
redis_1      |   `-._    `-._  `-./  _.-'    _.-'                                   
redis_1      |  |`-._`-._    `-.__.-'    _.-'_.-'|                                  
redis_1      |  |    `-._`-._        _.-'_.-'    |           http://redis.io        
redis_1      |   `-._    `-._`-.__.-'_.-'    _.-'                                   
redis_1      |  |`-._`-._    `-.__.-'    _.-'_.-'|                                  
redis_1      |  |    `-._`-._        _.-'_.-'    |                                  
redis_1      |   `-._    `-._`-.__.-'_.-'    _.-'                                   
redis_1      |       `-._    `-.__.-'    _.-'                                       
redis_1      |           `-._        _.-'                                           
广告
将在 10 秒后关闭
bannerAds