SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor

25 app self-host đáng chạy trên VPS năm 2026

Danh sách 25 app self-host theo từng nhu cầu, nêu service mỗi app thay thế, RAM và dung lượng đĩa thực tế, cùng gotcha cần biết trước khi triển khai.

Những gì bạn sẽ triển khai

Không phải một ứng dụng, mà là một danh sách chọn lọc. Đây là trung tâm cho mọi nội dung khác trên site này: 25 ứng dụng thực sự đáng chạy trên VPS của bạn trong năm 2026, được nhóm theo công việc mà chúng thực hiện. Với mỗi ứng dụng, bạn sẽ biết nó thay thế service nào, mức sử dụng RAM và dung lượng đĩa thực tế, cùng một vấn đề duy nhất sẽ gây rắc rối nếu bạn bỏ qua. Các liên kết trỏ đến hướng dẫn đầy đủ từng bước nếu đã có.

Tôi đã vận hành máy chủ VPS trong 15 năm và đang chạy hầu hết các ứng dụng này trên máy chủ của mình. Vì vậy, các con số tài nguyên bên dưới phản ánh mức ứng dụng thực sự sử dụng với workload nhỏ trong thực tế, không phải mức “tối thiểu” trên trang marketing. Hãy xem đó là mức ngân sách cơ bản, rồi chừa thêm headroom.

Điều kiện tiên quyết và thực tế cần biết

Mọi ứng dụng trong danh sách này đều chạy trên một KVM VPS Ubuntu 24.04 mới cài, với quyền root hoặc sudo. Danh sách này cũng chạy tốt trên máy đặt tại nhà, và nếu bạn đang cân nhắc tiền thuê hàng tháng so với mua RAM một lần, Proxmox tại nhà so với VPS thuê sẽ giúp bạn tính toán phần hardware và điện năng. Hầu hết các ứng dụng đều được phát hành dưới dạng Docker container, nên chỉ cần cài Docker một lần là bạn đã sẵn sàng cho gần như toàn bộ danh sách (hai ngoại lệ là Cloudron và CasaOS; chúng cài trực tiếp lên host bằng setup script riêng, xem phần control panel):

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker "$USER"
newgrp docker
docker run --rm hello-world

Nếu các lệnh docker lỗi với permission denied while trying to connect to the Docker daemon socket, bạn đã bỏ qua bước thêm group hoặc chưa mở shell mới; hãy logout rồi đăng nhập lại. Nếu docker compose trả về docker: 'compose' is not a docker command, bạn đang có standalone binary cũ; script ở trên cài Compose plugin hiện đại, được gọi bằng docker compose (có dấu cách, không phải dấu gạch nối).

Ba thực tế quyết định toàn bộ phần bên dưới. Thứ nhất, RAM mới là giới hạn, không phải disk hay CPU. VPS 1 GB chỉ chạy được một ứng dụng nhỏ, không hơn. 4 GB là mức phù hợp nhất cho một máy để “self-host vài thứ”. 2 GB là mức lưng chừng khó chịu: người mới xếp thêm service thứ ba, gặp lỗi Out-Of-Memory kill âm thầm, rồi không hiểu vì sao container tự biến mất; sudo dmesg hiển thị dòng Out of memory: Killed process mà daemon đã nuốt mất. Thứ hai, mọi thứ public đều cần một hostname và certificate; IP trần có thể dùng để test nhưng sẽ thất bại ngay khi bạn muốn app trên điện thoại hoặc browser tin cậy nó. Thứ ba, hai port quyết định một nửa các lựa chọn của bạn: inbound 80 phải truy cập được đến máy để thực hiện certificate challenge HTTP-01 tiêu chuẩn (challenge DNS-01 bỏ qua yêu cầu này bằng cách chứng minh quyền kiểm soát qua DNS record, hữu ích khi port 80 bị đóng), còn outbound 25 bị hầu hết provider chặn, đó là lý do email nằm trong danh sách “không nên làm” ở cuối.

