데브로그

프로그래밍 팁 그리고 프로그램 사용 방법 등을 공유 합니다.

Synology

시놀로지 Docker에 Node.js 서버 구축하는 방법

안녕하세요.

이번 시간에는 시놀로지 Docker에 Node.js를 서버 구축하는 방법에 대해서 알아보겠습니다.

.

시놀로지 Docker에 Node.js 서버를 구축하기에 앞서 로컬 컴퓨터에 Node.js 서버를 구축한 후 잘 돌아가는지 먼저 확인을 합니다.

.

Node.js 서버를 운용할 폴더를 하나 생성하고 다음 명령어를 사용해서 Node.js 앱을 생성합니다.

$ npm init -y

.

위 명령어로 package.json 파일이 생성됩니다.

그리고 index.js 파일을 다음과 같이 작성합니다.

.

const http = require('node:http');

const hostname = '127.0.0.1';
const port = 8080;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

.

그리고 다음 명령어를 사용해서 Node.js 서버를 실행합니다.

$ node index.js

.

127.0.0.1:8080에서 Hello World! 텍스트가 보여진다면 Node.js 서버가 잘 구축된 것 입니다.

.

이제 Node.js 서버 구축에 필요한 파일들이 준비되었으니, 시놀로지 DSM에 로그인합니다.

시놀로지 ‘패키지 센터’에서 ‘Docker’를 설치하고 실행합니다.

그리고 ‘레지스트리’ 메뉴에서 ‘node’ 패키지를 검색합니다.

.

.

태그 선택은 ‘latest’로 ‘선택’하고 다운로드 받습니다.

.

.

‘이미지’ 메뉴에 ‘node’ 패키지가 다운로드 완료되면, ‘실행’버튼을 클릭합니다.

.

.

‘네트워크’ 창이 표시되면 ‘선택한 네트워크 사용’을 선택하고 ‘bridge’를 선택하고 다음 버튼을 클릭합니다.

.

.

‘일반 설정’ 창이 표시되면, ‘컨테이너 이름’을 원하는 이름으로 입력하고 ‘높은 권한을 사용하여 컨테이너 실행’ 및 ‘자동 재시작 활성화’를 선택하고 ‘고급 설정’ 버튼을 클릭합니다.

.

.

‘실행명령’ 메뉴의 명령의 값으로 ‘node /home/node/app/index.js’ 를 입력합니다.

.

.

저장하고 이전화면으로 돌아와서 다음버튼을 클릭하면 ‘포트설정’ 창으로 이동합니다.

추가 버튼을 클릭해서 ‘로컬 포트’와 ‘컨테이너 포트’에 ‘8080’으로 지정합니다.

.

.

다음 단계로 이동하기 전에 ‘File Station’을 실행해서 docker 폴더 안에 node.js 서버로 사용할 폴더를 생성합니다.

.

.

그리고 로컬에서 구축한 Node.js 서버의 파일 index.js 파일과 package.json 파일을 함께 docker/synology-node 폴더에 업로드 합니다.

업로드 할 때, index.js 파일의 hostname 변수의 값을 아래와 같이 ‘0.0.0.0’ 으로 변경해서 업로드 합니다.

.

const http = require('node:http');

const hostname = '0.0.0.0';
const port = 8080;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

.

다시 도커 설치 화면으로 돌아와 다음을 클릭해서 진행합니다.

‘폴더 추가’ 버튼을 클릭합니다.

.

.

‘파일/폴더’에 File Station에서 생성한 ‘/docker/synology-node’ 로 지정합니다.

그리고 ‘마운트 경로’에는 ‘/home/node/app’ 을 입력합니다.

.

.

‘요약’ 화면 창이 표시되면, ‘완료’ 버튼을 클릭해서 설정을 완료합니다.

.

.

‘제어판’의 ‘보안’ > ‘방화벽’ 메뉴로 이동해서 ‘방화벽 활성화’, ‘방화벽 알림 활성화’에 체크표시하고, ‘방화벽 프로파일’의 ‘default’의 ‘규칙 편집’을 클릭합니다.

.

.

‘생성’ 버튼을 클릭합니다.

.

.

‘방화벽 규칙 생성’에서 ‘포트’의 ‘내장된 응용 프로그램 목록에서 선택’을 선택하고 ‘선택’ 버튼을 클릭합니다.

.

.

‘내장 응용 프로그램 선택’에서 앞성 생성한 Docker synology-node를 선택하고 ‘확인’ 버튼을 클릭합니다.

.

.

방화벽 설정을 완료하고 역방향 프록시 설정을 하기위해 ‘로그인 포털’에서 ‘고급’ 메뉴를 클릭합니다.

‘역방향 프록시’ 버튼을 클릭합니다.

.

.

‘역방향 프록시’ 설정 창이 표시되면 ‘생성’ 버튼을 클릭합니다.

.

.

‘역방향 프록시 이름’을 입력하고 ‘프로토콜’에는 ‘HTTPS’를 선택합니다.

‘호스트 이름’은 node.js 서버를 운용할 도메인을 입력합니다. 저의 경우에는 서브 도메인에서 node.js 서버를 운영하기 위해서 다음과 같이 지정했습니다.

그리고 ‘저장’ 버튼을 클릭해서 역방향 프록시 설정을 완료합니다.

.

.

https 접속을 위해서 ‘제어판’의 ‘보안’ > ‘인증서’ 메뉴로 이동해서 SSL 인증서를 추가해 줍니다.

.

.

‘새 인증서 추가’를 선택하고 ‘다음’ 버튼을 클릭합니다.

.

.

‘Let’s Encrypt에서 인증서 얻기’를 선택하고 ‘다음’ 버튼을 클릭합니다.

.

.

‘도메인 이름’에 SSL 인증서를 적용할 도메인 이름을 입력하고 ‘이메일’을 입력합니다.

그리고 ‘주제 대체 이름’으로 도메인 이름(node.smilehugo.com)과 (서브도메인의 CNAME 값).DDNS 값(node.smilehugo.synology.me)를 입력합니다.

그리고 ‘완료’ 버튼을 클릭해서 인증서를 생성합니다.

.

.

인증서 발급이 완료되면 ‘설정’ 버튼을 클릭해서 적용하고자 하는 도메인에 인증서를 선택해주고 확인 버튼을 클릭해서 SSL 인증서 적용을 완료합니다.

.

.

node.smilehugo.com 에 SSL 인증서가 적용된 것을 확인하실 수 있습니다.

.

.

이렇게 시놀로지 Docker에 Node.js 서버를 구축하는 방법에 대해서 알아봤습니다.

감사합니다. 🙂

Leave a Reply