تا وقتی خودم سراغ Tailscale نرفته بودم، هیجان دور آن را کاملاً درک نمیکردم. کلاینت را نصب میکنید، احراز هویت انجام میشود و بخش ابری بقیه کارها را مدیریت میکند. محصول واقعاً خوبی است؛ اما هر دستگاهی که وارد tailnet من میشود، برای فهمیدن اینکه چطور باید با دستگاههای دیگر حرف بزند، باید با سروری خارج از کنترل من هماهنگ شود.

خود ترافیک همچنان بهصورت peer-to-peer جابهجا میشود، اما لایه هماهنگی—همان بخشی که میداند چه دستگاههایی وجود دارند، چه زمانی وصل میشوند و چطور همدیگر را پیدا میکنند—جایی بیرون از زیرساخت من قرار دارد. این وضعیت تا وقتی ادامه داشت که Headscale را امتحان کردم؛ حالا بالاخره حس میکنم کل tailnet واقعاً مال خودم است.

سروری که پشت tailnet شما کار میکند
Headscale لایه کنترل Tailscale را جایگزین میکند، بدون اینکه مدل امن mesh networking را کنار بگذارد
جادوی Tailscale به یک سرور هماهنگکننده وابسته است؛ سروری که ثبت دستگاهها، تبادل کلیدها و توپولوژی شبکه را مدیریت میکند، هرچند به ترافیک واقعی شما دست نمیزند و ارتباط بین دستگاهها از مسیر WireGuard انجام میشود. Headscale جایگزینی برای همین بخش است؛ پیادهسازیای که برای یک tailnet طراحی شده و برای راهاندازیهای شخصی، homelab و تیمهای کوچک مناسبتر از سناریوهای بزرگ سازمانی است.
همین «جایگزینی مستقیم» باعث میشود Headscale در مقایسه با بعضی راهکارهای خودمیزبان یا reverse proxy راحتتر توصیه شود. لازم نیست کلاینت رسمی Tailscale را از دستگاهها حذف کنید. کافی است آنها را بهجای سرور Tailscale به سرور خودتان وصل کنید؛ از نگاه کلاینت، تقریباً همه چیز همان تجربه آشنا باقی میماند.
به زبان ساده، Headscale یک پیادهسازی متنباز و خودمیزبان از سرور کنترل Tailscale است که اجازه میدهد بدون وابستگی به سرویس هماهنگسازی میزبانیشده Tailscale، شبکه خصوصی خودتان را مدیریت کنید.

