SSD Nodes Learn Hosting plans →
คู่มือ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-10-28

เปรียบเทียบ PhotoPrism กับ Immich เลือกตัวไหนดี

เจาะลึกความแตกต่างระหว่าง PhotoPrism และ Immich สำหรับการทำ Self-hosted ทั้งการใช้ RAM ขั้นต่ำ แอปมือถือ การแสดงแผนที่ และคำสั่งสำรองข้อมูลที่จำเป็นบน VPS เพื่อการตัดสินใจที่ถูกต้อง

PhotoPrism กับ Immich: คำตอบสั้นๆ

การเลือกระหว่าง PhotoPrism กับ Immich คือการเลือกระหว่างงานสองประเภท ไม่ใช่การเลือกระหว่างผลิตภัณฑ์สองเวอร์ชัน Immich ถูกออกแบบมาเพื่อแทนที่ Google Photos โดยมีแอปบนโทรศัพท์ที่สำรองข้อมูลรูปภาพจากกล้องโดยอัตโนมัติ และมีหน้าตาของไทม์ไลน์ที่คุ้นเคยสำหรับผู้ที่ย้ายมาจากแกลเลอรีบนโทรศัพท์ ส่วน PhotoPrism ออกแบบมาเพื่อจัดระเบียบคลังรูปภาพที่คุณมีอยู่แล้ว โดยจะทำดัชนีโฟลเดอร์ไฟล์บนดิสก์ อ่าน metadata ของรูปภาพ แสดงตำแหน่งบนแผนที่ และคงไฟล์ไว้ในตำแหน่งเดิมโดยไม่มีการเปลี่ยนแปลง

เลือก Immich หากปัญหาของคุณคือ "โทรศัพท์เต็มและต้องการเลิกใช้ Google Photos" เลือก PhotoPrism หากปัญหาของคุณคือ "มีรูปภาพขนาด 400 GB อยู่บนไดรฟ์และหาอะไรไม่เจอเลย" ทั้งสองเป็นซอฟต์แวร์โอเพนซอร์ส ทำงานเป็น Docker containers บน VPS ทั่วไป และทั้งคู่ทำดัชนีรวมถึงค้นหาคลังรูปภาพของคุณโดยไม่มีการส่งข้อมูลใดๆ ไปยังบุคคลที่สาม

ความแตกต่างในเชิงปรัชญาและเหตุผลที่กำหนดทุกอย่าง

Immich เป็นเจ้าของไฟล์ คุณชี้ตำแหน่งไปยังโฟลเดอร์อัปโหลด แอปบนโทรศัพท์หรือตัวอัปโหลดผ่านเว็บจะส่งไฟล์ต้นฉบับเข้ามา และ Immich จะจัดเก็บไฟล์เหล่านั้นไว้ภายใต้ path ของตนเองพร้อมการตั้งชื่อของตนเอง ฐานข้อมูลจะทำหน้าที่เป็นแหล่งข้อมูลหลักสำหรับอัลบั้ม ใบหน้า และการค้นหา การออกแบบนี้คือสิ่งที่ทำให้ประสบการณ์การใช้งานบนโทรศัพท์ทำได้ดี เพราะเซิร์ฟเวอร์จะทราบสถานะที่สมบูรณ์ของทุกสินทรัพย์อยู่เสมอ

PhotoPrism อ่านไฟล์จากตำแหน่งที่คุณกำหนด คุณ mount โฟลเดอร์ originals ที่คุณควบคุมอยู่แล้ว และ PhotoPrism จะสร้างดัชนีครอบคลุมไฟล์เหล่านั้น โครงสร้างไดเรกทอรีของคุณจะยังคงเป็นของคุณ หากคุณลบ PhotoPrism ออกในวันพรุ่งนี้ รูปภาพจะยังคงอยู่ที่เดิมในโฟลเดอร์เดิมด้วยชื่อเดิม ส่วนไฟล์ sidecar YAML ที่ PhotoPrism เขียนขึ้นเพื่ออธิบายสิ่งที่ระบบเรียนรู้จะถูกเก็บไว้ในโฟลเดอร์จัดเก็บข้อมูลของมันเอง ซึ่งเป็นตำแหน่งที่ระบบใช้จัดเก็บโดยค่าเริ่มต้น

