9 điểm bởi GN⁺ 2024-09-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • Vào năm 2024, khi cloud và các dịch vụ thuê bao đã trở nên phổ biến, self-hosting lấy phần mềm làm trung tâm — tự thiết lập hệ thống để học hỏi — là một thú vui đáng thử lại
  • Self-hosting có thể là một cách phản kháng các dịch vụ độc quyền, nhưng vì tốn nhiều thời gian và chi phí tinh thần, niềm vui và sự khám phá mới là động lực quan trọng nhất
  • Người mới có thể bắt đầu mà không cần máy chủ vật lý; trên shared hosting như Uberspace, có thể kết nối qua SSH và dùng môi trường 10GB lưu trữ, 1.5GB RAM
  • Uberspace không dùng được Docker, nhưng có thể tham khảo Uberspace Labs và Awesome-Selfhosted để vận hành các dịch vụ như Actual BudgetMiniflux
  • Khi kết nối tên miền cá nhân, có thể cấu hình subdomain cho từng dịch vụ, địa chỉ email tùy chỉnh và lưu trữ file công khai, giúp dễ trưng bày và duy trì thành quả self-hosting hơn

Cảm giác máy tính cá nhân trước thời cloud

  • Trong thập niên 2000, phần mềm và game được phân phối bằng DVD, và máy tính cá nhân mang đậm tính chất là thiết bị tính toán do chính người dùng trực tiếp điều khiển
  • Sang thập niên 2010, Chromebook và các dịch vụ cloud lan rộng, khiến nhiều phần mềm chuyển sang cách chạy trên máy tính của người khác
  • Sau quảng cáo, thuê bao trở thành phương thức kiếm tiền trực tuyến chủ đạo, và xu hướng người dùng đánh đổi quyền kiểm soát để lấy sự tiện lợi ngày càng lớn
  • Kết quả là một bộ phận thế hệ học khoa học máy tính có ít cơ hội hơn để khởi đầu như những người mê máy tính, và thái độ kiểu hacker thời kỳ đầu cũng đang yếu đi

Tiếp cận self-hosting như một thú vui

  • Self-hosting có thể là hành động giành lại quyền kiểm soát đối với bản ngã số trong một môi trường bị độc quyền chi phối
  • Nếu chỉ xét tính thực dụng thuần túy, giao việc hosting cho nơi khác có thể là lựa chọn tốt hơn
    • Có thể giao việc quản lý độ ổn định, khả năng xử lý đồng thời, dự phòng và tính sẵn sàng cho nhà cung cấp dịch vụ
    • Đổi lại việc tiết kiệm chi phí, thời gian và gánh nặng tinh thần có thể tăng lên
  • Về mặt trí tuệ, nó giống một garage số nơi bạn liên tục tinh chỉnh hệ thống
    • Sau một ngày làm việc, đó có thể trở thành thú vui được mày mò một hệ thống như món đồ chơi mình yêu thích
  • Thay vì khắt khe tranh luận tiêu chuẩn “self-hosting thật sự”, điều quan trọng hơn là bắt đầu một cách vui vẻ, dù chỉ ở cấp độ phần mềm

Tạo môi trường đầu tiên bằng shared hosting

  • Để bắt đầu self-hosting, trước hết cần có không gian để host
  • Dịch vụ hosting được gợi ý là Uberspace
    • Đây là kiểu hosting gần với tinh thần “chúng tôi đưa bạn tua vít, miễn đừng đốt cả tòa nhà, còn lại cứ vui vẻ mà làm”
    • Thanh toán trả sau vào cuối tháng, nên tháng đầu gần như có thể dùng như bản dùng thử miễn phí
  • Khi tạo tài khoản, bạn có thể kết nối SSH vào một máy tính nối Internet
    • Môi trường được cung cấp gồm 10GB lưu trữ và 1.5GB RAM
    • Chạy ls sẽ thấy một thư mục người dùng mới còn trống