Tệp và ảnh

  • Nextcloud thay thế Google Drive, Dropbox và Google Calendar trong cùng một bộ ứng dụng. Dự trù 1–2 GB RAM cộng với dung lượng của các tệp bạn lưu trữ. Điểm cần lưu ý: SQLite phù hợp cho demo nhưng là một cái bẫy trong môi trường production. Hãy cài đặt Nextcloud trên PostgreSQL ngay từ lần boot đầu tiên, vì migrate database sau khi dữ liệu đã được lưu vào đó là cách phổ biến nhất khiến người dùng làm hỏng Nextcloud. Hướng dẫn Nextcloud trên VPS với Docker, TLS và backup sẽ thiết lập đúng ngay từ đầu.
  • Immich thay thế Google Photos, bao gồm cả app trên điện thoại để tự động upload ảnh trong camera roll và tìm kiếm theo khuôn mặt, vật thể. Dự trù 6 GB RAM; tài liệu của Immich gọi đây là mức tối thiểu, 8 GB sẽ thoải mái hơn. Container machine learning là phần tốn tài nguyên nhất. Dung lượng disk cần bằng thư viện ảnh của bạn cộng thêm khoảng 20% cho thumbnail. Điểm cần lưu ý: Immich đã tuân theo semantic versioning kể từ bản stable đầu tiên, v2.0.0, vào tháng 10 năm 2025. Cách này giữ các thay đổi breaking cho các major version. Immich đã chuyển sang v3, vì vậy không bao giờ pull latest một cách mù quáng, vì thao tác đó sẽ đưa bạn thẳng sang major version tiếp theo. Hãy pin version và đọc release notes trước mỗi lần upgrade. Hướng dẫn thư viện ảnh Immich tự host trình bày quy trình upgrade an toàn. Nếu mức tối thiểu 6 GB vượt quá dung lượng máy của bạn, PhotoPrism và Immich đặt cạnh nhau sẽ so sánh hai ứng dụng dựa trên mức sử dụng memory thực tế, app trên điện thoại và các lệnh backup mà mỗi ứng dụng cần trước khi bạn đưa thư viện vào một trong hai hệ thống.
  • Seafile thay thế Dropbox và có sync engine nhanh nhất trong ba ứng dụng. Dự trù khoảng 1 GB RAM. Điểm cần lưu ý: Seafile lưu tệp dưới dạng các block content-addressed, không phải các tệp thông thường trên disk. Vì vậy, bạn không thể duyệt dữ liệu bằng ls và phải backup thông qua các tool riêng của Seafile, không được chỉ copy một thư mục.

Mật khẩu

  • Vaultwarden thay thế gói trả phí của Bitwarden, LastPass và 1Password bằng một server Rust nhỏ gọn, giao tiếp bằng giao thức Bitwarden. Vì vậy, mọi app Bitwarden chính thức và browser extension đều hoạt động ngay. Dự trù 100–200 MB RAM và gần như không tốn disk. Điểm cần lưu ý: server này lưu mọi mật khẩu của bạn. Vì vậy, TLS và backup không phải tùy chọn; đó là mục đích cốt lõi của hệ thống. Hãy đặt ADMIN_TOKEN dưới dạng Argon2 hash. Nếu token được ghi ở dạng plaintext trong file compose, token đó chính là mật khẩu vào admin panel của server. Admin panel này liệt kê mọi user và cho phép thay đổi cài đặt server. Token sẽ nằm ở dạng cleartext và bất kỳ ai đọc được file cũng có thể lấy nó. Guide quản lý mật khẩu Vaultwarden là lựa chọn self-host đầu tiên tốt nhất.