ความแตกต่างเพียงจุดเดียวนี้นำไปสู่คำอธิบายของส่วนที่เหลือเกือบทั้งหมด Immich มีการรองรับอุปกรณ์พกพาที่แข็งแกร่งเพราะเป็นผู้ควบคุมการนำเข้าข้อมูล PhotoPrism มีการจัดการคลังภาพที่แข็งแกร่งเพราะไม่เคยเข้าไปแทรกแซงโครงสร้างเดิมที่คุณมีอยู่ Immich จึงเป็นคำตอบที่ดีกว่าสำหรับครอบครัวที่รูปภาพส่วนใหญ่อยู่บนโทรศัพท์ ส่วน PhotoPrism เป็นคำตอบที่ดีกว่าสำหรับคลังข้อมูลที่จัดเก็บอยู่บนดิสก์

ความต้องการด้านฮาร์ดแวร์: Immich ต้องการทรัพยากรเพิ่ม

เกณฑ์ขั้นต่ำของหน่วยความจำที่ระบุไว้ในเอกสารมีความแตกต่างกันมาก ซึ่งสำหรับ VPS ขนาดเล็กแล้ว มักเป็นปัจจัยชี้ขาดในการตัดสินใจ

แผนภูมิDocumented minimum memory, as of October 2026
ข้อมูลเบื้องหลังแผนภูมินี้
[
  {
    "label": "Immich",
    "min_ram_gb": 6
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3
  }
]

Immich ระบุในเอกสารว่าต้องการ RAM ขั้นต่ำ 6 GB และแนะนำที่ 8 GB โดยมีหมายเหตุว่าเครื่องขนาด 4 GB จะรันได้ก็ต่อเมื่อปิดการทำงานของ machine learning เท่านั้น ส่วน PhotoPrism ระบุว่าต้องการหน่วยความจำกายภาพ 3 GB และ CPU สองคอร์ โดยระบุว่าหากเกินกว่าขั้นต่ำดังกล่าว ปริมาณ RAM ควรแปรผันตามจำนวนคอร์

ช่องว่างนี้เป็นเรื่องจริงและเกิดจากคอนเทนเนอร์ machine learning โดย Immich จะรันโมเดลในบริการ immich-machine-learning แยกต่างหาก ซึ่งจะโหลดโมเดล CLIP (contrastive language image pretraining) และโมเดลตรวจจับใบหน้าเข้าสู่หน่วยความจำ ในเครื่องขนาด 2 GB เคอร์เนลจะสั่ง kill คอนเทนเนอร์ดังกล่าว และคุณจะเห็นมันหยุดทำงานด้วย exit code 137 ซึ่งเป็นสถานะของกระบวนการที่ถูกสั่งปิดด้วย signal 9 อันเป็นวิธีที่ Docker ใช้แสดงผลเมื่อเกิดเหตุการณ์ out of memory ส่วนโมเดลในตัวของ PhotoPrism รันบน ONNX ซึ่งเอกสารระบุว่าโดยทั่วไปทำงานได้ดีบนฮาร์ดแวร์ทุกประเภท และมีระบบสำรองสำหรับกรณีหน่วยความจำจำกัด: ในเครื่องที่มี RAM 1 GB หรือน้อยกว่า ระบบจะปิดการแปลงไฟล์ RAW และการจดจำใบหน้า อย่างไรก็ตาม นี่ไม่ใช่การรับประกันความเสถียร หากต่ำกว่าเกณฑ์ขั้นต่ำ 3 GB ทางโครงการเตือนว่าจะพบปัญหาความไม่เสถียรและประสิทธิภาพการทำงาน ดังนั้นให้ถือว่าเกณฑ์ดังกล่าวคือค่าต่ำสุดจริงๆ

เอกสารของ PhotoPrism ระบุชัดเจนว่าต้องการ swap อย่างน้อย 4 GB บนเซิร์ฟเวอร์ ส่วนหน้าความต้องการของ Immich ไม่ได้กล่าวถึง swap แต่การมี swap จะช่วยให้คอนเทนเนอร์ machine learning มีพื้นที่ทำงานมากขึ้นในเครื่องขนาดเล็ก ควรเพิ่ม swap ก่อนที่คุณจะติดตั้งซอฟต์แวร์ตัวใดตัวหนึ่ง

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

