기본 콘텐츠로 건너뛰기

리눅스를 몰라도 Codex 로 VPS에 Hermes를 설치하고 쉽게 운영하는 방법

 초보자를 위한 AI 에이전트 서버 운영 가이드

리눅스를 몰라도 VPS에 Hermes를 설치하고 Codex로 운영하는 방법

이 글의 목표는 “리눅스 명령어를 잘 모르는 사람도” Hostinger VPS에 Hermes 에이전트를 설치하고, Codex를 이용해 SSH로 접속해 운영, 모니터링, 오류 해결까지 할 수 있게 만드는 것입니다.

1. 이 글은 누구를 위한 글인가

VPS, SSH, Docker, Linux라는 단어가 낯선 분들도 많습니다. 하지만 AI 에이전트를 제대로 운영하려면 결국 “내 컴퓨터가 꺼져 있어도 계속 일하는 원격 작업자”가 필요합니다. 그 원격 작업자가 Hermes이고, 그 Hermes가 사는 집이 VPS입니다.

이 글은 서버 전문가를 위한 글이 아닙니다. 오히려 서버를 잘 모르는 분들이 Codex를 조력자로 삼아 원격 서버에 Hermes를 설치하고 운영하는 흐름을 이해하도록 돕는 글입니다.

핵심 메시지: 리눅스 명령어를 모두 외우지 않아도 됩니다. 중요한 것은 SSH 접속 정보와 Codex에게 정확히 요청하는 방법입니다.

2. 왜 Codex가 필요한가

VPS를 구매하면 보통 이런 정보를 받습니다.

  • 서버 IP 주소
  • SSH 사용자 이름, 보통 root
  • root 비밀번호 또는 SSH key
  • 운영체제, 예를 들어 Ubuntu 24.04

문제는 그 다음입니다. 접속은 했는데 무엇을 입력해야 할지 모릅니다. Docker 설치, Hermes 설치, 환경변수 설정, Telegram bot token 등록, 로그 확인, 재시작 같은 작업이 모두 리눅스 명령어로 보이기 때문입니다.

Codex가 필요한 이유는 여기에 있습니다. Codex는 단순한 챗봇이 아니라, SSH로 원격 VPS에 접속해 명령을 실행하고 결과를 읽고 다음 조치를 판단할 수 있는 운영 파트너가 됩니다.

기존 방식

사용자가 명령어를 검색하고, 복사하고, 실패하면 다시 검색합니다.

Codex 방식

사용자가 목표를 말하면 Codex가 필요한 명령어를 실행하고 결과를 분석합니다.

Codex에게 이렇게 말하면 됩니다
내 Hostinger VPS는 Ubuntu 서버입니다.
SSH 접속 정보는 root@서버IP 입니다.
이 VPS에 Hermes를 Docker 기반으로 설치하고,
Telegram bot으로 사용할 수 있게 설정해 주세요.
설치 후에는 상태 확인, 로그 확인, smoke test까지 해 주세요.

3. 준비물은 딱 세 가지

초보자에게 가장 중요한 것은 준비물을 단순하게 이해하는 것입니다. Hermes 설치를 시작하기 전에 아래 세 가지만 있으면 됩니다.

준비물설명예시
VPS 서버Hostinger에서 만든 Ubuntu VPSUbuntu 24.04
SSH 접속 정보Codex가 서버에 들어가기 위한 주소ssh root@123.123.123.123
Telegram bot tokenHermes가 Telegram 메시지를 받기 위한 토큰123456:ABC...
블로그나 영상에서는 실제 IP, root 비밀번호, bot token, API key를 그대로 보여주면 안 됩니다. 노출했다면 즉시 변경해야 합니다.

4. VPS에 SSH로 접속하는 방법

Hostinger VPS 화면에는 보통 ssh root@서버IP 형식의 접속 정보가 표시됩니다. 이 정보만 있으면 Codex에게 접속을 맡길 수 있습니다.

비밀번호 접속

