거기 안전한 자전거 HackMD 서버 구축
                                            
                                                
                                                
                                                
                                                
                                                
                                                 12415 단어  nginxHackMDeditorletsencryptMarkdown
                    
TL;DL
사용하는 것
GitHub Docker HackMD
Nginx
Let's encrypt
절차
 서버 준비
다양한 파일 준비
최종 dirctory 내용
$ ls -la
-rw-r--r-- 1 suecharo suecharo  432 Jul 30 10:10 config.json
-rw-rw-r-- 1 suecharo suecharo  764 Aug  1 10:48 docker-compose.yml
-r--r--r-- 1 root   root   46 Jul 30 09:27 .htpasswd
-rw-r--r-- 1 suecharo suecharo 1228 Jul 30 09:28 nginx.conf
docker-compose.yml
GitHub Docker HackMD 에 있다
docker-compose.yml 그럼 하고 싶은 일이 없었기 때문에 재기록했다docker-compose.yml
version: '3'
services:
  app:
    image: hackmdio/hackmd:latest
    restart: always
    environment:
      - HMD_DB_URL=postgres://hackmd:hackmdpass@database:5432/hackmd
    volumes:
      - ${PWD}/config.json:/hackmd/config.json
      - app_data:/hackmd
  database:
    image: postgres:9.6-alpine
    environment:
      - POSTGRES_USER=hackmd
      - POSTGRES_PASSWORD=hackmdpass
      - POSTGRES_DB=hackmd
    volumes:
      - database:/var/lib/postgresql/data
    restart: always
  nginx:
    image: nginx:latest
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /etc/letsencrypt:/etc/letsencrypt
      - ${PWD}/.htpasswd:/etc/nginx/.htpasswd
      - ${PWD}/nginx.conf:/etc/nginx/nginx.conf
volumes:
  database:
  app_data:
.htpasswd
$ apt install -y apache2-utils
$ sudo htpasswd -c -b ${HackMD_dir}/.htpasswd ${user_name} ${Password}
$ sudo chmod 444 ${HackMD_dir}/.htpasswd
Let's Encrypt
공식 페이지
nginx.conf
nginx.conf 의 쓰는 방법 자체는 종교가 있을 것 같기 때문에 어디까지나 일례로서 ${your_fqdn}를 취급하고 싶은 server의 것으로 바꾼다 nginx.conf
user nginx;
worker_processes auto;
error_log  /var/log/nginx/error.log warn;
pid /run/nginx.pid;
events {
    worker_connections 1024;
}
http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    access_log /var/log/nginx/access.log;
    sendfile on;
    keepalive_timeout 65;
    server_names_hash_max_size 1024;
    client_max_body_size 10M;
    server_tokens off;
    # include /etc/nginx/conf.d/*.conf;
    server {
        listen 80;
        server_name ${your_fqdn};
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 default ssl;
        server_name ${your_fqdn};
        ssl_certificate /etc/letsencrypt/live/${your_fqdn}/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/${your_fqdn}/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        charset utf-8;
        auth_basic 'Secret Zone';
        auth_basic_user_file /etc/nginx/.htpasswd;
        location / {
            proxy_pass http://app:3000;
        }
    }
}
conf.json
GitHub Docker HackMD 에 있는
docker-compose.yml 에서는 imgur 에 이미지가 날아가 버린다 config.json
{
    "production": {
        "allowAnonymous": false,
        "allowAnonymousEdits": false,
        "defaultPermission": "editable",
        "email": true,
        "db": {
            "username": "hackmd",
            "password": "hackmdpass",
            "database": "hackmd",
            "host": "database",
            "port": "5432",
            "dialect": "postgres"
        },
        "imageUploadType": "filesystem"
    }
}
기동·동작 확인
$ docker-compose up -d
$ docker-compose up -d
docker-compose up -d 를 하면 된다 https://${your_fqdn}/에 액세스  
                Reference
이 문제에 관하여(거기 안전한 자전거 HackMD 서버 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suecharo/items/14f4d0b5430db811254e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)