Enhanced script to handle existing Tailscale connections
- Add automatic detection of existing Tailscale/Headscale connections
- Implement smart server comparison to avoid unnecessary re-registration
- Add --force option for mandatory re-registration
- Improve user interaction for terminal vs pipe execution
- Add better logout verification with retry logic
- Update documentation with force registration examples
- Change default behavior to auto-register (Y) instead of skip (N)
🚀 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
7e32632186
commit
591173d1cf
@ -21,6 +21,18 @@ chmod +x quick-install.sh
|
|||||||
sudo ./quick-install.sh
|
sudo ./quick-install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 방법 4: 기존 Tailscale 연결이 있는 경우 (강제 재등록)
|
||||||
|
```bash
|
||||||
|
# 기존 Tailscale/Headscale 연결을 강제로 해제하고 재등록
|
||||||
|
curl -fsSL https://git.0bin.in/thug0bin/headscale-tailscale-replacement/raw/branch/feature/working-headscale-setup/quick-install.sh | sudo bash -s -- --force
|
||||||
|
```
|
||||||
|
|
||||||
|
### 방법 5: 스크립트 옵션 확인
|
||||||
|
```bash
|
||||||
|
# 사용 가능한 옵션 보기
|
||||||
|
curl -fsSL https://git.0bin.in/thug0bin/headscale-tailscale-replacement/raw/branch/feature/working-headscale-setup/quick-install.sh | bash -s -- --help
|
||||||
|
```
|
||||||
|
|
||||||
## ✨ 자동으로 수행되는 작업
|
## ✨ 자동으로 수행되는 작업
|
||||||
|
|
||||||
### 1. 🔍 시스템 분석
|
### 1. 🔍 시스템 분석
|
||||||
|
|||||||
@ -145,6 +145,11 @@ curl -fsSL https://git.0bin.in/thug0bin/headscale-tailscale-replacement/raw/bran
|
|||||||
wget -qO- https://git.0bin.in/thug0bin/headscale-tailscale-replacement/raw/branch/feature/working-headscale-setup/quick-install.sh | sudo bash
|
wget -qO- https://git.0bin.in/thug0bin/headscale-tailscale-replacement/raw/branch/feature/working-headscale-setup/quick-install.sh | sudo bash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 기존 Tailscale 연결이 있는 경우 (강제 재등록)
|
||||||
|
```bash
|
||||||
|
curl -fsSL https://git.0bin.in/thug0bin/headscale-tailscale-replacement/raw/branch/feature/working-headscale-setup/quick-install.sh | sudo bash -s -- --force
|
||||||
|
```
|
||||||
|
|
||||||
### 지원 OS
|
### 지원 OS
|
||||||
- Ubuntu, Debian, CentOS, RHEL, Rocky Linux, Fedora, Arch Linux
|
- Ubuntu, Debian, CentOS, RHEL, Rocky Linux, Fedora, Arch Linux
|
||||||
- 자동 Tailscale 설치 + Headscale 등록
|
- 자동 Tailscale 설치 + Headscale 등록
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# 팜큐(FARMQ) Headscale 원클릭 설치 및 등록 스크립트
|
# 팜큐(FARMQ) Headscale 원클릭 설치 및 등록 스크립트
|
||||||
# 사용법: curl -fsSL https://raw.githubusercontent.com/your-repo/headscale-setup/main/quick-install.sh | sudo bash
|
# 사용법: curl -fsSL https://git.0bin.in/.../quick-install.sh | sudo bash
|
||||||
# 또는: wget -qO- https://raw.githubusercontent.com/your-repo/headscale-setup/main/quick-install.sh | sudo bash
|
# 또는: wget -qO- https://git.0bin.in/.../quick-install.sh | sudo bash
|
||||||
|
# 강제 재등록: curl -fsSL https://git.0bin.in/.../quick-install.sh | sudo bash -s -- --force
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@ -13,6 +14,27 @@ HEADSCALE_SERVER="https://head.0bin.in" # Headscale 서버 주소
|
|||||||
PREAUTH_KEY="8b3df41d37cb158ea39f41fc32c9af46e761de817ad06038" # 7일간 재사용 가능한 키
|
PREAUTH_KEY="8b3df41d37cb158ea39f41fc32c9af46e761de817ad06038" # 7일간 재사용 가능한 키
|
||||||
FARMQ_NETWORK="100.64.0.0/10" # 팜큐 네트워크 대역
|
FARMQ_NETWORK="100.64.0.0/10" # 팜큐 네트워크 대역
|
||||||
|
|
||||||
|
# 명령행 옵션 처리
|
||||||
|
FORCE_REGISTER=false
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $arg in
|
||||||
|
--force|-f)
|
||||||
|
FORCE_REGISTER=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--help|-h)
|
||||||
|
echo "사용법: $0 [옵션]"
|
||||||
|
echo "옵션:"
|
||||||
|
echo " --force, -f 기존 연결을 강제로 해제하고 재등록"
|
||||||
|
echo " --help, -h 도움말 표시"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# 알 수 없는 옵션 무시
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
# ================================
|
# ================================
|
||||||
# 색상 출력 함수
|
# 색상 출력 함수
|
||||||
# ================================
|
# ================================
|
||||||
@ -246,18 +268,67 @@ register_headscale() {
|
|||||||
# 기존 연결 확인
|
# 기존 연결 확인
|
||||||
if tailscale status >/dev/null 2>&1; then
|
if tailscale status >/dev/null 2>&1; then
|
||||||
print_warning "이미 Tailscale/Headscale에 연결되어 있습니다."
|
print_warning "이미 Tailscale/Headscale에 연결되어 있습니다."
|
||||||
tailscale status
|
|
||||||
|
|
||||||
read -p "기존 연결을 해제하고 새로 등록하시겠습니까? (y/N): " -n 1 -r
|
# 현재 연결 상태 표시
|
||||||
echo
|
CURRENT_STATUS=$(tailscale status 2>/dev/null | head -5)
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
print_info "현재 연결 상태:"
|
||||||
|
echo "$CURRENT_STATUS"
|
||||||
|
|
||||||
|
# 현재 서버 확인
|
||||||
|
CURRENT_SERVER=$(tailscale status --json 2>/dev/null | grep -o '"CurrentTailnet":[^,]*' | cut -d'"' -f4 2>/dev/null || echo "알 수 없음")
|
||||||
|
TARGET_SERVER=$(echo "$HEADSCALE_SERVER" | sed 's|https\?://||' | sed 's|:[0-9]*||')
|
||||||
|
|
||||||
|
print_info "현재 서버: $CURRENT_SERVER"
|
||||||
|
print_info "대상 서버: $TARGET_SERVER"
|
||||||
|
|
||||||
|
# 강제 등록 옵션 확인
|
||||||
|
if [ "$FORCE_REGISTER" = true ]; then
|
||||||
|
print_warning "강제 재등록 옵션이 활성화되었습니다."
|
||||||
|
print_info "기존 연결을 해제하고 재등록합니다..."
|
||||||
|
tailscale logout >/dev/null 2>&1 || true
|
||||||
|
sleep 3
|
||||||
|
# 같은 서버인지 확인
|
||||||
|
elif [[ "$CURRENT_SERVER" == *"$TARGET_SERVER"* ]] || [[ "$TARGET_SERVER" == *"$CURRENT_SERVER"* ]]; then
|
||||||
|
print_success "이미 올바른 Headscale 서버에 연결되어 있습니다!"
|
||||||
|
print_info "등록을 건너뜁니다."
|
||||||
|
return 0
|
||||||
|
# 대화형 실행인지 확인 (터미널에서 직접 실행)
|
||||||
|
elif [ -t 0 ] && [ -t 1 ]; then
|
||||||
|
print_warning "다른 서버에 연결되어 있습니다."
|
||||||
|
echo -n "기존 연결을 해제하고 팜큐 Headscale로 등록하시겠습니까? (Y/n): "
|
||||||
|
read -r REPLY
|
||||||
|
|
||||||
|
# 기본값을 Y로 변경 (엔터만 누르면 Y)
|
||||||
|
if [[ -z "$REPLY" ]] || [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
print_info "기존 연결을 해제합니다..."
|
||||||
|
tailscale logout >/dev/null 2>&1 || true
|
||||||
|
sleep 3
|
||||||
|
else
|
||||||
|
print_info "등록을 건너뜁니다."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# 파이프 실행 시 자동으로 재등록 (기본값: Y)
|
||||||
|
print_warning "다른 서버에 연결되어 있어 자동으로 팜큐 Headscale로 재등록합니다."
|
||||||
print_info "기존 연결을 해제합니다..."
|
print_info "기존 연결을 해제합니다..."
|
||||||
tailscale logout >/dev/null 2>&1 || true
|
tailscale logout >/dev/null 2>&1 || true
|
||||||
sleep 2
|
sleep 3
|
||||||
else
|
|
||||||
print_info "등록을 건너뜁니다."
|
|
||||||
return
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 추가 확인: 완전히 로그아웃되었는지 검증
|
||||||
|
print_status "연결 해제 확인 중..."
|
||||||
|
for i in {1..10}; do
|
||||||
|
if ! tailscale status >/dev/null 2>&1; then
|
||||||
|
print_success "기존 연결이 완전히 해제되었습니다."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
print_info "로그아웃 대기 중... ($i/10)"
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
if [ $i -eq 10 ]; then
|
||||||
|
print_warning "로그아웃이 완료되지 않았지만 계속 진행합니다."
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_info "Headscale 서버: $HEADSCALE_SERVER"
|
print_info "Headscale 서버: $HEADSCALE_SERVER"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user