free -h ควรแสดงผลบรรทัด Swap: ที่ระบุ 4.0Gi หากแสดงผลเป็น 0B แสดงว่า swapon ล้มเหลว ซึ่งมักเกิดจากระบบไฟล์ไม่รองรับ fallocate และ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 จึงถูกนำมาใช้เป็นค่าสำรอง เพดานหน่วยความจำของคอนเทนเนอร์ก็มีความสำคัญในจุดนี้เช่นกัน และการ กำหนดขีดจำกัดหน่วยความจำใน Docker Compose คือวิธีที่คุณจะป้องกันไม่ให้บริการที่ใช้ทรัพยากรสูงเพียงตัวเดียวทำให้ทั้งเครื่องล่ม ข้อยกเว้นคือตัว PhotoPrism เอง: เอกสารแนะนำไม่ให้กำหนดขีดจำกัดหน่วยความจำแบบตายตัว (hard limit) กับคอนเทนเนอร์ของมัน เนื่องจากในระหว่างการทำดัชนีไฟล์ขนาดใหญ่ ระบบอาจต้องการหน่วยความจำเพิ่มขึ้นชั่วคราว และการจำกัดไว้จะทำให้เกิดการรีสตาร์ทโดยไม่คาดคิด

มีอีกหนึ่งข้อกำหนดที่มักทำให้ผู้ใช้งานประสบปัญหา ฐานข้อมูล Postgres ของ Immich ต้องอยู่บนระบบไฟล์ Unix ปกติที่มีการจัดการความเป็นเจ้าของและสิทธิ์การเข้าถึงที่ถูกต้อง บนพื้นที่จัดเก็บข้อมูลภายในเครื่อง (local storage) เท่านั้น ห้ามใช้บน network share โดยเด็ดขาด ส่วน PhotoPrism ก็เตือนไม่ให้เก็บไฟล์ฐานข้อมูลไว้บนโฟลเดอร์เครือข่ายที่แชร์ร่วมกัน และระบุว่า local SSD คือตำแหน่งที่ดีที่สุดสำหรับไฟล์เหล่านี้ แอปทั้งสองตัวไม่ปลอดภัยหากรันโดยเก็บฐานข้อมูลไว้บน mounted object store

วิธีการติดตั้งแต่ละรายการ

การติดตั้งทั้งสองรายการใช้ไฟล์ compose ของผู้พัฒนาและคำสั่งเพียงหนึ่งคำสั่ง ให้ติดตั้ง Docker Engine และปลั๊กอิน Compose ให้เรียบร้อยก่อน ตามที่ระบุไว้ใน คู่มือการใช้งาน Docker Compose บน VPS ของเรา

Immich เผยแพร่ไฟล์ compose และไฟล์ environment ตัวอย่างมาพร้อมกับทุก release

sudo mkdir -p /opt/immich && cd /opt/immich
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

แก้ไข .env ก่อนเริ่มดำเนินการใดๆ UPLOAD_LOCATION คือตำแหน่งที่ไฟล์ต้นฉบับของคุณจะถูกจัดเก็บไว้ DB_PASSWORD มาพร้อมกับค่าเริ่มต้นที่ใช้งานได้จริง และ Immich แนะนำให้เปลี่ยนเป็นรหัสผ่านแบบสุ่ม แม้ว่าจะไม่ได้บังคับก็ตาม เนื่องจาก Postgres ไม่ได้เปิดเผยต่อสาธารณะ รหัสผ่านนี้จึงใช้สำหรับการยืนยันตัวตนภายในเท่านั้น แต่การตั้งรหัสผ่านแบบสุ่มก็ไม่ได้มีค่าใช้จ่ายใดๆ ให้ใช้เฉพาะอักขระ A-Za-z0-9 เท่านั้น เนื่องจากเอกสารของ Immich ระบุว่าอักขระอื่นอาจทำให้เกิดปัญหาเมื่อ Docker ทำการประมวลผลค่าดังกล่าว จากนั้นจึงเริ่มการทำงาน

docker compose up -d
docker compose ps

เว็บอินเทอร์เฟซจะทำงานบนพอร์ต 2283 บัญชีแรกที่ลงทะเบียนผ่านหน้านั้นจะกลายเป็นผู้ดูแลระบบ ดังนั้นควรเข้าถึงและลงทะเบียนทันที แทนที่จะปล่อยให้ instance เปิดทิ้งไว้บนอินเทอร์เน็ต

PhotoPrism มาพร้อมกับไฟล์ compose หนึ่งไฟล์ที่รวม MariaDB ไว้แล้ว

sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yaml

เปิด compose.yaml และเปลี่ยน PHOTOPRISM_ADMIN_PASSWORD ก่อนการเริ่มทำงานครั้งแรก เอกสารระบุไว้อย่างชัดเจนว่า แอปจะเริ่มทำงานด้วยรหัสผ่านเริ่มต้นที่อยู่ในไฟล์นั้น โดยมีความยาวขั้นต่ำ 8 อักขระ และห้ามใช้ค่าเริ่มต้นบนเซิร์ฟเวอร์สาธารณะโดยเด็ดขาด ให้ตั้งค่า volume originals ไปยังโฟลเดอร์ที่เก็บรูปภาพของคุณในเวลาเดียวกัน

docker compose up -d
docker compose logs -f photoprism

PhotoPrism จะทำงานบนพอร์ต 2342 ด้วยผู้ใช้ admin ไม่ควรเปิดเผยแอปใดๆ โดยตรง ให้ติดตั้ง reverse proxy ที่มี TLS (transport layer security) ไว้ด้านหน้า โดยใช้รูปแบบการตั้งค่าเดียวกับที่ใช้สำหรับ การทำ self-hosted Nextcloud ด้วย Docker, TLS และการสำรองข้อมูล หรือเก็บเซิร์ฟเวอร์ไว้เป็นส่วนตัวและเข้าถึงผ่าน VPN หาก VPS นั้นต้องรองรับบริการอื่นนอกเหนือจากรูปภาพ ให้ใช้ความระมัดระวังแบบเดียวกันกับทุกบริการที่คุณเพิ่มเข้าไป เนื่องจาก self-hosted RustDesk relay ต้องการเพียงพอร์ตของตัวเองสองพอร์ตที่เข้าถึงได้เท่านั้น และไม่จำเป็นต้องเปิดพอร์ตอื่นเพิ่มเติม

แอปพลิเคชันบนมือถือของตัวใดดีกว่ากัน

นี่คือจุดที่ทั้งสองโปรเจกต์มีความแตกต่างกันมากที่สุด และเป็นเหตุผลที่คนส่วนใหญ่เลือกใช้ Immich

Immich มีแอปพลิเคชันอย่างเป็นทางการสำหรับ Android และ iOS ซึ่งรองรับการสำรองข้อมูลรูปภาพจากม้วนฟิล์มในพื้นหลัง ทำให้รูปภาพใหม่ถูกอัปโหลดออกจากโทรศัพท์โดยไม่ต้องเปิดแอปพลิเคชันทิ้งไว้ สำหรับการใช้งานนอกบ้าน Immich ได้ระบุแนวทางไว้ 3 วิธี ได้แก่ การใช้ VPN เช่น WireGuard หรือ OpenVPN, การใช้ Tailscale หรือการใช้ reverse proxy เพื่อให้บริการผ่าน HTTPS โดยวิธี reverse proxy เป็นวิธีที่ช่วยให้แอปบนมือถือเชื่อมต่อได้โดยไม่ต้องติดตั้งแอป VPN เพิ่มเติมในแต่ละเครื่อง ทั้งนี้ Immich ได้แจ้งเตือนว่าห้ามเปิดพอร์ต 2283 ออกสู่อินเทอร์เน็ตโดยตรงหากไม่มีการตั้งค่าความปลอดภัยเพิ่มเติม

