Immich, giải pháp quản lý ảnh và video tự lưu trữ hiệu năng cao
(github.com/immich-app)- Immich là giải pháp quản lý ảnh và video tự lưu trữ hiệu năng cao, giúp đảm bảo quyền riêng tư và quyền sở hữu dữ liệu của người dùng
- Đây là lựa chọn thay thế cho các dịch vụ đám mây lớn như Google Photos, đồng thời cung cấp nhiều tính năng và hỗ trợ đa nền tảng
- Hỗ trợ nhiều tính năng dựa trên AI như nhận diện khuôn mặt, tìm kiếm theo metadata, tự động sao lưu
- Đang được phát triển nhanh chóng bởi nhiều người đóng góp mã nguồn mở và được cộng đồng cập nhật, vận hành rất tích cực
- Dù có tính ứng dụng và tính năng cao, vẫn khuyến nghị tuân thủ chiến lược sao lưu 3-2-1 để phòng ngừa hỏng hóc hoặc mất mát dữ liệu
Tổng quan dự án và tầm quan trọng
Immich là giải pháp quản lý ảnh và video tự lưu trữ hiệu năng cao dựa trên mã nguồn mở, mang lại lợi thế để người dùng trực tiếp quản lý dữ liệu media của mình trong môi trường máy chủ cá nhân.
Khác với các dịch vụ đám mây hiện có như Google Photos hay Amazon Photos, dự án này được chú ý nhờ cho phép người dùng tự nắm giữ quyền riêng tư và quyền sở hữu dữ liệu.
Đặc biệt, các điểm nổi bật gồm AI mạnh mẽ và tìm kiếm theo metadata, sao lưu tự động, hỗ trợ nhiều thiết bị (di động, web) cùng các tính năng tiện dụng phong phú cho người dùng.
Với tư cách là một dự án mã nguồn mở, Immich liên tục được cải tiến nhanh, tiếp nhận nhiều phản hồi đa dạng, từ đó thể hiện ưu thế nổi bật so với các sản phẩm cạnh tranh về hiệu quả và khả năng mở rộng.
Tình trạng dự án và lưu ý khi phát triển
- Dự án Immich đang được phát triển rất tích cực
- Vì vẫn ở giai đoạn trước khi ổn định hoàn toàn, có thể xảy ra lỗi và vấn đề tương thích
- Không nên dùng như giải pháp lưu trữ duy nhất cho dữ liệu ảnh và video
- Khuyến nghị áp dụng chiến lược sao lưu 3-2-1 (3 bản sao, 2 loại phương tiện, 1 bản lưu ngoài địa điểm)
Giới thiệu các tính năng chính
| Tính năng | Di động | Web |
|---|---|---|
| Tải lên/xem ảnh và video | O | O |
| Tự động sao lưu khi chạy ứng dụng | O | X |
| Ngăn dữ liệu trùng lặp | O | O |
| Sao lưu album đã chọn | O | X |
| Tải xuống | O | O |
| Hỗ trợ nhiều người dùng | O | O |
| Album/album chia sẻ | O | O |
| Tìm kiếm/xem metadata (EXIF, bản đồ, v.v.) | O | O |
| Tìm kiếm bằng khuôn mặt/đối tượng/metadata/CLIP | O | O |
| Tính năng quản trị (quản lý người dùng, v.v.) | X | O |
| Sao lưu nền | O | X |
| Hỗ trợ OAuth, API key, Live Photo, v.v. | Cung cấp nhiều tính năng | |
| Xem ảnh 360 độ, cấu trúc lưu trữ do người dùng định nghĩa | Chỉ hỗ trợ một phần trên web | |
| Chia sẻ công khai, lưu trữ & yêu thích, bản đồ toàn cục | O | O |
| Chia sẻ với đối tác, nhận diện khuôn mặt/phân cụm, xem kỷ niệm | O | O |
| Hỗ trợ offline (di động), thư viện chỉ đọc | O/X | O |
| Xem theo thư mục, thẻ, cuộn kiểu scrubber/kéo thả | Hỗ trợ đa dạng |
Bản dịch và tài liệu
- Có thể xem tài liệu chính thức tại https://immich.app/
- Hỗ trợ bản dịch đa ngôn ngữ (bao gồm cả tiếng Hàn), mở rộng tính tiện lợi cho người dùng toàn cầu
Công nghệ sử dụng và thông tin mã nguồn mở
- Áp dụng stack công nghệ web/app hiện đại như TypeScript(43%), Dart(35%), Svelte(14%)
- Công khai theo giấy phép AGPL-3.0, bất kỳ ai cũng có thể sử dụng và đóng góp
- Có hơn 1.500 người đóng góp tích cực tham gia, đạt hơn 75.000 GitHub Star
Bối cảnh sử dụng và điểm khác biệt
- Đang nổi lên như giải pháp thay thế hoàn chỉnh cho Google Photos và các dịch vụ quản lý ảnh đám mây thương mại
- Mang lại nhiều lợi ích như tự do của mã nguồn mở, chủ quyền dữ liệu, cải tiến tính năng nhanh và khả năng mở rộng, cùng ưu thế của việc tự quản lý máy chủ
- Với khả năng tìm kiếm, phân loại, AI mạnh mẽ và UI trực quan, cả người mới bắt đầu cũng có thể sử dụng ngay
Lưu ý và kết luận
- Để ngăn mất dữ liệu, cần thiết phải xây dựng thêm hệ thống sao lưu
- Là lựa chọn phù hợp cho người dùng ban đầu, nhà phát triển và những ai coi trọng quyền riêng tư của mình
- Có thể trải nghiệm hoạt động thực tế thông qua bản demo và tài liệu chính thức
1 bình luận
Ý kiến trên Hacker News
Muốn thử dùng một lần, nhưng hiện tại chuỗi cung ứng phần mềm của Immich có vẻ khá bất ổn, đến mức cứ vài ngày lại cần cập nhật dependency
Đang chờ đến khi việc quản lý dependency đủ trưởng thành để có thể được phân phối dưới dạng gói Debian
Cá nhân tôi xem độ ổn định trong quản lý dependency là một thước đo chất lượng quan trọng. Tôi muốn có thể dùng ít nhất 2–3 năm mà không phải lo gì ngoài các bản vá bảo mật
Các dependency thay đổi liên tục, dependency lan sang nhiều dự án khác nhau và chỉ dựa vào Docker Compose thì theo tôi khó tạo được niềm tin lâu dài
Trớ trêu là không lâu sau khi viết những điều này, tôi lại thấy bài viết này cho thấy một trường hợp tấn công dependency ngoài đời thực
Tất nhiên Debian cũng không an toàn 100% trước kiểu tấn công này, nhưng nếu dependency không thay đổi thường xuyên thì khả năng tấn công thành công sẽ giảm đi rất nhiều
Immich thực ra còn chống chịu tốt hơn với những vấn đề chuỗi cung ứng kiểu này
Lý do là họ có chính sách chờ 5 ngày trước khi tạo PR cập nhật dependency
Đây là một thực hành tốt, và có thể xem trong chi tiết chính sách
Tôi đã theo dõi Immich khá lâu rồi
Khi nào có bản chính thức (stable) thì tôi muốn thử nghiệm
Nếu chuyển từ Google Photos sang Immich thì tôi cũng lo về việc xây dựng một hệ thống backup phù hợp
Hiện tại tôi đang tự động backup dữ liệu homelab quan trọng lên Google Drive, nhưng nếu tự host ảnh thì tôi chắc chắn cũng muốn tính đến backup offsite
Nói thật thì trên trang chủ của Immich vẫn còn một banner cảnh báo lớn rằng đây là bản beta
Tôi nghĩ trước khi có bản phát hành chính thức thì luồng phát triển hơi hỗn loạn như vậy là điều khó tránh
Bản chất của phát triển phần mềm vốn là như thế
Tôi đồng ý rằng dependency thay đổi liên tục thực sự tạo cảm giác “chưa sẵn sàng cho production”
Trước đây khi dùng các dự án self-hosted, tôi từng phải dành nhiều thời gian cho vấn đề dependency hơn là thời gian thực sự dùng công cụ, vì các bản cập nhật lớn đến quá thường xuyên
Mặt khác, tốc độ phát triển nhanh cũng là dấu hiệu cho thấy bug đang được sửa và dự án đang tiến triển tích cực
Tôi cũng thường xem việc được đóng gói cho Debian/Ubuntu là dấu mốc đủ ổn định, nên trước thời điểm đó tôi thường chỉ thử trong môi trường sandbox bằng Docker chứ không dùng theo kiểu “cài xong để đó”
Tôi cũng tò mò liệu nếu các dự án kiểu này có một nhánh LTS (hỗ trợ dài hạn) thì có thật sự hữu ích trong một hệ sinh thái biến động nhanh như vậy không
Tôi thật sự rất thích Immich
Trước đây, trước khi có bản phát hành "Beta timeline", hiệu năng trên Android có nhiều vấn đề, còn trên iPhone của vợ tôi thì việc đồng bộ gần như không hoạt động
Nhưng sau khi bật Beta timeline thì nó gần như hoàn hảo. Tôi đã dùng vài tháng mà không gặp vấn đề gì
Giao diện dòng lệnh (CLI) cũng rất tuyệt, nên tôi còn có thể làm những việc như tự động tạo album từ bản backup Signal
Thật sự rất cảm ơn đội ngũ Immich
Cảm ơn nhé. Tôi đã cập nhật nhưng trên thực tế vẫn chưa chuyển hẳn
So với trước đây thì đúng là khác biệt rất lớn
Có một điều tôi mong muốn là kết quả tìm kiếm được sắp xếp theo "ngày" thay vì theo "độ liên quan"
Ngay cả khi tôi nhập từ khóa để tìm một bức ảnh từ 3 năm trước mà tôi biết rất rõ thời điểm chụp, kết quả vẫn hiện ra ngẫu nhiên nên rất khó tìm
Tôi muốn nghe giải thích chi tiết hơn về quá trình tự động tạo album từ bản backup Signal
Không biết có phải là bạn lưu khóa backup trên home server rồi dùng công cụ để giải mã và parse dữ liệu không
Có một vấn đề tôi gặp là ảnh nhập từ iCloud bị lưu ngày theo thời điểm upload chứ không phải ngày chụp thực tế
Khi xem lại những ảnh cũ đã chụp từ lâu thì cảm giác rất kỳ
Tôi đã bỏ bản beta
Cả app iPhone lẫn Android đều ngừng backup nếu không để ứng dụng mở sẵn
Có thể là do server của tôi vẫn đang ở phiên bản v.1.139.4, nhưng trên Android thì timeline beta mới lại không hợp lắm
Sau khi dùng thử một tuần, tôi đã tắt nó vì việc tải thumbnail mất quá lâu
So với Google Photos thì bất kỳ phiên bản timeline nào của Immich cũng cho cảm giác trải nghiệm rất thô
Là một giải pháp backup thay thế thì nó rất tuyệt, nhưng là app gallery dùng hằng ngày thì tôi khó lòng khuyên dùng
Tôi dành lời khen cho đội phát triển, nhưng người dùng phổ thông hơn có thể sẽ thấy bất tiện
Tôi đang chạy Immich trên Pi4 cùng với vài dịch vụ self-hosted khác
Dữ liệu được lưu trên NAS
Hiệu năng trên Pi4 không phải xuất sắc, nhưng vẫn chạy ổn mà không gây khó chịu
Việc chuyển từ Google Photos sang Immich cũng khá suôn sẻ, và gần như có thể dùng như một giải pháp thay thế
Tôi rất khuyên nên dùng công cụ immich-go. Nó giúp rất nhiều khi chuyển dữ liệu Google Takeout sang Immich
Immich hỗ trợ tìm kiếm dựa trên CLIP, nên có chức năng tìm kiếm ngữ nghĩa giống Google Photos, có vẻ rất hữu ích
Tôi tò mò không biết phần xử lý liên quan đến CLIP trên Pi4 hoạt động tốt đến mức nào
Tôi tò mò không biết bạn đang mở dịch vụ này ra ngoài nhà cho gia đình hay SO (bạn đời/người yêu) như thế nào
Dùng tailscale, cloudflare tunnel, VPN hay là mở port trực tiếp trên router
Tôi có thử tailscale rồi nhưng với phía bên kia thì có thể hơi bất tiện
Tuần trước tôi đã cài Immich và thật sự rất hài lòng
Vì đã quen với việc thiết lập trong môi trường Docker nên tôi cài khá dễ, dù vẫn thấy vài chỗ hơi dang dở mà tôi tin là khi dự án trưởng thành hơn thì sẽ tự nhiên được giải quyết
Tôi cho bạn đời xem thì họ rất thích, đến mức tôi đã đặt mua thêm dung lượng lưu trữ lớn hơn cho server
Hiện tôi đang dùng song song Google Photos và OneDrive, nhưng khi chuyển sang Immich thì tôi không định dùng OneDrive nữa và cũng muốn mở rộng network storage
Trên website chính thức và trong tài liệu có nói rất rõ là “không nên dùng riêng Immich như kho lưu trữ duy nhất”, nên tôi vẫn sẽ giữ backup trên Google Photos, còn Immich và network storage thì backup bằng restic lên B2
Cách backup snapshot này là phương pháp tôi đã dùng lâu năm để quản trị server
Tôi thực sự đã phải khôi phục vài lần rồi, và nếu hệ thống backup được triển khai tốt thì khi cần dùng đến sẽ thấy cực kỳ yên tâm
Tôi rất muốn dùng Immich, nhưng không hứng thú với việc vận hành home server
Điện ở chỗ tôi không ổn định, và chi phí lắp nguồn dự phòng cũng là gánh nặng
Tôi không muốn phải quản lý phần cứng
Tôi cũng đã tìm hiểu cloud hosting, nhưng ảnh/video khiến nhu cầu dung lượng lưu trữ rất lớn
Object storage thì rẻ nhưng Immich không hỗ trợ
Block storage thì đắt
Tôi cũng đã xem qua s3fuse, nhưng ý kiến chung là nếu có quá nhiều file nhỏ như thumbnail thì hiệu năng sẽ không tốt
Tôi tò mò không biết có ai đã host nó trên cloud thật sự chưa, và họ đã giải quyết chuyện đó bằng cách nào
Tôi đề xuất Pikapods như một cách dễ dùng
Hetzner Storage Box cũng là một lựa chọn giá cả hợp lý
Tôi khá ngạc nhiên là hỗ trợ object storage lại không phải ưu tiên số một ngay từ đầu
Dù vậy, nếu self-hosting là nhóm người dùng chính thì tôi cũng hiểu được
Nhưng vì ảnh/video vốn dĩ là kiểu dữ liệu mà trong ngành người ta thường kết hợp object storage giá rẻ với CDN, nên tôi có một kỳ vọng nhất định
Với một dịch vụ mà lượng dữ liệu người dùng tăng động theo quy mô, tôi mặc định mong có tùy chọn lưu và lấy dữ liệu từ S3 hoặc các giải pháp thay thế của nó
Gần đây nhóm đã thêm tùy chọn triển khai one-click trên Digital Ocean Marketplace
Nếu cần môi trường cloud hosting thì có thể tham khảo
Về chuyện điện không ổn định nên ngại đầu tư nguồn dự phòng
Có cả những loại UPS giá rẻ có thể báo trạng thái nguồn qua USB
Khi mất điện, nó có thể tắt server an toàn sau một khoảng thời gian nhất định, và khi điện có lại thì tự bật lên
Nhưng tôi hoàn toàn đồng cảm với việc không muốn tự quản lý phần cứng
Gần đây tôi đã tìm hiểu cả Immich lẫn Ente.io
Lý do tôi tìm giải pháp để đồng bộ và chia sẻ ảnh là vì
Immich trông rất hấp dẫn, nhưng cuối cùng tôi chọn Ente vì có mã hóa E2E và hiện đang dùng khá hài lòng
Tôi đã tự self-host Ente để thử nghiệm
Lý do ban đầu khiến tôi quan tâm cũng là vì mã hóa E2E
Tôi đặt minio để lưu dữ liệu trên một VPS, còn frontend và các phần còn lại thì chạy ở nhà, đồng thời dùng chính VPS đó làm reverse proxy
Hiện tại tôi dùng nó không có tính năng chia sẻ, chỉ để đồng bộ ảnh từ điện thoại sang desktop hoặc tablet
Gia đình tôi cũng đang quan tâm vì muốn giảm phụ thuộc vào Google
Về lâu dài tôi định trả phí để dùng tính năng chia sẻ album, vì ảnh quá nhiều nên chỉ chia sẻ qua Signal thì có giới hạn
Tôi tò mò không biết Syncthing đã giảm độ tin cậy ở điểm nào
Tôi đang định dùng nhiều hơn trong tương lai, nên muốn biết có phải do file quá lớn hoặc số lượng file quá nhiều không
Google Photos từng quảng bá lưu trữ "không giới hạn" trong một thời gian, rồi gần đây lại l quietly áp giới hạn dung lượng
Từ đó tôi liên tục nghe phàn nàn kiểu “sắp hết chỗ”, và mất rất nhiều thời gian dọn dẹp dung lượng
Trải nghiệm đó đã thúc đẩy tôi tìm giải pháp self-hosted, và sau 1 năm dùng Immich thì tôi rất hài lòng
Tôi tổng hợp lại các bài Hacker News trước đây về Immich để chia sẻ
1 năm trước: bài 1
1 năm trước: bài 2
3 năm trước: bài 3
7 tháng trước: bài 4
4 năm trước: bài 5
1 năm trước: bài 6
Immich Progress Update (tháng 7/2024)
Self-hosted photo and video management solution (tháng 6/2024)
Quản lý ảnh/video self-hosted AGPL (tháng 4/2024)
Immich đổi giấy phép MIT→AGPLv3 (tháng 2/2024)
Backup ảnh/video điện thoại self-hosted (tháng 7/2023)
Immich: backup Android/iOS (tháng 10/2022)
Tôi có một chiếc Raspberry Pi đang để không, nên muốn thử chạy Immich
Vì tôi thật sự không muốn làm mất ảnh nên tôi tò mò về cách thiết lập backup
Không biết mua Synology có phải lựa chọn duy nhất không, hay còn những phương án backup phổ biến nào khác
Xin phép giới thiệu khiêm tốn một dự án cá nhân
Tên là Video Hub App, cho phép duyệt video bằng một thư viện cuộn vô hạn rất gọn gàng, đồng thời có nhiều tính năng khám phá như tìm kiếm, lọc, gắn thẻ
Nó chỉ hoạt động hoàn toàn cục bộ, không hề truyền dữ liệu lên mạng
videohubapp.com
Mã nguồn mở: github
Tôi tò mò không biết ứng dụng này có hỗ trợ xuất cấu trúc và metadata hay không