خودمیزبانی آن کمتر از چیزی که فکر میکنید دردسر دارد
با Docker و چند مرحله پیکربندی، میتوانید ظرف چند دقیقه سرور کنترل خودتان را بالا بیاورید
برای شروع با Headscale چند پیشنیاز لازم دارید: یک VPS کوچک با IP عمومی، دامنهای که برای HTTPS و Let’s Encrypt به آن اشاره کند، و محیطی که Docker روی آن آماده باشد. نویسنده ابتدا میخواست بهجای VPS از سرور خانگی لینوکسی خودش استفاده کند و با دامنه شخصی و Cloudflared مسیر را از طریق تونل Cloudflare بسازد؛ اما Headscale پشت تونل Cloudflare پشتیبانی نمیشود، بنابراین این مسیر عملاً بنبست است. یک VPS ارزان یا حتی پلن رایگان Oracle Cloud میتواند انتخاب واقعبینانهتری باشد.
بعد از آن، راهاندازی Headscale بیشتر شبیه آماده کردن یک فایل Docker Compose است: ایمیج را با فرمان docker pull headscale/headscale:latest میگیرید، یک پیکربندی YAML شامل آدرس سرور و محل ذخیره پایگاه داده میسازید و کانتینر را بالا میآورید. اگر single sign-on بخواهید، تنظیمات اختیاری آن هم در همان فایل قرار میگیرد. قالب سیاستهای ACL هم تا حد زیادی شبیه نحو خود Tailscale است، پس بخش زیادی از مستندات Tailscale برای قوانین دسترسی همچنان قابل استفاده میماند.
وقتی سرور آماده شد، نویسنده یک کاربر و یک کلید کوتاهعمر pre-authentication از خط فرمان ساخت و سپس کلاینت Tailscale هر دستگاه را بهجای سرور Tailscale به آدرس سرور خودش متصل کرد. تنها تفاوت اصلی هنگام ورود، اضافه کردن این پرچم بود:
tailscale up --login-server=https://yourdomain.com --authkey=
بقیه فرایند، از احراز هویت تا پیوستن دستگاه به tailnet، همانقدر آشنا و ساده پیش رفت.
هدف اصلی: کنترل کامل روی شبکه خودم
خودمیزبانی یعنی مدیریت دستگاهها، احراز هویت و زیرساخت بهجای اتکا به یک طرف ثالث
این تغییر به معنی بیاعتمادی به Tailscale نیست؛ دلیل اصلی جابهجایی سه نکته بود. اول، حاکمیت داده. حتی اگر سرورهای Tailscale محتوای ترافیک را نبینند، همچنان میدانند چه دستگاههایی در شبکه شما هستند و چه زمانی وصل میشوند. برای کسی که در homelab خود دوست دارد هر لایه از stack را در اختیار داشته باشد، همین متادیتا هم یک نقطه وابستگی محسوب میشود.
دلیل دوم، تابآوری در زمان قطعی بود. اگر سرویس ابری Tailscale دچار اختلال شود، ارتباطهای موجود معمولاً زنده میمانند؛ اما تا زمان بازگشت سرویس نمیتوانید دستگاه جدید اضافه کنید یا تغییرات پیکربندی را اعمال کنید. وقتی control plane را خودتان اجرا میکنید، خوب یا بد، مسئولیت پایداری آن کاملاً با خود شماست.
دلیل سوم هم کنجکاوی فنی بود: فهمیدن اینکه mesh networking واقعاً زیر پوسته چگونه کار میکند، بهجای تکیه بر یک جعبه سیاه بسیار خوب. خودمیزبانی سرور کنترل شما را مجبور میکند ثبت دستگاه، تبادل کلید و سیاستهای ACL را از نزدیک یاد بگیرید.
آزادی بیشتر، چند مصالحه هم دارد
Headscale مالکیت بیشتری میدهد، اما بعضی قابلیتهای صیقلخورده و ابری Tailscale را از دست میدهید
Headscale برای راهاندازی یک شبکه کاربردی تقریباً همه چیزهای ضروری را پوشش میدهد: ثبت و احراز هویت دستگاه، Magic DNS برای نامهای خوانا، پشتیبانی از ACL، پشتیبانی از OIDC برای SSO، subnet routing، exit node و کلیدهای pre-authentication برای دستگاههای بدون رابط مثل Raspberry Pi. این فهرست کوتاهی نیست و بسته به نیاز شما ممکن است کاملاً کافی باشد.
با این حال، بعضی قابلیتهای جدیدتر Tailscale مثل Funnel و Serve را از دست میدهید؛ قابلیتهایی که برای عمومی کردن سرویسها یا reverse proxy کردن آنها روی HTTPS به کار میآیند. رابط وب رسمی هم وجود ندارد، هرچند پروژههای اجتماعی مثل Headscale-UI بخشی از این خلأ را پر میکنند. اگر homelab شما به این قابلیتهای جدید وابسته است، فعلاً ماندن روی Tailscale منطقیتر است.
tailnet من بالاخره مال خودم شد
Headscale همان کنترلی را داد که میخواستم، بدون اینکه سادگی Tailscale را قربانی کند
برای یک homelab که حریم خصوصی در آن مهم است و ترجیح میدهید بهجای ارسال تیکت پشتیبانی، زیرساخت خودتان را عیبیابی کنید، Headscale تقریباً همه خواستهها را پوشش میدهد. اگر هدف شما این است که سرویسهایی مثل Home Assistant را با امنیت بیشتری در دسترس قرار دهید، این ابزار کار را قابل قبول انجام میدهد. همچنین برای محیطهای air-gapped، پروژههای آموزشی و تیمهای کوچکی که نمیخواهند در شبکه خود وابستگی خارجی داشته باشند، گزینه جذابی است.
اگر به exit nodeهای مدیریتشده Tailscale، SLA رسمی یا قابلیتهایی نیاز دارید که Headscale هنوز به آنها نرسیده، ماندن با Tailscale انتخاب معقولی است. حتی میتوانید هر دو را موازی اجرا کنید و با خیال راحت تصمیم بگیرید. اما برای نویسنده، مالکیت روی control plane هم یک تمرین فنی ارزشمند بود و هم راهی برای کنترل بیشتر روی دادهها و دستگاهها.
منبع: این مطلب یک بومیسازی و بازنویسی تحریریهای بر اساس مقالهای از MakeUseOf است: مشاهده مقاله اصلی.