From 6e8a7b81fbbc0ee70d863a726a94eab8a12e2e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=9C=EA=B3=A8=EC=95=BD=EC=82=AC?= Date: Tue, 9 Sep 2025 15:12:54 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9A=20Update=20documentation=20with=20?= =?UTF-8?q?Headplane=20UI=20access=20and=20configuration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update INSTALLATION_GUIDE.md: * Add Headplane configuration section with proper config.yaml * Update docker-compose.yml example with simplified environment variables * Add Headplane login instructions and API key information * Update troubleshooting section for cookie_secret validation errors - Update CLIENT_CONNECTION_TEST.md: * Add Headplane web UI access information * Include external access URL (192.168.0.151:3000/admin/) * Add login credentials and API key details - Update start.sh: * Include Headplane UI URLs in installation summary * Add external access information for network environments All documentation now reflects the working Headplane UI configuration and provides complete setup instructions for both local and external access. πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- CLIENT_CONNECTION_TEST.md | 6 ++++ INSTALLATION_GUIDE.md | 60 +++++++++++++++++++++++++++++---------- start.sh | 3 +- 3 files changed, 53 insertions(+), 16 deletions(-) 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 "πŸ“– λ‹€μŒ 단계:"