diff --git a/CLIENT_CONNECTION_TEST.md b/CLIENT_CONNECTION_TEST.md index ed13c9c..768c84b 100644 --- a/CLIENT_CONNECTION_TEST.md +++ b/CLIENT_CONNECTION_TEST.md @@ -291,5 +291,11 @@ Headscale 서버와 Tailscale 클라이언트 간의 연결이 완벽하게 성 - ✅ IP 주소 자동 할당 성공 - ✅ 실시간 통신 확인 - ✅ Headscale 관리 인터페이스 정상 동작 +- ✅ Headplane 웹 UI 외부 접속 성공 + +### 🌐 완전한 관리 환경 구축 +- **Headscale API**: http://localhost:8070 (명령줄 관리) +- **Headplane UI**: http://192.168.0.151:3000/admin/ (웹 관리) +- **로그인 API Key**: `8qRr1IB.tV95CmA0fLaCiGGIgBfeoN9daHceFkzI` 이제 **Tailscale을 완전히 대체**할 수 있는 자체 호스팅 VPN 솔루션이 구축되었습니다! \ No newline at end of file diff --git a/INSTALLATION_GUIDE.md b/INSTALLATION_GUIDE.md index 2cf679e..75f7a25 100644 --- a/INSTALLATION_GUIDE.md +++ b/INSTALLATION_GUIDE.md @@ -73,15 +73,8 @@ services: restart: unless-stopped environment: - TZ=Asia/Seoul - - HOST=0.0.0.0 - - PORT=3000 - HEADSCALE_URL=http://headscale:8080 - - ROOT_API_KEY=${HEADSCALE_API_KEY} - - HEADSCALE_INTEGRATION=docker - - HEADSCALE_CONTAINER=headscale - - COOKIE_SECRET=headscale-ui-secret-key-change-me - - COOKIE_SECURE=false - - DISABLE_API_KEY_LOGIN=false + - HEADSCALE_API_KEY=${HEADSCALE_API_KEY} volumes: - ./headplane-config:/etc/headplane ports: @@ -167,7 +160,34 @@ oidc: allowed_users: [] ``` -### 4단계: 환경변수 설정 +### 4단계: Headplane 설정 파일 + +#### headplane-config/config.yaml +```yaml +headscale: + url: http://headscale:8080 + api_key: YOUR_API_KEY_HERE # 자동 생성됨 + config_strict: false + +server: + host: 0.0.0.0 + port: 3000 + cookie_secret: headscale-ui-secret-32-chars-key # 정확히 32자 + cookie_secure: false + +settings: + title: "Headscale 관리 패널" + favicon_url: "" + custom_css: "" +``` + +**중요 설정사항:** +- `cookie_secret`: 정확히 32자여야 함 (설정 검증 오류 방지) +- `config_strict: false`: 설정 검증 완화 +- `api_key`: 설치 시 자동 생성되어 교체됨 +- 설정 파일은 환경변수보다 우선순위가 높음 + +### 5단계: 환경변수 설정 #### .env.example ```bash @@ -285,10 +305,14 @@ lsof -i :8080 ### Headplane 설정 파일 문제 ```bash -# 빈 설정 파일 생성 -echo "# Minimal config file for Headplane" > headplane-config/config.yaml +# cookie_secret 길이 오류 시 (정확히 32자 필요) +echo "headscale-ui-secret-32-chars-key" | wc -c # 32자 확인 -# 환경변수 우선 사용 설정 +# 설정 파일 재검증 +docker-compose logs headplane --tail 10 + +# 컨테이너 재시작으로 설정 재로드 +docker-compose restart headplane ``` ### 헬스체크 실패 @@ -301,13 +325,19 @@ echo "# Minimal config file for Headplane" > headplane-config/config.yaml ### 접속 정보 - **Headscale API**: http://localhost:8070 -- **Headplane UI**: http://localhost:3000 (설정 중) +- **Headplane UI**: http://localhost:3000/admin/ (로그인 페이지) +- **외부 접속**: http://192.168.0.151:3000/admin/ (네트워크 설정에 따라) - **메트릭스**: http://localhost:9090 ### 생성된 정보 - **사용자**: myuser (ID: 1) -- **API 키**: 자동 생성됨 -- **Pre-auth 키**: 24시간 유효, 재사용 가능 +- **API 키**: 8qRr1IB.tV95CmA0fLaCiGGIgBfeoN9daHceFkzI (자동 생성됨) +- **Pre-auth 키**: fc4f2dc55ee00c5352823d156129b9ce2df4db02f1d76a21 (24시간 유효, 재사용 가능) + +### 🔑 Headplane 로그인 +1. 브라우저에서 http://localhost:3000/admin/ 또는 http://192.168.0.151:3000/admin/ 접속 +2. **API Key** 필드에 입력: `8qRr1IB.tV95CmA0fLaCiGGIgBfeoN9daHceFkzI` +3. **Sign In** 버튼 클릭 ### 네트워크 설정 - **IPv4**: 100.64.0.0/10 diff --git a/start.sh b/start.sh index 6dde00f..37fdae2 100755 --- a/start.sh +++ b/start.sh @@ -68,7 +68,8 @@ echo "🎉 설치 완료!" echo "" echo "📋 접속 정보:" echo " - Headscale API: http://localhost:8070" -echo " - Headplane UI: http://localhost:3000" +echo " - Headplane UI: http://localhost:3000/admin/" +echo " - 외부 접속: http://192.168.0.151:3000/admin/" echo " - API 키: $API_KEY" echo "" echo "📖 다음 단계:"