[Smart Trading Lab] 02. 기본 세팅: NAS·Docker·OKX·Telegram·Gemini 준비

시작하기 전에, “바닥 공사”부터 하고 갑니다

자동매매를 시작할 때 대부분 전략부터 보는데, 저는 반대로였어요.

  • 봇이 지금 살아 있나?
  • 멈췄으면 왜 멈췄나?
  • 실거래로 바꿔도 사고 안 나게 할 수 있나?

이걸 확인할 수 있어야 봇이 ‘개선’이 됩니다.


✅ 이 글에서 끝내는 것(체크리스트)

  • 시놀로지 NAS에서 Docker(컨테이너)로 24/7 실행 환경 만들기
  • 텔레그램을 알림이 아니라 상황실로 쓰는 세팅
  • OKX를 선택한 이유 + OKX API 키 발급/권한/패스프레이즈/IP 포인트
  • Gemini API 키 발급 + 안전하게 보관하는 방법(.env)
  • “키는 코드 밖, 로그는 컨테이너 밖” 운영 습관 만들기

TL;DR (진짜 요약)

  • NAS는 그냥 “항상 켜져 있는 내 서버”입니다. Docker로 자동재시작/볼륨/.env만 잡아도 운영 난이도가 확 내려가요.
  • 텔레그램은 메시지 앱이 아니라 내 봇 모니터링 화면입니다.
  • OKX는 “제가 쓰기 편했던 거래소”라서 고른 거고, API 키는 보안/권한 최소화가 핵심입니다.
  • Gemini는 요약/브리핑/판단 보조용으로 쓰는 게 안정적입니다(예측으로 쓰면 흔들려요).

목차

1. 왜 기본 세팅부터 하냐(= 뻗으면 끝이라서)

2. 시놀로지 + Docker(컨테이너) 기본 준비

3. 폴더 구조 & .env 원칙

4. 텔레그램 봇 만들기 + Chat ID 구하기

5. OKX 선택 이유 + OKX API 키 발급(권한/패스프레이즈/IP)

6. Gemini API 키 발급 7. 5분 점검표(“이제 돌릴 수 있나?”)


1) 왜 기본 세팅부터 하냐(= 뻗으면 끝이라서)

v1부터는 신호/주문/필터 같은 얘기를 할 건데, 세팅이 없으면 현실은 이렇게 됩니다.

  • 밤에 멈춤 → 아침에 발견 → 로그 없음 → 원인 모름
  • 주문이 안 나감 → 조건 미충족인지 오류인지 구분 불가
  • 키 관리가 허술함 → 실거래 전환이 무서워짐

그래서 이번편은 운영 바닥입니다.
이 글 하나만 잘 해두면, 코드 수정할때“왜 바꿨는지/무엇이 좋아졌는지”가 선명해져요.


2) 시놀로지 + Docker(컨테이너) 기본 준비

2-1. 시놀로지에서 Docker는 “Container Manager”

DSM 7 기준으로는 보통 Container Manager로 컨테이너를 돌립니다(예전 Docker 패키지).
여기서 핵심은 “컨테이너 하나 띄우기”가 아니라, 프로젝트(Compose) 형태로 운영 습관을 만드는 것이에요.

2-2. 운영 난이도 줄여주는 3종 세트

아래 3개만 잡아도 “봇이 서버처럼” 돌아가기 시작합니다.

1) 자동 재시작: 컨테이너가 죽으면 알아서 다시 뜨게
2) 볼륨: 로그/데이터는 컨테이너 밖에 남기기
3) 환경변수(.env): 키/설정은 코드 밖으로 빼기


3) 폴더 구조 & .env 원칙

3-1. 폴더 구조(예시)

3-2. .env 예시

Telegram

TG_BOT_TOKEN=xxxx TG_CHAT_ID=xxxx

OKX

OKX_API_KEY=xxxx OKX_API_SECRET=xxxx OKX_PASSPHRASE=xxxx OKX_DEMO=true

