English | 简体中文 | 繁體中文 | Русский
適用於 Ubuntu、Debian、AlmaLinux、Rocky Linux、CentOS、RHEL、Fedora 和 openSUSE 的 Headscale 伺服器安裝腳本。
本腳本安裝並設定 Headscale —— Tailscale 協調伺服器的自託管開源實作。使用官方 Tailscale 客戶端應用程式連線所有裝置,由你自己的伺服器掌控一切。
功能特性:
- 全自動 Headscale 伺服器安裝,無需使用者輸入
- 支援使用自訂選項進行互動式安裝
- 支援管理使用者、節點和預授權金鑰
- 下載官方 Headscale 二進位檔案並進行校驗和驗證
- 將 Headscale 安裝為具有專用系統使用者的 systemd 服務
- 自動設定防火牆規則(firewalld 或 iptables)
另提供:
- Docker VPN:WireGuard、OpenVPN、IPsec VPN、Headscale
- AI:自架 AI 套件,用於本機 LLM、聊天、RAG、語音和 AI 工具
- 📚 延伸閱讀:Privacy Tools in the Age of AI
📘 Kindle 限時優惠:$0.99/£0.99(僅限美國和英國)。The Self-Hosted AI Builder’s Guide 是一本關於建置、保護和維運自己的私有 AI 技術棧的實用指南。
- 一台 Linux 伺服器(雲端伺服器、VPS 或獨立伺服器)
- 強烈建議在正式環境中使用可公開存取的具有 HTTPS 的網域名稱
注: 若不使用 HTTPS,部分 Tailscale 客戶端可能無法正常連線。請參閱 TLS 與反向代理 了解設定選項。
在你的 Linux 伺服器上下載腳本:
wget -O headscale.sh https://get.vpnsetup.net/hs選項 1: 使用伺服器 URL 自動安裝。
sudo bash headscale.sh --auto --serverurl https://hs.example.com請將 https://hs.example.com 替換為你的實際 HTTPS 伺服器 URL。若未提供 --serverurl,將自動偵測伺服器的公用 IP 位址並使用 HTTP,不建議用於正式環境。請參閱 TLS 與反向代理 了解設定選項。
注:
--serverurl選項僅用於設定 Headscale 向客戶端公布的伺服器 URL。它不會自動取得 TLS 憑證,也不會安裝或設定反向代理。你可以先執行安裝指令碼,但在客戶端透過該 HTTPS URL 連線前,必須先設定好 Caddy 或 nginx。
選項 2: 使用自訂選項進行互動式安裝。
sudo bash headscale.sh你可以自訂以下選項:伺服器 URL、TCP 連接埠、監聽位址、初始使用者名稱和 MagicDNS 基礎網域。
如果無法下載,請點擊此處。
也可使用 curl 下載:
curl -fL -o headscale.sh https://get.vpnsetup.net/hs備用下載地址:
https://github.com/hwdsl2/headscale-install/raw/main/headscale-install.sh如果仍無法下載,請開啟 headscale-install.sh,然後點擊右側的 Raw 按鈕。按 Ctrl/Cmd+A 全選,Ctrl/Cmd+C 複製,然後貼上至你喜歡的編輯器中。
查看腳本的使用說明。
用法:bash headscale.sh [選項]
選項:
--adduser [使用者名稱] 新增使用者
--deleteuser [使用者名稱] 刪除使用者(及其所有節點和金鑰)
--listusers 列出所有使用者
--listnodes 列出所有已註冊節點
--listnodes --user [名稱] 列出特定使用者的節點
--registernode [認證 ID/節點金鑰] 依認證 ID 或節點金鑰註冊節點
--user [名稱] (需要 --user <名稱>)
--deletenode [節點 ID] 依數字 ID 刪除節點
--createkey --user [名稱] 為使用者建立可重用預授權金鑰
--listkeys 列出預授權金鑰
--uninstall 移除 Headscale 及所有設定
-y, --yes 對提示自動回答「是」
-h, --help 顯示此說明訊息並結束
安裝選項(選用):
--auto 使用預設或自訂選項自動安裝 Headscale
--serverurl [URL] 伺服器 URL(例如 https://hs.example.com)
--port [數字] Headscale 的 TCP 連接埠(1-65535,預設:8080)
--listenaddr [位址] 監聽位址(預設:0.0.0.0,僅本機使用:127.0.0.1)
--username [名稱] 初始使用者名稱(預設:admin)
--basedomain [網域] MagicDNS 基礎網域(預設:headscale.internal)
--dnssrv1 [地址] 推送給用戶端的主要 DNS 伺服器(預設:1.1.1.1)
--dnssrv2 [地址] 推送給用戶端的次要 DNS 伺服器(預設:1.0.0.1)
--loglevel [級別] 日誌級別:panic, fatal, error, warn, info, debug, trace(預設:info)
--metricsport [數字] Prometheus 指標連接埠,僅本機存取(預設:9090)
也可不帶參數執行腳本以使用自訂選項。
首次執行時,腳本將:
- 下載並安裝 Headscale 二進位檔案
- 建立
headscale系統使用者和群組 - 將設定寫入
/etc/headscale/config.yaml - 安裝並啟動
headscalesystemd 服務 - 建立初始使用者並輸出可重複使用的預授權金鑰
複製輸出中的預授權金鑰,使用官方 Tailscale 客戶端連線裝置:
tailscale up --login-server https://hs.example.com --authkey <輸出中的金鑰>- 📬 取得專案更新與免費部署指南(每月 1–2 封電子郵件;指南為英文 PDF)
- 💬 加入 r/selfhostedstack 社群,參與討論與專案展示
- ⭐ 如果你覺得本專案有用,請為儲存庫加星——這能幫助更多人發現它。
有關連線客戶端的說明,請參閱 Headscale 文件:
安裝完成後,再次執行腳本即可管理你的伺服器。
依認證 ID 或節點金鑰註冊節點:
sudo bash headscale.sh --registernode <auth-id-or-node-key> --user admin新增使用者:
sudo bash headscale.sh --adduser alice刪除使用者:
sudo bash headscale.sh --deleteuser alice為使用者建立預授權金鑰:
sudo bash headscale.sh --createkey --user alice列出所有使用者:
sudo bash headscale.sh --listusers列出所有已註冊節點:
sudo bash headscale.sh --listnodes列出特定使用者的節點:
sudo bash headscale.sh --listnodes --user alice依 ID 刪除節點:
sudo bash headscale.sh --deletenode 3列出預授權金鑰:
sudo bash headscale.sh --listkeys解除安裝 Headscale:
sudo bash headscale.sh --uninstall顯示說明:
sudo bash headscale.sh --help也可不帶參數執行腳本以進入互動式管理選單。
也可直接使用 headscale <命令> 執行 Headscale 命令。執行 headscale -h 或參閱 Headscale 文件 查看可用命令。
Tailscale 客戶端需要 HTTPS 才能實現完整功能。建議的設定是在 Headscale 前使用反向代理處理 TLS,然後在安裝時傳入 --serverurl https://hs.example.com(或在 /etc/headscale/config.yaml 中設定 server_url 並重新啟動服務)。
使用反向代理時,建議加入 --listenaddr 127.0.0.1 以將 Headscale 限制為僅在本機監聽。
使用 Caddy 的範例(透過 Let's Encrypt 自動申請 TLS):
hs.example.com {
reverse_proxy localhost:8080
}
使用 nginx 的範例:
server {
listen 443 ssl;
server_name hs.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}防火牆中需要開放的連接埠:
| 連接埠 | 協定 | 用途 |
|---|---|---|
8080 |
TCP | Headscale 協調伺服器(或反向代理連接埠) |
443 |
TCP | HTTPS(使用反向代理時) |
設定檔位於 /etc/headscale/config.yaml。編輯此檔案可修改設定,然後重新啟動服務:
sudo systemctl restart headscale查看服務狀態和日誌:
sudo systemctl status headscale
sudo journalctl -u headscale -n 50sudo bash headscale.sh --auto \
--serverurl https://hs.example.com \
--port 8080 \
--listenaddr 127.0.0.1 \
--username admin \
--basedomain headscale.internal \
--dnssrv1 1.1.1.1 \
--dnssrv2 1.0.0.1 \
--loglevel info \
--metricsport 9090使用 --auto 時,所有安裝選項均為選用。若未提供 --serverurl,將自動偵測伺服器的公用 IP 位址並使用 HTTP(不建議用於正式環境)。
Copyright (C) 2026 Lin Song
本作品依據 MIT 授權條款授權。
Headscale 的版權歸 Juan Font 所有(2020 年),遵循 BSD 3-Clause 授權條款。
Tailscale® 是 Tailscale Inc. 的注冊商標。本專案與 Tailscale Inc. 無關聯,亦未獲其背書。