Immich thay Google Photos: tự host kho ảnh gia đình

Chia sẻ bài viết

Mục lục
Immich thay Google Photos: tự host kho ảnh gia đình

Trả lời nhanh: Immich là ứng dụng quản lý ảnh mã nguồn mở giống Google Photos đến từng cử chỉ: app iOS/Android tự sao lưu ảnh khi cắm sạc, timeline cuộn mượt, tìm theo khuôn mặt và nội dung (nhờ machine learning chạy ngay trên máy bạn), album chia sẻ cho người thân. Dựng bằng bộ Docker Compose chính chủ trên VPS 4GB RAM trở lên, ảnh nằm trên ổ của bạn, không giới hạn 15GB, không ai nén chất lượng.

Trong cả làng self-host, Immich là dự án tăng trưởng ấn tượng nhất, lượng tìm kiếm ở Việt Nam tăng 65 lần trong 4 năm, vì nó đánh trúng nỗi đau phổ quát nhất: 15GB Google free cạn nhanh hơn tốc độ đẻ ảnh của một chiếc điện thoại, và gói mở rộng là thuê bao trọn đời. Bài này dựng Immich hoàn chỉnh: compose, app điện thoại, nhập kho ảnh cũ từ Google Takeout, và phần quan trọng nhất với ảnh gia đình, backup.

Tóm tắt nhanh
  • Trải nghiệm ngang Google Photos: auto-backup, timeline, tìm mặt người, bản đồ, album chia sẻ
  • Stack compose chính chủ: server + machine learning + Postgres + Redis, 4GB RAM trở lên
  • App điện thoại chính chủ trên cả hai chợ; nhiều người dùng, mỗi người kho riêng
  • Nhập ảnh cũ từ Google Takeout bằng immich-go, giữ ngày chụp, album
  • Ảnh gia đình là dữ liệu không đền được: backup offsite là phần bắt buộc của bài

Dựng Immich bằng compose chính chủ

mkdir immich && cd immich
wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
# sua .env: UPLOAD_LOCATION (noi chua anh), DB_PASSWORD
docker compose up -d

Stack gồm 4 dịch vụ: immich-server (API + web), immich-machine-learning (nhận diện mặt, tìm theo nội dung), Postgres và Redis. Mở http://IP:2283, tạo tài khoản admin đầu tiên, xong phần server trong 10 phút. Lưu ý phiên bản: Immich phát triển rất nhanh, đôi khi có thay đổi cấu trúc giữa các bản, đọc release notes trước khi update (thói quen đã dạy ở bài Supabase, áp nguyên).

App điện thoại: auto-backup như Google Photos

Cài app Immich (App Store/Google Play), đăng nhập bằng địa chỉ server + tài khoản vừa tạo. Bật Backup: chọn album cần sao lưu, bật chạy nền, từ đó ảnh chụp mới tự đẩy lên server (thiết lập chỉ sao lưu qua wifi/khi sạc tùy bạn). Truy cập từ ngoài nhà đi một trong hai đường quen của series: tailnet (an toàn nhất, server điền IP 100.x, chỉ nhà mình thấy) hoặc domain công khai qua reverse proxy khi muốn chia sẻ album cho người ngoài bằng link. Mỗi thành viên gia đình một tài khoản riêng, kho ai nấy giữ, album chia sẻ là nơi gặp nhau.

Chuyển kho ảnh cũ từ Google về

Kho 10 năm nằm bên Google? Xuất bằng Google Takeout (lấy cả metadata JSON), rồi nhập bằng công cụ cộng đồng immich-go: nó đọc cấu trúc Takeout, giữ ngày chụp, album, và bỏ qua trùng lặp:

immich-go -server=http://IP:2283 -key=API_KEY upload -google-photos /duong-dan/takeout-*.zip

Kho vài trăm GB nhập mất vài giờ đến một đêm, chạy trong tmux cho yên tâm. Sau nhập, machine learning tự quét dần: vài ngày sau mở tab People sẽ thấy các khuôn mặt tự gom cụm, gõ tìm kiếm nội dung như một buổi thử phép thuật.

Phần cứng: ảnh là bài toán I/O

Immich là app nặng nhất series này, và nặng đúng chỗ NVMe tỏa sáng: thumbnail, hàng chục nghìn ảnh sinh thumbnail khi nhập, ổ chậm là tiến trình bò cả ngày; timeline, cuộn mượt hay giật phụ thuộc tốc độ đọc loạt file nhỏ; machine learning, quét ảnh liên tục lúc nhập kho. RAM: 4GB cho riêng Immich là mức êm (tắt bớt ML lúc đầu nếu chật, bật lại sau). Dung lượng tính đơn giản: bằng kho ảnh hiện tại + đà tăng 2-3 năm, kho ảnh là dữ liệu chỉ có phình.

Backup: phần không được phép lười