PhotoPrism ไม่มีแอปพลิเคชันแบบ native อย่างเป็นทางการ แต่มี Progressive Web App ซึ่งคุณสามารถเพิ่มลงในหน้าจอหลักได้จากเบราว์เซอร์ และทางโปรเจกต์ได้ระบุให้ใช้ WebDAV (Web Distributed Authoring and Versioning) เป็นวิธีในการซิงค์ข้อมูลจากโทรศัพท์ โดยแนะนำให้ใช้แอปพลิเคชันภายนอกที่ชื่อว่า PhotoSync เพื่อเชื่อมต่อไปยังไดเรกทอรี /import/ หรือ /originals/ ผ่านโปรโตคอล WebDAV แม้วิธีนี้จะใช้งานได้จริง แต่ก็เป็นการใช้แอปพลิเคชันภายนอกแบบเสียค่าใช้จ่ายเพื่อทำงานที่ Immich สามารถทำได้ภายในแอปของตนเอง

หากความต้องการหลักคือการสำรองข้อมูลจากโทรศัพท์โดยอัตโนมัติสำหรับสมาชิกหลายคนในครอบครัว คำตอบที่ชัดเจนคือ Immich

สิ่งที่การเรียนรู้ของเครื่องมอบให้คุณจริงๆ

Immich ทำการค้นหาเชิงความหมาย (semantic search) ในคลังภาพของคุณโดยใช้ CLIP ดังนั้นคำค้นหาอย่าง "จักรยานสีแดงในหิมะ" จึงสามารถค้นหารูปภาพที่ไม่มีใครเคยแท็กไว้ได้ นอกจากนี้ยังมีการตรวจจับและจัดกลุ่มใบหน้า รวมถึงการตรวจจับรูปภาพซ้ำ การทำดัชนีข้อมูลจำนวนมากบน CPU จะใช้เวลาทำงานเบื้องหลังนานหลายชั่วโมง ซึ่งเป็นเรื่องปกติและไม่จำเป็นต้องใช้ GPU (graphics processing unit)

PhotoPrism จัดประเภทรูปภาพเป็นป้ายกำกับ (labels) ด้วยโมเดล ONNX ที่มีมาให้ในตัว ตรวจจับใบหน้าและจัดกลุ่มเป็นบุคคลด้วยโมเดลใบหน้าแบบ ONNX และอ่านข้อมูลเมตาของตำแหน่งเพื่อสร้างแผนที่สถานที่ ไฟล์ vision.yml ในโฟลเดอร์ config สามารถสลับไปใช้ Ollama หรือ OpenAI สำหรับป้ายกำกับและคำบรรยายได้หากคุณต้องการ แผนที่คือฟีเจอร์ที่ทำให้ผู้ใช้งานยังคงเลือกใช้บริการนี้: การมีคลังภาพที่จัดทำดัชนีตามสถานที่ที่เกิดเหตุการณ์เป็นวิธีที่แตกต่างอย่างแท้จริงในการเรียกดูรูปภาพย้อนหลังยี่สิบปี แนวคิดเดียวกันนี้ใช้ได้กับคอลเลกชันสื่ออื่นๆ และ หน้าร้านวิดีโอสไตล์ยุค 90 ของ Halcyon สำหรับ Jellyfin ก็เป็นเวอร์ชันภาพยนตร์ของแนวคิดนี้ ซึ่งเป็นการเรียกดูผ่านชั้นวางแทนที่จะเป็นรายการ การจดจำใบหน้ารวมอยู่ใน Community edition แบบฟรีแล้ว ส่วนสมาชิกแบบ Essentials และ Plus ที่ต้องชำระเงินจะเพิ่มฟีเจอร์พิเศษ เช่น เลเยอร์แผนที่ที่ละเอียดขึ้น บทบาทผู้ใช้ที่มากขึ้น และอินเทอร์เฟซการจัดการผู้ใช้ โดยเริ่มต้นที่ราคาไม่กี่ยูโรต่อเดือน เรียกเก็บเงินเป็นรายปี ณ เดือนตุลาคม 2026

