방마다 다양한 설정(등급 개수, 자동발송 on/off, 랜덤박스 확률 등)이 늘어나면서, 이걸 전부 카카오톡 명령어로만 조작하기엔 한계가 있었습니다. 그래서 브라우저에서 켜고 끌 수 있는 설정 페이지를 만들게 됐고, 그 과정에서 Cloudflare Tunnel 사용 방식도 함께 바뀌었습니다.
카톡 명령어로 여는 임시 링크
!설정, !랜덤박스설정 같은 명령어를 채팅방에 입력하면, 봇이 그 방 전용의 임시 설정 페이지 링크를 발급해줍니다. 이 링크는 자체 토큰이 붙어 있고 10분 동안만 유효합니다. 링크를 열면 브라우저에서 그 방의 설정을 켜고 끌 수 있는 UI가 뜹니다. 명령어를 실행한 사람만 접근 가능하도록 토큰 기반으로 제한하고, 유효시간을 짧게 둬서 링크가 유출되더라도 위험을 최소화하는 구조입니다.

처음엔 Quick Tunnel이었다
이 설정 페이지를 외부에서 접속 가능하게 만들기 위해 처음엔 Cloudflare Tunnel의 Quick Tunnel 방식을 썼습니다. 별도 설정 없이 명령 한 줄로 임시 URL을 받아 바로 쓸 수 있어서 초기 개발 단계에는 편리했습니다. 문제는 Quick Tunnel의 URL이 접속할 때마다(정확히는 터널을 새로 열 때마다) 랜덤하게 바뀐다는 점이었습니다. 매번 링크가 달라지니 “고정된 주소에 카톡 명령어로 발급받은 토큰만 붙여서 접속"하는 구조와는 궁합이 안 좋았습니다.
Named Tunnel + 고정 도메인으로 전환
결국 봇 설정 페이지용 고정 도메인을 마련하고, Cloudflare의 네임드 터널(토큰 기반으로 미리 등록해두는 영구적인 터널)로 전환했습니다. 이렇게 하니 도메인 자체는 항상 고정되어 있고, 카톡 명령어로 발급하는 건 그 고정 도메인 뒤에 붙는 임시 토큰뿐인 구조로 깔끔하게 정리됐습니다. 링크가 매번 바뀌는 문제도 사라졌고, 사용자 입장에서도 “이 도메인은 항상 우리 봇 설정 페이지"라고 신뢰할 수 있게 됐습니다.
돌아보며
Quick Tunnel은 이름 그대로 빠르게 테스트해보기엔 좋지만, 고정된 주소가 필요한 서비스에는 처음부터 맞지 않는 도구였습니다. 개발 초기의 편의성과 운영 단계의 안정성은 다른 문제라는 걸 다시 확인한 경험이었고, 지금은 이 블로그(blog.mhub.uk)를 포함해 이 폰 위에서 도는 여러 서비스들도 전부 같은 방식(네임드 터널 + 고정 도메인)으로 노출하고 있습니다.

🤖 이 포스팅은 AI의 도움을 받아 작성되었습니다.


💬 댓글