처음에는 root 비밀번호로 접속할 수 있습니다. 하지만 장기 운영에는 SSH key 방식이 더 안전합니다.

Codex에게 요청할 말
아래 VPS에 SSH로 접속 가능한지 확인해 주세요.

서버: root@서버IP
운영체제: Ubuntu
접속 방식: root password

접속에 성공하면 hostname, uptime, docker 설치 여부를 확인해 주세요.

SSH key 접속

Hostinger의 SSH keys 화면에 내 Mac의 공개키를 등록하면 이후에는 비밀번호 없이 접속할 수 있습니다. Codex 입장에서는 이 방식이 훨씬 안정적입니다.

Codex에게 요청할 말
내 Mac의 SSH 공개키를 확인해서 알려주세요.
Hostinger VPS의 SSH keys 메뉴에 등록할 수 있는 형식으로 보여주세요.

5. Codex에게 Hermes 설치를 맡기는 방법

초보자는 설치 명령어를 모두 알 필요가 없습니다. 대신 Codex에게 설치 기준을 명확히 알려주면 됩니다. 중요한 기준은 Docker 기반 설치, 데이터 볼륨 보존, systemd 자동 실행입니다.

설치 요청 프롬프트
Hostinger VPS에 Hermes를 Docker 기반으로 설치해 주세요.

조건:
1. Ubuntu 서버에 Docker와 Docker Compose가 없으면 설치해 주세요.
2. Hermes 데이터는 /docker/hermes-agent/data 에 보존되게 해 주세요.
3. Hermes workspace는 /docker/hermes-agent/data/workspace 로 만들어 주세요.
4. 컨테이너 내부에서는 /opt/data/workspace 로 접근되게 해 주세요.
5. Hermes gateway는 systemd 서비스로 자동 실행되게 해 주세요.
6. 설치 후 docker ps, systemctl status, 로그 확인, smoke test를 실행해 주세요.
7. 설치 과정과 결과를 초보자도 이해할 수 있게 요약해 주세요.

이 요청을 받은 Codex는 서버 상태를 확인하고, 필요한 패키지를 설치하고, Docker compose 파일을 만들고, 컨테이너를 띄운 뒤 상태를 점검할 수 있습니다.

Docker를 쓰는 이유

Docker는 Hermes를 서버 전체와 분리된 실행 환경 안에 넣어줍니다. 직접 설치보다 재설치, 이전, 복구, 격리가 쉽습니다.

VPS
└── Docker
    └── Hermes container
        └── /opt/data/workspace

6. Telegram 설정을 맡기는 방법

Hermes를 실사용하려면 Telegram bot token과 home channel 설정이 필요합니다. Telegram bot token은 BotFather에서 만들고, Hermes 설정에 넣어야 합니다.

Telegram 설정 요청 프롬프트
Hermes가 Telegram bot으로 동작하도록 설정해 주세요.

Telegram bot token은 제가 따로 입력하겠습니다.
home channel 또는 내 Telegram chat id도 확인해 주세요.
설정 후에는 Hermes gateway를 재시작하고,
Telegram 연결 로그가 정상인지 확인해 주세요.

설정이 끝난 뒤에는 로그에서 다음과 같은 흐름이 보여야 합니다.

Connecting to telegram...
Telegram menu registered
Connected to Telegram
Gateway running
Telegram bot token은 절대 블로그 본문, 영상 화면, GitHub 저장소에 노출하면 안 됩니다.

7. LLM 모델 설정 변경하기

Hermes는 내부 설정에 따라 어떤 LLM 모델을 사용할지 결정합니다. 모델을 바꾸고 싶을 때도 사용자가 설정 파일 위치를 몰라도 됩니다. Codex에게 현재 설정을 찾아서 변경해 달라고 요청하면 됩니다.

모델 설정 변경 요청 프롬프트
현재 Hermes가 어떤 LLM provider와 model을 쓰는지 확인해 주세요.
설정 파일 위치를 찾아서 보여주고,
모델을 원하는 값으로 바꿔 주세요.

