Skip to content
⚡ Tenvo AI · TRỰC TIẾP · v0.16.26 · TLS · Chứng chỉ cho từng thiết bị · AGPL-3.0 · MIỄN PHÍ · 30 THIẾT BỊ · HẠ TẦNG TỰ LƯU TRỮ · BYO API KEY · MCP CHO CLAUDE & CURSOR
Quay lại BlogTutorial

sunshine moonlight setup: tự lưu trữ và duy trì

Tenvo Editorial Team7 phút đọc
sunshine moonlight setup: tự lưu trữ và duy trì

Nếu bạn muốn truy cập từ xa độ trễ thấp hoặc phát game từ PC của chính mình, Sunshine + Moonlight hấp dẫn: client gốc trên nhiều nền tảng, độ trễ tốt và không yêu cầu tài khoản đám mây bắt buộc.

Nếu bạn muốn truy cập từ xa độ trễ thấp hoặc phát game từ PC của chính mình, Sunshine + Moonlight hấp dẫn: client gốc trên nhiều nền tảng, độ trễ tốt và không yêu cầu tài khoản đám mây bắt buộc. Vấn đề nằm ở phần vận hành — chạy stack là phần dễ; giữ cho nó ổn định, an toàn và luôn truy cập được mà không có bất ngờ mới là công việc lặng lẽ và định kỳ mà bài hướng dẫn này sẽ nêu rõ.

Sunshine và Moonlight thực tế làm gì

Sunshine là thành phần host/server bạn chạy trên máy mà bạn muốn phát. Nó bắt hình/âm thanh, mã hóa khung hình và mở dịch vụ để Moonlight (client) kết nối. Moonlight là client: Windows, macOS, Linux, iOS, Android và thậm chí một số smart TV có bản port hoặc build. Cùng nhau chúng tái hiện kiểu streaming theo mô hình GameStream với codec hiện đại và độ trễ thấp.

Chọn mô hình kết nối — relay, kết nối trực tiếp, hay do Tenvo quản lý

Có bốn cách thực tế để Sunshine có thể truy cập được từ internet. Tôi liệt kê kèm gánh nặng vận hành bạn nên mong đợi.

  • Tenvo managed relay (được khuyến nghị trừ khi chính sách cấm hạ tầng bên thứ ba). Bạn nhận multi-region relay được duy trì cho bạn; hầu hết client không cần chứng chỉ, NAT hay cấu hình router. Giá Tenvo: Free $0 / Lite $2.99/mo / Pro $7.99/mo — tính khoản này vào tiết kiệm khi trực ca và chi phí vận hành.
  • Public relay do bạn tự chạy (self-hosted). Hợp lý khi có yêu cầu bằng văn bản bắt buộc: compliance, VPC cô lập, quy định lưu trú dữ liệu. Tự lưu trữ dồn việc cấp chứng chỉ, uptime, scale và quản lý khoá cho đội của bạn.
  • Kết nối trực tiếp với port forwarding hoặc NAT traversal (UPnP, hole punching). Chi phí hạ tầng thấp nhất nhưng dễ vỡ: router gia đình, IP động, ISP CGNAT và firewall doanh nghiệp thường làm hỏng phương án này.
  • Mạng riêng hoặc VPN (WireGuard, corporate VPN). Rất đáng tin cậy, nhưng cần hạ tầng VPN và onboarding người dùng. Tốt cho đội nhỏ hoặc lab nơi bạn kiểm soát cả hai đầu.

Tiền điều kiện — những thứ bạn phải chuẩn bị trước khi bấm cài

  • Host OS: một distro Linux gần đây (Ubuntu 22.04 / Debian 12 là lựa chọn phổ biến); Windows và một số build macOS được hỗ trợ nhưng Linux là phổ biến nhất cho host không giao diện (headless).
  • GPU/drivers: để mã hóa phần cứng bạn thường cần GPU được hỗ trợ (NVIDIA, AMD) và driver cho phép truy cập bộ mã hóa. Trên Linux điều này có nghĩa là gói của nhà sản xuất — chính sách cập nhật driver GPU quan trọng (chúng thường cần tương thích kernel hoặc X/Wayland).
  • Mạng: nếu bạn dùng relay, đảm bảo outbound TLS (443/HTTPS) được phép. Với kết nối trực tiếp bạn cần IP public ổn định hoặc dynamic DNS + port forwarding và quyền truy cập router.
  • Chứng chỉ: cho trường hợp phơi ra internet theo IP/tên, dùng giải pháp TLS tự động (Caddy, certbot, acme.sh). Nếu bạn tự host relay, bạn phải xử lý phát hành và gia hạn chứng chỉ.
  • Thiết bị client: cài Moonlight trên các nền tảng người dùng sẽ dùng. Thử ghép cặp trên LAN trước khi mở ra internet.

