#!/bin/bash echo "πŸš€ Headscale + Headplane μ„€μΉ˜ μ‹œμž‘..." # ν˜„μž¬ 디렉토리 확인 CURRENT_DIR=$(pwd) echo "πŸ“ ν˜„μž¬ μž‘μ—… 디렉토리: $CURRENT_DIR" # ν•„μš”ν•œ νŒŒμΌλ“€ 확인 if [ ! -f "docker-compose.yml" ]; then echo "❌ docker-compose.yml 파일이 μ—†μŠ΅λ‹ˆλ‹€. μ˜¬λ°”λ₯Έ λ””λ ‰ν† λ¦¬μ—μ„œ μ‹€ν–‰ν•΄μ£Όμ„Έμš”." exit 1 fi if [ ! -f ".env.example" ]; then echo "❌ .env.example 파일이 μ—†μŠ΅λ‹ˆλ‹€." exit 1 fi # .env 파일 생성 if [ ! -f ".env" ]; then echo "πŸ“ .env 파일 생성 쀑..." cp .env.example .env echo "βœ… .env 파일이 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€." fi # 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"