EC2+Docker로 자신의 도메인에 대한 Mastodon 구축
환경
EC2
기타
도메인 DNS
레지스트라에 GoDaddy를 사용하는 경우.
DNS 설정에서 A 레코드를 추가하고 Elastic IP로 이동합니다.
www.
등도 사용하는 경우는 CNAME 레코드도 추가.이름 확인할 수 있는지 확인합니다.
$ dig $DOMAIN @8.8.8.8
메일 관련
등록 시 메일 전달을 위한 설정에 Mailgun을 사용하는 경우.
Mailgun에서 도메인을 추가하면
에서
Default SMTP Login
/Default Password
를 확인하세요. (나중에 사용)계속해서
Domain Verification & DNS
의 TXT,MX 의 레코드 설정을 확인.이 4건을 레지스트라측에서 추가한다.
완료되면 Mailgun에서 도메인이 Verify되어 메일을 보낼 수있게된다.
Certbot
Let's Encrypt의 무료 SSL 인증서를 받으세요.
환경(이번에는 Ubuntu16.04 x nginx)에 맞춘 설치 지침을 읽는다.
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot
$ certbot --version
certbot 0.11.1
잘하면 한 번 밖에 사용하지 않지만, 사용법을 일단 봐 둔다.
$ certbot -h
다음의 명령 실행은 몇번이나 설정 불량으로 에러가 되면 일정 시간 잠겨 버리므로 주의.
도메인 이름 확인이 가능한지, 보안 그룹에서 포트 443번이 비어 있는지 확인한다.
도메인은 쉼표는 씨로 복수 지정 가능.
$ sudo certbot certonly --standalone -d $DOMAIN,$DOMAIN2,...
$ sudo ls -R /etc/letsencrypt/live/
도커
보통으로
rails s
하는 것만으로도 대략의 움직임 확인은 할 수 있지만, docker-compose
를 사용한다.설치하고 부팅까지.
$ sudo apt-get update
$ sudo apt install docker.io
$ docker -v
Docker version 1.12.6, build 78d1802
$ sudo apt install docker-compose
$ docker-compose -v
docker-compose version 1.8.0, build unknown
$ sudo service docker start
$ sudo usermod -aG docker $(whoami)
$ exit
다시 로그인합니다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Mastodon
혼마루의 소스 코드를 취득해, 태그 첨부 버젼으로 전환한다.
$ git clone https://github.com/tootsuite/mastodon
$ cd mastodon
$ git tag | tail -1
v1.2.2
$ git checkout v1.2.2
Docker 컨테이너 그룹 빌드
$ cp .env.production.sample .env.production
$ docker-compose pull
$ docker-compose build
secret 생성
$ docker-compose run --rm web rake secret
$ docker-compose run --rm web rake secret
$ docker-compose run --rm web rake secret
생성된 secret들을 삼가한다.
설정
$ vim .env.production
PAPERCLIP_SECRET
, SECRET_KEY_BASE
, OTP_SECRET
: secret을 설정하십시오 LOCAL_DOMAIN
SMTP_LOGIN
, SMTP_PASSWORD
SINGLE_USER_MODE=true
: 자신 이외의 유저를 만들지 않는 경우는 코멘트 제외해 유효하게 .$ docker-compose run --rm web rake db:migrate
$ docker-compose run --rm web rake assets:precompile
$ docker-compose up -d
$ docker-compose logs -f
...
web_1 | => Booting Puma
web_1 | => Rails 5.0.2 application starting in production on http://0.0.0.0:3000
web_1 | => Run `rails server -h` for more startup options
일어나면 다른 쉘에서
$ curl localhost:3000
<html><body>You are being <a href="https://localhost/">redirected</a>.</body></html>ubuntu@ip-172-30-xx-xxx:~/mastodon
nginx
드디어 종반.
$ sudo apt install nginx-core
$ nginx -v
nginx version: nginx/1.10.0 (Ubuntu)
SSL dhparam
$ sudo cat /etc/nginx/nginx.conf|grep dhparam
ssl_dhparam /etc/ssl/certs/dhparam.pem;
$ sudo openssl dhparam 2048 -out /etc/ssl/certs/dhparam.pem
설정
$ sudo cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.original
$ sudo vim /etc/nginx/nginx.conf
Production Guide 의 설정을 밟아
http
지시어 안에 꽂는다.ssl_certificate
/ssl_certificate_key
server_name
root
syntax check하여 시작.
$ sudo nginx -t -c /etc/nginx/nginx.conf
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo service nginx restart
$ sudo service nginx status
동작 확인
만든 도메인에서 브라우저 액세스하면 무사히 움직였다.
사용자가 등록하면 Sidekiq, Mailgun을 통해 메일이 전송됩니다.
sidekiq_1 | 2017-04-25T17:06:56.110Z 1 TID-gn57hjjrc ActionMailer::DeliveryJob JID-3d44cf5c8890886aae8fc0b5 INFO: done: 3.322 sec
메일을 confirm하면 로그인할 수 있게 된다.
Toot
숙제
Reference
이 문제에 관하여(EC2+Docker로 자신의 도메인에 대한 Mastodon 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satzz/items/362c7bf77931c852facb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)