원하는 모델:
provider: openai 또는 사용 중인 provider
model: 원하는_모델명

변경 후 Hermes gateway를 재시작하고 smoke test까지 해 주세요.

모델 변경 후에는 반드시 smoke test를 해야 합니다. 모델 이름이 틀렸거나 인증 정보가 잘못되어 있으면 Hermes가 메시지를 받아도 답을 못할 수 있습니다.

hermes -z "Reply with exactly ok"

8. 상태 확인과 모니터링

설치보다 중요한 것은 운영입니다. AI 에이전트가 멈췄는지, Telegram 연결이 살아 있는지, 디스크가 꽉 차지는 않았는지 확인할 수 있어야 합니다.

일상 점검 요청 프롬프트
VPS Hermes 상태를 점검해 주세요.

확인할 항목:
1. docker ps
2. hermes gateway systemd 상태
3. workspace preview 서버 상태
4. 최근 gateway.log 오류
5. 디스크 사용량
6. 메모리 사용량
7. Hermes smoke test

문제가 있으면 원인과 조치 방법을 알려주세요.

Codex가 내부적으로 확인하는 대표 명령은 아래와 같습니다. 사용자가 외울 필요는 없지만, 무엇을 확인하는지 이해하면 운영 감각이 생깁니다.

docker ps
systemctl is-active hermes-gateway.service
tail -120 /opt/data/logs/gateway.log
df -h
free -h

9. 오류가 났을 때 Codex로 해결하기

Hermes 운영 중 가장 자주 만나는 문제는 Telegram 연결 문제, LLM API 오류, 컨테이너 중단, 파일 권한 문제, 브라우저 렌더링 도구 누락입니다. 이때도 “어떤 명령어를 쳐야 하지?”가 아니라 Codex에게 증상 중심으로 말하면 됩니다.

상황 1: Telegram 메시지에 답이 없다

Codex에게 요청할 말
Hermes가 Telegram 메시지에 답하지 않습니다.
Telegram 연결 상태, gateway 로그, polling conflict 여부,
bot token 설정 문제를 확인해 주세요.
필요하면 Hermes gateway를 안전하게 재시작해 주세요.

상황 2: LLM API 오류가 난다

Codex에게 요청할 말
Hermes 로그에서 LLM API 호출 오류를 찾아주세요.
provider, model 이름, 인증 정보, rate limit, timeout 문제 중 무엇인지 구분해 주세요.
설정 변경이 필요하면 변경 전후 차이를 설명하고 적용해 주세요.

상황 3: 파일 생성은 됐는데 다운로드가 안 된다

Codex에게 요청할 말
Hermes가 만든 파일 다운로드가 안 됩니다.
/opt/data/workspace 안에 파일이 있는지,
VPS 호스트의 workspace 경로와 연결되어 있는지,
preview 서버가 8090 포트에서 실행 중인지 확인해 주세요.

상황 4: 브라우저 렌더링이 안 된다

Codex에게 요청할 말
Hermes 작업 중 Chrome 또는 Chromium이 없어서 브라우저 렌더링이 실패했습니다.
VPS 호스트와 Hermes Docker 컨테이너 내부에 브라우저가 설치되어 있는지 확인해 주세요.
없으면 headless 렌더링이 가능하도록 설치하고,
HTML 렌더링과 screenshot 생성 테스트까지 해 주세요.

상황 5: 컨테이너가 죽었다

Codex에게 요청할 말
Hermes 컨테이너가 중단된 것 같습니다.
docker ps -a, docker logs, systemctl status를 확인해서
왜 중단됐는지 분석하고, 데이터 손실 없이 복구해 주세요.

10. 파일 공유 폴더 운영

Telegram으로 파일을 계속 보내고 받는 것은 번거롭습니다. 그래서 Mac의 로컬 폴더와 VPS의 Hermes workspace를 동기화하면 훨씬 편합니다.

Mac에서 보는 폴더:
~/Desktop/HermesShared

Hermes에게 알려줄 폴더:
/opt/data/workspace

VPS 호스트 실제 폴더:
/docker/hermes-agent-zte3/data/workspace

중요한 점은 Hermes에게 Mac 경로를 알려주면 안 된다는 것입니다. Hermes는 Docker 컨테이너 안에서 실행되므로 /opt/data/workspace만 이해합니다.

Hermes에게 보낼 메시지 예시
공유 폴더에 있는 h-docx 폴더의 파일들을 확인해줘.
Hermes 기준 경로는 /opt/data/workspace/h-docx 이야.
작업 결과도 /opt/data/workspace에 저장해줘.

동기화가 자동으로 돌고 있지 않다면 Mac에서 아래 동기화 명령을 실행하면 됩니다.

cd /Users/사용자이름/Desktop/vps
./hermes-shared-sync.sh once

11. 보안과 운영 원칙

AI 에이전트는 파일을 만들고 명령을 실행할 수 있습니다. 그래서 편리하지만, 권한 관리가 중요합니다.

  • 처음 접속 후에는 비밀번호보다 SSH key 방식을 사용합니다.
  • root 비밀번호, Telegram bot token, API key는 절대 공개하지 않습니다.
  • 공유 폴더 동기화에서 삭제 자동 전파는 신중하게 사용합니다.
  • Hermes 데이터는 Docker 볼륨 또는 호스트 폴더에 보존되게 합니다.
  • 문제가 생기면 바로 재설치하지 말고 로그부터 확인합니다.
  • 설정 변경 후에는 항상 smoke test를 실행합니다.
서버 운영에서 가장 위험한 습관은 “일단 복붙”입니다. Codex에게 명령의 목적, 영향 범위, 되돌리는 방법을 설명하게 한 뒤 실행하는 습관을 들이는 것이 좋습니다.

마무리: AI 에이전트는 설치보다 운영이 중요하다

Hostinger VPS에 Hermes를 설치하는 일은 시작일 뿐입니다. 진짜 가치는 Codex를 통해 Hermes를 지속적으로 모니터링하고, 문제가 생겼을 때 로그를 읽고, 모델 설정을 바꾸고, Telegram 연결을 복구하고, 파일 공유 구조를 개선하는 운영 과정에서 나옵니다.

리눅스 명령어를 모두 외울 필요는 없습니다. 대신 Codex에게 정확히 요청하는 방법을 익히면 됩니다. 앞으로의 AI 활용은 단순히 “AI에게 질문하는 것”에서 “내 AI 작업 인프라를 운영하는 것”으로 이동할 것입니다.

한 줄 요약: VPS는 24시간 작업 공간, Hermes는 원격 AI 작업자, Codex는 그 작업자를 설치하고 관리하는 운영 콘솔입니다.

댓글

댓글 쓰기

이 블로그의 인기 게시물

[Claude 팁] 나의 블로그 글을 Claude 에게 학습 시켜 내 스타일의 블로그 글 생성하기

