مهاجرت از Ubuntu به FreeBSD روی Hetzner با Bastille Jails
خلاصهٔ کاملتر
نویسنده بعد از بیش از ۱۰ سال میزبانی بلاگش روی یه VPS با Ubuntu 16.04 در DigitalOcean — که دیگه از پشتیبانی خارج شده و بهروزرسانی امنیتی نمیگرفت — تصمیم گرفت کوچ کنه. مقصد یه VPS روی Hetzner بود؛ قیمتش کمتر از نصف سرور قبلی، RAM و CPU دوبرابر، و با ترافیک ماهانه ۱۰ برابر بیشتر. انگیزه اصلی برای انتخاب FreeBSD هم کنجکاوی فنی بود، بهخصوص برای آشنایی عملی با Jails.
FreeBSD Jails یه تکنولوژی containerization هست که بیش از ۲۵ سالِ روی FreeBSD وجود داشته — خیلی قبل از Docker. برخلاف Docker که بیشتر برای بستهبندی برنامهها و اجرای ephemeral (موقت) طراحی شده، Jails بیشتر شبیه mini-VMهایی هستن که kernel مشترک دارن. یعنی یه محیط ایزوله واقعی، با فایلسیستم و شبکه جداگانه، ولی بدون سربار یه ماشین مجازی کامل. ابزار Bastille هم مدیریت این Jailها رو ساده میکنه.
معماری کلی اینطوریه: یه Jail برای Caddy (وبسرور اصلی که جایگزین nginx قدیمی شده) که ترافیک HTTPS رو میگیره و SSL رو بهصورت خودکار مدیریت میکنه — بدون نیاز به تمدید دستی certbot. هر سایت هم Jail مجزای خودش رو داره. یه شبکه مجازی داخلی (bastille0) با PF Firewall راهاندازی میشه و Caddy ترافیک رو به IP داخلی هر Jail پراکسی میکنه:
nat on $ext_if from 10.0.0.0/24 to any -> ($ext_if)
rdr pass on $ext_if proto tcp from any to any port {80, 443} -> 10.0.0.5
block all
pass out quick on $ext_if keep stateساختن یه Jail با Bastille خیلی سادهست. مثلاً برای Jail بلاگ که Hugo داخلش نصبه:
bastille create blog 14.3-RELEASE 10.0.0.12 bastille0
bastille template blog www/nginx
bastille pkg blog install gohugoفایلهای سایت از هاست به صورت read-only داخل Jail mount میشن، و یه اسکریپت ساده deploy.sh کافیه که بعد از git pull اجرا بشه تا سایت آپدیت بشه.
برای اطمینان از عملکرد، نویسنده با ابزار hey از ۴ نقطه دنیا (لندن، سائوپائولو، سیلیکونولی، توکیو) بنچمارک واقعی گرفت. نتیجه چشمگیر بود: سرور قدیمی Ubuntu فقط تونست حدود ۷٪ از درخواستها رو کامل کنه، در حالی که سرور FreeBSD جدید به ۹۴٪ رسید. تعداد درخواست در ثانیه هم بین ۳ تا ۱۱ برابر بهتر بود. یه تنظیم کوچیک هم لازم شد — افزایش kern.ipc.somaxconn برای پشتیبانی از اتصالات همزمان بیشتر.
نکات کلیدی:
- سرور Ubuntu 16.04 قدیمی که ۴ سال بدون ریست کار کرده بود، از نظر امنیتی و عملکردی دیگه قابل قبول نبود
- Hetzner با قیمت کمتر از ۶ یورو در ماه، مشخصات بهتری نسبت به DigitalOcean با ۱۳ دلار ارائه میده
- FreeBSD Jails ایزولهسازی واقعی هر سایت رو ممکن میکنه؛ اگه یه Jail آلوده بشه، بقیه در امان هستن
- Caddy جایگزین nginx شد و مدیریت SSL رو بهصورت خودکار انجام میده
- بنچمارکهای چندمنطقهای نشون داد ۹۰٪ کاربران از هر جای دنیا صفحه رو در کمتر از ۳.۵ ثانیه حتی زیر بار سنگین لود میکنن