Ảnh gia đình mất là mất vĩnh viễn, không tiền nào đền. Kỷ luật ba dòng: (1) UPLOAD_LOCATION + database là hai thứ phải backup (dump Postgres theo bài backup database, thư mục ảnh rsync/restic); (2) bản sao rời máy, sang VPS thứ hai/NAS nhà qua tailnet như mô hình đã dựng nhiều lần trong series Tailscale; (3) điện thoại giữ ảnh gốc thêm một thời gian sau khi backup (đừng bật xóa ảnh máy vội) cho đến khi bạn đã restore thử thành công một lần. Chi tiết tự động hóa cả cụm nằm ở bài vận hành chung.

Phần cứng: ảnh là bài toán ổ đĩa

Kho ảnh của bạnDung lượng cầnBộ nhớGhi chú
Dưới 20.000 ảnhDung lượng ảnh nhân 1,34 GBPhần dư dành cho ảnh thu nhỏ
20.000 tới 100.000 ảnhDung lượng ảnh nhân 1,38 GBLần quét đầu tiên chạy nhiều giờ
Trên 100.000 ảnh, có videoDung lượng nhân 1,416 GBNên tách ổ dữ liệu riêng

Hệ số 1,3 là phần ảnh thu nhỏ và dữ liệu nhận diện sinh thêm. Người dựng hay tính đúng bằng dung lượng ảnh rồi hết chỗ sau lần quét đầu.

Kiểm sau khi dựng

# Cac thanh phan da chay chua
docker compose ps

# Qua trinh quet thu vien dang toi dau
docker compose logs -f --tail=50 immich-server | grep -i "job\|thumbnail"

# O dia va bo nho trong luc quet
watch -n5 'df -h /; free -h'

# Co so du lieu song chua
docker compose exec database pg_isready

Sao lưu, phần không được phép lười

# 1. Co so du lieu, chua toan bo thong tin album, nhan dien, chia se
docker compose exec -T database pg_dump -U postgres immich \
  > /sao-luu/immich-db-$(date +%F).sql

# 2. Anh goc. KHONG can sao luu thu muc anh thu nho, no sinh lai duoc
rsync -a --delete ./library/upload/ /sao-luu/anh-goc/

# 3. Day ra o ngoai hoac may khac
rsync -avz /sao-luu/ may-luu-tru:/kho/anh/

Điểm quan trọng: sao lưu ảnh gốc mà quên cơ sở dữ liệu thì khôi phục xong sẽ có ảnh nhưng mất sạch album, nhãn người và liên kết chia sẻ. Hai phần phải đi cùng nhau.

Ba việc trước khi tin tưởng giao kho ảnh gia đình

  • Khôi phục thử một lần trên máy khác, đếm số ảnh, mở thử vài album.
  • Giữ bản sao ở nơi khác máy chủ, tốt nhất là khác địa điểm. Kho ảnh gia đình mất là mất vĩnh viễn.
  • Đừng xóa ảnh khỏi điện thoại ngay trong vài tháng đầu, cho tới khi bạn đã khôi phục thử thành công ít nhất một lần.

Câu hỏi thường gặp

Immich có thật sự ngang Google Photos không?

Về trải nghiệm hằng ngày (backup, timeline, tìm kiếm, chia sẻ): rất gần, và tiến bộ theo từng tháng. Kém hơn ở các tính năng AI chỉnh sửa ảnh và độ bóng bẩy tuyệt đối; hơn ở chỗ không giới hạn dung lượng, không nén, và ảnh là của bạn.

Tìm theo khuôn mặt có gửi ảnh đi đâu không?

Không, machine learning chạy ngay trong container trên VPS của bạn, model tải về máy. Đây là điểm khác biệt riêng tư lớn nhất so với dịch vụ cloud: ảnh không rời server.

VPS 4GB chạy Immich kèm app khác được không?

Chật, Immich lúc nhập kho + ML chiếm phần lớn 4GB. Chiến lược: 4GB chạy mình Immich giai đoạn nhập kho, xong xuôi ML nhàn hơn thì thêm app nhẹ; hoặc lên 8GB cho cả cụm 5 app thong thả.

Video có backup được không?

Được, Immich xử lý cả video, kèm transcode để phát mượt trên điện thoại. Video ăn dung lượng và CPU transcode đáng kể; kho nhiều video thì cộng thêm ổ và ưu tiên NVMe.

Hạ tầng VPS tại Việt Nam của TND
Cloud VPS linh hoạt và VPS NVMe xung cao, IP công cộng riêng, đặt tại Việt Nam
Kho ảnh 10 năm của gia đình xứng đáng một mái nhà tử tế: VPS NVMe TND với ổ Enterprise U.2 RAID 10, thumbnail sinh trong tích tắc, timeline cuộn mượt, RAM tới 24GB cho machine learning. Đặt tại Việt Nam nên app điện thoại nhanh như local, bàn giao trong 5 phút.
Chọn gói VPS NVMe cho self-host nặng I/ONhu cầu nhẹ hơn? Xem Cloud VPS

Bài viết liên quan