Immich ไม่มีฟีเจอร์ที่ต้องจ่ายเงินเพื่อปลดล็อก และโครงการระบุว่าจะไม่มีวันมี โดยมีการขายคีย์ผลิตภัณฑ์แบบตลอดชีพที่เป็นทางเลือก ราคา 25 ดอลลาร์สำหรับผู้ใช้หนึ่งคน หรือ 100 ดอลลาร์สำหรับทั้งเซิร์ฟเวอร์ ตามราคาที่ Immich ประกาศในเดือนกรกฎาคม 2024 แต่การซื้อคีย์ดังกล่าวไม่ได้ปลดล็อกฟีเจอร์ใดๆ และ Immich สามารถทำงานได้โดยไม่มีข้อจำกัดหากคุณไม่เคยจ่ายเงิน ส่วนแกนหลักของ PhotoPrism นั้นฟรี โดยมีฟีเจอร์เสริมแบบชำระเงินให้เลือกใช้

การสำรองข้อมูลเป็นตัวตัดสินว่าคุณจะรักษาข้อมูลไว้ได้หรือไม่

เซิร์ฟเวอร์รูปภาพที่ไม่มีการสำรองข้อมูลอาจสูญเสียทุกอย่างที่ครอบครัวมีได้หากฮาร์ดดิสก์เพียงลูกเดียวเกิดความเสียหาย แอปพลิเคชันทั้งสองตัวต้องการการสำรองข้อมูล 2 ส่วน คือ ฐานข้อมูล และไฟล์ข้อมูล

สำหรับ Immich ให้ทำการ dump ฐานข้อมูลจากคอนเทนเนอร์ Postgres และคัดลอกตำแหน่งที่เก็บไฟล์อัปโหลด

docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gz

จากนั้นให้สำรองข้อมูล UPLOAD_LOCATION โฟลเดอร์ที่เก็บข้อมูลซึ่งไม่สามารถหาทดแทนได้คือ upload, library และ profile ส่วนโฟลเดอร์ thumbs และ encoded-video นั้นสามารถสร้างใหม่ได้ แต่จะต้องแลกด้วยเวลาการประมวลผลของ CPU หลายชั่วโมง การทำ database dump เพียงอย่างเดียวไม่สามารถกู้คืนข้อมูลได้ เนื่องจากเก็บไว้เพียงข้อมูลเมตา (metadata) เท่านั้น

สำหรับ PhotoPrism การทำดัชนี (index) มีคำสั่งเฉพาะของตัวเอง

docker compose exec photoprism photoprism backup -i -f

คำสั่งดังกล่าวจะเขียนไฟล์ SQL dump ไว้ภายใต้ storage/backup/ จากนั้นให้คัดลอกโฟลเดอร์ originals และโฟลเดอร์ storage เนื่องจาก PhotoPrism จะเขียนไฟล์ sidecar YAML ที่อธิบายรายละเอียดของรูปภาพแต่ละรูปไว้ด้วย ดังนั้นหากดัชนีสูญหายไป ก็สามารถสร้างใหม่จากไฟล์ข้อมูลเพียงอย่างเดียวได้ ซึ่งถือเป็นข้อได้เปรียบอย่างมากสำหรับคลังข้อมูลที่คุณวางแผนจะเก็บไว้ใช้งานนานหลายทศวรรษ

ไม่ว่าจะเลือกวิธีใด ให้ส่ง backup เหล่านั้นออกจากเซิร์ฟเวอร์ตามกำหนดเวลาด้วย backup ของ restic ที่เข้ารหัสและตัดข้อมูลซ้ำไปยัง remote storage backup ที่อยู่บน disk เดียวกับ library ไม่ถือเป็น backup ให้ job แจ้งเตือนทันทีเมื่อทำงานล้มเหลว เพราะ backup ที่หยุดทำงานเงียบ ๆ ตั้งแต่เดือน March จะดูเหมือน backup ที่ทำงานเมื่อคืน จนกว่าจะถึงวันที่ต้องกู้คืน และ เซิร์ฟเวอร์ ntfy ที่ self-host จะส่งการแจ้งเตือนความล้มเหลวไปยังโทรศัพท์ของคุณภายในเย็นวันเดียวกัน

ควรเลือกใช้งานตัวไหน