Cách chọn phần mềm để cài đặt

  • Khi tìm phần mềm dùng trên Uberspace, hai tài liệu sau đặc biệt hữu ích
    • Uberspace Labs: hướng dẫn chuyên biệt về cách cài đặt nhiều phần mềm trên Uberspace
    • Awesome-Selfhosted: danh sách rộng các phần mềm có thể self-host, phù hợp để tìm các dự án có cộng đồng nhất định
  • Trên Uberspace không thể dùng Docker
    • Do hạn chế bộ nhớ, khó chạy cả một bộ ảo hóa đầy đủ
    • Điều này bất tiện với phần mềm lớn hoặc các cài đặt chỉ dành cho Docker, nhưng vẫn có cách обход như cài từ source hoặc lấy runtime cuối cùng của quá trình Docker hóa theo kiểu dùng image build

Ví dụ 1: Tự quản lý dữ liệu tài chính với Actual Budget

  • Actual Budget là ứng dụng quản lý tài chính nhanh và tập trung vào quyền riêng tư
  • Phù hợp với người dùng muốn theo dõi chi tiêu, tài sản ròng, mô hình tiêu dùng, v.v.
  • Có thể vận hành theo cách không giao thông tin tài chính nhạy cảm cho dịch vụ khác, đồng thời truy cập từ bất cứ đâu qua trình duyệt
  • Trọng tâm của phương pháp lập ngân sách là phương pháp Envelope Budgeting
  • Hướng dẫn cài đặt trên Uberspace có tại guide_actual
  • Trong phần báo cáo, bạn có thể cắt lát và phân tích dữ liệu tài chính
    • Những khoản tưởng là mua sắm nhỏ cũng có thể trở nên lớn khi cộng lại trong một tháng
    • Có thể rút ra insight như chi phí đi làm cao hơn dự kiến

Ví dụ 2: Lấy lại feed bằng Miniflux và RSS

  • Miniflux là một trình đọc feed tối giản và có quan điểm rõ ràng
  • Dùng RSS, bạn có thể xem cập nhật từ các báo, tạp chí và blog yêu thích ở một nơi
  • Các kênh YouTube đã đăng ký cũng có thể được cấu hình như một timeline feed riêng không quảng cáo
    • YouTube cung cấp RSS feed
    • Trình phát YouTube nhúng không có quảng cáo
  • Sau khi cài Miniflux trên Uberspace, bạn có thể thêm feed của các kênh YouTube yêu thích
  • Nếu bật Fever API trong phần cài đặt, các client RSS đọc được Fever API có thể truy cập bộ tổng hợp RSS trên cloud
    • Trong hệ sinh thái Apple, Unread của Golden Hill Software được khuyến nghị
  • Cũng có thể để riêng danh mục feed cho tin tức và webcomic

Tạo một không gian để trưng bày bằng tên miền cá nhân

  • Một trong những niềm vui của self-hosting là khoe những gì mình đã tạo ra
  • Tên miền cá nhân đóng vai trò như không gian trực tuyến của riêng bạn
  • Porkbun được khuyến nghị làm dịch vụ đăng ký tên miền
  • Nếu có một tên miền như awesauce.com, bạn có thể cấu hình nhiều thứ
    • Có thể kết nối các dịch vụ host trên Uberspace với các subdomain như actual.awesauce.com, miniflux.awesauce.com
    • Nếu nhà cung cấp email hỗ trợ tên miền tùy chỉnh, có thể tạo địa chỉ như contact@awesauce.com
      • Về sau dù đổi nhà cung cấp email thực tế, địa chỉ vẫn có thể được giữ nguyên
      • Email dùng tên miền tùy chỉnh có thể mất phí
    • Có thể kết nối subdomain hoặc đường dẫn URL với repository GitHub để cung cấp file công khai như CV tại awesauce.com/files/resume.pdf

Những khám phá cố ý để lại cho bước tiếp theo

  • Mục tiêu của bài viết này không phải là hướng dẫn từng bước chi tiết, mà là khơi gợi sự tò mò muốn tự tay mày mò
  • Một bài tập để độc giả tự khám phá là cách gửi thông báo di động khi một sản phẩm cụ thể được nhập lại hàng hoặc khi website thay đổi
  • Thảo luận liên quan trên Hacker News tiếp tục trong thread này