Media

  • Jellyfin thay thế Plex và, với thư viện riêng của bạn, thay thế Netflix. Phần mềm hoàn toàn open source, không cần account và không thu phí cho việc stream từ xa. Khi idle, hãy dự trù 1–2 GB RAM, nhưng CPU có thể tăng vọt khi transcode. Điểm cần lưu ý: transcode bằng software cho stream 4K sẽ làm quá tải một VPS nhỏ. Bạn cần bật hardware acceleration cho máy hoặc lưu file ở định dạng mà client có thể phát trực tiếp (Direct Play), để server chỉ chuyển tiếp dữ liệu. Hướng dẫn Jellyfin media server trên VPS giải thích sự khác nhau giữa hai cách này. Khi đã chạy, Halcyon biến chính thư viện đó thành một cửa hàng cho thuê đĩa phong cách thập niên 90 có thể dạo xem trên browser. Đây là cách vừa ngớ ngẩn vừa hiệu quả nhất mà tôi biết để khiến mọi người trong nhà duyệt qua các kệ thay vì lướt qua mọi thứ.
  • Navidrome thay thế Spotify cho thư viện nhạc riêng và stream đến mọi app tương thích với Subsonic. Hãy dự trù 150–300 MB RAM. Phần mềm được viết bằng Go nên mức sử dụng tài nguyên gần như không đáng kể. Điểm cần lưu ý: lần scan thư viện đầu tiên sẽ đọc tag của mọi file và có thể mất một giờ với bộ sưu tập lớn. Tag ID3 sai sẽ dẫn đến trải nghiệm duyệt thư viện kém.
  • Audiobookshelf thay thế Audible và app podcast của bạn, đồng bộ vị trí phát giữa các thiết bị. Hãy dự trù 200–500 MB RAM. Điểm cần lưu ý: phần mềm yêu cầu bố cục nghiêm ngặt, mỗi sách một folder. Folder import lộn xộn sẽ tạo ra thư viện lộn xộn, phát hiện thiếu nội dung và rất mất thời gian để sửa về sau.

Automation và AI

  • n8n thay thế Zapier và Make bằng một trình dựng workflow trực quan do bạn tự quản lý, không tính phí theo từng task. Dự trù 400 MB–1 GB RAM. Điểm cần lưu ý: n8n mã hóa credential đã lưu bằng một key do nó tự tạo trong lần chạy đầu tiên. Nếu bạn làm mất key đó hoặc quên đặt N8N_ENCRYPTION_KEY khiến key được tạo lại, mọi credential đã lưu sẽ không thể đọc được và bạn phải nhập lại toàn bộ. Hướng dẫn tự host n8n với HTTPS cố định key và đặt một certificate hợp lệ phía trước các webhook URL.
  • Ollama thay thế subscription ChatGPT để chạy inference LLM cục bộ và riêng tư. Dự trù theo model: model 7–8B cần khoảng 8 GB RAM. Dung lượng trên disk phụ thuộc vào quantization, khoảng 4 đến 5 GB với bản download 4-bit thông dụng và từ 13 GB trở lên với bản build fp16 full-precision. Điểm cần lưu ý: trên VPS chỉ dùng CPU, inference vẫn hoạt động nhưng chậm. Hãy tính theo số từ mỗi giây, không phải phản hồi tức thì như khi dùng hosted API. Vì vậy cần đặt kỳ vọng phù hợp hoặc thuê một GPU box. Hướng dẫn chạy Ollama để tự host một LLM có các con số thực tế.

Giao tiếp

  • Rocket.Chat thay thế Slack cho một nhóm, với thread, cuộc gọi và các integration. Nên dành từ 2 GB RAM trở lên vì nó chạy trên MongoDB, thành phần ngốn tài nguyên nhất. Điểm cần lưu ý: mỗi bản major của Rocket.Chat chỉ hỗ trợ một phạm vi hẹp các phiên bản MongoDB (8.x cần MongoDB 8.0 trở lên, còn 7.x chạy trên 6.0 hoặc 7.0), và hướng dẫn nâng cấp của Rocket.Chat yêu cầu đi lần lượt qua các bản major. Bỏ qua một bản có thể khiến database bị kẹt, vì vậy hãy nâng cấp từng bước một. Hướng dẫn Rocket.Chat với Docker Compose trình bày lộ trình phiên bản này.
  • Matrix (Synapse) thay thế Slack và Discord bằng một network liên kết liên máy chủ, có mã hóa đầu cuối và cho phép bạn tự quản lý homeserver. Nên dành 1–2 GB RAM; mức dùng sẽ tăng khi bạn tham gia các public room lớn. Điểm cần lưu ý: Synapse có thể tăng mạnh mức dùng memory trong các room liên kết lớn, và phải chạy trên PostgreSQL. SQLite mặc định chỉ phù hợp cho bài test một người dùng và sẽ lỗi ngay khi bạn bật liên kết liên máy chủ. Nếu Synapse quá nặng, các server Conduit hoặc Dendrite nhẹ hơn vẫn dùng cùng protocol.

