개인비서 만들기 프로젝트
라즈베리파이를 활용하는 방안
- DNS 싱크홀로 만들어서 집안 Adguard로 활용하기 나쁘지 않은 활용안 같지만, 가족들의 인터넷사용이 전부 라즈베리파이를 거쳐서 간다는게 조금 꺼림찍함
기능적으로 설명하자면 …
집안 공유기의 DNS 서버 주소를 라즈베리파이의 주소로 바꾸어, 공유기와 연결된 디바이스들의 DNS 서버를 라즈베리파이 서버로 바꾸는 것이다.
라즈베리 파이의 DNS 주소는 구글 DNS서버로 잡아주거나, 기존 기본값이었던 DNS주소로 잡아 계층적인 구조를 유지할 수 있다.
우리 집안만의 DNS 프록시 서버가 하나 생겼으므로 여기서 미리 방지하거나, 추가적인 보안을 강구할 수 있다.
가장 대표적으로 광고를 차단하는 서버를 만들 수 있다.
모든 웹사이트 광고들은 url을 통해 다운 받은 html을 기반으로 다시 정보를 받아오는 과정으로 웹사이트에 띄우는 것이기 때문에, 라즈베리파이는 외부로 나가는 트래픽만 감시하며, 블랙 리스트에 따라 0.0.0.0 과 같은 의미없는 응답을 주면 된다.
- OpenClaw를 사용하여 MCP를 활용한 개인비서로 활용하기 자동화할게 뭐가 있을까 싶긴하지만, 기존 컴퓨터에서 해야할 일을 병렬적으로 다른 서버에서 돌릴 수 있다는 이점이 있다.
Telegram 의 경우에는 Long polling(기본값), Webhook 방식으로 통신한다고 한다.
- Long polling의 경우는 라즈베리파이가 지속적으로 확인하는 구조기 때문에 추가적인 보안 사항이 필요없지만 (외부 인바운드 포트가 필요없음)
- Web hook의 경우 외부 트래픽이 서버에 영향을 주는 상황이므로 보안적으로 설정해야할 것들이 많아진다.
Telegram으로 챗봇을 구현할 경우,
Webhook의 경우에 TailScale 를 사용할 시, 따로 public IP가 필요하다(TailScale은 등록된 호스트끼리만 연결 가능) 따라서 TailScale Funnel 이나 CloudFlare Tunnel 을 활용하여 서비스 용 IP를 따로 구성해야하는 번거러움이 존재한다.
Long polling의 경우는 따로 번거로운 설정이 필요하지 않다.(이런 이유로 기본값인듯..)
Discord로 챗봇을 구현할 경우
디스코드는 기본적으로 Websocket을 기반으로 작동한다.
여기서 좀 재밌는 상황이 생기는데, 디스코드 또한 텔레그램처럼 TailScale을 사용하면 접속이 안되어야 정상이라고 생각했지만, 트래픽이 인바운드인지 아웃바운드인지 에 따라 달라진다.
텔레그램의 경우는 동작이, Telegram → 개인 서버(tailscale) 디스코드의 경우, 개인서버(tailscale) → 디스코드
텔레그램의 경우 인바운드 방식으로 연결을 시도하기 때문에, TailScale이 내부주소로만 열려있으면 접속할 수 없다.
디스코드의 경우 아웃바운드 방식으로 연결을 시도하기 때문에, Tailscale이 임시포트를 통해 연결한 방식으로 Discord가 통신하여 Websocket 연결을 할 수 있다.
Discord로 챗봇 사용
- 연속적인 질문 및 데이터 유지를 위해 Redis, SQLite를 활용
- Tailscale로 원격접속 가능
- Docker 컨테이너를 사용하여 각 서버가 독립적인 환경에서 구동
- Worker를 사용하여 작업을 처리 및 관리함
- Openclaw가 응답을 받을 수 있는 상황에 Message queue에서 작업 옮김
활용도
- 기본적인 AI 챗봇으로 활용할 계획
- MCP가 필요한 영역에 있어서 해당 응용 프로그램 토큰을 등록하여 사용
- 맥북 내부 파일을 사용할 일이 있으면 ssh를 통해 내부 파일 볼수 있게 설정