Gemini

GEMINI_API_KEY=xxxx “`

원칙은 단 하나: “키는 코드에 넣지 않는다.”
키는 나중에 한 번 유출되면, 그 뒤부터는 운영이 계속 찜찜해집니다.


4) 텔레그램 봇 만들기 + Chat ID 구하기

4-1. 봇 만들기(BotFather)

1) 텔레그램에서 @BotFather 검색
2) /newbot 입력
3) 봇 이름/유저네임 설정(유저네임은 보통 ...bot으로 끝남)
4) 발급된 Bot Token 저장

4-2. Chat ID 구하기(제일 쉬운 방법)

  • 우선 봇이랑 대화 한 번 시작하고(아무 메시지나 보내기)
  • @userinfobot 같은 봇으로 내 Chat ID를 확인해서 넣는 방법이 제일 편합니다.

처음부터 그룹 알림까지 욕심내지 말고, 1:1 알림부터 붙이세요.
“일단 내 폰으로 잘 오냐”가 먼저입니다.


5) OKX를 선택한 이유 + OKX API 키 발급 포인트

5-1. 왜 OKX였나(그냥 제 기준)

거래소는 취향인데, 저는 아래 이유가 컸어요.

  • 선물/파생 환경에서 API로 운영하기 편한 편
  • 권한(읽기/거래/출금) 구조가 비교적 명확해서 “사고”를 줄이기 쉬움
  • 데모/실거래를 키로 분리해두기가 좋아서 운영이 깔끔함

5-2. OKX API 키 만들 때 꼭 챙길 것(중요)

(1) 권한은 최소로
대부분은 Read + Trade만 있으면 됩니다. Withdraw(출금)은 웬만하면 켜지 마세요.

(2) Passphrase는 진짜로 잊으면 곤란합니다
OKX는 API 키 만들 때 passphrase를 직접 정합니다.
이건 “나중에 다시 보여주는 비밀번호”가 아니라, 내가 보관해야 하는 값이에요.

(3) IP 제한은 상황 보고
고정 IP면 강력한데, 집 인터넷이 유동 IP면 “갑자기 접속 안 됨” 같은 사고가 날 수 있습니다.
초반에는 권한 최소화 + 2FA + 키 분리를 먼저 해두고, 안정화 후 IP 제한을 붙이는 것도 좋아요.

(4) 데모/실거래 키는 무조건 분리
이거 하나만 해도 실거래 전환 사고 확 줄어듭니다.


6) Gemini API 키 발급

Gemini는 키 발급 자체는 어렵지 않습니다.

  • Google AI Studio에서 키 생성
  • 생성한 키를 .env에 저장
  • 코드에는 하드코딩 금지

그리고 저는 Gemini를 “예측 엔진”으로 쓰기보다는,

  • 시장 브리핑 요약
  • 내 신호/상태 정리
  • 조건 충족 여부를 사람이 보기 좋게 설명

이런 운영 보조로 쓰는 쪽이 훨씬 안정적이었습니다.


7) 5분 점검표(“이제 돌릴 수 있나?”)

  • [ ] 컨테이너가 죽어도 자동으로 다시 뜨나?
  • [ ] 로그가 컨테이너 밖(logs/)에 남아서 재배포해도 사라지지 않나?
  • [ ] .env가 프로젝트에 있고, 깃/공유에 안 섞였나?
  • [ ] 텔레그램 테스트 메시지가 내 폰으로 정상 수신되나?
  • [ ] OKX API는 권한 최소(출금 OFF) + passphrase 안전 보관했나?
  • [ ] Gemini 키도 .env에만 있고, 노출 위험이 없나?

다음 글 예고: 자동매매 봇v1로 갑니다

이제 바닥은 깔렸습니다.
다음 글부터는 자동매매봇 v1으로 들어가서, “최소 기능”부터 차근차근 쌓아갈게요.

마지막으로 한 줄만. 여러분은 전략부터였나요, 운영부터였나요?

댓글 남기기