1 bình luận

 
GN⁺ 2024-09-19
Ý kiến trên Hacker News
  • Nhìn từ góc độ cũ, thật ngạc nhiên khi trả tiền cho shared hosting giờ lại được gọi là “self-hosting”. Không phải nói bản thân việc đó là xấu, nhưng 10 năm trước chắc chắn sẽ không ai gọi như vậy là self-hosting
    Nó giống như ý nghĩa của “nấu từ đầu” đã thay đổi. Nếu là sách nấu ăn thế kỷ 19, phần nguyên liệu có thể ghi “1 con lợn” rồi bảo bạn tự giết mổ, nhưng giờ thì đương nhiên là mua các phần thịt lợn đặt trong khay xốp

    • Bản thân thuật ngữ này cũng có vấn đề. Cộng đồng self-hosting xoay quanh /r/selfhosted có không khí khá kỹ thuật, gần với những người thích mày mò máy tính. Cảm giác giống những người tự lắp kit car
      Nhưng cũng có một thị trường lớn gồm những người có thể hưởng lợi từ self-hosting mà không cần hiểu mọi chi tiết. Ví dụ, nếu dùng dịch vụ được quản lý với tên miền riêng, bạn vẫn có được khá nhiều lợi ích như quyền sở hữu dữ liệu, phần mềm nguồn mở, và sự cạnh tranh giữa các nhà cung cấp. Vì vậy có vẻ cần một thuật ngữ rộng hơn, và gần đây tôi dùng cách gọi indie hosting
    • Nếu dùng nhà cung cấp hosting, chắc chắn sẽ có nhiều người nói rằng dù bạn tự triển khai phần mềm thì đó cũng không phải self-hosting
      Ngoại lệ thường được chấp nhận là phần bảo vệ mạng. Vì nếu có thể thì không muốn để lộ địa chỉ IP nhà ra bên ngoài, nên nhiều người dùng Tailscale, Cloudflare Tunnel, hoặc VPS làm proxy
    • Có vẻ tôi cũng đang trở thành người “cũ”. Tôi có xu hướng chỉ xem những gì chạy trên phần cứng của mình mới là self-hosting thật sự
      Nếu chừng đó vẫn chưa đủ, trong tủ đông nhà tôi còn có thịt lợn từ con lợn tự nuôi, tự làm thịt, và cả bacon tự ướp tại nhà. Câu “một linh hồn cũ sống trong thế giới mới” khá đúng với tôi
    • Hosting tại nhà vốn dĩ từ đầu đã có thể vướng giới hạn điều khoản sử dụng của nhà cung cấp Internet gia đình. Ngay cả khi tôi self-host từ những ngày đầu, tôi cũng trả tiền để gắn hệ thống của mình vào rack của người khác và dùng mạng của họ
      Dù bạn thuê phần cứng, tự lắp server, hay dùng máy ảo do nhà cung cấp cấp, khối lượng bảo trì cũng tương tự nhau. Nhưng nó vẫn khác với việc dùng Wix/Squarespace, Geocities hay các nền tảng mạng xã hội
    • Tác giả bài gốc ở mức nào đó cũng nghĩ tương tự
      Vì họ đã viết: “Vì vậy ở đây tôi sẽ viết một phần nhập môn nhẹ nhàng về self-hosting, dù nó không phải là ‘self-hosting thật sự’. Muốn kiện thì cứ kiện.” :)
  • Tôi thật sự rất thích self-hosting và trong vài tháng qua đã sa vào nó khá sâu. Hiện tôi đang vận hành vài dịch vụ cho công ty và homelab, triển khai lên Hetzner VPS bằng Ansible + file Docker Compose hoặc https://github.com/coollabsio/coolify/
    Kho awesome-selfhosted cũng rất tốt để tìm dự án đem đi self-host, nhưng thiếu các tính năng tiện dụng, nên tôi đã tạo một thư mục ở https://selfhostedworld.com với một chút cải thiện về trải nghiệm người dùng. Có tìm kiếm, bộ lọc theo số sao/độ phổ biến/ngày tháng, và dark mode

    • Có vẻ bạn rất rành chủ đề này nên tôi muốn hỏi. Với một người có kiến thức kỹ thuật nhất định nhưng không quá quen thuộc với mạng, việc đưa một máy tính trong mạng của mình ra Internet nguy hiểm đến mức nào?
      Tôi muốn biết liệu dùng các công cụ hiện đại và máy ảo thì có tương đối an toàn không, hay vẫn phải liên tục để ý kiểu kiểm tra cập nhật phần mềm hằng tuần. Tôi đã muốn dựng server từ lâu, và giờ có một laptop dư nên đang nghĩ ít nhất cũng chạy NAS thử
    • Tôi có thể đưa SaaS của mình vào mục “Heroku alternative” không?
      https://ptah.sh
    • Khá hay. Tôi thấy có sish và inlets; ở đây có một danh sách tập hợp nhiều công cụ tương tự hơn nhiều: https://github.com/anderspitman/awesome-tunneling
      Về phần xác thực, tôi cũng đã làm một bản so sánh các OIDC server: https://github.com/lastlogin-net/obligator#comparison-is-the...
    • Có tên gọi nào cho loại phần mềm cung cấp mặt phẳng quản lý cho các server khác, giống Coolify không? Ý tôi là loại đối lập với cách chạy trực tiếp trên chính server đó như Dokku
  • Có câu rằng “tiết kiệm được bao nhiêu tiền thì mất bấy nhiêu thời gian và tinh thần, nên xét thực dụng là dại”, và trong cộng đồng self-hosting, Kubernetes thường bị nhìn không mấy thiện cảm. Nhưng bản thân self-hosting vốn cũng có khía cạnh như vậy, nên đi tới cùng hẳn cũng không tệ
    Tôi đang chạy NixOS trên 3 máy Dell R720XD, vận hành dưới dạng k3s multi-master. Phần lưu trữ dùng rook/ceph, với khoảng 12 ổ cứng đủ kích cỡ khác nhau. Trò “biểu diễn tiệc tùng” tôi thích nhất là đang stream video thì rút đại một ổ cứng nào đó khỏi cluster, và hệ thống chẳng hề bận tâm. Cắm lại thì mọi thứ quay về như chưa có gì xảy ra; dung lượng vẫn còn nhiều nên tôi vẫn đang tìm thêm những thứ hữu ích để tiếp tục host

    • Có nhiều người dùng k8s hoặc k3s cho self-hosting. Tuy vậy, với đa số thì lợi ích thu được không đủ so với độ phức tạp tăng thêm. Cũng cần tính đến việc phần lớn chỉ là một node đơn lẻ, nên Docker đã làm được mọi thứ cần thiết
      Cá nhân tôi dù chỉ có 4 máy desktop nhỏ vẫn dùng Docker Swarm. Với phần cứng của bạn, riêng tiền điện chắc dễ lên tới 200 USD mỗi tháng. Docker Swarm đã cũ và không còn phổ biến, nhưng chỉ phức tạp hơn Docker nguyên bản một chút, và làm được mọi thứ cần thiết cho triển khai đa node và orchestration
    • Tôi dùng NixOS trong máy ảo, còn service thì chạy trực tiếp bằng container. Tôi cũng đã tạo một công cụ giúp chạy các project Docker Compose trên NixOS dễ dàng hơn [1]
      Cách này cho phép hưởng lợi từ cấu hình NixOS trong khi vẫn chạy được các ứng dụng tùy ý có thể không có trong nixpkgs. Phần lưu trữ dùng ZFS trên hypervisor Proxmox, rồi expose cục bộ qua NFS
      [1] https://github.com/aksiksi/compose2nix
    • Trong homelab, k8s là quá tay. Nhưng người ta vẫn làm vì self-hosting có tỷ lệ khoảng 1 phần thực dụng và 2 phần học hỏi
  • Bài gốc đã chỉ ra rất đúng chỗ này: “Đã là năm 2024 rồi, giờ là lúc nhìn lại niềm vui căn bản của việc tự tay thiết lập hệ thống của mình.”
    Self-hosting thật sự rất vui. Vì nó là sự pha trộn giữa học hỏi, thử thách và tính thực dụng. +1 cho Actual Budget và Changedetection.io. Nhưng -1 vì không đề cập đến threat modeling và bảo mật. Tác giả bài gốc dùng HTTPS nhưng lại mở website ra Internet công cộng. Người mới bắt đầu nên host chỉ trong LAN hoặc khóa thật chặt. Tuy nhiên với shared hosting thì việc này có thể khó nếu không có giới hạn IP hay tunneling, và tôi không biết uberspace có cung cấp những thứ đó không. Với người đã qua giai đoạn đầu, tôi khuyên dùng những thứ như Docker để chạy song song nhiều ứng dụng hơn. Phụ thuộc được đóng gói sẵn là tuyệt nhất. Nhân tiện tự quảng bá nhẹ cuốn sách của tôi, trong đó cũng nói về cách dùng Docker: https://selfhostbook.com

  • Tôi đồng ý với phe những người lâu năm khác
    Nếu không phải phần cứng của chính bạn đang chạy trong không gian bạn sở hữu hoặc thuê, thì đó không phải là self-hosting. Hiện tôi dùng một hộp Micro-ITX nhỏ, nhưng trước đây từng có cả một rack server đúng nghĩa với server 6U, UPS và thiết bị mạng. Đó là chuyện trước khi tôi kết hôn

  • Tôi rất thích self-hosting. Tôi đã học được rất nhiều khi làm các dự án hobby nhỏ
    Nếu ai tò mò về cấu hình của tôi thì: tôi mua rẻ một con Dell R630 đã qua sử dụng trên eBay. Cấu hình gồm SSD 1TB RAID 1, RAM 32GB, 32 core, và tôi đang vui vẻ chạy các app hobby nhỏ bằng Docker, virsh, minikube. Tôi đã học được cả ba. Tôi có đường cáp quang 1Gbps, và cứ mỗi phút một cron job kiểm tra xem IP có đổi không, rồi dùng Linode API để đổi DNS A record

  • RAM 1,5GB, đĩa 10GB á? VPS cloud cơ bản của Hetzner có 4GB RAM và 40GB đĩa với giá 4,51 euro

    • Theo tôi biết thì có vẻ khó thắng được Oracle Cloud: https://www.oracle.com/cloud/costestimator.html
      Về compute, họ nói “mỗi tháng miễn phí 3.000 OCPU-giờ đầu tiên và 18.000 GB-giờ để tạo các instance Ampere A1 Compute cho mỗi tenancy. Mức dùng miễn phí này được chia sẻ trên bare metal, máy ảo và container instance.” Về block storage thì kiểu như “hạn mức Free Tier của dịch vụ Block Volume là tổng cộng 200GB cho toàn bộ tenancy. Nếu có nhiều báo giá trong cùng một tenancy thì tổng cộng chỉ áp dụng 200GB.” Tức là coi như bạn có CPU ARM 4 core + RAM 24GB + 200GB dung lượng miễn phí
    • Bạn có đang nhìn cả chênh lệch giá tiềm năng không?
  • Spoiler một chút: bài này không nói về self-hosting mà là về shared hosting

  • Nhưng rồi nếu có ai đó thì thầm vào tai bạn K8S

    • Nhắc mới nhớ, tôi phải đi nạp các CRD đã cập nhật vào cluster K3S trong homelab của mình để chuẩn bị cho cửa sổ nâng cấp tiếp theo
  • Khi tốt nghiệp khỏi guide này, bạn cũng nên ghé xem /r/homelab và /r/homedatacenter ;)