Thực hiện từng bước: cài và cấu hình Sunshine trên Linux (ví dụ quy trình)

Đây là ví dụ thực dụng cho host Linux (thay bằng bước Windows/macOS nếu bạn thích bộ cài native). Tôi tránh ghi số phát hành cụ thể cho Sunshine vì phương thức phân phối thay đổi — lấy release chính thức từ GitHub dự án hoặc repo package để có build ổn định mới nhất.

1) Chuẩn bị hệ điều hành
# Giữ các gói luôn cập nhật
sudo apt update && sudo apt upgrade -y

2) Cài driver GPU (ví dụ: NVIDIA)
# Trên Ubuntu 22.04
sudo apt install -y nvidia-driver-535 # chọn driver của nhà sản xuất phù hợp với GPU của bạn

3) Tạo user chuyên dụng cho Sunshine
sudo useradd -r -m -d /var/lib/sunshine -s /usr/sbin/nologin sunshine

4) Tải Sunshine & đặt binary
# Tải tarball hoặc package release chính thức và giải nén vào /usr/local/bin
sudo mkdir -p /etc/sunshine /var/lib/sunshine
sudo install -m 0755 /path/to/sunshine /usr/local/bin/sunshine

5) Ví dụ unit systemd (/etc/systemd/system/sunshine.service)
[Unit]
Description=Sunshine game streaming host
After=network.target

[Service]
User=sunshine
Group=sunshine
ExecStart=/usr/local/bin/sunshine --config /etc/sunshine/config.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable --now sunshine

6) Firewall: chỉ mở những thứ bạn định dùng
# Nếu chỉ dùng managed relay, bạn chỉ cần outbound TLS. Với kết nối trực tiếp, mở các port mà Sunshine quảng bá và các port TCP/UDP bạn chọn.
# Ví dụ (ufw):
sudo ufw allow from 192.168.0.0/16 to any port 47999 proto tcp # điều chỉnh theo cấu hình của bạn

7) TLS / chứng chỉ
# Để phơi ra internet, dùng một server hỗ trợ ACME (Caddy hoặc certbot) để lấy cert cho FQDN của bạn. Nếu bạn chạy relay, xác minh yêu cầu TLS của relay.

Hai mẹo thực tế: giữ config của Sunshine dưới hệ thống quản lý phiên bản (/etc/sunshine/config.toml) và chạy binary dưới một user không có đặc quyền. Thử ghép cặp trên LAN trước khi động tới DNS hay chứng chỉ.

Ghép cặp và cấu hình client — thực sự diễn ra những gì

Lần kết nối đầu tiên Moonlight và Sunshine trao đổi thông tin ghép cặp. Luồng điển hình: khởi chạy Sunshine trên host, mở Moonlight trên client, phát hiện host (khám phá LAN hoặc nhập thủ công IP/FQDN), yêu cầu ghép cặp, chấp nhận trên host — thường qua prompt cục bộ hoặc mã ngắn thời hạn. Sau khi ghép cặp, Moonlight lưu khoá và kết nối lại mà không cần xác nhận tương tác cho tới khi bạn thu hồi ghép cặp trên host.

Nếu bạn dùng relay (Tenvo hoặc self-hosted), việc khám phá thường diễn ra qua dịch vụ relay để client có thể tới host sau NAT mà không cần port forwarding. Lưu ý vận hành: khi dùng relay bên thứ ba, TLS có thể chấm dứt ở relay — operator relay về mặt kỹ thuật có khả năng quan sát hoặc can thiệp lưu lượng nếu họ muốn. Tính yếu tố đó vào quyết định tuân thủ hoặc niềm tin của bạn.

Vận hành định kỳ: những cam kết lặng lẽ bạn sẽ thừa hưởng

