Chạy PhotoPrism trong Docker với MariaDB và thư mục ảnh persistent
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
- Đăng nhập thiết bị Linux.[13]
- 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
- 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
- Mở
http://DNSorIP:2342.[13] - Đăng nhập username
adminvà password được đặt trongPHOTOPRISM_ADMIN_PASSWORD.[13] - Chép ảnh vào
~/docker/photoprism/originals, hoặc dùng chức năng upload trong web UI.[13] - 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
https://www.youtube.com/watch?v=R2T89oz0jTA — video chính thức của i12bretro. ↩︎
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