본문 바로가기
서버, 인프라

[Claude 블로그 자동화] Ubuntu 서버에 Claude Code 도커로 올리기 1편

by 요즘IT 2026. 5. 28.

솔직히 처음엔 "Claude Code를 왜 서버에 올려?"라고 생각했거든요.

로컬에서 쓰면 되지, 굳이?

근데 막상 써보니까 달라요.

매일 반복되는 크롤링 자동화, 블로그 글감 수집, 초안 작성까지 — 이걸 혼자 다 돌리는 서버가 하나 있으면 얘기가 달라지거든요.

저도 그래서 시작했어요. 우분투 서버 하나 띄우고, 거기에 Claude Code부터 올려봤습니다.


왜 서버에 Claude Code를?

로컬에서 Claude.ai 쓰다 보면 이런 상황이 생겨요.

"아 이 글감 나중에 써야지" → 탭 닫음 → 증발.

아니면 매일 아침 RSS 피드 긁어서 Claude한테 붙여넣고 "이거 블로그 써줘" 하는 루틴을 손으로 반복하는 거잖아요.

하루 이틀은 괜찮아요. 근데 3주 지나면 귀찮아지거든요.

그래서 방향을 바꿨어요.

서버가 매일 알아서 수집하고 → 나는 Claude.ai에 결과만 붙여넣는다.

그 자동화의 첫 단추가 바로 Claude Code를 서버에 올리는 거예요.

참고로 이 시리즈는 Claude Code를 직접 API로 호출해서 자동 초안을 생성하는 구조는 다루지 않아요.
API 호출은 추가 비용이 발생하기 때문에, 여기서는 수집 자동화 + 직접 붙여넣기 흐름으로 진행합니다.
Claude Code는 로컬 또는 서버에서 코드 작성·수정 보조 용도로 활용해요.


서버 환경 확인

제가 쓰는 환경은 이래요.

  • Hetzner Cloud Ubuntu 22.04, 8GB RAM
  • 기존 컨테이너: nginx, jenkins, 기타 서비스들

이미 도커가 돌아가고 있는 환경이라, 추가 컨테이너 하나 얹는 식으로 접근했어요.

처음 서버 세팅하는 분도 있을 테니까, 도커 설치부터 짧게 짚고 가겠습니다.


1단계 — 도커 설치

우분투 서버에 처음 접속했다면, 도커부터 깔아야 해요.

# 패키지 업데이트
sudo apt update && sudo apt upgrade -y

# 필수 패키지
sudo apt install -y ca-certificates curl gnupg lsb-release

# 도커 공식 GPG 키 추가
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 저장소 추가
echo "deb [arch=$(dpkg --print-architecture) \
  signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

설치 확인은 이걸로 끝.

docker --version
# Docker version 24.x.x 이상 나오면 정상

2단계 — sudo 없이 도커 쓰기

매번 sudo docker 치는 거 엄청 귀찮거든요.

현재 사용자를 docker 그룹에 추가하면 해결돼요.

sudo usermod -aG docker $USER
newgrp docker

이후 docker ps 입력했을 때 permission 에러 없으면 성공이에요.


3단계 — Claude Code 설치

여기서 잠깐.

Claude Code는 npm 기반 CLI 툴이에요.

Node.js가 있어야 설치가 되거든요.

# Node.js 20 LTS 설치
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# 버전 확인
node --version   # v20.x.x
npm --version    # 10.x.x

Node 깔렸으면 이제 Claude Code 설치예요.

npm install -g @anthropic-ai/claude-code

설치 후 확인.

claude --version

버전 숫자 나오면 끝이에요. 생각보다 간단하죠?


4단계 — 인증 설정

Claude Code는 Anthropic API 키가 필요해요.

API 키는 Anthropic 콘솔(console.anthropic.com)에서 발급받을 수 있어요.

발급받은 키는 환경변수로 등록해요.

# .bashrc 또는 .profile에 추가
echo 'export ANTHROPIC_API_KEY="sk-ant-여기에키입력"' >> ~/.bashrc
source ~/.bashrc

확인은 이걸로.

echo $ANTHROPIC_API_KEY
# sk-ant-... 출력되면 정상

한 가지 짚고 넘어갈 게 있어요.

Claude Code를 서버에 올린다고 해서 자동으로 뭔가를 실행하는 건 아니에요.

이 시리즈에서는 Claude Code = 서버에서 코드 짤 때 쓰는 보조 도구로 활용해요.

실제 블로그 자동화는 Python Flask + RSS 수집 + crontab 조합으로 돌아가거든요.

그 얘기는 다음 편에서 할게요.


5단계 — 도커 컨테이너 구성

Claude Code를 독립 컨테이너로 분리하면 관리가 훨씬 편해요.

프로젝트 루트에 Dockerfile 하나 만들어요.

FROM python:3.11-slim

# Node.js 설치
RUN apt-get update && apt-get install -y curl && \
    curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get install -y nodejs && \
    npm install -g @anthropic-ai/claude-code && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .

EXPOSE 5000
CMD ["python", "app.py"]

docker-compose.yml 에는 이렇게 붙여요.

version: "3.8"

services:
  web-scrap-note:
    image: web-scrap-note
    container_name: web-scrap-note
    restart: unless-stopped
    ports:
      - "5000:5000"
    environment:
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
    volumes:
      - /opt/scrap-data/data:/app/data
      - /opt/scrap-data/generated:/app/generated

환경변수를 컨테이너 안으로 넘기는 부분이 포인트예요.

호스트의 ANTHROPIC_API_KEY를 그대로 컨테이너에 주입하는 방식이거든요.


6단계 — 빌드 & 실행

# 이미지 빌드
docker build -t web-scrap-note .

# 컨테이너 실행
docker compose up -d

# 로그 확인
docker logs -f web-scrap-note

docker compose up terminal output
docker compose up terminal output


여기까지 왔으면

서버에 도커가 올라가 있고, Claude Code까지 설치된 상태예요.

근데요. 이게 끝이 아니에요.

Claude Code 자체는 CLI 툴이라서, 혼자 뭔가를 자동으로 하지는 않아요.

뭘 수집할지, 언제 실행할지 — 이건 우리가 설계해야 하거든요.

다음 편에서는 Python Flask로 RSS 자동 수집 시스템을 만들어요.

Hacker News, GeekNews, MIT Technology Review 같은 소스에서 매일 글감을 긁어오는 구조를 같이 만들어볼 거예요.

솔직히 이게 전체 시스템에서 제일 재미있는 부분이었어요.


결국 핵심은 이거예요.

서버는 24시간 돌아가는데, 내가 직접 수집할 필요는 없다는 것.

Claude Code는 그 자동화 루틴 안에서 코드 작성·수정 보조 역할을 맡아요.

첫 단추는 그냥 올려두는 것. 오늘 한 게 딱 그거예요.