Giới thiệu

Immich là một giải pháp tự lưu trữ (self-hosted) để quản lý ảnh và video, được ví như “Google Photos mã nguồn mở”. Bài viết này hướng dẫn cài đặt Immich trên Ubuntu Server sử dụng Docker, phù hợp cho cả máy chủ cấu hình thấp (N5105, 8GB RAM) lẫn máy chủ mạnh (Xeon, 32GB RAM).


📋 Yêu cầu hệ thống

Thành phần Tối thiểu Khuyến nghị
Hệ điều hành Ubuntu 22.04 hoặc 24.04 Ubuntu 24.04 LTS
RAM 4GB 8GB+ (cho ML features)
CPU 2 nhân 4 nhân+
Docker Có cài đặt Docker + Compose
Lưu trữ Đủ chứa ảnh + 2-3x dung lượng ảnh gốc (cho thumbnail và video transcoding) 

🚀 Bước 1: Cài đặt Docker và Docker Compose

bash
# Cập nhật hệ thống
sudo apt update && sudo apt upgrade -y

# Cài Docker và Docker Compose
sudo apt install -y docker.io docker-compose-plugin

# Khởi động Docker
sudo systemctl enable --now docker

# Thêm user vào docker group (để chạy không cần sudo)
sudo usermod -aG docker $USER

# Đăng xuất và đăng nhập lại để áp dụng, hoặc chạy:
newgrp docker

# Kiểm tra cài đặt
docker --version
docker compose version

🐳 Bước 2: Tải cấu hình Immich

bash
# Tạo thư mục cho Immich
sudo mkdir -p /opt/immich
cd /opt/immich

# Tải file docker-compose.yml và .env từ bản phát hành mới nhất
sudo wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
sudo wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

# Tạo thư mục lưu trữ ảnh
sudo mkdir -p /var/lib/immich/{upload,thumbs,encoded-video,profile}
sudo chown -R 1000:1000 /var/lib/immich

⚙️ Bước 3: Cấu hình biến môi trường (.env)

bash
sudo nano /opt/immich/.env

Sửa các dòng sau (thay giá trị phù hợp):

env
# Đường dẫn lưu ảnh upload
UPLOAD_LOCATION=/var/lib/immich/upload

# Mật khẩu PostgreSQL (quan trọng - thay bằng mật khẩu mạnh)
DB_PASSWORD=ThayBangMatKhauManhCuaBan

# Múi giờ (bỏ dấu # và sửa)
TZ=Asia/Ho_Chi_Minh

# Phiên bản Immich (để "release" để dùng bản mới nhất)
IMMICH_VERSION=release

Lưu ý bảo mật: Không commit file .env lên Git public .


🎯 Bước 4: Cấu hình truy cập thư mục ảnh có sẵn (External Library)

Nếu bạn đã có sẵn thư mục ảnh (ví dụ từ cài đặt SMO trước đó), có thể mount vào Immich mà không cần di chuyển:

bash
# Mở file docker-compose.yml
sudo nano /opt/immich/docker-compose.yml

Thêm volume mount vào service immich-server và immich-microservices:

yaml
services:
  immich-server:
    # ... các cấu hình khác giữ nguyên ...
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      # THÊM DÒNG NÀY - đường dẫn đến thư mục ảnh đã có
      - /home/huannv/Data/ANH_CHUP_PROCESSED/Images:/mnt/existing-photos:ro
      - /etc/localtime:/etc/localtime:ro

  immich-microservices:
    # ... các cấu hình khác giữ nguyên ...
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      # THÊM DÒNG NÀY - giống như trên
      - /home/huannv/Data/ANH_CHUP_PROCESSED/Images:/mnt/existing-photos:ro
      - /etc/localtime:/etc/localtime:ro

:ro ở cuối có nghĩa là read-only – Immich sẽ đọc ảnh nhưng không sửa/xóa file gốc .


🚀 Bước 5: Khởi động Immich

bash
cd /opt/immich

# Khởi động tất cả container
docker compose up -d

# Kiểm tra trạng thái
docker compose ps