나의 블로그 글쓰기 스타일을 Claude AI에게 학습 시키는 방법  사실 이 방법은 프롬프트 엔지니어링 기법을 특별히 알고 있지 않아도, 생성형 AI를 사용할때 적용할 수 있는 방법입니다. 적용하고 보니 이러한 기법을 Few-shot learning이라고 하더라구요. 다음 방법을 적용하면 저의 이전 블로그에 게시된 내용 일부를 학습을 시킬 수 있습니다. 이로 인해 나만의 블로그 스타일을 Claude AI에게 학습을 시켜 그 결과, Claude AI가 생성한 초안은 마치 제가 직접 쓴 것처럼 자연스러웠고, 톤 앤 매너를 그대로 유지하는데 큰 도움이 되었습니다. Claude AI에게 과거 포스팅을 학습시키는 방법을 더 자세히 설명해 드리겠습니다. 먼저, 제 블로그에서 Claude AI에게 학습시키고 싶은 포스팅 3-5개를 선택합니다. 이때, 선택한 포스팅들은 제 글쓰기 스타일과 톤, 그리고 주제 면에서 일관성이 있어야 합니다. 예를 들어, 제가 선택한 포스팅은 다음과 같습니다. “Claude 3 Opus vs. ChatGPT 비교" “Claude로 논문 및 연구 보고서 분석[팁]" "생성형 AI, 윤리와 논리의 경계에서 길을 찾는 과정 소개" 선택한 포스팅 텍스트를 복사하여 한 곳에 모아 텍스트 파일 또는 워드 문서를 만듭니다. 이 파일을 Claude AI 프롬프트를 통해서 업로드 한 후  "Claude, 업로드한 텍스트는 내 과거 블로그 포스팅 3개입니다. 이를 분석하여 나의 글쓰기 스타일, 선호하는 단어와 표현, 그리고 주제 전개 방식을 학습해 주세요. 이를 바탕으로, '블로그 글쓰기에서 AI 활용의 미래'라는 주제로 800자 내외의 포스팅 초안을 작성해 보세요." 이렇게 프롬프트를 전달하면, Claude AI는 제공된 텍스트를 분석하여 제 글쓰기 스타일을 학습합니다. 그리고 그를 바탕으로 새로운 주제의 포스팅 초안을 생성할 수 있습니다.  Claude AI가 생성한 초안을 보면, 제가 선호...

구글 드라이브에서 내 파일이 갑자기 사라졌어요 [알아두면 쓸모 있는 구글 드라이브 팁]

  구글 드라이브에서 고아가 된(정리 되지 않은)  파일들에 대한 현상 및 복원 방법 및 공유 드라이브 활용 목차  배경 내 파일이나 폴더가 사라지고 (삭제된 것은 아님) 찾을 수 없는 현상 고아가 된 파일 (정리가 안된 파일) 을 찾아 내고 복원하는  방법 고아가 된 과정을 추적하는 방법 배경   구글 드라이브의 내 드라이브에서 협업을 위한 협업 폴더를 생성한 후 다른 팀원간들간에 공유하여 작업하는 동안 예기치 못하게 내가 생성한 파일들 또는 폴더가 갑자기 사라지는 현상이 발생 할 수 있습니다. 또한 이를 경험한 사용자들이 많이 있습니다.  내가 파일이나 폴더를 삭제하지 않았는데 불구하고 휴지통에도 없고, 내가 삭제한 기억도 없고, 이러한 현상이 발생할 경우에는 본 벡서서에서 설명하는 해당 폴더나 파일들이 ‘고아 (Orphaned)’ 가 된 상태가 되어있는게 분명합니다.  한글 도움말에는 ‘정리가 되지 않은 파일 (또는 분리가 된 파일)' 이라고 설명되어 있기도 합니다. 고아가 된 파일들은 어떠한 폴더에도 속하여 있지 않고, 내 휴지통에도 존재하지 않는 현상입니다. 그러나, 구글 드라이브에서는 용량을 계속 차지 않고 있는 상태입니다. 간혹 왜? 내가 삭제한 적이 없는데 파일이 없어졌거나 폴더가 보이질 않는 경우 당황하지 않고 이문서를 자세히 참조하면 해답을 찾을 수 있습니다.   내 파일이나 폴더가 사라지고 (삭제된 것은 아님) 찾을 수 없는 현상      1. 내 드라이브에서 Folder A를 생성하고 Folder A 안에 File A 를 생성 합니다. 나중에 File A를 삭제 하고, 그 이후에 Folder A 까지 삭제를 할 수 있습니다. 그후 휴지통에서 File A만 복원을 할 경우 삭제된 File A 를 복원하려고 하는데 File A가 존재하였던 상위 폴더 ‘Folder A’는 이미 삭제된 상태입니다. 이럴때 File A는 ...

[팁] Google Slide 프리젠테이션시 모든 한글폰트가 '굴림체' 로 바뀌는 현상을 해결한 크롬 확장 프로그램 소개

