내 우분투 서버에 Hermes로 내부 대시보드 만들고 운영하기
요약: 중요한 건 Docker로 띄웠다는 사실이 아니라, 내 우분투 서버 위에서 Hermes Agent를 실행기로 삼아 내부 운영 대시보드를 직접 만들고 계속 고쳐가며 쓰고 있다는 점이다.
대시보드를 만든 이유
내 우분투 서버에는 이것저것 많이 올라가 있다. Hermes Agent, n8n, Docker 서비스, Cloudflare Tunnel, Telegram 알림, 내부 프로젝트들. 처음엔 각각 따로 확인했다.
docker ps
systemctl status something
journalctl -u something
curl localhost:3000
이런 식으로.
물론 가능은 하다. 근데 자주 쓰다 보면 금방 귀찮아진다. 서비스가 죽었는지, 포트가 열려 있는지, n8n은 정상인지, Hermes gateway는 살아 있는지 매번 터미널에서 확인하는 게 은근히 번거롭다.
그래서 생각했다.
내가 쓰는 서버 상태를 한 화면에서 보면 되지 않을까?
처음부터 거창한 운영툴을 만들 생각은 아니었다. Datadog이나 Grafana 같은 걸 붙이고 싶은 것도 아니었다. 그냥 내가 매일 보는 정보만, 내 방식대로 정리된 작은 내부 대시보드가 필요했다.
핵심은 Docker가 아니라 Hermes였다
이 대시보드는 Docker로 배포돼 있다. 하지만 이 글에서 중요한 건 Docker가 아니다.
Docker는 그냥 실행 방식이다. 컨테이너로 띄우면 재시작하기 쉽고, 환경이 고정되고, 서버에서 관리하기 편하니까 쓴다. 그 이상도 이하도 아니다.
진짜 중요한 건 이 대시보드를 내가 Hermes와 대화하면서 만들고 운영한다는 점이다.
예전 같으면 대시보드를 고치려면 이렇게 해야 했다.
- 서버 접속
- 프로젝트 폴더 이동
- 코드 수정
- 빌드
- Docker 재빌드
- 브라우저 확인
- 문제 있으면 다시 수정
지금은 흐름이 다르다.
나: Hermes 페이지에서 토큰 사용량 카드 빼줘.
Hermes: 코드 수정 → 빌드 → Docker 재시작 → 브라우저 확인
나: 프로젝트별 Vercel 링크가 공통 대시보드로 가는데 고쳐줘.
Hermes: Vercel API 확인 → 동적 URL 생성 → 빌드 → 실제 링크 검증
나: Penpot 완전히 삭제해. 대시보드에서도 빼고.
Hermes: Docker 스택 삭제 → 볼륨 확인 → 대시보드 코드 제거 → 404 검증
대시보드는 사람이 직접 보는 화면이지만, 운영 방식은 거의 AI 에이전트 중심으로 바뀌었다.
_내 우분투 서버의 주요 상태, Hermes, n8n, Vercel 프로젝트를 한 화면에서 보는 내부 대시보드._내가 보고 싶은 것만 남겼다
처음에는 욕심이 많았다. 서버 상태, 토큰 사용량, 프로젝트 카드, n8n 상태, Hermes 상태, 배포 링크, 설정값까지 다 보여주고 싶었다.
근데 막상 써보니 자주 보는 정보는 몇 개 안 됐다.
- 서버가 살아 있는가
- Docker 컨테이너가 정상인가
- n8n이 떠 있는가
- Hermes gateway가 살아 있는가
- 주요 프로젝트 링크가 맞는 곳으로 가는가
- 문제가 생겼을 때 어디부터 봐야 하는가
그래서 대시보드도 점점 줄이는 방향으로 갔다. 필요 없는 카드는 빼고, 자주 누르는 링크는 앞으로 가져오고, 설정 화면도 실제로 쓰는 값만 남겼다.
이게 개인 내부 도구의 장점이다. 일반 사용자를 설득할 필요가 없다. 내 사용 패턴에 안 맞으면 바로 지우면 된다.
Linear 느낌의 좌측 메뉴를 붙인 이유
처음 화면은 조금 산만했다. 페이지마다 정보는 있는데, 어디에 뭐가 있는지 한눈에 안 들어왔다.
그래서 좌측 메뉴를 만들었다. 참고한 건 Linear다. 어두운 배경, 작은 메뉴, 튀지 않는 구분선, 현재 위치만 조용히 강조되는 구조.
내부 도구는 예쁘게 꾸미는 것보다 계속 보기 편한 것이 중요하다. 너무 화려하면 금방 질린다. 반대로 너무 밋밋하면 어디를 눌러야 할지 모르겠다.
그래서 지금 구조는 대충 이렇다.
Overview
Server
Hermes
n8n
Settings
많지 않다. 이 정도면 충분하다.
_Hermes Agent 상세 화면. Gateway, Cron, Memory, 세션 상태를 따로 확인할 수 있게 만들었다._Hermes가 좋은 점은 “수정 후 검증”까지 한다는 것
내가 Hermes를 서버에 올려두고 가장 크게 체감한 건 이 부분이다.
단순히 코드를 써주는 게 아니다. 서버 안에서 실제로 실행하고 확인한다.
예를 들면 이런 작업 흐름이다.
1. 코드 수정
2. npm run lint
3. npm run build
4. docker compose build
5. docker compose up -d
6. 브라우저에서 실제 페이지 확인
7. DOM이나 API 응답까지 검증
이 과정이 중요하다. 내부 대시보드는 말만 그럴듯하면 안 된다. 실제 서버에서 떠야 하고, 내가 브라우저로 봤을 때 맞아야 한다.
특히 예전에 Vercel 링크를 고칠 때 이 차이가 컸다. 처음엔 링크가 전부 https://vercel.com/dashboard로 가고 있었다. 보기엔 Vercel 버튼이 있으니 괜찮아 보였지만, 실제로 누르면 각 프로젝트 Overview가 아니라 공통 대시보드로 이동했다.
Hermes는 이걸 하드코딩으로 때우지 않고, Vercel API에서 팀 slug와 프로젝트명을 받아와서 동적으로 URL을 만들게 고쳤다. 그리고 브라우저에서 실제 링크 href까지 확인했다.
이런 게 사람이 직접 하면 귀찮은데, 에이전트가 하면 딱 맞는 작업이다.
운영하면서 계속 지워나갔다
개인 도구를 만들 때 의외로 중요한 건 추가보다 삭제다.
Penpot도 한동안 서버에 올려뒀지만 결국 지웠다. 안 쓰는 서비스는 서버 리소스만 먹고, 대시보드에도 쓸데없는 카드가 남는다.
그래서 이렇게 요청했다.
Penpot 완전히 삭제하려고. 내 대시보드에서도 삭제하고.
Hermes가 한 일은 단순히 카드 하나 지운 게 아니었다.
- Penpot Docker 컨테이너 삭제
- 관련 볼륨 삭제
/home/duncan/docker/penpot디렉토리 삭제- 대시보드의 Penpot 카드 제거
- Settings의 Penpot URL 설정 제거
/server/penpot페이지 삭제- 실제로 404가 나는지 확인
- 메인 페이지 HTML에
penpot문자열이 남았는지 확인
이런 식으로 서비스 제거도 하나의 운영 작업이 된다. 그냥 화면에서 안 보이게 숨기는 게 아니라, 서버와 코드 양쪽에서 실제로 정리하는 것이다.
내 서버가 점점 “대화 가능한 운영 환경”이 되고 있다
이 대시보드는 아직 대단한 제품이 아니다. 남에게 팔 수 있는 SaaS도 아니고, 범용 모니터링 도구도 아니다.
하지만 나한테는 의미가 크다.
서버에 뭔가 문제가 생기면 예전에는 내가 직접 들어가서 봐야 했다. 지금은 먼저 물어본다.
예지야, 메모리 왜 올라갔어?
그러면 Hermes가 free, ps, docker stats, systemctl을 확인해서 원인을 찾아준다. 실제로 VS Code Remote 서버가 맥북에서는 꺼졌는데 우분투에 남아 메모리를 쓰고 있던 것도 이렇게 잡았다.
예지야, 이 프로세스 뭐야?
그러면 dockerd인지, Codex app-server인지, n8n node 프로세스인지 확인하고 설명해준다.
대시보드는 이 구조의 시각적 입구다. 내가 직접 볼 수도 있고, Hermes가 수정할 수도 있고, 필요 없는 건 지울 수도 있다.
그래서 이 대시보드의 진짜 목적
내가 만든 건 단순한 서버 상태판이 아니다.
조금 더 정확히 말하면:
내 우분투 서버를 AI 에이전트가 이해하고 조작할 수 있게 만드는 운영 인터페이스
에 가깝다.
브라우저 화면은 사람을 위한 인터페이스고, Hermes는 실행을 위한 인터페이스다. 둘이 같은 서버 위에 있으니 작업 흐름이 짧아진다.
사람이 본다 → 문제를 말한다 → Hermes가 고친다 → 서버에서 검증한다 → 대시보드에 반영된다
이 순환이 생긴 게 제일 크다.
앞으로 더 붙이고 싶은 것
아직 하고 싶은 건 많다.
- Docker 컨테이너별 메모리/CPU 추이
- n8n 워크플로우 실패 알림 요약
- Hermes gateway 상태와 최근 에러 로그
- GitHub Actions / Vercel 배포 상태
- Linear 이슈 자동화 상태
- 내 서버에서 돌고 있는 장기 프로세스 목록
- “정리해도 되는 서비스” 추천
하지만 전부 한 번에 붙일 생각은 없다. 내부 도구는 많이 넣는 순간 다시 안 쓰게 된다. 필요가 생길 때 하나씩 붙이고, 안 쓰는 건 바로 빼는 게 맞다.
마무리
이 대시보드를 만들면서 느낀 건 하나다.
개인 서버 운영에서 중요한 건 도구를 많이 붙이는 게 아니다. 내가 실제로 운영하는 방식에 맞게, 서버와 AI 에이전트와 화면을 하나의 흐름으로 묶는 것이다.
Docker는 그중 실행 방식일 뿐이다. 핵심은 내 우분투 서버 위에 Hermes가 있고, 내가 그 Hermes에게 말하면 서버가 실제로 바뀐다는 점이다.
이제 내 서버는 그냥 접속해서 관리하는 서버가 아니라, 대화하면서 고쳐가는 작업 환경에 가까워지고 있다.
아직 거칠지만, 이 방향은 꽤 마음에 든다.