Immich บน VPS: สร้างคลาวด์ส่วนตัวสำหรับรูปภาพและวิดีโอ

2 อ่านขั้นต่ำแล้ว
Tropic
Immich บน VPS: สร้างคลาวด์ส่วนตัวสำหรับรูปภาพและวิดีโอ

Language: th

Immich: สร้างคลาวด์ส่วนตัวสำหรับรูปภาพและวิดีโอบน VPS

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

บทความนี้อธิบายข้อกำหนดของ Immich การติดตั้งบน Ubuntu ด้วย Docker Compose การตั้งค่า HTTPS การเชื่อมต่อโทรศัพท์ และการสำรองข้อมูลไปยังพื้นที่ภายนอก

Immich ในหกขั้นตอน

  1. สร้าง Linux VPS ที่มี RAM และพื้นที่ดิสก์เพียงพอ
  2. ชี้ซับโดเมน เช่น photos.example.com ไปยัง IP ของเซิร์ฟเวอร์
  3. ติดตั้ง Docker และดาวน์โหลดการตั้งค่า Immich อย่างเป็นทางการ
  4. ระบุเส้นทางคลังสื่อและฐานข้อมูล จากนั้นเริ่มคอนเทนเนอร์
  5. ปิดพอร์ตภายในและเปิดใช้ HTTPS
  6. ติดตั้งแอปมือถือและตั้งค่าการสำรองข้อมูลภายนอก

Immich คืออะไร

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

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

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

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

ฟีเจอร์หลักของ Immich

  • อัปโหลดอัตโนมัติ: แอป Android และ iOS อัปโหลดรูปภาพและวิดีโอจากอัลบั้มที่เลือก ใช้ Wi-Fi เป็นค่าเริ่มต้น และข้ามไฟล์ที่มีอยู่แล้วโดยตรวจสอบ checksum
  • การค้นหาอัจฉริยะ: ค้นหาตามบุคคล สถานที่ วันที่ กล้อง ข้อความในภาพ และคำอธิบายเนื้อหาได้ ระบบจะจัดกลุ่มใบหน้าและให้คุณกำหนดชื่อภายหลัง
  • อัลบั้มและการแชร์: รองรับผู้ใช้หลายคน อัลบั้มร่วม การแชร์กับคู่หู และลิงก์สาธารณะที่มีรหัสผ่านกับวันหมดอายุ
  • แผนที่และ metadata: อ่านข้อมูล EXIF แสดงสถานที่ถ่ายภาพ สร้าง memories และรองรับรายการโปรด คลังเก็บถาวร และ external libraries

Machine learning ใช้ CPU และ RAM มากที่สุดในช่วงนำเข้าครั้งแรก หลังสร้าง thumbnails และ indexes แล้ว การใช้ทรัพยากรในชีวิตประจำวันมักลดลง

ข้อกำหนดเซิร์ฟเวอร์ของ Immich

ข้อกำหนดอย่างเป็นทางการสำหรับเวอร์ชันปัจจุบันมีดังนี้:

  • ระบบ 64-bit ที่เป็น Linux หรือ Unix-like
  • CPU อย่างน้อย 2 คอร์ แนะนำ 4 คอร์
  • RAM อย่างน้อย 6 GB แนะนำ 8 GB
  • Docker Engine พร้อมปลั๊กอิน docker compose
  • SSD ภายในเครื่องสำหรับฐานข้อมูล PostgreSQL
  • พื้นที่สำหรับไฟล์ต้นฉบับ thumbnails และวิดีโอที่แปลงแล้ว

Immich ทำงานบนเซิร์ฟเวอร์ RAM 4 GB ได้หากปิดฟีเจอร์ machine learning สำหรับการจดจำใบหน้าและการค้นหาอัจฉริยะ ควรเลือก RAM 8 GB ตั้งแต่ต้น

Thumbnails และไฟล์ที่แปลงแล้วเพิ่มขนาดคลังสื่อโดยเฉลี่ย 10–20% คลังขนาด 200 GB ควรจัดสรรอย่างน้อย 240–260 GB ไดเรกทอรีฐานข้อมูล DB_DATA_LOCATION ควรอยู่บน SSD ภายในเครื่อง ไม่ใช่ไดรฟ์เครือข่าย

จุดเริ่มต้นที่ใช้งานได้จริงคือ 4 vCPUs, RAM 8 GB, Ubuntu 24.04 LTS และ SSD ที่มีความจุมากกว่าคลังต้นฉบับ 20–30% ไม่จำเป็นต้องมีการ์ดจอแยก แต่การ์ดจออาจช่วยเร่งการประมวลผลคลังขนาดใหญ่