구글 문서도구인 구글 슬라이드를 이용하여 프리젠테이션을 많이 하는 분들을 위한 희소식 현재 구글 슬라이드에서는 슬라이드 편집시 사용한 고유 한글 폰트들은 프리젠테이션 모드로 전환할 경우는 모두 '굴림체' 로 바뀌어 표시가 되는 불편함이 있었습니다. 예). 슬라이드 편집에서 사용한 '궁서체' 한글 폰트는, 프리젠테이션 모드에서는 '굴림체'로 바뀌어 디스플레이됨 예). 슬라이드 편집 모드 - '궁서체' 폰트 사용 프리젠테이션 모드에서 '굴림체' 로 변경됨    따라서, 이러한 현상을 해결하는 크롬 확장 프로그램이 개발 되었습니다.  크롬 확장 프로그램 명 - ShowAsis 입니다. 크 롬 웹스토어 링크 -  https://goo.gl/PVPkZz 이 확장 프로그램을 사용하여 슬라이드 프리젠테이션을 하면, 편집 모드의 폰트 그대로 프리젠테이션시에도 그대로 한글 폰트로 디스플레이 됩니다. 단, 단점은 슬라이드가 애니메이션 슬라이드가 있는 경우는 애니메이션이 동작하지 않습니다. ----------------------- G Suite/Google Apps 전문 블로그 -  charlychoi.blogspot.kr 도서 '기업과 학교를 위한 구글크롬북'

[알아두면 쓸모 있는 구글 문서 팁] 문서 공유시- 사용자 이름 대신에 익명의 동물이 표시 되는 이유와 동물 종류

구글 드라이브에는 다른 유사 서비스에서는 제공하지 않는 구글 만의 유니크한 기능들이 있다 구글 문서를  불특정 다수에게 전체 공개로 공유할 수 있습니다. 불특정인이 구글 문서에 접속한 경우 익명의 동물로 표시됩니다.  ' 웹에 공개' 또는 '링크가 있는 사용자' 공유 설정을 선택하면 인식할 수 없는 이름이나 익명의 동물이 표시될 수 있습니다. 파일에서 인식할 수 없는 이름을 볼 수 있는 몇 가지 이유는 다음과 같습니다. 메일링 리스트와 파일을 공유합니다. Google 계정이 없는 사용자와 파일을 공유하며, 그 사용자가 다른 사용자에게 공유 초대를 전달했습니다. 내 파일을 수정할 수 있는 누군가가 파일을 다른 사용자와 공유했습니다. 다른 사용자가 자신의 Google 계정 이름을 변경했습니다. 공유 설정 페이지에서 해당 사용자 이름 위로 마우스를 이동하여 이메일 주소를 확인하세요. 익명의 동물 다른 사용자에게 개별적으로 보기 또는 수정 권한을 부여하거나 메일링 리스트에 속해 있는 경우에만 사용자 이름이 표시됩니다. 파일 권한을 '링크가 있는 사용자'로 설정하면 파일을 보고 있는 사용자의 이름이 표시되지 않습니다. 대신 다른 사용자가 익명으로 라벨이 지정되어 표시되고 각 익명 사용자는 다양한 익명의 동물로 나열됩니다. 파일 권한을 '링크가 있는 사용자'로 설정했지만 특정 사용자와 파일을 공유하는 경우 파일을 공유한 사용자의 이름이 표시됩니다. 그 외 다른 사용자가 파일을 볼 때는 익명으로 나타납니다. 비공개 파일의 익명 동물 파일 권한을 '링크가 있는 사용자'로 설정한 다음 이를 '특정 사용자'로 변경하면 다음과 같은 경우 여러 익명의 동물이 표시될 수 있습니다. 누군가 파일을 여러 번 여는 경우에는 익명의 동물 목록에서 오래되고 연결이 끊긴 세션을 강제 종료하는 데 조금 시간이 걸릴 수 있습니다. 누군가 온...