Mạng và quyền truy cập

  • WireGuard thay thế VPN thương mại, cung cấp tunnel riêng đến IP của bạn và các service khác của bạn. Mức tiêu thụ tài nguyên gần như không đáng kể, dưới 50 MB và phần crypto chạy trong kernel. Điểm cần lưu ý: trên nền tảng ảo hóa dựa trên container (OpenVZ, một số LXC), module sẽ fail với RTNETLINK answers: Operation not supported; bạn nên dùng KVM. Hướng dẫn tự host VPN WireGuard là tài liệu tham khảo chính. Kết hợp WireGuard với các service chỉ bind vào tunnel là cách giữ toàn bộ service không public Internet. Nếu không muốn chỉnh sửa thủ công peer config cho từng thiết bị mới, chạy Tailscale subnet router trên VPS sẽ quảng bá toàn bộ private range đó đến các máy khác của bạn. Bạn chỉ cần approve route và cấu hình IP forwarding để vẫn hoạt động sau reboot.
  • Traefik thay thế các virtual host nginx viết thủ công và việc gia hạn chứng chỉ thủ công. Traefik tự phát hiện container qua Docker label và tự động lấy chứng chỉ Let's Encrypt. Mức tiêu thụ khoảng 100 MB RAM. Điểm cần lưu ý: mô hình cấu hình dựa trên label thực sự khó hiểu lúc đầu. Chỉ một label sai cũng có thể khiến app không được định tuyến mà không có lỗi rõ ràng. Hướng dẫn reverse proxy Traefik cho nhiều app Docker được viết đúng cho việc chạy nhiều app trên trang này phía sau một entry point.
  • AdGuard Home thay thế một máy Pi-hole và dịch vụ lọc DNS trả phí, chặn quảng cáo và tracker cho mọi thiết bị trong mạng của bạn tại lớp DNS. Mức tiêu thụ 100–150 MB RAM. Điểm cần lưu ý: AdGuard Home cần chiếm port 53, nhưng port này xung đột với systemd-resolved trên Ubuntu. Service sẽ không khởi động với listen udp 0.0.0.0:53: bind: address already in use cho đến khi bạn giải phóng port trước.

Giám sát

  • Uptime Kuma thay thế Pingdom, UptimeRobot và StatusPage bằng dashboard gọn và cảnh báo đến gần như mọi channel. Dự trù 150–300 MB RAM. Điểm dễ mắc phải, và đây là điều mọi người luôn bỏ sót: hãy monitor máy production từ một máy khác. Uptime Kuma chạy trên chính server mà nó monitor sẽ không thể báo cho bạn khi server đó bị down. Hướng dẫn monitor trạng thái Uptime Kuma trình bày cách triển khai từ bên ngoài.
  • Zabbix thay thế Datadog và các bộ monitoring dành cho enterprise, với metric dựa trên agent, trigger và lịch sử chi tiết. Dự trù từ 2 GB RAM trở lên, cùng với database riêng. Điểm dễ mắc phải: Zabbix mạnh và thực sự nặng khi setup; nó là overkill nếu chỉ theo dõi ba container, nhưng phù hợp để monitor một fleet. Hãy bắt đầu với Uptime Kuma; chuyển sang monitoring server Zabbix khi bạn thực sự có hạ tầng cần monitor.

Prometheus và Grafana được cố ý bỏ khỏi danh sách này: chúng là các công cụ tuyệt vời để vận hành fleet quy mô lớn, nhưng chạy và tinh chỉnh chúng tốn công hơn mức một stack cá nhân gồm hai hoặc ba máy cần có. Ở quy mô này, Uptime Kuma và Zabbix trả lời các câu hỏi tương tự với ít thành phần cần bảo trì hơn.

Dashboard và control panel

