시놀로지 NAS에서 챗지 서버 운용하기(도커)

Docker 챗봇

안녕하세요

저는 고등학교 수학교사입니다.
교육목표 달성을 위해 교사가 의도한 상황과 목적으로 학생들의 GPT 사용을 유도할 수 없을까?가 큰 고민이었습니다.

이 때, 챗지를 알게 되었습니다.
사전에 설정한 챗지 세팅을 통해 제 의도대로 역할을 부여할 수 있고, 카카오톡이라는 친근한 플랫폼으로 학생들과 별도의 추가기기 없이 활동이 가능하다는 점이 큰 장점으로 느껴졌습니다. 
모든 학생들이 스마트폰은 들고 있으니까요.

다만 윈도우 서버를 상시 돌리는 것은 부담이었습니다.
기존에 사용하던 시놀로지 NAS에 도커로 운용 가능하지 않을까? 하는 생각이 들었고 GPT에게 질문을 던지기 시작했습니다.

저는 도커의 이름만 알고 있었을 뿐, 실제로 조작하고 작동시키는 것은 이번이 처음이었습니다.
처음에는 조금 먹먹했습니다. GPT 3.5 Turbo는 dockerfile 제작만을 외쳤거든요.
하지만 GPT 4.0은 바로 DSM에 적용할 수 있는 쉬운 방법을 안내해주었습니다.
덕분에 약 1시간만에 챗봇 서비스 가동까지 진행할 수 있었습니다.

여기에 제가 사용했던 방법을 공유합니다.
리눅스 시스템을 조금 아시는 분이라면, 아래 내용을 참고하셔서 시놀로지 NAS가 아닌 서버에서도 Docker 이미지를 작성하실 수 있으실 겁니다.

이 자리를 빌어, 훌륭한 지식과 경험을 아낌없이 공유해주신 챗지 개발자님께 감사 인사를 올립니다.

1. 파일 준비

  • 챗봇 소스파일 중 이 코드를 도커에서 실행하는 데 필요한 파일 목록은 다음과 같습니다: 
    1. run_server.py: ChatGee 서버를 실행하는 파이썬 스크립트입니다.
    2. settings.yaml: ChatGee 서버 설정을 포함하는 YAML 파일입니다.
    3. requirements.txt: 필요한 Python 패키지를 나열하는 파일입니다.
    4. chatgee 폴더: ChatGee 프로젝트의 모든 모듈과 관련 파일이 있는 폴더입니다. 이 폴더는 다음 하위 항목을 포함합니다. 
      • base 폴더: ChatGee 애플리케이션의 기본 기능과 관련된 파일들을 포함합니다.
      • chatgee 폴더: 서버 및 관련 파일을 실행하는 데 필요한 ChatGee 라이브러리가 포함되어 있습니다.
      • templates 폴더: HTML 템플릿 파일들이 포함되어 있습니다.
      • static 폴더 (선택 사항): CSS, JavaScript 및 이미지와 같은 정적 파일을 포함합니다.
      • db 폴더: 데이터베이스 파일들이 저장됩니다.

2. 시놀로지 DSM으로 파일 이동

  • 위 1에서 준비한 모든 파일을 시놀로지 DSM에 옮깁니다.
  • 필요한 파일만을 골라내기 어려운 경우, 모든 파일과 폴더를 그대로 업로드하셔도 됩니다. 
  • 이 작업은 Windows 파일 탐색기를 사용하여 시놀로지 DSM의 공유 폴더로 복사하거나, SFTP 프로그램 (예: FileZilla)을 사용하여 옮길 수 있습니다.

3. 시놀로지 DSM 패키지 센터에서 'Docker'를 설치합니다


