Google Photos cắt gói lưu trữ miễn phí từ lâu, chuyện đó ai cũng thấm. Nhưng cái đau thật sự không phải là cái ngày nó báo đầy 15GB — mà là cảm giác toàn bộ ký ức 10 năm của gia đình đang nằm trên server của một công ty ở tận đâu, và mỗi tháng bạn phải trả tiền để... được nhìn lại ảnh của chính mình. Immich sinh ra để chấm dứt cái nghịch lý đó: một bản sao Google Photos gần như y hệt — timeline, tìm bằng chữ, nhận diện khuôn mặt, app điện thoại tự sao lưu — nhưng mọi tấm ảnh nằm gọn trên ổ cứng NAS trong nhà bạn.
Bài này không phải kiểu "copy docker-compose rồi cầu trời cho nó chạy". Mình dựng Immich thật trên Synology (Container Manager), chụp lại từng màn hình ở cả NAS lẫn app điện thoại, và chỉ ra đúng những chỗ người mới hay vấp — firewall, phân quyền, RAM, và cái bẫy update database khiến không ít người mất cả thư viện. Đọc hết là cài được, không cần mở thêm 20 tab StackOverflow.

Immich là gì mà dân NAS rủ nhau bỏ Google Photos?
Immich là phần mềm quản lý ảnh/video mã nguồn mở, bạn tự cài lên NAS và dùng nó thay Google Photos. Trải nghiệm gần như không khác: mở app lên là thấy timeline ảnh cuộn theo ngày tháng, gõ một từ là ra đúng ảnh, mở tab People là thấy ảnh gom theo từng người trong nhà. Khác biệt duy nhất — và cũng là lý do người ta chuyển — là đích đến của mọi tấm ảnh là ổ cứng nhà bạn, không phải server của Google.
Đây là giao diện web của Immich sau khi mình sao lưu vài chục tấm lên. Nhìn quen chứ? Đó là chủ đích của Immich — để bạn không phải học lại gì cả:

Tìm ảnh bằng chữ (Smart Search). Không cần gắn tag, không cần đặt tên file. Gõ "phở" là Immich lôi ra mấy tô phở, gõ "bãi biển" là ra ảnh biển. Nó dùng mô hình AI CLIP chạy ngay trên NAS để "hiểu" nội dung ảnh — và vâng, xử lý hết cục bộ, không gửi ảnh của bạn đi đâu:

Nhận diện khuôn mặt. Immich tự quét, gom các tấm có cùng một người về một cụm; bạn chỉ việc đặt tên (ví dụ "Lan Nguyễn") là từ đó lọc mọi ảnh có người đó chỉ bằng một cú chạm. Đúng kiểu Google Photos, chỉ khác là dữ liệu khuôn mặt người thân không rời khỏi nhà bạn:

Bản đồ ảnh. Ảnh có toạ độ GPS sẽ được ghim lên bản đồ — mở tab Bản đồ là thấy chuyến đi Đà Lạt, Nha Trang, Hạ Long nằm đúng chỗ. Bấm vào ảnh còn xem được đủ EXIF: máy chụp, ngày giờ, vị trí:

Ngoài ra còn có album, chia sẻ album cho người ngoài xem bằng link (không cần họ có tài khoản), sao lưu ảnh trùng lặp thông minh, thùng rác, ảnh yêu thích... Nói ngắn gọn: gần như mọi thứ bạn quen ở Google Photos, Immich đều có — và phần lớn là miễn phí.
Immich vs Google Photos vs Synology Photos: khác nhau chỗ nào?
Nhiều người thắc mắc: "NAS Synology có sẵn Synology Photos rồi, cài Immich làm gì?". Câu trả lời nằm ở AI và tốc độ phát triển. Synology Photos rất ổn, chạy nhẹ, tích hợp sâu vào DSM — nhưng phần tìm kiếm ngữ nghĩa và nhận diện khuôn mặt của Immich nhỉnh hơn rõ, và Immich cập nhật tính năng mới nhanh như vũ bão. Đổi lại, Immich ăn RAM hơn và bạn phải tự bảo trì.
So với Google Photos thì công bằng mà nói: bạn đánh đổi sự tiện lợi "cắm là chạy, có đội kỹ sư Google lo" để lấy quyền sở hữu dữ liệu 100% và dung lượng chỉ giới hạn bởi ổ cứng. Không ai âm thầm quét ảnh con bạn để train mô hình, cũng không còn hoá đơn hàng tháng. Cái giá là: backup, update, sửa lỗi giờ là việc của bạn.
Nếu bạn còn phân vân giữa Immich và giải pháp "chính chủ" nhẹ nhàng hơn, đọc thêm bài Synology Photos sao lưu ảnh điện thoại để cân nhắc. Nhiều người dùng cả hai: Synology Photos cho vợ/bố mẹ dùng cho đơn giản, Immich cho bản thân vọc AI.
Immich chạy thế nào trên NAS? (hiểu 4 "container" trước khi cài)
Trước khi bấm nút, hiểu sơ nó gồm những gì sẽ giúp bạn debug nhanh gấp mười lần khi có sự cố. Immich không phải một app đơn lẻ, mà là 4 container Docker làm việc cùng nhau:

