AIoT.IO.VN
AIoT.IO.VN
🌐 SONG NGỮ

Chạy PhotoPrism trong Docker với MariaDB và thư mục ảnh persistent

Ng Nghia Phan • • ⚡ 3 phút đọc • -- lượt xem • --
VI EN
MỤC LỤC BÀI VIẾT (Nhấn để xem)

PhotoPrism là ứng dụng ảnh có khả năng tự gắn tag và tìm ảnh, có thể chạy tại nhà, server riêng hoặc cloud.[13] Tutorial 0902 của i12bretro chạy PhotoPrism với MariaDB trong Docker, lưu storage và originals ra host, rồi mở web UI ở cổng 2342.[13]

Video gốc của tutorial được link trên YouTube.[13]

1. Cài Docker

  1. Đăng nhập thiết bị Linux.[13]
  2. Chạy:[13]
# install prerequisites
sudo apt install apt-transport-https ca-certificates git curl software-properties-common gnupg-agent -y
# add docker gpg key
curl -fsSL https://download.docker.com/linux/$(awk -F'=' '/^ID=/{ print $NF }' /etc/os-release)/gpg | sudo apt-key add -
# add docker software repository
sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(awk -F'=' '/^ID=/{ print $NF }' /etc/os-release) $(lsb_release -cs) stable"
# install docker
sudo apt install docker-ce docker-compose containerd.io -y
# enable and start docker service
sudo systemctl enable docker && sudo systemctl start docker
# add the current user to the docker group
sudo usermod -aG docker $USER
# reauthenticate for the new group membership to take effect
su - $USER

Đăng nhập lại sau khi group Docker cập nhật.[13]

2. Tạo MariaDB và PhotoPrism

  1. Chạy các lệnh tạo thư mục, network, MariaDB và PhotoPrism; đặt các biến password theo secret riêng trước khi chạy.[13]

Đặt mật khẩu riêng cho các biến database trước khi chạy. Mình dùng cùng giá trị password cho MariaDB và PhotoPrism:[13]

# create working directories
mkdir ~/docker/photoprism/{storage,originals} -p && mkdir ~/docker/mariadb -p
# set owner of working directories
sudo chown "$USER":"$USER" ~/docker -R
# create docker network
docker network create containers
# run the mariadb docker container
docker run -d --name mariadb -e MYSQL_ROOT_PASSWORD=CHANGE_ME_ROOT_PASSWORD -e MYSQL_USER=photoprism_rw -e MYSQL_PASSWORD=CHANGE_ME_DB_PASSWORD -e MYSQL_DATABASE=photoprism -v ~/docker/mariadb:/var/lib/mysql --network containers --restart=unless-stopped mariadb:latest
# run photoprism container
docker run -d --name=photoprism --security-opt seccomp=unconfined --security-opt apparmor=unconfined -p 2342:2342 -e PHOTOPRISM_UPLOAD_NSFW="true" -e PHOTOPRISM_ADMIN_PASSWORD="CHANGE_ME_ADMIN_PASSWORD" -e PHOTOPRISM_DATABASE_DRIVER="mysql" -e PHOTOPRISM_DATABASE_SERVER="mariadb:3306" -e PHOTOPRISM_DATABASE_NAME="photoprism" -e PHOTOPRISM_DATABASE_USER="photoprism_rw" -e PHOTOPRISM_DATABASE_PASSWORD="CHANGE_ME_DB_PASSWORD" -v ~/docker/photoprism/storage:/photoprism/storage -v ~/docker/photoprism/originals:/photoprism/originals --network containers --restart=unless-stopped photoprism/photoprism

Giữ nguyên hai volume host: ~/docker/photoprism/storage cho dữ liệu ứng dụng và ~/docker/photoprism/originals cho ảnh gốc.[13] mariadb:3306 là tên service/port nội bộ trong network containers, không cần expose port database ra host.[13]

3. Mở giao diện và nạp ảnh

  1. Mở http://DNSorIP:2342.[13]
  2. Đăng nhập username admin và password được đặt trong PHOTOPRISM_ADMIN_PASSWORD.[13]
  3. Chép ảnh vào ~/docker/photoprism/originals, hoặc dùng chức năng upload trong web UI.[13]
  4. Kiểm tra PhotoPrism hiển thị ảnh và container vẫn chạy.[13]

Cảnh báo về isolation và nội dung

Tutorial dùng --security-opt seccomp=unconfined và --security-opt apparmor=unconfined; đây là nới lỏng sandbox, mình chỉ giữ khi image/workload yêu cầu và không mở ứng dụng thẳng ra Internet.[13] PHOTOPRISM_UPLOAD_NSFW="true" cho phép tải lên nội dung NSFW theo biến nguồn; mình đặt policy riêng cho người dùng, backup và chia sẻ ảnh.[13]

Mình thay CHANGE_ME_* trước khi chạy, không commit file .env có secret và không dùng lại password admin/database giữa các dịch vụ.[13] Backup cả storage, originals và database volume trước khi update image.[13] Nếu đổi password sau khi MariaDB đã khởi tạo, kiểm tra cơ chế đổi user/password thay vì chỉ sửa command rồi recreate mù.[13]

Video gốc của tutorial: [xem trên YouTube]1.[13]

Nguồn

Tài liệu gốc: [Run PhotoPrism - A Google Photos Alternative - In Docker]2, đăng/cập nhật 2024-08-12.[13]

[13] https://i12bretro.github.io/tutorials/0902.html — Run PhotoPrism in Docker


  1. https://www.youtube.com/watch?v=R2T89oz0jTA — video chính thức của i12bretro. ↩︎

  2. https://i12bretro.github.io/tutorials/0902.html — Run PhotoPrism - A Google Photos Alternative - In Docker. ↩︎

Bình luận & Thảo luận 0

Chia sẻ thắc mắc, phản hồi hoặc kinh nghiệm thực chiến của bạn