#!/bin/bash echo "๐Ÿš€ Headscale + Headplane ์„ค์น˜ ์‹œ์ž‘..." # Docker ๋ฐ Docker Compose ์„ค์น˜ ํ™•์ธ if ! command -v docker &> /dev/null; then echo "โŒ Docker๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Docker๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ด์ฃผ์„ธ์š”." exit 1 fi if ! command -v docker-compose &> /dev/null; then echo "โŒ Docker Compose๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Docker Compose๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ด์ฃผ์„ธ์š”." exit 1 fi echo "โœ… Docker ํ™˜๊ฒฝ ํ™•์ธ ์™„๋ฃŒ" # ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ echo "๐Ÿ“ฆ Headscale ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘..." docker-compose up -d headscale # Headscale์ด ์‹œ์ž‘๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ echo "โณ Headscale ์„œ๋น„์Šค ์‹œ์ž‘ ๋Œ€๊ธฐ ์ค‘..." sleep 10 # API ํ‚ค ์ƒ์„ฑ echo "๐Ÿ”‘ API ํ‚ค ์ƒ์„ฑ..." API_KEY=$(docker-compose exec -T headscale headscale apikeys create | grep -o 'hs_[a-zA-Z0-9]*') if [ -z "$API_KEY" ]; then echo "โŒ API ํ‚ค ์ƒ์„ฑ ์‹คํŒจ. ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”:" echo "docker-compose exec headscale headscale apikeys create" exit 1 fi echo "โœ… API ํ‚ค ์ƒ์„ฑ ์™„๋ฃŒ: $API_KEY" # .env ํŒŒ์ผ ์—…๋ฐ์ดํŠธ sed -i "s/HEADSCALE_API_KEY=your_api_key_here/HEADSCALE_API_KEY=$API_KEY/" .env echo "๐ŸŒ Headplane ์›น UI ์‹œ์ž‘..." docker-compose up -d headplane echo "" echo "๐ŸŽ‰ ์„ค์น˜ ์™„๋ฃŒ!" echo "" echo "๐Ÿ“‹ ์ ‘์† ์ •๋ณด:" echo " - Headscale API: http://localhost:8080" echo " - Headplane UI: http://localhost:3000" echo " - API ํ‚ค: $API_KEY" echo "" echo "๐Ÿ“– ๋‹ค์Œ ๋‹จ๊ณ„:" echo " 1. ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž ์ƒ์„ฑ:" echo " docker-compose exec headscale headscale users create myuser" echo "" echo " 2. Pre-auth ํ‚ค ์ƒ์„ฑ:" echo " docker-compose exec headscale headscale preauthkeys create --user myuser --reusable --expiration 24h" echo "" echo " 3. ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ:" echo " tailscale up --login-server=http://localhost:8080" echo "" echo "๐Ÿ“Š ์ƒํƒœ ํ™•์ธ:" echo " docker-compose ps" echo " docker-compose logs -f"