HackMD 설치와 HTTPS화까지
docker에 딱 좋은 가 있었으므로 이것을 사용하게 합니다.
HackMD를 소스로부터 넣으면, 빌드에 메모리 2GB를 요구되므로 t2.medium당으로 하지 않으면 안 되는 것도 무료 프레임 유저에게는 난점이군요.
HTTPS화는 Let's Encrypt 를 사용하게 합니다.
환경
Amazon Linux AMI 2017.09.1
SG에서 HTTP, HTTPS, SSH만 열어 둡니다.
・HTTPSL화까지 하고 싶은 경우, 도메인은 준비해 두어 주세요
설치
# gitとdocker
sudo yum update -y && sudo yum install -y git docker
# docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker hackmd image를 받고 컨테이너 시작
git clone https://github.com/hackmdio/docker-hackmd.git
cd docker-hackmd && git pull
# dockerの起動
sudo service docker start
sudo docker-compose up
# sudo: docker-compose: コマンドが見つかりません が出た場合
# 一時的にrootのPATHに/usr/local/binを追加して実行
sudo su
PATH=`echo $PATH`:/usr/local/bin
docker-compose up
# 10分くらい待ちます
일단 움직이고 있는지 확인
curl -X GET http://localhost:3000
HTML 같은 것이 돌아오고 있는 것을 확인할 수 있으면 OK입니다.
Nginx 설치 및 설정 (먼저 HTTP에서)
sudo yum install -y nginx
sudo vim /etc/nginx/nginx.conf
/etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
index index.html index.htm;
server {
listen 80 default_server;
server_name サーバのIPアドレス;
location / {
proxy_pass http://localhost:3000;
}
}
}
# 再起動
sudo service nginx restart
브라우저에서 액세스할 수 있는지 확인
여기까지도 전혀 사용할 수 있으므로, 도메인 설정하지 않는 경우는 완료입니다.
Route53 설정
이것으로 설정 완료. 브라우저에서 액세스할 수 있는지 확인.
네임서버 설정은 가끔 반영에 시간이 걸리는 것 같습니다만, 지금까지 괴롭힌 느낌이라고 대체로 1분도 걸리지 않고 완료하고 있습니다.
HTTPS화하지 않으면 여기까지 완료입니다.
인증서 받기
@ MashMorgan 님의 게시물 참고
# Let's Encryptのクライアント入れる
sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
sudo chmod 700 /usr/bin/certbot-auto
# 証明書取得(domainとmail-addressは各自置き換えて下さい)
sudo certbot-auto certonly -d {domain} --email {mail-address} --debug
# 上のコマンドを投げるといくつか質問るので答えていきます
##### 1. インストール確認 > y
総ダウンロード容量: 32 M
インストール容量: 61 M
Is this ok [y/d/N]: y
# インストールのログ
完了しました!
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Failed to find executable apachectl in expanded PATH: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
##### Apacheがいないと怒られる > 1のNginx
How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Nginx Web Server plugin - Alpha (nginx)
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
-------------------------------------------------------------------------------
Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 1
Plugins selected: Authenticator nginx, Installer None
##### 利用規約的なものに同意 > A
-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A
##### メールアドレスを共有?するか聞かれる > お好みで
-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: N
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for mathemac.net
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/mathemac.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/mathemac.net/privkey.pem
Your cert will expire on 2018-06-15. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
# ここまでで完了
HTTPS 설정
검색된 인증서를 Nginx로 설정
# 設定ファイル編集
sudo vim /etc/nginx/nginx.conf
/etc/nginx/nginx.conf
# serverディレクティブ以下のみ変更
server {
listen 443 ssl;
server_name ドメイン;
ssl_certificate /etc/letsencrypt/live/ドメイン/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ドメイン/privkey.pem;
ssl_session_cache shared:le_nginx_SSL:1m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:3000;
}
}
# 再起動
sudo service nginx restart
이제 HTTPS에 액세스할 수 있습니다.
덤 Basic 인증
Basic 인증도 약한 약하다고 합니다만, 최악 엿보인 곳에서 곤란한 내용을 쓸 예정도 없기 때문에 이것 정도로 우선.
Takafumi Yamano 님의 블로그 참고
# htpasswdコマンドインストール
sudo yum install -y httpd-tools
# パスワードファイル置き場
sudo mkdir /etc/nginx/httpasswd
# htpasswdファイル作成(パスワード入力を求められるので入力)
sudo htpasswd -c /etc/nginx/httpasswd/.htpasswd username
New password:
Re-type new password:
Adding password for user username
# Nginxの設定ファイル編集
sudo vim /etc/nginx/nginx.conf
/etc/nginx/nginx.conf
# locationディレクティブ以下のみ変更
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/httpasswd/.htpasswd;
proxy_pass http://localhost:3000;
}
# 再起動
sudo service nginx restart
이제 Basic 인증이 걸렸으므로 로그인합니다.
마지막으로
Nginx의 보안 설정이나 Let'sEncrypt의 자동 업데이트는 나중에 작성하거나 다른 기사를 작성합니다.
HackMD라고 작성한 페이지의 정보를 볼 수 있는 기능은 없습니까, 이력 이외로. 최악의 포스그레의 컨테이너 들여다보면 확인할 수 있을 것 같습니다만,
Reference
이 문제에 관하여(HackMD 설치와 HTTPS화까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KosukeJin/items/bb0daaed9f058439e225텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)