ให้รัน Immich หากรูปภาพของคุณอยู่ในโทรศัพท์ หากมีผู้ใช้งานมากกว่าหนึ่งคนที่ต้องการสำรองข้อมูล Camera Roll และหากคุณสามารถจัดสรร RAM ให้เซิร์ฟเวอร์ได้ตั้งแต่ 6 GB ขึ้นไป นี่คือซอฟต์แวร์ที่ใกล้เคียงกับ Google Photos มากที่สุดที่คุณสามารถโฮสต์เองได้ และประสบการณ์การใช้งานบนมือถือคือจุดเด่นสำคัญ คู่มือการติดตั้ง Immich แบบทีละขั้นตอน ของเราได้ครอบคลุมรายละเอียดเกี่ยวกับปัญหาหน่วยความจำไม่พอและข้อควรระวังในการอัปเกรดไว้แล้ว

ให้รัน PhotoPrism หากคุณมีคลังรูปภาพเก็บไว้ในดิสก์อยู่แล้ว หากคุณให้ความสำคัญกับแผนที่ ข้อมูล Metadata และการรักษาโครงสร้างโฟลเดอร์เดิมของคุณ หรือหาก VPS ของคุณมี RAM 4 GB และคุณต้องการให้คลังรูปภาพทำงานได้จริงแทนที่จะเกิดปัญหาการสลับหน่วยความจำ (swapping) นี่คือเครื่องมือจัดการรูปภาพที่ดีกว่าและใช้ทรัพยากรฮาร์ดแวร์น้อยกว่า

การรันทั้งสองตัวพร้อมกันก็เป็นทางเลือกที่สมเหตุสมผล Immich จะทำหน้าที่จัดการการนำเข้ารูปภาพจากโทรศัพท์ในแต่ละวัน ส่วนปีละครั้งคุณค่อยคัดแยกรูปที่ต้องการเก็บไว้ลงในคลังข้อมูลของคุณแล้วให้ PhotoPrism ทำการ Index ข้อมูลเหล่านั้น ทั้งสองโปรแกรมจะไม่ขัดแย้งกันเนื่องจาก PhotoPrism อ่านข้อมูลจากโฟลเดอร์ ในขณะที่ Immich จะจัดการข้อมูลภายในโฟลเดอร์ของตัวเองแยกต่างหาก

FAQ

PhotoPrism และ Immich สามารถใช้โฟลเดอร์รูปภาพเดียวกันได้หรือไม่

ไม่สามารถทำได้อย่างปลอดภัยในทั้งสองทิศทาง PhotoPrism จะทำดัชนีโฟลเดอร์ originals และมีฟีเจอร์ที่เขียนข้อมูลลงในโฟลเดอร์ดังกล่าวเว้นแต่จะรันในโหมดอ่านอย่างเดียว (read-only) ในขณะที่ Immich ต้องการเป็นเจ้าของเนื้อหาในตำแหน่งที่อัปโหลด คุณสามารถกำหนดให้ PhotoPrism ชี้ไปยังสำเนาแบบอ่านอย่างเดียวของโฟลเดอร์ library ของ Immich เพื่อเรียกดูได้ แต่ห้ามให้ทั้งสองแอปจัดการไฟล์ชุดเดียวกัน เพราะ storage template ของ Immich อาจย้ายหรือเปลี่ยนชื่อไฟล์ในขณะที่ PhotoPrism กำลังทำดัชนีอยู่

Immich มีความเสถียรเพียงพอที่จะเป็นที่เก็บสำเนาเดียวของรูปภาพหรือไม่

ไม่ควรมีแอปพลิเคชันที่รันเอง (self-hosted) ใดๆ เป็นที่เก็บสำเนาเดียวของข้อมูลใดๆ ปัจจุบัน Immich ใช้ระบบ semantic versioning และระบุว่าการเปลี่ยนแปลงที่ส่งผลกระทบต่อการทำงาน (breaking changes) จะจำกัดอยู่เพียงรุ่น major release เท่านั้น ดังนั้นควรล็อกเวอร์ชัน IMMICH_VERSION ไว้ที่แท็ก major version เช่น v3 อ่านบันทึกการเปลี่ยนแปลง (release notes) แล้วจึงอัปเกรดด้วย docker compose pull && docker compose up -d การดาวน์เกรดไม่ได้รับการรองรับแม้จะเป็นเวอร์ชัน minor เดียวกัน ดังนั้นควรสำรองข้อมูลฐานข้อมูล (database dump) ก่อนการอัปเกรดทุกครั้ง หากคุณเก็บสำเนาไฟล์ต้นฉบับไว้นอกเซิร์ฟเวอร์ ความเสี่ยงก็จะอยู่ในระดับต่ำ