- immich-server — bộ não, nhận ảnh từ app và phục vụ giao diện web ở cổng
2283. - immich-machine-learning — chạy AI: nhận diện khuôn mặt và tìm kiếm ngữ nghĩa (CLIP). Đây là thằng ăn RAM nhất.
- database — PostgreSQL (kèm extension VectorChord để tìm bằng vector). Lưu metadata: ai, ở đâu, khi nào — không lưu ảnh gốc.
- redis/valkey — bộ nhớ đệm và hàng đợi xử lý.
Ảnh gốc của bạn không nằm trong database — chúng nằm nguyên dạng file trong thư mục library trên ổ cứng. Đây là điểm cực kỳ an tâm: kể cả một ngày đẹp trời Immich có dở chứng, ảnh của bạn vẫn là file JPG/HEIC bình thường, copy ra là dùng được.
Vì sao dùng Container Manager, không phải máy ảo?
Trên Synology có hai đường chạy Immich: dựng máy ảo (Virtual Machine Manager) rồi cài Docker bên trong, hoặc dùng thẳng Container Manager với tính năng Project (đọc file docker-compose.yml). Bài này đi đường thứ hai — cũng là cách docs.immich.app khuyến nghị chính thức cho Synology:
| Tiêu chí | Container Manager | Máy ảo (VMM) |
|---|---|---|
| Cách chạy Immich | Project (compose) | VM + cài Docker bên trong |
| Immich khuyến nghị chính thức | Có | Không |
| Tốn thêm lớp ảo hoá (RAM/CPU) | Không | Có |
| Cập nhật, backup | Đơn giản | Phức tạp hơn |
Container Manager từ DSM 7.2 đọc trực tiếp compose file, không cần cài thêm plugin. Nếu bạn từng dùng Portainer thì càng quen — nhưng với Immich, Container Manager tự lo được hết.
Chuẩn bị: máy của bạn có "gánh" nổi Immich không?
- DSM 7.2 trở lên — bắt buộc, vì tính năng Project (compose native) chỉ có từ bản này. Chưa lên thì đọc hướng dẫn cập nhật DSM trước.
- RAM tối thiểu ~4GB, khuyến nghị 6GB+. Immich chạy 4 container cùng lúc; thiếu RAM là swap liên tục, chậm rề. Con máy đời J-series 2 nhân RAM ít sẽ khá vất, nhất là phần machine learning.
- CPU x86-64. Vài dòng entry-level ARM có thể không chạy nổi phần AI — nhận diện khuôn mặt và smart search đều cần CPU kha khá.
- Gói Container Manager cài sẵn từ Package Center (tên cũ là Docker, đổi tên từ DSM 7.2).
Một lời nói thẳng: đây là "community guide", đội Immich không chính thức support Synology. Vẫn chạy tốt, vẫn là cách cộng đồng dùng nhiều nhất, nhưng khi gặp lỗi lạ thì lên Discord/GitHub của Immich mà hỏi — và đừng bao giờ nhắm mắt kéo version mới nhất khi chưa đọc Upgrade Guide. Thư viện ảnh cả nhà không phải chỗ để thử vận may.
Cài đặt Immich từng bước trên Synology
Bước 1 — Tạo cấu trúc thư mục
Mở File Station, tạo thư mục docker/immich-app, bên trong tạo thêm 2 thư mục con postgres và library. Toàn bộ hệ thống nằm gọn trong /volume1/docker/immich-app/ — dễ backup, dễ tìm khi cần dọn dẹp về sau. (Shared folder docker sẽ được Container Manager tạo tự động ở lần chạy đầu nếu chưa có.)
Bước 2 — Tải docker-compose.yml và .env về NAS
Đây là 2 file "công thức" để Container Manager biết cần dựng những gì. Lấy chúng ở trang Releases chính thức của Immich (bản ổn định, không lấy file ở nhánh main vì đó là bản dev hay lỗi):
- Mở:
https://github.com/immich-app/immich/releases/latest - Kéo xuống mục Assets — bạn sẽ thấy
docker-compose.ymlvàexample.env.
Có 2 cách đưa 2 file này vào thư mục docker/immich-app trên NAS. Chọn 1 trong 2:
Cách 1 — Dễ nhất, không cần gõ lệnh (khuyến nghị cho người mới). Trên máy tính, tải 2 file về (bấm chuột phải vào tên file trong mục Assets → Save link as…, hoặc dùng 2 link tải trực tiếp bên dưới). Sau đó mở File Station trên DSM, vào thư mục docker/immich-app vừa tạo, bấm nút Upload để đẩy 2 file lên NAS.
# Link tải trực tiếp bản mới nhất (dán vào trình duyệt là tải ngay)
https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
https://github.com/immich-app/immich/releases/latest/download/example.envCách 2 — Nhanh gọn nếu bạn đã bật SSH. SSH vào NAS rồi tải thẳng vào thư mục, khỏi vòng qua máy tính:
cd /volume1/docker/immich-app
sudo wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
# tải luôn ra tên .env cho tiện (khỏi phải đổi tên ở bước dưới)
sudo wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.envNếu bạn đi Cách 1, nhớ đổi tên example.env thành .env. Mẹo hay bị bỏ qua: File Station không cho mở file bắt đầu bằng dấu chấm bằng Text Editor. Cách lách: cứ sửa nội dung khi nó còn tên example.env (hoặc đổi tạm thành env.txt), xong xuôi mới đổi lại thành .env. Quên bước đổi tên thì container vẫn chạy lên bình thường, chỉ có điều nó đọc biến môi trường trớt quớt — và bạn sẽ ngồi debug cả buổi mới nhớ ra thủ phạm là cái tên file.
Bước 3 — Sửa file .env
Mở .env và chỉnh mấy dòng quan trọng, đừng để nguyên giá trị mẫu:
# Nơi lưu ẢNH GỐC của bạn — trỏ vào thư mục library vừa tạo
UPLOAD_LOCATION=/volume1/docker/immich-app/library
# Nơi lưu database — phải là ổ nội bộ, KHÔNG để trên thư mục mạng
DB_DATA_LOCATION=/volume1/docker/immich-app/postgres
# Đổi mật khẩu database — ĐỪNG để "postgres" mặc định
DB_PASSWORD=DatMatKhauMoiCuaBan
# Múi giờ cho đúng ngày giờ ảnh và log
TZ=Asia/Ho_Chi_Minh
# Ghim bản ổn định mới nhất (hoặc pin cứng như v3.0.3 nếu muốn kiểm soát update)
IMMICH_VERSION=releaseRiêng DB_PASSWORD: đổi ngay dù chỉ dùng trong mạng LAN — mặc định là "postgres", để nguyên chẳng khác gì không khoá cửa. Còn DB_DATA_LOCATION nhớ trỏ vào ổ nội bộ (volume1), tuyệt đối đừng để trên thư mục mạng (SMB/NFS) — Postgres sẽ hỏng dữ liệu.
Bước 4 — Tạo Project trong Container Manager
Mở Container Manager → Project → Create. Đặt Project name là immich, ở Path bấm "Set Path" trỏ tới thư mục /volume1/docker/immich-app (nơi chứa docker-compose.yml và .env). Ở Source chọn "Use existing docker-compose.yml" để DSM tự đọc file có sẵn:

