
Raspberry Pi에서 AI 에이전트를 24/7 구동하고 메모리를 유지하는 방법
요약
Raspberry Pi 5를 활용하여 AI 에이전트(Hermes)를 24시간 중단 없이 구동하고 로컬 메모리를 유지하는 방법을 설명합니다. 노트북의 절전 문제와 VPS의 IP 차단 문제를 해결하기 위한 전용 하드웨어 구축 가이드를 제공합니다.
핵심 포인트
- Raspberry Pi 5를 활용한 24/7 AI 에이전트 구동 환경 구축
- VPS의 데이터센터 IP 차단 문제를 가정용 IP로 해결
- 로컬 파일 시스템을 통한 에이전트 메모리 및 상태 유지
- 저전력 미니 PC를 활용한 에이전트 전용 하드웨어 구성
AI 에이전트는 드디어 올해 유용해졌습니다. 제가 계속 부딪혔던 문제는 에이전트 자체가 아니라, 그것을 둘 좋은 장소가 없다는 것이었습니다.
제 노트북은 잠들고, 저렴한 VPS는 절반의 웹사이트에서 데이터센터 IP가 차단됩니다. 그리고 저는 제 일상적으로 사용하는 기기 옆에서 실제 브라우저 세션으로 구동되는 에이전트라는 아이디어가 마음에 들지 않았습니다.
그래서 저는 그것에게 전용 컴퓨터를 주었습니다. 즉, Hermes가 24시간 내내 실행되는 Raspberry Pi입니다. 이 글은 제가 어떻게 이것을 설정했는지에 초점을 맞추고 있습니다. 데모와 실제로 의존할 수 있는 것을 구분하는 두 가지 핵심 요소, 즉 항상 켜져 있는 것과 상태를 잃지 않는 것에 중점을 두고 설명하겠습니다.

여기에 있는 모든 것은 항상 켜져 있는 어떤 Linux 박스(미니 PC, NUC, 구형 노트북)에서도 작동합니다. 저는 Pi 5를 구체적인 예시로 사용하겠습니다.
전용의 항상 켜진 하드웨어가 필요한 이유?
노트북이나 5달러짜리 VPS에서 에이전트를 실행할 수는 있습니다. 둘 다 작동합니다. 하지만 다음과 같은 상황에 직면하면 전용 박스가 필요해집니다:
- 노트북이 잠기는 경우. 하루에 두 번 무언가를 확인하거나 받은 편지함에 답장해야 하는 에이전트는 새벽 3시에 깨어 있어야 합니다. 덮인 노트북은 그렇지 못합니다.
- 데이터센터 IP가 차단되는 경우. 웹의 많은 부분(소매, 은행, 소셜, 티켓팅 등)은 VPS IP 범위를 봇으로 간주합니다. 가정용 연결에 있는 기기는 거주지 IP에서 브라우징하며, 사용자가 로그인한 곳에서 로그인 상태를 유지합니다.
- 메모리를 로컬로 유지하고 싶은 경우. Hermes는 자신에 대해 학습한 것을 파일 형태로 보관합니다. 자체 박스에서는 이 파일들이 책상 위에 남아있습니다. 읽고, 편집하고, 백업하고, 이동할 수 있습니다.
솔직히 말해서 트레이드오프가 있습니다. 작은 박스는 작업 스테이션이 아닙니다. 이는 무거운 병렬 작업이나 로컬 모델 추론(local model inference)을 위한 것이 아니라, 24시간 내내 짧은 간격으로 작동하는 에이전트를 위해 크기가 결정된 것입니다. 하지만 이 작업에 있어서는 올바른 트레이드오프이며, 미리 알고 가는 것이 중요합니다.
1. 기준선
- NVMe SSD를 장착한 Raspberry Pi 5 (8 GB), 64-bit Raspberry Pi OS (또는 모든 Debian/Ubuntu 기반 기기)를 사용합니다.
- 공식 설치 프로그램을 사용하여 Hermes를 설치합니다:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
hermes setup을 한 번 실행한 다음,hermes model을 통해 모델 제공자(model provider)를 선택합니다. ChatGPT 플랜, OpenRouter, 모든 API 키, 또는 로컬 엔드포인트(local endpoint)를 선택할 수 있습니다. Hermes는 제공자 불가지론적(provider-agnostic)이므로, 특정 제공자를 전제로 하지 않습니다.
Linux/macOS에서 Hermes는 기본적으로 ~/.hermes에 상태(state)를 저장합니다 (메모리, 기술, 설정, 채팅 기록). 저는 이를 $HERMES_HOME이라고 부르겠습니다. 본인의 설치 환경에서 경로를 확인하세요:
export HERMES_HOME="$HOME/.hermes"
2. systemd로 계속 실행하기
에이전트를 서비스(service)로 실행하여 부팅 시 시작되고, 프로세스가 종료되면 자동으로 재시작되도록 합니다:
# /etc/systemd/system/hermes.service
[Unit]
Description=Hermes Agent
...
sudo systemctl daemon-reload
sudo systemctl enable --now hermes
systemctl status hermes
3. 정전 상황에서 살아남기
항상 켜져 있는 기기는 결국 전원을 잃게 됩니다. 스스로 다시 켜질 수 있도록 조치하세요:
- 정전 후 자동 전원 켜기. 미니 PC/NUC의 경우, BIOS에서 "Restore on AC Power Loss"를 활성화합니다. Pi는 전원이 공급될 때마다 켜지므로, 회로가 제대로 작동하는지만 확인하면 됩니다.
- 서비스로 바로 부팅하기. 위에서 언급한
systemctl enable이 이미 이 작업을 처리합니다. - 선택 사항: 하드웨어 워치독 (hardware watchdog). 많은 보드(Pi 포함)는 커널이 멈췄을 때 기기를 재부팅하는 워치독(watchdog)을 제공합니다. 추가적인 안전망을 위해
/etc/systemd/system.conf에서RuntimeWatchdogSec를 통해 이를 활성화하세요. - 저널링 파일 시스템 (journaling filesystem) 사용 (ext4/xfs — 기본값). 갑작스러운 전원 손실로 인해 쓰기 작업 도중 상태(state)가 손상되는 것을 방지합니다.

