본문 바로가기

윈도우 개발환경

시놀로지 Docker로 만드는 edge server; 2. node.js 서비스 올리기

시놀로지 Docker로 만드는 edge server

1. 우분투 서버 설치하기

2. node.js 서비스 올리기

센서정보를 수집할 우분투 서버가 시놀로지 docker에 만들어졌으니 이제 개발한 node.js 서비스를 우분투 컨테이너에 올려보자.

3. nvm으로 node.js 설치하기

WSL우분투에 node.js를 설치했을 때와 마찬가지로 nvm (Node Version Manager)으로 node.js를 설치하면 최신버전까지 원하는 버전의 node.js를 설치할 수도 있고 쉽게 버전을 바꿀 수도 있다.

 

  • 우분투 컨테이너에 ssh로 로그인한다.

openssh-server를 설치했기 때문에 더 이상 시놀로지의 docker화면을 사용하지 않아도 된다. ssh client프로그램이나 putty르 접속해서 작업을 진행한다. 나는 git-bash에 있는 ssh client를 사용해서 로그인했다. docker 컨테이너를 만들 때 10022 port를 외부로 열어 두었기 때문에

 

ssh [사용자명]@[서버 ip] -p 10022

 

명령으로 접속했다 

 

 

  • nvm을 설치한다.

WSL 2 우분투에 nvm을 설치했을 때처럼 nvm사이트에 가서 curl이나 wget명령을 복사해서 실행한다.

 

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

 

 

  • node.js를 설치한다.

먼저 설치된 .nvm명령을 사용하기 위해 .bashrc에 등록된 nvm환경 변수를 적용한다.

 

. ~/.bashrc

 

이제 nvm을 사용하여 개발에 사용했던 node.js버전으로 node.js를 설치한다.

 

nvm install 18.16

4.  새로운 사용자로 git 설치하기

프로그램을 GitHub에 관리하고 있다면 git도 사용할 수 있도록 설치한다. 그런데...

 

내가 만든 사용자는 패키지를 설치할 권한이 없다. 또 docker 컨테이너에는 sudo 프로그램도 없다. 그래서 sudo를 먼저 설치하고 

 

apt install sudo

 

ssh로 접속할 때 사용하는 사용자에게 권한을 준다. sudoers파일을 직접 수정하기보다는 sudoers가 includedir로 가져오는 sudoers.d 폴더 아래 내가 만든 사용자의 권한을 만든다. 나는 만든 사용자 이름으로 파일을 만들고 아래와 같이 내용을 넣었다.

 

hydroponix      ALL=(ALL:ALL) ALL

 

이제 컨테이너를 다시 시작하면 ssh로 접속한 사용자도 sudo 명령을 사용해서 root처럼 패키지를 설치할 수 있다.

 

sudo apt install git

 

물론 컨테이너에 프로그램을 많이 설치하는 것이 부담된다면 시놀로지의 File Station으로 해당 폴더를 열고 복사하려는 파일이나 폴더들 Drag & Drop 하면 된다.

 

이제 개발한 프로그램이 시놀로지에서 잘 실행된다.