আপনি ট্রেনে বসে Home Assistant-এর ড্যাশবোর্ড খুলতে চান। রাউটার রাজি নয়: ইন্টারনেট প্রদানকারী আপনাকে carrier-grade NAT-এর পেছনে রেখেছে, অথবা পোর্ট ফরওয়ার্ডিং সম্ভব হলেও একটি বাতি জ্বালানোর জন্য আপনি পুরো বাড়ির নেটওয়ার্ক ইন্টারনেটে খুলে দিতে চান না। একটি ছোট VPS দুটো সমস্যাই মেটায়। আপনার বাড়ি WireGuard-এর মাধ্যমে তার সঙ্গে বাইরের দিকে যুক্ত হয়, আর VPS-ই একমাত্র প্রকাশ্য মুখ: আসল ডোমেইন, আসল সার্টিফিকেট, আর বাড়িতে এমন কিছু নেই যা বাইরের দুনিয়ার কথা শুনছে।
সেটআপটি কীভাবে কাজ করে
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
VPS-এ দুটি জিনিস চলে: একটি WireGuard সার্ভার আর রিভার্স প্রক্সি হিসেবে Caddy। বাড়িতে একটি WireGuard ক্লায়েন্ট (Home Assistant হোস্টে, Raspberry Pi-তে বা রাউটারে) টানেলটি খোলা রাখে। আপনি https://ha.example.com খুললে Caddy অনুরোধটি টানেলের মধ্য দিয়ে 10.8.0.2:8123-এ পৌঁছে দেয়।
আপনার যা লাগবে
- ডেডিকেটেড IP-সহ একটি প্ল্যান। VPS-কে আসা 443 আর UDP 51820 গ্রহণ করতে হবে। মাসে $8-এর Nano-IP প্রয়োজনের চেয়ে বেশি: এটি ড্যাশবোর্ডের কয়েক কিলোবাইট ট্রাফিক অনায়াসে সামলায়। NAT প্ল্যান আপনার ব্যক্তিগত SSH পোর্ট ছাড়া কোনো আসা সংযোগ গ্রহণ করে না (এখানে NAT কীভাবে কাজ করে)।
- একটি ডোমেইন, যার A রেকর্ড VPS-এর IP নির্দেশ করে।
- বাড়িতে একটি WireGuard ক্লায়েন্ট, যা লোকাল নেটওয়ার্কে Home Assistant-এ পৌঁছাতে পারে।
১. VPS-এ WireGuard সার্ভার
apt update && apt install -y wireguard caddy
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
chmod 600 /etc/wireguard/server.key
cat > /etc/wireguard/wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/server.key)
[Peer]
# the home side
PublicKey = HOME_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
EOF
systemctl enable --now wg-quick@wg0
ufw allow 51820/udp && ufw allow 80,443/tcp
২. বাড়ির দিক
বাড়ির যেকোনো Linux মেশিনে (অথবা Home Assistant-এর WireGuard ক্লায়েন্ট অ্যাড-অনে) peer তৈরি করুন। keepalive গুরুত্বপূর্ণ: এটি বাড়ির রাউটারের NAT পেরিয়ে টানেলটি খোলা রাখে।
[Interface]
Address = 10.8.0.2/24
PrivateKey = HOME_PRIVATE_KEY
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = ha-vps.example.com:51820
AllowedIPs = 10.8.0.1/32
PersistentKeepalive = 25
WireGuard ক্লায়েন্ট যদি Home Assistant থেকে আলাদা মেশিনে চলে, তাহলে 10.8.0.2:8123-কে লোকাল নেটওয়ার্কের HA হোস্টে ফরওয়ার্ড করুন; অথবা আরও সহজে, ক্লায়েন্টটি সরাসরি HA হোস্টেই চালান।
৩. Caddy দিয়ে HTTPS
cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy
Caddy নিজে থেকেই সার্টিফিকেট নেয় এবং Home Assistant অ্যাপ যে WebSocket সংযোগের ওপর নির্ভর করে সেটিও সামলায়।
৪. Home Assistant-কে প্রক্সির ওপর আস্থা রাখতে বলুন
এটি ছাড়া HA প্রক্সি হয়ে আসা অনুরোধ প্রত্যাখ্যান করে। configuration.yaml-এ:
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.8.0.1
Home Assistant রিস্টার্ট করুন, https://ha.example.com খুলুন এবং মোবাইল অ্যাপে এই URL-কে বাইরের ঠিকানা হিসেবে সেট করুন।
সৎভাবে সুবিধা-অসুবিধা
HTTPS VPS-এ শেষ হয়, তাই টানেলে ঢোকার আগে ওই সার্ভার ড্যাশবোর্ডের ট্রাফিক সাধারণ লেখা হিসেবে দেখে। সার্ভারটি আপনার, আর আসল কথা এটাই, তবে একে বাড়ির নেটওয়ার্কের অংশ হিসেবে ধরুন: শুধু SSH কী, আপডেট চালু, আর এতে অন্য কিছু চালাবেন না। Home Assistant-এর পাসওয়ার্ড আর দুই-ধাপের লগইন চালু রাখুন; প্রক্সি কোনো যাচাইকরণ স্তর নয়।
Home Assistant দলের অফিশিয়াল পেইড ক্লাউড পরিষেবা কোনো রক্ষণাবেক্ষণ ছাড়াই একই কাজ করে এবং প্রকল্পটিকে অর্থ সহায়তাও দেয়। আপনি যদি একেবারেই সার্ভার চালাতে না চান, সেটি খুব ভালো বিকল্প। VPS-এর পথ এগিয়ে থাকে যখন আপনি আগে থেকেই সেলফ-হোস্টিং করেন, নিজের ডোমেইন চান, বা পরে বাড়ির অন্য পরিষেবাগুলোও একই টানেলের পেছনে রাখতে চান।
সম্পর্কিত গাইড
- VPS-এ WireGuard VPN সেট আপ করুন: WireGuard-এর পূর্ণ গাইড
- HTTPS-সহ Nginx রিভার্স প্রক্সি: আপনি যদি Caddy-র চেয়ে Nginx পছন্দ করেন
- নতুন VPS সুরক্ষিত করা: ইন্টারনেটের সামনে থাকা যেকোনো মেশিনে এটি আগে করুন
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।