4. 중요한 데이터 백업하기
지속성 있는 에이전트 (persistent agent)의 핵심은 바로 기억한다는 것입니다. 따라서 반드시 보호해야 할 대상은 $HERMES_HOME입니다. 이를 암호화 (encrypted) 하여, 정기적으로, 그리고 기기 외부 (off the box) 에 백업하십시오.
저는 암호화 도구로 age를 사용합니다. 크기가 매우 작고 투명하기 때문입니다. 저는 백업/검증/복구/상태 확인(health check)의 전체 흐름을 하나의 작은 오픈 스킬 (open skill)로 패키징하여, 매번 셸 명령어를 복사해서 붙여넣지 않도록 만들었습니다: hermes-backup-recovery.
backup.sh의 핵심 코드는 다음과 같습니다:
# 암호화되고 타임스탬프가 찍히며, 보관 주기(retention)를 적용함
tar -C "$(dirname "$HERMES_HOME")" -czf - "$(basename "$HERMES_HOME")" \
| age -r "$AGE_RECIPIENT" -o "$BACKUP_DIR/hermes-$(date -u +%Y%m%dT%H%M%SZ).tar.gz.age"
systemd 타이머를 사용하여 매일 밤 실행하고, 최소 한 개의 복사본은 반드시 기기 외부에 보관하십시오. 다른 컴퓨터, NAS, 또는 오브젝트 스토리지 (object storage) 등이 해당됩니다. 원본과 동일한 SSD에 저장된 백업은 해당 SSD가 고장 나면 살아남을 수 없습니다. age의 개인 키 (private key) 도 기기 외부에 보관하십시오. 그렇지 않으면 도난이나 장애 발생 시 두 가지 모두를 잃게 됩니다.

5. 복구가 가능한지 증명하기
한 번도 복구해 본 적 없는 백업은 백업이 아니라 추측일 뿐입니다. 저는 한 달에 한 번씩 임시 디렉토리 (scratch directory)에 복구 훈련을 실시하여 파일이 제대로 돌아오는지 확인합니다:
# hermes-backup-recovery 스킬 사용
BACKUP_DIR=/backups AGE_IDENTITY=~/age/keys.txt ./scripts/verify.sh
RESTORE_TARGET=/tmp/restore-drill ./scripts/restore.sh --apply /backups/hermes-<timestamp>.tar.gz.age
verify.sh는 체크섬 (checksum)을 확인하고 아카이브를 테스트 복호화합니다. restore.sh는 기본적으로 드라이 런 (dry-run) 모드로 동작하며, --apply 옵션을 붙여야만 실제로 파일을 작성합니다.
6. 상태 확인 (Health checks)
장애가 발생하기 전에 문제를 파악하세요. 타이머를 사용하여 일회성 점검(서비스 가동 여부, 디스크 용량, 최근 백업 여부 등)을 수행하고, 주의가 필요한 경우 0이 아닌 종료 코드(non-zero exit code)를 반환하도록 설정하여 이미 사용 중인 알림 서비스와 연결하세요.
./scripts/healthcheck.sh # exit 0 = 정상, 1 = 확인 필요
7. 보안 기본 사항 (Security basics)
- LAN 내에서만 유지하세요. 에이전트를 공용 인터넷에 노출할 필요는 없습니다. 홈 네트워크나 프라이빗 터널 (Tailscale/WireGuard)을 통해 접속하세요. 포트 포워딩 (Port-forwarding)을 하지 마세요.
- 비밀 정보(Secrets)는 root 전용 파일에 저장하세요 (
chmod 600). 절대 어디에도 커밋(commit)하지 마세요. - root가 아닌 별도의 unix 사용자(unix user)로 실행하세요. 그래야 잘못된 브라우징 세션이 발생하더라도 시스템의 나머지 부분을 건드릴 수 없습니다.

마무리 (Wrapping up)
위의 모든 내용을 담은 두 개의 저장소(repo)이며, 모두 MIT 라이선스입니다:
- 📘 hermes-always-on — 전체 24/7 가이드, systemd 유닛(units) 및 타이머(timers)
- 🛠 hermes-backup-recovery — 백업/검증/복구/상태 확인 기능 (agentskills.io 형식)
매번 기기마다 수동으로 설정하는 것에 지쳐서, 결국 Hermes, 대시보드, 백업/복구가 미리 구성된 소형 상시 가동 컴퓨터로 패키징하여 출시하게 되었습니다 — MangoTart. 이 부분은 선택 사항이며, 위의 가이드는 이미 보유하고 있는 하드웨어에서도 충분히 독립적으로 작동합니다.
만약 무언가에서 에이전트를 24/7로 구동하고 계신다면, 어떤 보드를 사용 중인지, 어떤 문제들이 발생하는지 꼭 듣고 싶습니다. 그것이 제가 이 글을 작성한 이유의 절반이기도 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기