ทำไมคอนเทนเนอร์ machine learning ของ Immich ถึงรีสตาร์ทตัวเองอยู่ตลอด

โดยปกติแล้วเกิดจากการถูกสั่งยุติการทำงาน (killed) เนื่องจากใช้หน่วยความจำมากเกินไป ให้รันคำสั่ง docker compose ps --all เนื่องจากคอนเทนเนอร์ที่หยุดทำงานจะถูกซ่อนไว้หากไม่ใช้ flag ดังกล่าว แล้วตรวจสอบว่าบริการ machine learning มีการหยุดทำงานด้วย exit code 137 หรือไม่ รหัสนี้หมายความว่ากระบวนการถูกสั่งยุติด้วย signal 9 ซึ่งสาเหตุส่วนใหญ่มักเกิดจาก kernel out of memory killer แต่ก็อาจเกิดจากสาเหตุอื่นได้เช่นกัน ดังนั้นควรยืนยันด้วยคำสั่ง sudo dmesg | grep -i 'out of memory' ให้เพิ่ม swap หรือปิดการใช้งาน machine learning ไปเลยหากรันบนเครื่องที่มี RAM 4 GB การจำกัดหน่วยความจำบนคอนเทนเนอร์ไม่ได้เป็นการลดความเร็วในการทำงาน แต่เมื่อถึงขีดจำกัด คอนเทนเนอร์จะถูกสั่งยุติการทำงานเพื่อไม่ให้แย่งทรัพยากรส่วนอื่นของเซิร์ฟเวอร์ ทั้งนี้ฟีเจอร์ smart search และการจดจำใบหน้าจะหยุดทำงานหากไม่มี machine learning แต่ส่วนอื่นๆ ของ Immich จะยังคงทำงานได้ตามปกติ

PhotoPrism จำเป็นต้องใช้ MariaDB หรือใช้ SQLite ก็เพียงพอแล้ว

SQLite สามารถใช้งานได้และเพียงพอสำหรับคลังรูปภาพส่วนตัว แต่ PhotoPrism จะจำกัดจำนวน worker ไว้ที่ 4 ตัวเมื่อใช้ SQLite และเอกสารแนะนำให้เปลี่ยนไปใช้ MariaDB เนื่องจากรองรับการทำงานพร้อมกัน (concurrency) ได้ดีกว่า ไฟล์ compose ที่โครงการจัดเตรียมมาให้มี MariaDB รวมอยู่ด้วยแล้ว ดังนั้นแนวทางที่แนะนำจึงเป็นค่าเริ่มต้นของระบบด้วยเช่นกัน

ควรเผื่อพื้นที่ดิสก์ไว้มากกว่าขนาดคลังรูปภาพเท่าใด

ควรเผื่อพื้นที่เพิ่มอีก 10 ถึง 20 เปอร์เซ็นต์จากขนาดไฟล์ต้นฉบับสำหรับทั้งสองแอป เพื่อรองรับการสร้างรูปภาพขนาดเล็ก (thumbnails) และวิดีโอตัวอย่างที่ผ่านการแปลงรหัส (transcoded video previews) คลังรูปภาพขนาด 200 GB จะต้องใช้พื้นที่ประมาณ 220 ถึง 240 GB สำหรับตัวคลังรูปภาพเพียงอย่างเดียว ยังไม่รวมพื้นที่สำหรับฐานข้อมูลและการขยายตัวในอนาคต หากคุณเก็บสำเนาสำรองในเครื่องไว้ใน volume เดียวกันด้วย ไฟล์ต้นฉบับและสำเนานั้นจะต้องใช้พื้นที่อย่างน้อย 400 GB ก่อนจะนับรวมข้อมูลส่วนอื่น ดังนั้นควรตั้งงบประมาณพื้นที่ไว้ประมาณ 450 GB หรือย้ายสำเนาไปเก็บไว้ใน volume แยกต่างหาก

บทความนี้มีประโยชน์หรือไม่