วิธีติดตั้ง Immich บน VPS

ตัวอย่างนี้ใช้ Ubuntu 24.04 และซับโดเมน photos.example.com

1. ตั้งค่า DNS และเตรียม Ubuntu

สร้างระเบียน DNS A ที่ชี้ไปยัง IPv4 ของ VPS จากนั้นเชื่อมต่อผ่าน SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

อย่าปิดเซสชัน SSH ปัจจุบันจนกว่าจะตรวจสอบแล้วว่าการเชื่อมต่อใหม่ใช้งานได้

2. ติดตั้ง Docker และ Docker Compose

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

ใช้คำสั่ง docker compose โดยเฉพาะ เพราะคำสั่งเก่า docker-compose ไม่ได้รับการรองรับจากโปรเจกต์แล้ว

3. ดาวน์โหลดและตั้งค่า Immich

mkdir -p /opt/immich /srv/immich-data
cd /opt/immich

curl -L -o docker-compose.yml \
  https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
  https://github.com/immich-app/immich/releases/latest/download/example.env

เปิดไฟล์:

nano /opt/immich/.env

เปลี่ยนพารามิเตอร์หลัก:

UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD

ใส่เขตเวลาของคุณเอง รหัสผ่าน PostgreSQL ควรประกอบด้วยตัวอักษรละตินและตัวเลข คำสั่ง openssl rand -hex 24 จะสร้างค่าสุ่มให้ได้ ปล่อยบรรทัดอื่นไว้ตามที่อยู่ในไฟล์ example.env ปัจจุบัน

4. ปิดพอร์ตภายในและเริ่มคอนเทนเนอร์

ใน docker-compose.yml ให้ค้นหาพอร์ตของบริการ immich-server:

ports:
  - '2283:2283'

แทนที่ด้วย:

ports:
  - '127.0.0.1:2283:2283'

ตอนนี้พอร์ตจะเข้าถึงได้เฉพาะจากตัว VPS เอง เริ่มบริการ:

cd /opt/immich
docker compose up -d
docker compose ps

สำหรับการวินิจฉัย ใช้ docker compose logs --tail=200

5. เปิดใช้ HTTPS ด้วย Caddy

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
    reverse_proxy 127.0.0.1:2283
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Caddy จะขอใบรับรองโดยอัตโนมัติเมื่อ DNS ชี้มายัง VPS และพอร์ต 80 กับ 443 เข้าถึงได้ Immich ต้องทำงานที่ root ของโดเมนหรือซับโดเมน ไม่รองรับที่อยู่แบบ example.com/immich

6. สร้างผู้ดูแลระบบและเชื่อมต่อโทรศัพท์

เปิด https://photos.example.com ผู้ใช้ที่ลงทะเบียนคนแรกจะเป็นผู้ดูแลระบบและสามารถสร้างบัญชีเพิ่มเติมได้

ติดตั้ง Immich จาก App Store หรือ Google Play ที่หน้าลงชื่อเข้าใช้ ให้ป้อนที่อยู่โดยไม่มี /api:

https://photos.example.com

เลือกอัลบั้มและเปิดการสำรองข้อมูล การนำเข้าครั้งแรกอาจใช้เวลา เพราะเซิร์ฟเวอร์ต้องสร้าง thumbnails จดจำใบหน้า ทำดัชนีข้อมูลการค้นหา และประมวลผลวิดีโอ

การอัปเดต Immich

ก่อนอัปเดตให้อ่าน release notes โดยเฉพาะเมื่อต้องเปลี่ยน major version:

cd /opt/immich
docker compose pull
docker compose up -d
docker image prune

อัปเดตแอปมือถือก่อน แล้วจึงอัปเดตเซิร์ฟเวอร์ การย้อนฐานข้อมูลไปเป็นเวอร์ชันเก่าอาจไม่รองรับ หากไม่มีคำแนะนำแยกต่างหาก

การสำรองข้อมูล Immich

Immich สร้าง PostgreSQL dumps อัตโนมัติ แต่มีเฉพาะฐานข้อมูลและ metadata ไม่รวมรูปภาพกับวิดีโอ การกู้คืนอย่างสมบูรณ์ต้องบันทึก:

  • ไดเรกทอรี /srv/immich-data ทั้งหมด
  • /opt/immich/.env และ docker-compose.yml
  • การตั้งค่า Caddy

สำเนาที่อยู่บน VPS เดียวกันไม่ป้องกันดิสก์เสียหรือการลบเซิร์ฟเวอร์ ส่งข้อมูลไปยังเซิร์ฟเวอร์ NAS หรือ object storage แยกต่างหาก และใช้แนวทางสำรองแบบ 3-2-1 ทดสอบการกู้คืนเป็นระยะ อย่าตรวจเพียงว่ามีไฟล์แบ็กอัปอยู่

