ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐ŸŒ Exposing Your Hermes Agent to the Internet with Tailscale Funnel (Safely)
Dev.toDev.to
Infrastructure

Tailscale Funnel์„ ํ™œ์šฉํ•œ ๋กœ์ปฌ Hermes Agent์˜ HTTPS ๋ณด์•ˆ ๋…ธ์ถœ

๐ŸŒ Exposing Your Hermes Agent to the Internet with Tailscale Funnel (Safely)

Charan Gutti2026๋…„ 6์›” 25์ผ6๋ถ„intermediate

Context

๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” Hermes Agent์˜ OpenAI ํ˜ธํ™˜ API๋ฅผ ์™ธ๋ถ€ ๋ฐฑ์—”๋“œ(Vercel, Railway ๋“ฑ)์™€ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ ๋ฐœ์ƒ. ๊ธฐ์กด Port Forwarding ๋ฐฉ์‹์€ ํ™ˆ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์•ผ๊ธฐํ•˜๋ฉฐ, VPS ๊ตฌ์ถ•์ด๋‚˜ Nginx ์„ค์ •์€ ์ธํ”„๋ผ ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ํ•œ๊ณ„ ์กด์žฌ.

Technical Solution

  • Tailscale Funnel ๋„์ž…์„ ํ†ตํ•œ ์™ธ๋ถ€ ๊ณต๊ฐœ HTTPS ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ ๋ฐ TLS ์ธ์ฆ์„œ ์ž๋™ ๊ด€๋ฆฌ
  • API_SERVER_HOST๋ฅผ 127.0.0.1๋กœ ์ œํ•œํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์™ธ๋ถ€ ๋…ธ์ถœ์„ ์ฐจ๋‹จํ•˜๊ณ  ๋กœ์ปฌ ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋งŒ ์ˆ˜์‹ ํ•˜๋„๋ก ์„ค๊ณ„
  • Bearer Token ๊ธฐ๋ฐ˜์˜ API_SERVER_KEY ์ธ์ฆ ๊ณ„์ธต์„ ์ ์šฉํ•˜์—ฌ ๋น„์ธ์ฆ ์š”์ฒญ์˜ API ์ ‘๊ทผ ์›์ฒœ ์ฐจ๋‹จ
  • OpenAI SDK์˜ baseURL ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ๋กœ์ปฌ ์—์ด์ „ํŠธ์™€ ํด๋ผ์šฐ๋“œ ๋ฐฑ์—”๋“œ ๊ฐ„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ํ™•๋ณดํ•œ ์ถ”์ƒํ™” ๊ตฌ์กฐ ์ฑ„ํƒ
  • TLS ์ข…๋ฃŒ(TLS Termination)๋ฅผ Tailscale ๋‹จ์—์„œ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋กœ์ปฌ ์„œ๋ฒ„์˜ ์•”ํ˜ธํ™” ๋ถ€ํ•˜ ์ œ๊ฑฐ ๋ฐ ๋‹จ์ˆœ ์ „๋‹ฌ ๊ตฌ์กฐ ๊ตฌํ˜„

- ๋กœ์ปฌ ์„œ๋น„์Šค ๋…ธ์ถœ ์‹œ

0.

0.

0.0 ๋ฐ”์ธ๋”ฉ ๋Œ€์‹ 

1

2

7.

0.

0.1 ์‚ฌ์šฉ ๋ฐ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ๊ฒฐํ•ฉ ๊ฒ€ํ†  - ์™ธ๋ถ€ ๊ณต๊ฐœ API ์„ค๊ณ„ ์‹œ ํ•„์ˆ˜์ ์œผ๋กœ Bearer Token ๋“ฑ ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ ์šฉ ์—ฌ๋ถ€ ํ™•์ธ - ํ™˜๊ฒฝ ๋ณ€์ˆ˜(.env)๋ฅผ ํ†ตํ•œ API Key ๋ฐ URL ๊ด€๋ฆฌ๋กœ ์†Œ์Šค ์ฝ”๋“œ ๋‚ด ์‹œํฌ๋ฆฟ ํ•˜๋“œ์ฝ”๋”ฉ ๋ฐฉ์ง€ - ๋„คํŠธ์›Œํฌ ์„ค์ • ์ „ curl์„ ์ด์šฉํ•œ ๋กœ์ปฌ API ์ •์ƒ ๋™์ž‘ ์—ฌ๋ถ€ ์šฐ์„  ๊ฒ€์ฆ

์›๋ฌธ ์ฝ๊ธฐ