Bấm Next → Next → Done, Container Manager sẽ kéo về 4 image (immich-server, machine-learning, postgres kèm VectorChord, và valkey). Lần đầu tải khoảng ~2GB nên hãy pha ly cà phê; những lần cập nhật sau chỉ tải phần thay đổi nên nhanh hơn nhiều.
Bước 5 — Kiểm tra 4 container đã chạy
Build xong, qua tab Container. Điều bạn muốn thấy: cả 4 container immich_server, immich_machine_learning, immich_postgres, immich_redis đều sáng đèn xanh và không restart liên tục:

Ở tab Overview, Container Manager cũng báo gọn "All services are healthy". Đây chính là khoảnh khắc Immich thật sự đang sống trên con NAS của bạn:

Nếu immich_server khởi động hơi lâu ở lần đầu, đừng hoảng — nó đang import ~227.000 điểm dữ liệu địa lý cho tính năng bản đồ. Xem log thấy dòng "geodata records imported" là bình thường.
Bước 6 — Mở Firewall (chỗ 90% người mới vấp)
Đây là bước quyết định bạn có vào được Immich hay không, và cũng là lỗi phổ biến nhất khi mới cài. Nếu bạn có bật Firewall trên DSM (Control Panel → Security → Firewall), phải thêm rule cho phép cổng 2283 (cổng mặc định của immich-server). Thiếu rule này, container vẫn chạy ngon (đèn xanh, log sạch tinh) nhưng trình duyệt cứ quay mãi không vào — câu than "rõ ràng nó đang chạy mà sao không vào được" là kinh điển của mục này.
Bước 7 — Tạo tài khoản admin
Mở trình duyệt gõ http://[IP-NAS]:2283. Lần đầu vào bạn sẽ gặp màn hình chào và nút "Bắt đầu":