เลือก VPS แบบใดสำหรับ Immich

หากต้องการใช้งานครบทั้งการจดจำใบหน้าและการค้นหาอัจฉริยะ ควรเลือก VPS อย่างน้อย 4 vCPUs และ RAM 8 GB คำนวณขนาดดิสก์ตามคลังสื่อ และเผื่อพื้นที่สำหรับ thumbnails วิดีโอ และการเติบโตของ archive

Linux VPS จาก tropic.host ที่มี static IP และ SSD เหมาะกับงานนี้ คุณสามารถเริ่มด้วย RAM 8 GB และเพิ่มทรัพยากรเมื่อคลังขยายตัว เก็บฐานข้อมูล PostgreSQL ไว้บนดิสก์ภายในที่เร็ว และเก็บ backup นอก VPS นี้

VPS สะดวกสำหรับการเข้าถึงตลอดเวลาจากทุกเครือข่าย สำหรับคลังขนาดหลายเทราไบต์ โฮมเซิร์ฟเวอร์อาจถูกกว่า แต่คุณต้องจัดหาไฟฟ้า การเข้าถึงจากภายนอก และระบบสำรองเอง

ข้อจำกัดของ Immich

การ self-hosting ไม่รับประกันความเสถียรโดยอัตโนมัติ รหัสผ่านที่อ่อนแอ พอร์ต 2283 ที่เปิดออกอินเทอร์เน็ต คอนเทนเนอร์ล้าสมัย หรือไม่มี backup ภายนอก ล้วนเพิ่มความเสี่ยงต่อการสูญหายของข้อมูล

Immich ก็ไม่ใช่สำเนาของ Google Photos หรือ iCloud แบบตรงตัว ความสามารถด้านการแก้ไขและการซิงโครไนซ์เบื้องหลังแตกต่างกัน และความเร็วในการวิเคราะห์ขึ้นอยู่กับฮาร์ดแวร์ ก่อนย้ายคลังเดียวของคุณ ให้ทดสอบบริการด้วยคลังขนาดเล็ก

สรุป

Immich ช่วยให้คุณสร้างแกลเลอรีรูปภาพของตัวเอง พร้อมการอัปโหลดจากมือถือ อัลบั้ม การจดจำใบหน้า การค้นหา และการแชร์ สำหรับเวอร์ชันปัจจุบัน ควรเตรียม Linux VPS ที่มี 4 คอร์ RAM 8 GB และ SSD ที่เหลือความจุอย่างน้อย 20–30%

หลังติดตั้ง ให้ตั้งค่า HTTPS การอัปเดต และ backup ภายนอกของไดเรกทอรีสื่อควบคู่กับฐานข้อมูล สิ่งที่ปกป้องรูปภาพจากการสูญหายคือ backup ไม่ใช่การ self-hosting เพียงอย่างเดียว

FAQ

Immich ฟรีหรือไม่?

เซิร์ฟเวอร์ Immich เป็น open source และทำงานได้โดยไม่ต้องมี subscription บังคับ แต่คุณยังต้องจ่ายค่า VPS โดเมน พื้นที่ดิสก์ และ backups

Immich ต้องใช้ RAM เท่าไร?

ขั้นต่ำอย่างเป็นทางการคือ RAM 6 GB และแนะนำ 8 GB หากมี RAM 4 GB ต้องปิด machine learning

ติดตั้ง Immich โดยไม่มีโดเมนได้หรือไม่?

ในทางเทคนิคทำได้ แต่หากต้องการเข้าถึงจากโทรศัพท์อย่างถาวร ควรใช้โดเมนและ HTTPS เพื่อปกป้องการยืนยันตัวตนและการโอนไฟล์

Immich ใช้แทนการสำรองรูปภาพได้หรือไม่?

ไม่ได้ ควรคัดลอกคลังสื่อและฐานข้อมูลไปยังอุปกรณ์หรือสถานที่อื่นแยกต่างหาก

ย้ายคลังรูปภาพเดิมเข้า Immich ได้หรือไม่?

ได้ คุณสามารถอัปโหลดไฟล์ผ่านเว็บอินเทอร์เฟซหรือ CLI หรือเชื่อมไดเรกทอรีเป็น external library ควรทำสำเนาข้อมูลต้นฉบับก่อนนำเข้าครั้งใหญ่

Immich บน VPS: สร้างคลาวด์ส่วนตัวสำหรับรูปภาพและวิดีโอ