Chạy host Sunshine của riêng bạn không phải là dự án "cài xong rồi quên". Lên kế hoạch cho các tác vụ định kỳ sau:

  • Gia hạn chứng chỉ: nếu bạn có TLS công khai, tự động hóa gia hạn (Let's Encrypt qua certbot hoặc Caddy). Xác minh báo cáo tự động gia hạn và thử đường reload để Sunshine nạp chứng chỉ mới mà không cần khởi động tay.
  • Cập nhật OS và driver: cập nhật bảo mật hàng tháng; cập nhật driver GPU theo chu kỳ thử nghiệm trước khi đẩy lên production. Driver thường là nguồn gây regress cho streaming và audio.
  • Sao lưu cấu hình và khoá: lưu /etc/sunshine và các khoá ghép cặp trong backup cấu hình. Nếu mất khoá ghép cặp, người dùng phải ghép cặp lại.
  • Giám sát và cảnh báo: kiểm tra uptime (external synthetic test), giám sát disk/CPU/GPU, và logs. Lên SLO cho độ khả dụng và xác định khi nào cần người trực khi host hỏng vào ban đêm.
  • Quay vòng log và lưu trữ: log streaming nhanh chóng nhiều; quay vòng log và xóa bớt bản ghi cũ. Quyết định log nào cần giữ cho audit và giữ trong bao lâu.
  • Khả năng mở rộng và dự phòng: nếu có nhiều host hoặc site, thử failover. Một relay tự host đơn lẻ ở một vùng là single point of failure; multi-region managed relay của Tenvo loại bỏ điều vận hành đó cho bạn.
  • Vòng đời người dùng: thu hồi ghép cặp khi người rời đi, và kiểm toán các thiết bị đã ghép cặp theo quý.

Ước lượng thời gian: dự kiến 1–2 giờ để cài và thử cho một host đơn lẻ, sau đó công việc định kỳ đo bằng vài phút mỗi tuần cho các setup nhỏ (kiểm tra chứng chỉ, cập nhật). Với đội nhiều host, tính nhân lực tương đương toàn thời gian cho vá lỗi, giám sát và phản ứng sự cố.

Khắc phục sự cố: các chế độ lỗi thực tế và cách sửa

  • Không phát hiện trên LAN — kiểm tra mDNS/UPnP và firewall cục bộ. Một số switch doanh nghiệp chặn multicast; thử ping host bằng IP và kết nối thủ công bằng FQDN hoặc IP thay vì phát hiện.
  • Màn hình đen hoặc khung hình nhiễu — thường do driver GPU hoặc xung đột compositor. Thử phiên không-composited hoặc cập nhật driver. Trên Wayland, kiểm tra hỗ trợ capture của compositor.
  • Không có âm thanh — xác nhận backend audio được đặt đúng (PulseAudio/pipewire) và Sunshine được cấu hình để capture đúng sink.
  • Độ trễ cao — kiểm tra đường mạng và thiết lập mã hóa. Giảm bitrate hoặc thay preset encoder; thử trên LAN để tách vấn đề GPU/encode khỏi vấn đề mạng.
  • Ghép cặp bị lỗi lặp lại — dọn các khoá cũ (/etc/sunshine/pairs hoặc tương tự) và khởi tạo ghép cặp lại; xem logs hệ thống (journalctl -u sunshine) để biết lỗi.

Nếu bạn muốn bối cảnh bảo mật sâu hơn hoặc cần tránh hoàn toàn port forwarding, xem hướng dẫn của chúng tôi Remote Desktop Without Port Forwarding Explained và mô hình mối đe doạ trong Is Remote Desktop Secure? An Honest Threat Model. Nếu yêu cầu của bạn là tự lưu trữ hoàn toàn, đọc Self-Hosted Remote Desktop: Why, How, and What Breaks trước khi quyết định.

Ghi chú cuối — khi nào nên tự lưu trữ và khi nào nên trả tiền cho relay quản lý

Tự lưu trữ Sunshine và relay chỉ đúng khi chính sách hoặc cô lập mạng buộc bạn phải làm vậy. Ngược lại relay quản lý thường rẻ hơn về mặt vận hành thực tế: bạn mua uptime, quản lý chứng chỉ, failover đa vùng và bỏ qua phần lớn pager. Tenvo’s managed relay là mặc định thực dụng mà chúng tôi khuyên: nó loại bỏ phần lớn công việc hàng ngày trong khi vẫn để bạn kiểm soát host và ghép cặp. Nếu bạn chọn tự lưu trữ, dự trù cho các việc bảo trì ở trên — chúng quan trọng hơn việc cài ban đầu.

Sẵn sàng thử relay quản lý hoặc tải client? Bắt đầu tại Download. Nếu bạn muốn so sánh sâu hơn với công cụ khác, xem các bài viết khác của chúng tôi như RustDesk self-hosted setup: Docker + Caddy TLS và so sánh giá để hiểu tổng chi phí sở hữu.

Nhận Tenvo

Sẵn sàng tự trải nghiệm?

Miễn phí cho 30 thiết bị, không cần thẻ tín dụng. Kết nối và hoạt động trong hai phút.