NixOS 환경에서 Podman 안의 OpenClaw 설정하기
개요
OpenClaw를 docker로 돌리고, loopback port 하나 뚫어서 리버스 프록시로 연결하고, 웹에서 접속할 수 있게 하고 싶어서 간단한 OAuth2 서버 하나 앞에 붙이면 된다.
OpenClaw 설치
Docker 안에서는 왕처럼 돌아갈 수 있는 OpenClaw 에이전트를 목표로 하고 있다. 일단 openclaw 저장소를 클론한 다음, 대충 LLM에게 다음 사항을 요청하자.
Docker 이미지 안에서 rg (ripgrep) 툴 쓸수있게 해줘.
python 실행하면 python3으로 alias되게 해줘. pip 패키지 맘대로 인스톨할 수 있게 해줘
docker 실행 스크립트에서 포트 연결할 때 127.0.0.1에 바인드하게 해줘
이런게 없으면 대화 중간에 간단한 작업을 자주 실패하기 때문에, 실패하는 것마다 적당히 Docker 환경에서도 제공해주는 편이 낫다고 본다. 세번째 프롬프트는 보안상 내 OpenClaw 서버가 리버스 프록시 없이 공개로 연결되는 것을 막기 위해서 설정한다.
제정신 박힌 LLM이라면 이정도 쿼리는 문제없이 처리할 것이다. 실행한 다음에 docker/podman ps 해서 제대로 listening host가 설정되었는지 확인해주면 좋다.
OpenClaw 설정
trusted-proxy 모드가 있고, 나는 여기에 Caddy + authelia를 붙여서 설정해봤다.
즉, 사용자가 왔는데 인증을 안했으면 authelia 호스트로 연결해주고, authelia에서 인증 성공하면 “XX 유저로 인증됨!” 헤더와 함께 Claw에게 연결해준다는 거시다.
JSON 파일에 각종 설정을 해야하는데, 뭔가 잘못 설정되었으면 podman logs … 명령으로 확인해가면서 디버깅하면 된다. 참고로 authelia의 사용자 헤더는 “Remote-User”인 듯 하다.
서버는 NixOS로 설정했으니, 사실 이부분도 LLM에게 맡기면 된다…
결론
이제 https://음냐음냐.내서버.주소 로 연결하면 https://인증.내서버.주소 에서 로그인을 확인한 후, OpenClaw의 기본 UI가 맞아주는 서버로 연결된다. 메신저 연동 하기싫으니 대충 이걸로 써볼란다.