Back to articles
Technology Insight

Tự Host Immich Trên VPS Gắn Cloudflare R2: Giải Pháp Kho Ảnh Gia Đình Không Giới Hạn Thay Thế Google Photos

May 29, 2026

Giới Thiệu Xu Hướng Tự Lưu Trữ Ảnh Gia Đình (Self-hosting)

Trong kỷ nguyên số, những bức ảnh và video gia đình là tài sản vô giá. Nhiều năm qua, Google Photos là lựa chọn mặc định nhờ tính tiện lợi và các tính năng thông minh. Tuy nhiên, chính sách giới hạn 15GB dung lượng miễn phí (chia sẻ chung cho cả Gmail và Google Drive) cùng với chi phí nâng cấp các gói Google One ngày càng đắt đỏ đã khiến nhiều người dùng tìm kiếm giải pháp thay thế.

Đó là lý do xu hướng Self-hosting (tự vận hành máy chủ lưu trữ) lên ngôi. Nổi bật nhất hiện nay là Immich - một mã nguồn mở có giao diện và tính năng giống Google Photos đến 99%. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách tối ưu hóa chi phí bằng cách triển khai Immich trên một máy chủ ảo (VPS) cấu hình vừa phải, kết hợp với kho lưu trữ đám mây Cloudflare R2 (Object Storage) để tạo ra một hệ thống lưu trữ ảnh gia đình vô hạn, an toàn và tiết kiệm vượt trội.

---

Tại Sao Nên Chọn Cặp Đôi Immich và Cloudflare R2?

Nếu tự host theo cách truyền thống, bạn sẽ cần một ổ cứng dung lượng lớn (HDD/SSD) gắn trực tiếp vào máy chủ hoặc thiết bị NAS tại nhà. Cách làm này gặp hai rào cản: chi phí phần cứng ban đầu cao và rủi ro mất dữ liệu nếu ổ cứng bị hỏng vật lý. Bằng cách tách biệt phần xử lý (Compute) trên VPS và phần lưu trữ (Storage) lên Cloudflare R2, bạn sẽ nhận được những lợi ích cốt lõi sau:

  • Giao diện thân thiện, hiện đại: Immich cung cấp ứng dụng mượt mà trên cả iOS và Android, hỗ trợ tự động sao lưu ngầm, nhận diện khuôn mặt bằng AI, phân loại địa điểm và tìm kiếm ảnh thông minh.
  • Chi phí lưu trữ siêu rẻ từ Cloudflare R2: R2 áp dụng mô hình s3-compatible nhưng điểm đặc biệt nhất là miễn phí hoàn toàn chi phí băng thông tải ra (Egress fees). Bạn chỉ trả tiền cho dung lượng thực tế lưu trữ với mức phí khoảng $0.015/GB/tháng và miễn phí 10GB đầu tiên.
  • Khả năng mở rộng không giới hạn: Bạn không bao giờ phải lo lắng về việc nâng cấp ổ cứng cho VPS. Kho ảnh của bạn có thể tăng từ 100GB lên 1TB, 10TB chỉ trong vài giây mà hệ thống vẫn vận hành ổn định.
  • An toàn dữ liệu tối đa: Dữ liệu lưu trên Cloudflare R2 được phân tán và dự phòng trên hạ tầng đám mây toàn cầu, loại bỏ hoàn toàn rủi ro mất ảnh do hỏng hóc phần cứng gia đình.
---

Chuẩn Bị Tài Nguyên Hệ Thống

Để bắt đầu triển khai, bạn cần chuẩn bị sẵn các tài nguyên cơ bản sau đây:

  1. Một VPS Linux: Khuyến nghị sử dụng hệ điều hành Ubuntu Server (22.04 LTS hoặc 24.04 LTS). Cấu hình tối thiểu từ 2 vCPU và 2GB RAM đến 4GB RAM (để chạy mượt mà các tác vụ học máy AI như nhận diện khuôn mặt và tạo hình thu nhỏ - thumbnail). Bạn có thể chọn các nhà cung cấp như DigitalOcean, Linode, Hetzner hoặc các nhà cung cấp VPS nội địa.
  2. Tài khoản Cloudflare: Đã kích hoạt tính năng R2 Storage và liên kết thẻ thanh toán quốc tế (Visa/Mastercard).
  3. Một tên miền (Domain name): Được quản lý bởi Cloudflare để cấu hình truy cập từ xa một cách an toàn thông qua HTTPS hoặc Cloudflare Tunnels.
---

Quy Trình Triển Khai Chi Tiết

Dưới đây là các bước kỹ thuật giúp bạn thiết lập hệ thống từ đầu đến khi hoàn thiện.

Bước 1: Khởi tạo Bucket Cloudflare R2 và Lấy Thông Tin API

Truy cập vào trang quản trị Cloudflare, chọn mục R2 Object Storage và nhấn Create bucket. Đặt tên cho bucket của bạn (ví dụ: gia-dinh-immich-storage).