Bấm vào, điền email + mật khẩu để tạo tài khoản Quản trị viên (người dùng đầu tiên mặc định là admin, chịu trách nhiệm quản lý cả hệ thống và có thể thêm tài khoản cho người nhà sau này):

Đăng nhập xong là vào thẳng dashboard. Tới đây phần NAS coi như xong — giờ tới phần vui nhất: biến điện thoại thành máy tự động đổ ảnh về NAS.
Cài app điện thoại & bật tự động sao lưu
Đây mới là thứ khiến Immich "thay" được Google Photos: cứ chụp là ảnh tự chảy về NAS. Tải app Immich trên Google Play hoặc App Store (Android có thể lấy APK chính chủ ở GitHub Releases). Mở app lên, việc đầu tiên là nhập địa chỉ server — chính là URL ở bước 7, dạng http://[IP-NAS]:2283:

Nhập xong bấm Next, đăng nhập bằng email/mật khẩu vừa tạo, và cấp quyền cho app truy cập ảnh. Ngay lập tức bạn thấy timeline giống hệt bản web — vì cùng một server:

Giờ vào phần Sao lưu (biểu tượng đám mây ở góc trên). Bấm Chọn để chọn album cần đồng bộ — thường là Camera, nơi chứa ảnh chụp:

Chọn xong quay lại, app hiện bảng thống kê rất trực quan: tổng số ảnh, đã sao lưu bao nhiêu, còn lại bao nhiêu. Gạt công tắc Bật sao lưu là nó bắt đầu đổ ảnh lên NAS:

Đợi một chút, cột "Còn lại" về 0 nghĩa là toàn bộ ảnh đã nằm an toàn trên NAS. App còn nhắc bạn bật thông báo và tắt tiết kiệm pin để việc sao lưu nền chạy đều:

Cuối cùng, vào Tùy chọn sao lưu để tinh chỉnh cho hợp túi tiền data: mặc định app chỉ sao lưu qua Wi-Fi (rất hợp lý), bạn có thể bật thêm sao lưu qua 4G, chỉ chạy khi đang sạc, hay đặt độ trễ. Đây là chỗ giúp bạn không bị "bay" hết data 4G vì lỡ quay một clip 4K:

Từ giờ, cứ chụp ảnh là vài phút sau nó xuất hiện trên NAS. Bạn có thể yên tâm xoá ảnh trên điện thoại cho nhẹ máy — ảnh gốc đã nằm ở nhà.
Bật AI: tìm ảnh bằng chữ & nhận diện khuôn mặt
Hai tính năng "ăn tiền" nhất của Immich — Smart Search và nhận diện khuôn mặt — đều do container machine-learning lo, và mặc định đã bật sẵn. Bạn chỉ cần đợi hệ thống quét xong thư viện lần đầu (thư viện càng lớn càng lâu). Muốn kiểm tra hoặc chỉnh, vào Administration → Settings:

Trong phần cài đặt Machine Learning bạn có thể đổi model, bật/tắt nhận diện khuôn mặt, chỉnh ngưỡng gom cụm. Với máy yếu, đây cũng là nơi bạn tắt bớt AI cho nhẹ nếu chỉ cần xem ảnh theo album/thời gian. Muốn "châm" cho nó quét lại, vào tab Hàng đợi tác vụ và bấm chạy Smart Search / Face Detection.
Cách kiểm tra AI đã chạy đúng: lên bản web, gõ đại một từ mô tả ("phở", "biển", "mèo") ở ô tìm kiếm. Ra đúng ảnh nghĩa là machine learning đã làm việc thật, chứ không phải chỉ "làm màu" trong log.
Album & chia sẻ: khoe ảnh mà không cần ai tải app
Gom ảnh chuyến đi vào một album, rồi tạo link chia sẻ — người nhận chỉ cần mở link trên trình duyệt là xem được cả album, không cần tài khoản Immich, không cần cài gì. Bạn đặt được mật khẩu, hạn dùng, cho phép tải về hay không:

Lỗi thường gặp (và cách thoát)
- Container chạy nhưng không vào được từ trình duyệt/app. 90% là thiếu rule Firewall cho cổng 2283. Kiểm tra Control Panel → Security → Firewall. (Một số máy còn dính chuyện subnet Docker đổi sau mỗi lần rebuild — nếu bạn tạo rule theo IP container thì nên cố định subnet trong compose để rule khỏi vỡ.)
- Permission denied, container không ghi được vào volume. Synology mặc định khá chặt về phân quyền folder. Vào Control Panel → User & Group, cấp quyền Read/Write cho user chạy Docker vào thư mục
docker/immich-app. - Máy yếu, machine learning quét ì ạch. Thư viện vài chục nghìn ảnh có thể mất nhiều ngày để quét lần đầu trên máy entry-level. Cứ để nó chạy nền; hoặc tắt bớt AI nếu không cần.
- Update báo lỗi "invalid upgrade path". Immich đôi khi có bước migration database (ví dụ chuyển từ pgvecto.rs sang VectorChord). Luôn snapshot/backup thư mục postgres trước khi update và đọc kỹ Upgrade Guide — đừng nhảy cóc nhiều version một lúc.
- Đổi UPLOAD_LOCATION sau khi đã có dữ liệu. Database lưu đường dẫn cũ, đổi path là dính lỗi "inconsistent media location". Đặt đúng ngay từ đầu, sau này đừng đổi nếu không thật sự cần và biết cách migrate.
Điều quan trọng nhất: Immich KHÔNG phải là backup
Đây là chỗ mình muốn hét vào tai bạn. Immich lưu ảnh local hoàn toàn — không có bản sao cloud miễn phí âm thầm chạy nền như Google. Nghĩa là: NAS hỏng mà không có backup thì mất trắng cả thư viện. Và ổ cứng nào rồi cũng có ngày dở chứng, chỉ là chưa biết ngày nào.

Chiến lược an toàn tối thiểu cho thư mục docker/immich-app:
- Snapshot Btrfs — chống xoá nhầm và ransomware, khôi phục trong vài phút. Nhưng snapshot vẫn nằm trên chính con NAS đó, nên chưa đủ.
- Hyper Backup ra ngoài — đẩy dữ liệu ra USB, NAS khác, hoặc cloud (Backblaze B2, Wasabi...). Đây mới là backup thật sự, phòng khi NAS chết hẳn hoặc cháy nhà.
Cả hai gộp lại chính là tinh thần quy tắc 3-2-1 : 3 bản sao, 2 loại lưu trữ, 1 bản ở nơi khác. Đừng để "đã tự host cho an toàn" trở thành "mất sạch vì tưởng đã an toàn".
Về bảo mật: đừng bao giờ mở thẳng cổng 2283 ra Internet. Muốn xem ảnh khi ra ngoài, đi qua reverse proxy có HTTPS (Application Portal của DSM hoặc Nginx Proxy Manager) — xem bài cấu hình SSL cho Synology — hoặc gọn hơn là dùng Tailscale/VPN để chỉ mình bạn truy cập được. Cổng trần không mã hoá ra Internet chẳng khác nào để cửa mở mời trộm.
Kết luận: ảnh của bạn, ở lại nhà bạn
Cài Immich trên Synology không khó như vẻ ngoài "4 container, compose, firewall" của nó. Tóm lại đường đi: tạo thư mục → sửa .env → tạo Project trong Container Manager → mở firewall 2283 → tạo tài khoản admin → cài app điện thoại bật auto-backup. Đổi lại vài buổi tối vọc vạch, bạn có một "Google Photos của riêng mình" — không giới hạn dung lượng, không hoá đơn hàng tháng, và không ai đụng vào ký ức gia đình bạn.
Chỉ cần nhớ một điều duy nhất kẻo mất trắng: bật backup ra ngoài cho thư mục Immich. Còn nếu bạn mới bắt đầu với NAS, ghé lộ trình A–Z cho người mới để đi từ gốc, hoặc xem thêm Nextcloud nếu muốn cả kho file lẫn ảnh trong một nhà.



No comments yet