# Xem log (nếu cần)
docker compose logs -f

🌐 Bước 6: Truy cập và cấu hình lần đầu

  1. Mở trình duyệt và truy cập: http://<IP_SERVER>:2283

  2. Tạo tài khoản admin đầu tiên

  3. Đăng nhập và bắt đầu sử dụng

Cấu hình External Library (thư mục ảnh có sẵn)

Sau khi đăng nhập:

  1. Vào Administration → External Libraries

  2. Click Create Library

  3. Đặt đường dẫn: /mnt/existing-photos

  4. Click Scan Library 


🔧 Bước 7: Các lệnh quản lý Immich

Mục đích Lệnh
Xem trạng thái docker compose ps
Xem log docker compose logs -f [tên-service]
Khởi động lại docker compose restart
Dừng docker compose down
Cập nhật docker compose pull && docker compose up -d 
Sao lưu database docker compose exec -T database pg_dumpall -U postgres | gzip > backup.sql.gz 

⚡ Tối ưu hiệu suất cho từng cấu hình

Cấu hình thấp (N5105, 8GB RAM)

bash
# Giảm số worker để tránh quá tải
# Mở file docker-compose.yml, thêm vào service immich-server và immich-microservices:
environment:
  - MACHINE_LEARNING_WORKERS=2
  - MACHINE_LEARNING_REQUEST_THREADS=4

Cấu hình mạnh (Xeon 2670v3, 32GB RAM)

bash
# Tăng worker để tận dụng đa luồng
environment:
  - MACHINE_LEARNING_WORKERS=6
  - MACHINE_LEARNING_REQUEST_THREADS=12

🛡️ Bảo mật và Sao lưu

Cơ bản – Không mở cổng 2283 ra ngoài Internet

bash
# Không nên port-forward cổng 2283 [citation:2]
# Sử dụng VPN (WireGuard) hoặc Cloudflare Tunnel để truy cập từ xa

Sao lưu hàng ngày

bash
# Tạo script backup
cat > /opt/immich/backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/backup/immich"
DATE=$(date +%Y%m%d-%H%M)
mkdir -p "$BACKUP_DIR"

# Backup database
docker compose -f /opt/immich/docker-compose.yml exec -T database \
  pg_dumpall -U postgres | gzip > "$BACKUP_DIR/immich-db-${DATE}.sql.gz"

# Backup photos (nếu cần)
rsync -av --delete /var/lib/immich/upload/ /backup/immich/photos/

# Xóa backup cũ hơn 30 ngày
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +30 -delete
EOF

chmod +x /opt/immich/backup.sh

# Thêm vào crontab (chạy lúc 3h sáng)
echo "0 3 * * * root /opt/immich/backup.sh >> /var/log/immich-backup.log 2>&1" | \
  sudo tee /etc/cron.d/immich-backup

📊 Cấu trúc thư mục sau cài đặt

text
/opt/immich/
├── docker-compose.yml
├── .env
└── (các file cấu hình khác)

/var/lib/immich/
├── upload/           # Ảnh upload từ mobile/web
├── thumbs/           # Ảnh thumbnail
├── encoded-video/    # Video đã transcoded
└── profile/          # Ảnh đại diện user

/home/huannv/Data/ANH_CHUP_PROCESSED/Images/  # External library (read-only)

🩺 Xử lý sự cố thường gặp

Lỗi Giải pháp
Permission denied sudo chown -R 1000:1000 /var/lib/immich
Postgres không start sudo chown -R 999:999 /var/lib/immich/postgres 
Không truy cập được web Mở port: sudo ufw allow 2283/tcp
ML container lỗi Kiểm tra log: docker compose logs immich-machine-learning

📝 Tổng kết

Immich là giải pháp quản lý ảnh tự lưu trữ mạnh mẽ, có thể chạy ổn định trên cả máy chủ cấu hình thấp lẫn cao. Với External Library, bạn có thể tận dụng kho ảnh đã được phân loại từ SMO mà không cần di chuyển hay copy lại.

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *