Stories.pe.kr
여행과 요리에 관한 이야기
Stories.pe.kr
여행과 요리에 관한 이야기

시놀로지 NAS는 개발자에게 축복과도 같은 장비입니다. 일반 사용자처럼 사진의 관리나 파일의 관리를 개인용 클라우드처럼 사용할 수 도 있지만 DSM을 활용한다면 다양한 용도로 사용할 수 있기 때문입니다. 더욱이 Docker을 활용한다면 웬만한 Toy프로젝트나 개발용 프로젝트 정도는 쉽게 구현할 수 있습니다. 이번에 STRAPI라는 오픈소스 프로그램에 흥미가 생겨서 시놀로지의 Docker을 활용하여 설치 해보려고 합니다. STRAPI는 아주 쉽게 Restfull 또는 […]
시놀로지 NAS는 개발자에게 축복과도 같은 장비입니다. 일반 사용자처럼 사진의 관리나 파일의 관리를 개인용 클라우드처럼 사용할 수 도 있지만 DSM을 활용한다면 다양한 용도로 사용할 수 있기 때문입니다. 더욱이 Docker을 활용한다면 웬만한 Toy프로젝트나 개발용 프로젝트 정도는 쉽게 구현할 수 있습니다.
이번에 STRAPI라는 오픈소스 프로그램에 흥미가 생겨서 시놀로지의 Docker을 활용하여 설치 해보려고 합니다. STRAPI는 아주 쉽게 Restfull 또는 GraphQL API를 생성해주는 MIT라이선스의 오픈소스 프로그램입니다. 자세한 설명은 아래의 경로를 참고해 주세요.
strapi는 backend를 담당하기 때문에 데이터베이스가 꼭 있어야 합니다. 만약 별도의 데이터베이스를 설치하지 않는다면 strapi가 자동으로 SQLite를 설치하게 됩니다. SQLite는 서버가 아니라 응용 프로그램에서 실행되는 비교적 가벼운 데이터베이스로 중소규모의 형태로 운영하기에 좋으나 대규모로 운영한다면 몽고DB, Mysql, MariaDB, postgres 등을 별도로 설치해서 사용해야 합니다.
여기서는 시놀로지의 Docker를 활용하여 설치할 것이며 설치할 Docker는 postgres, adminer, Strapi입니다. postgres는 데이터베이스이고, adminer는 phpmyadmin처럼 데이터베이스를 웹페이지 형태로 관리할 수 있는 툴입니다. 그리고 마지막으로 Strapi를 설치할 예정입니다.
먼저 데이터베이스를 설치합니다.
먼저 postgres Docker 이미지를 다운로드하여야 합니다. 아래의 화면에서 찾아서 다운로드하면 됩니다.

이미지를 다운로드 받았다면 이 이미지로 컨테이너를 띄워야 합니다. 필요하다면 하나의 이미지로 여러 개의 컨테이너를 띄울 수도 있습니다.



볼륨 탭으로 이동합니다. 볼륨 탭은 호스트컴퓨터(NAS)의 폴더와 컨테이너의 폴더를 거의 실기간으로 동기화 시키는 작업입니다. 직접 컨테이너에 접속해서 파일을 추가, 삭제, 편집하기가 어려우므로 볼륨탭으로 동기화된 호스트컴퓨터(NAS)의 폴더에 있는 파일로 추가, 삭제, 변경을 하면 자동으로 컨테이너와 동기화가 이루어 져서 목적한 바를 달성할 수 있습니다.
/DOCKER/strapi/postgresDB/config/postgres.conf에 저장하려고 합니다. postgres.conf는 빈 파일로 하나 만들면 됩니다./etc/postgresql/postgresql.conf/DOCKER/strapi/postgresDB/pgdata/var/lib/postgresql/data
/DOCKER/strapi/postgresDB/config/postgres.conf:/etc/postgresql/postgresql.conf
/DOCKER/strapi/postgresDB/pgdata:/var/lib/postgresql/data

이번에 포트를 설정합니다. 컨테이너 포트와 매핑이 되는 로컬 포트를 지정하면 됩니다. 그렇게 되면 작성한 로컬 포트로 접속을 하게 되면 자동으로 컨테이너의 서비스로 접속이 되어 집니다.
5432 포트를 사용하고 있기 때문에 다른 포트로 변경을 해야 합니다. 저는 15432로 지정을 해 봤습니다.
이제 마지막으로 환경설정을 해 줍니다.
POSTGRES_USER : strapiPOSTGRES_PASSWORD : strapi적용을 하고 저장을 하면 됩니다 이제 좌측 컨테이너 메뉴에 해당 컨테이너가 띄워진 것을 볼 수 있습니다.

adminer는 phpmyadmin처럼 웹으로 데이터베이스를 관리할 수 있는 툴입니다. phpmyadmin가 Mysql과 MariaDB만 관리할 수 있는데 반해 adminer는 MySQL, SQLite, PostgreSQL, MS SQL, Oracle 등을 다룰 수 있습니다.
위에 설명되어 있는 것처럼 adminer Docker 이미지를 다운로드 받고 컨테이너를 설정합니다.


다른 설정은 넘어가고 포트 설정으로 이동합니다.
8080 포트를 작성했습니다.
링크 탭을 선택합니다. 링크는 해당 컨테이너가 실행될 때 자동으로 실행될 컨테이너를 지정합니다. adminer는 꼭 데이터베이스가 있어야 하므로 strapi_postgres를 실행되게 지정했습니다.
적용을 누르고 저장을 합니다. adminer는 간단히 포트와 링크만 설정하면 됩니다.
설치가 되고 strapi_adminer와 strapi_postgres 컨테이너가 정상적으로 돌고 있다면 이제 adminer로 postgres를 접속해 봅니다.

http://192.168.0.100:8080)192.168.0.100:15432)
이렇게 나오면 접속이 된 상태입니다. ^^
DB를 설치했다면 이제 드디어 Strapi를 설치합니다.
위에 설명되어 있는 것처럼strapi 도커 이미지를 다운로드하고 컨테이너를 설정합니다.



/DOCKER/strapi/app : /srv/app

링크를 지정합니다. Strapi도 DB가 필요하므로 strapi가 실행될 때 strapi_postgres가 실행되도록 지정해 줍니다.

환경변수 6개를 추가해 줍니다.
DATABASE_CLIENT : postgres // 사용할 db종류를 작성합니다.DATABASE_NAME : strapi // strapi_postgres에서 설정한 DB이름을 작성합니다.DATABASE_HOST : 192.168.0.100 // 시놀로지 NAS의 아이피 주소를 작성합니다.DATABASE_PORT : 15432 // strapi_postgres에서 설정한 Port번호를 작성합니다.DATABASE_USERNAME : strapi // strapi_postgres에서 설정한 User를 작성합니다.DATABASE_PASSWORD : strapi // strapi_postgres에서 설정한 비밀번호를 작성합니다.설치가 완료되었다면 시놀로지 NAS에서 방화벽을 열어줘야 합니다.

방화벽은 제어판의 보안 탭에서 지정합니다.

15432는 postgres의 포트8080는 adminer의 포트1337는 strapi의 포트이제 strapi를 설치했으니 확인해 봅니다.
접속 주소 : 192.168.0.100:1337

처음 접속 시는 관리자를 등록하는 페이지가 나오며 이 과정을 거치면 위의 화면처럼 나옵니다. 저는 이미 관리자 회원이 가입되어 있는 상태라 위의 화면이 나오는 것 입니다.
시놀로지 도커 상태에서 node_modules 의존성 설치하기
시놀로지 도커 상태에서 플러그인을 설치하면 node_modules폴더에 의존성 파일이 설치가 됩니다. 이때 시놀로지 도커 일 경우 설치가 되지 않아 고생을 하는 경우가 있는데 이때는 방화벽을 풀어주고 설치하면 설치가 잘 진행됩니다. 저는 어떤 포트를 사용하고 있는지 까지는 찾지 못해서 방화벽 전체를 해제하고 설치하고 있습니다.
예를 들면 strapi의 플러그인인 GRAPHQL를 설치하는데 애를 먹고 찾아낸 방법입니다.
내부에서는 아이피 번호로 접속이 가능하지만 외부에서 해당 서비스를 접속하기 위해서는 공유기에서 포트 포워딩을 해줘야 합니다. 저는 공유기로 아이피타임을 사용합니다.

이제 외부에서 해당 포트로 접속을 하면 서비스를 열어볼 수 있습니다.