4. DSM 도커 설정

  • 이미지 다운로드
    • DSM에서 Docker 애플리케이션을 실행하고, "레지스트리" 탭으로 이동합니다.
    • 검색 창에서 "python"을 입력하고, 공식 Python 이미지를 찾습니다. (일반적으로 "python"이라는 이름으로 나타납니다.)
    • Python 이미지를 선택한 다음, "다운로드" 버튼을 클릭합니다.
      그런 다음 목록에서 "3.10.10" 항목을 선택하여 Python 3.10.10 이미지를 다운로드합니다.

  • DSM 도커에서 Python 컨테이너 생성 
    • Docker 애플리케이션에서 "이미지" 탭으로 이동합니다.
    • 다운로드한 Python 이미지를 찾아 선택하고, "실행" 버튼을 클릭합니다.

  • '컨테이너 설정 페이지’에서 ‘컨테이너 생성’을 클릭하고 다음과 같이 설정합니다: 
    • 이미지: python:3.10.10.
    • 네트워크 선택: 선택한 네트워크 사용(기본값, 또는 적절한 네트워크 선택)
    • 일반설정 
      • 컨테이너 이름: ChatGee (또는 원하는 이름)
      • "시작 후 자동 재시작" 옵션을 선택
    • 포트 설정 
      • 로컬포트, 컨테이너포트 : ‘Setting.yaml’ 파일에 설정된 포트 번호
      • 유형: TCP
    • 볼륨설정 
      • "볼륨" 탭에서 "추가" 버튼을 클릭하고, 호스트 경로에는 2단계에서 파일을 업로드한 시놀로지 DSM의 공유 폴더 경로를 선택하고, 마운트 경로에는 **/app**을 입력합니다. (예: 호스트 경로 - /volume1/chatgee, 마운트 경로 - /app)
      • ‘폴더 추가’
    • 설정을 완료한 후 "확인"을 클릭하여 컨테이너를 생성하고 실행합니다.

5. SSH를 사용하여 시놀로지 DSM에 접속

  • DSM - 제어판 - 터미널 및 SNMP 에서 ‘SSH 서비스 활성화’를 체크합니다.
  • 윈도우 10에서 Putty를 실행하고, 시놀로지 DSM의 IP 주소와 포트 번호(기본적으로 22)를 입력하여 SSH로 접속합니다. 접속에 성공하면, DSM의 사용자 이름과 비밀번호를 입력하여 로그인합니다.

6. Docker 컨테이너 내부로 이동

  • SSH 세션에서 다음 명령을 실행하여 ChatGee 컨테이너의 셸에 접속합니다:
  • sudo docker exec -it *<컨테이너 이름>* /bin/bash
    예) sudo docker exec -it ChatGee /bin/bash
  • 접속 비밀번호를 한번 더 물어보면 정확히 입력합니다.

7. ChatGee 실행 준비

  • 컨테이너의 셸에서 다음 명령을 실행하여 필요한 패키지를 설치합니다:
  • cd /app
    pip install -r requirements.txt

8. ChatGee 서버 실행

  • 컨테이너의 셸에서 다음 명령을 실행하여 ChatGee 서버를 시작합니다:
  • python chatgee/run_server.py
  • 서버가 정상적으로 실행되면 putty를 종료해도 됩니다.

9. 공유기 포트포워딩

  • 외부에서 접속이 가능하도록 공유기에서 포트포워딩을 설정합니다.
  • ‘settings.yaml’ 파일에 설정한 포트번호를 NAS에 연결합니다.

10. 접속 점검

  • DSM 연결 도메인, DDNS, 외부 ip 번호 등을 이용하여 외부에서 접속 점검을 합니다.
  • http:// <연결도메인>:<포트번호>/local_test 에 접속하여 Loca Query Test 페이지가 정상적으로 나타나는지 확인합니다.

11. 카카오톡 챗봇 서비스와 연결

  • 이후의 진행 사항은 윈도우 설치시와 동일합니다.
9
7개의 답글

👉 이 게시글도 읽어보세요!

📚 AI 활용 사례 더 보기