Các công cụ này thay đổi toàn bộ mô hình. Thay vì tự chạy các file compose, panel sẽ quản lý ứng dụng cho bạn.

  • Cloudron biến mong muốn “giá mà có thể cài bằng một click” thành một app store hoàn thiện, có TLS tự động và chức năng backup tích hợp. Tối thiểu cần 2 GB RAM; 4 GB sẽ thoải mái hơn. Điểm cần lưu ý: Cloudron có quan điểm triển khai rất cố định và muốn toàn quyền quản lý máy chủ. Cụ thể, nó cài trực tiếp lên một Ubuntu server mới bằng script cloudron-setup riêng, thay vì chạy dưới dạng container. Tài liệu của Cloudron không hỗ trợ host ARM, LXC, Docker và OpenVZ. Cloudron chỉ miễn phí tối đa 2 app; vượt quá số này thì phải trả phí.
  • CasaOS thay thế dashboard homelab lộn xộn bằng một app grid dễ dùng, miễn phí và nhẹ. Nó cài trực tiếp lên host bằng script riêng (curl -fsSL https://get.casaos.io | sudo bash), không chạy dưới dạng container, sau đó chạy các app của bạn trong Docker. Bản thân CasaOS cần khoảng 150 đến 300 MB RAM. Điểm cần lưu ý: CasaOS được thiết kế cho mạng gia đình đáng tin cậy và không được harden để public Internet. Không expose trực tiếp CasaOS; hãy truy cập nó qua WireGuard.
  • Coolify thay thế Heroku, Vercel và Netlify, đồng thời cung cấp triển khai bằng git-push, database và preview trên server của bạn. Tối thiểu cần 2 GB RAM. Điểm cần lưu ý: đây là một project còn khá mới và phát triển nhanh, vì vậy hãy pin version và đọc release note trước khi upgrade. Bài so sánh Cloudron, CasaOS và Coolify phân tích công cụ nào trong 3 công cụ phù hợp với từng đối tượng.

Công cụ phát triển và năng suất

  • Gitea (hoặc Forgejo) thay thế GitHub cho repository private, issue và CI. Dự trù 200–500 MB RAM. Điểm cần lưu ý: Forgejo là fork do cộng đồng quản lý của Gitea và hiện được nhiều người khuyến nghị hơn; cả hai đều rất tốt, nhưng hãy chọn một và backup repository cùng database, vì backup repository mà không có database sẽ làm mất toàn bộ issue và pull request.
  • Paperless-ngx thay thế tủ hồ sơ và các máy scan tài liệu trả phí. Nó OCR toàn bộ tài liệu để bạn có thể tìm kiếm. Dự trù khoảng 1 GB RAM, với mức sử dụng CPU tăng đột biến trong lúc OCR. Điểm cần lưu ý: kết quả OCR chỉ tốt khi bản scan đủ chất lượng, còn xử lý lại một archive lớn thì chậm; hãy tinh chỉnh trước khi import hàng loạt 10 năm tài liệu giấy.
  • Actual Budget thay thế YNAB và Mint đã ngừng hoạt động bằng cách quản lý ngân sách theo envelope nhanh, local và private. Dự trù khoảng 150 MB RAM. Điểm cần lưu ý: automatic bank sync có sẵn nhưng không bắt buộc, và chỉ hoạt động sau khi bạn đăng ký với một provider theo khu vực như SimpleFIN Bridge hoặc Enable Banking rồi thêm API credentials của mình; vì vậy, khi cài mặc định, bạn phải import giao dịch thủ công.
  • FreshRSS thay thế Feedly và Google Reader đã ngừng hoạt động. Đây là feed reader nhanh, private và có mobile app. Dự trù khoảng 150 MB RAM. Điểm cần lưu ý: hãy cấu hình refresh feed dựa trên cron, nếu không feed chỉ cập nhật khi bạn tình cờ mở trang.
  • BookStack thay thế Notion và Confluence cho tài liệu. Nội dung được tổ chức thành shelf, book và page. Dự trù khoảng 500 MB RAM khi chạy trên PHP và MySQL. Điểm cần lưu ý: nó tổ chức nội dung theo cách riêng thay vì dùng ghi chú tự do; một số người thích cách này, trong khi một số người thấy nó cứng nhắc. Hãy thử trước khi chuyển toàn bộ wiki sang đó.
  • Home Assistant thay thế SmartThings và hàng chục app của các vendor, đồng thời hợp nhất hệ thống smart home ở local. Dự trù khoảng 1 GB RAM. Điểm cần lưu ý: nhiều tính năng của nó cần truy cập local network đến các thiết bị, nên phù hợp tự nhiên hơn với hardware ở nhà thay vì remote VPS. Nếu bắt buộc, hãy chạy dashboard từ xa và bridge kết nối về nhà.

Một cài đặt mẫu

Để dễ hình dung, đây là cấu trúc đầy đủ của một hệ thống self-host: một file compose, một certificate thực tế và một bản backup. Đây là Uptime Kuma, nhưng mọi app trong danh sách đều theo cùng một mô hình.

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    volumes:
      - ./data:/app/data
    ports:
      - "127.0.0.1:3001:3001"
    restart: unless-stopped
docker compose up -d
docker compose logs -f

Lưu ý 127.0.0.1:: app chỉ listen trên localhost, còn reverse proxy như Traefik hoặc nginx thực hiện TLS termination ở phía trước. Bind trực tiếp vào 0.0.0.0:3001 là cách người dùng vô tình publish một admin panel không được mã hóa ra toàn bộ Internet.

Những gì CHƯA NÊN tự host

  • Email. Đây là trường hợp cần nói thẳng. Hầu hết nhà cung cấp VPS chặn outbound port 25. Bạn sẽ thấy Connection timed out từ telnet aspmx.l.google.com 25 và không thể tự sửa lỗi này vì đó là chính sách của nhà cung cấp. Một số nhà cung cấp sẽ gỡ chặn nếu bạn yêu cầu. Ví dụ, AWS cho phép bạn yêu cầu gỡ hạn chế này. Nhưng đó là một yêu cầu, không phải một công tắc có thể bật. Ngay cả khi port 25 đã mở, một IP mới chưa có reputation, PTR record, SPF, DKIM và DMARC vẫn khiến email vào spam hoặc bị từ chối hoàn toàn. Đây là công việc thực sự và phải duy trì liên tục, không phải việc làm trong một cuối tuần. Nếu bạn vẫn muốn triển khai, hãy hiểu rõ các rủi ro và làm theo hướng dẫn tự host email với Mailcow. Bạn cũng phải theo dõi deliverability trong nhiều tháng.
  • Bất kỳ thứ gì bạn không thể backup và restore một cách đáng tin cậy. Nếu bạn chưa từng test restore, bạn không có backup; bạn chỉ đang hy vọng. Không lưu dữ liệu không thể thay thế, bản sao duy nhất của ảnh hoặc các account của bạn trên một service cho đến khi quy trình restore đã được kiểm chứng.
  • Bản sao duy nhất của một dependency quan trọng. Một DNS server tự host mà khi bị crash sẽ làm toàn bộ mạng của bạn mất Internet là một dự án đầu tiên không phù hợp. Hãy giữ một upstream fallback.
  • Các hệ thống an toàn theo thời gian thực. Alarm tại nhà, cảnh báo y tế và mọi hệ thống mà chỉ cần downtime 5 phút đã gây ra vấn đề nghiêm trọng không nên chạy trên một máy hobby mà bạn nâng cấp vào tối Chủ nhật.

Cách chọn ứng dụng đầu tiên và hai yêu cầu bắt buộc

Hãy chọn ứng dụng giúp bạn loại bỏ một khoản phí mà bạn không muốn trả hoặc giải quyết một mối lo về quyền riêng tư mà bạn thực sự gặp phải. Trong thực tế, Vaultwarden và Uptime Kuma là hai lựa chọn tốt nhất để cài đầu tiên: cả hai đều nhỏ gọn, hữu ích ngay lập tức và dễ khôi phục nếu bạn mắc lỗi. Hãy làm cho một ứng dụng hoạt động hoàn chỉnh trước — cài đặt, certificate, backup, kiểm tra restore — rồi mới thêm ứng dụng thứ hai. Kỹ năng bạn đang xây dựng là vận hành hệ thống, không phải bấm nút cài đặt.

Có hai yêu cầu bắt buộc đối với mọi ứng dụng ở trên, không có ngoại lệ:

  1. TLS cho mọi dịch vụ public. Một service dùng plaintext trên bare IP chỉ là bản demo, không phải một deployment thực tế. Hãy đặt một certificate hợp lệ phía trước service bằng Certbot và Let's Encrypt trên nginx, hoặc để Traefik tự động xử lý. Sau đó bảo vệ lớp truy cập bên ngoài bằng Fail2ban cho SSH trên Ubuntu 24.04.
  2. Backup mà bạn đã thực sự restore. Hãy tự động dump mỗi đêm, gồm cả database và data volume, gửi bản sao ra khỏi máy chủ, rồi mỗi tháng restore lên một VPS tạm thời để xác nhận backup hoạt động. Ngày disk hỏng là thời điểm tệ nhất để phát hiện backup trống.

Làm đúng hai việc này thì self-hosting sẽ rất thuận tiện. Bỏ qua chúng thì bạn chỉ đang đếm ngược đến sự cố.

Các lựa chọn trải dài từ thực tế đến khó tin, từ Minecraft server trên VPS cho gia đình đến, nếu bạn muốn xem một bài học cảnh báo, datacenter kém hiệu quả nhất thế giới.

FAQ

Tôi nên tự host gì trước?

Vaultwarden. Trình quản lý mật khẩu mang lại giá trị hằng ngày, thay thế một gói subscription và buộc bạn học toàn bộ quy trình gồm Docker, reverse proxy, TLS và backup. Đây là một app đủ nhỏ để rebuild trong 10 phút nếu bạn làm hỏng. Uptime Kuma là lựa chọn thứ hai rất tốt, để bạn biết về sự cố trước người dùng.

Tôi thực sự cần VPS cấu hình đến mức nào?

Với một app nhỏ, 1 GB RAM là đủ. Với một máy chủ thoải mái để “chạy một số dịch vụ”, hãy nhắm đến 4 GB. Mức trung gian 2 GB là nơi nhiều người gặp tình trạng container bị kill âm thầm do Out-Of-Memory nhưng không tìm ra nguyên nhân. RAM gần như luôn là giới hạn. Tăng disk theo lượng dữ liệu bạn dự định lưu trữ. Immich, Ollama và mọi thứ có database lớn thường cần nhiều cả RAM lẫn disk nhất.

Tôi không nên tự host gì?

Trước hết là email. Hầu hết provider đều block outbound port 25, còn việc bảo đảm email được gửi đến inbox là một cuộc chiến liên tục. Sau đó là mọi thứ bạn không thể backup và restore một cách đáng tin cậy, cùng với mọi single point of failure mà downtime có thể gây thiệt hại thực tế, chẳng hạn DNS server không có phương án dự phòng hoặc hệ thống an toàn gia đình. Những thứ còn lại trong danh sách này đều có thể tự host.

Tôi có cần Docker cho tất cả các dịch vụ này không?

Không bắt buộc, nhưng bạn nên dùng. Mọi app trong danh sách này, ngoại trừ Cloudron và CasaOS, đều có Docker image. Hai app đó được cài trực tiếp lên host bằng setup script riêng, sau đó tự chạy app trong container cho bạn. Với các app còn lại, Docker cung cấp quy trình cài đặt sạch, gỡ bỏ sạch, dễ pin version và dễ chuyển sang host mới. Một số app như WireGuard và Zabbix cũng có thể được cài native từ apt nếu bạn muốn. Khi đã biết một compose file, bạn sẽ hiểu các file còn lại. Vì vậy, toàn bộ danh sách trở nên dễ tiếp cận hơn.

Làm thế nào để giữ mọi thứ an toàn?

4 thói quen đáp ứng phần lớn yêu cầu: đặt TLS phía trước mọi dịch vụ; khóa chặt SSH bằng đăng nhập chỉ dùng key và Fail2ban chặn các lần brute-force; chỉ expose những port thực sự cần public và truy cập phần còn lại qua WireGuard VPN; cập nhật thường xuyên và đọc release notes để upgrade không bao giờ gây bất ngờ. Backup là thói quen thứ 5. Backup giúp bạn recovery khi một lỗi lọt qua 4 biện pháp đầu tiên.