Sau khi tạo xong, bạn cần tạo khóa truy cập bằng cách:

  • Vào phần Manage R2 API Tokens và chọn Create API Token.
  • Cấp quyền Edit cho token để Immich có thể đọc và ghi dữ liệu.
  • Lưu lại các thông tin quan trọng bao gồm: Access Key ID, Secret Access Key, và Endpoint URL (dạng https://.r2.cloudflarestorage.com).

Bước 2: Cài Đặt Docker và Kết Nối R2 Vào VPS

Cập nhật VPS của bạn và cài đặt Docker cùng Docker Compose bằng các lệnh tiêu chuẩn:

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose -y

Vì Immich cần đọc ghi dữ liệu trực tiếp dưới dạng một thư mục hệ thống, phương pháp tối ưu và ổn định nhất hiện nay là sử dụng rclone hoặc S3FS / Mountpoint for Amazon S3 để gắn (mount) bucket R2 thành một thư mục cục bộ trên VPS.

Cấu hình rclone kết nối đến R2 theo thông tin API đã lấy ở Bước 1. Sau đó tiến hành mount bucket vào thư mục hệ thống bằng lệnh:

rclone mount r2:gia-dinh-immich-storage /mnt/immich-r2 --allow-other --vfs-cache-mode writes &

Lưu ý quan trọng: Đảm bảo thư mục /mnt/immich-r2 đã được phân quyền chính xác để Docker có thể toàn quyền truy cập.

Bước 3: Cấu Hình Docker Compose Cho Immich

Tạo một thư mục chứa dự án Immich và tải về file cấu hình mẫu chính thức từ nhà phát triển. Tiến hành chỉnh sửa file .env để định tuyến đường dẫn lưu trữ ảnh (UPLOAD_LOCATION) trỏ thẳng về thư mục R2 đã mount:

UPLOAD_LOCATION=/mnt/immich-r2

Tiếp theo, khởi chạy toàn bộ các container của Immich (bao gồm máy chủ web, cơ sở dữ liệu PostgreSQL, Redis và dịch vụ Machine Learning) bằng lệnh:

docker compose up -d
---

Những Lưu Ý Quan Trọng Khi Vận Hành

Mặc dù giải pháp này mang lại không gian lưu trữ khổng lồ với chi phí rẻ, các quản trị viên gia đình cần lưu ý một số điểm kỹ thuật sau để hệ thống vận hành bền bỉ:

1. Giới hạn kích thước tệp tin qua Cloudflare

Nếu bạn sử dụng Cloudflare Proxy (đám mây màu cam) hoặc Cloudflare Tunnels để kết nối ứng dụng điện thoại với VPS, hãy lưu ý rằng Cloudflare áp dụng giới hạn kích thước tải lên 100MB mỗi yêu cầu đối với các gói tài khoản miễn phí. Đối với các tệp video độ phân giải cao 4K có dung lượng lớn, quá trình đồng bộ hóa có thể bị gián đoạn.

Giải pháp: Bạn có thể cấu hình bỏ qua proxy của Cloudflare đối với sub-domain dành riêng cho việc upload, hoặc thiết lập VPN nội bộ như Tailscale / WireGuard để thiết bị di động đồng bộ trực tiếp với địa chỉ IP nội bộ của VPS khi ở nhà hoặc khi xử lý các file dung lượng lớn.

2. Cơ chế sao lưu cơ sở dữ liệu (Database Backup)

Mặc dù hình ảnh gốc và video của bạn đã an toàn trên đám mây Cloudflare R2, nhưng toàn bộ cấu trúc album, thông tin tài khoản, dữ liệu nhận diện khuôn mặt và metadata đều nằm trong cơ sở dữ liệu PostgreSQL chạy cục bộ trên ổ cứng của VPS. Nếu VPS bị lỗi hoặc nhà cung cấp thu hồi, bạn sẽ mất các thông tin phân loại này dù ảnh gốc vẫn còn trên R2.

Do đó, việc thiết lập một cronjob tự động backup dữ liệu PostgreSQL định kỳ mỗi ngày và đẩy bản backup đó lên một thư mục riêng biệt trên R2 là quy trình bắt buộc để đảm bảo an toàn tuyệt đối theo nguyên tắc sao lưu 3-2-1.

---

Kết Luận

Sự kết hợp giữa Immich và Cloudflare R2 mang lại một giải pháp thay thế hoàn hảo cho Google Photos. Bạn không còn bị ràng buộc bởi các gói dung lượng đắt đỏ, hoàn toàn làm chủ dữ liệu cá nhân của gia đình mà vẫn duy trì được trải nghiệm người dùng thông minh, hiện đại. Với chi phí vận hành chỉ vài đô-la mỗi tháng cho một VPS nhỏ và dung lượng lưu trữ R2 tính theo từng GB thực tế, đây chắc chắn là dự án công nghệ đáng đầu tư cho ngôi nhà thông minh của bạn.

Tự Host Immich Trên VPS Gắn Cloudflare R2: Giải Pháp Kho Ảnh Gia Đình Không Giới Hạn Thay Thế Google Photos | DPTCloud