บันทึกการย้ายรูปภาพทั้งหมด 50GB จาก Google Photos ไปยัง Immich (self-hosted) บน NAS เมื่อพื้นที่ Google ใกล้เต็มแต่ไม่อยากซื้อเพิ่ม
Table of contents
Intro
สวัสดีครับ บทความนี้จะเล่ากระบวนการย้ายรูปภาพจาก Google Photos ไปยัง Immich บน NAS เมื่อพื้นที่ Google ใกล้เต็มแต่ไม่อยากซื้อเพิ่ม
ปัญหาพื้นที่เต็ม
ตามปกติแล้ว Google จะให้พื้นที่ฟรีแค่ 15GB (ใช้ร่วมกันระหว่าง Gmail, Photo, Drive)
โดยราคาของ Google one ซึ่งเป็นราคาแพ็กเก็จพื้นที่ราคาเริ่มต้นขนาด 100GB (กรณีซื้อเพิ่ม) จะอยู่ที่ 70 บาท/เดือน (เป็นพื้นที่ใช้ร่วมกันระหว่าง Gmail, Photos, Drive)
ถ้าอนาคตใช้งานไม่เยอะก็อาจจะคุ้ม (แต่ถ้ามีอย่างอื่นที่ต้องเก็บที่ Drive และมีผู้ใช้งานเพิ่มหลายท่านก็อาจจะไม่ค่อยคุ้มเท่าไหร่)
ปัจจุบันเนื่องด้วยพื้นที่ของบัญชีส่วนตัวใกล้จะเต็มแล้ว อยากลดการพึ่งพา Google และไม่อยากซื้อพื้นที่เพิ่ม ดังนั้นจึงวางแผนย้ายรูปภาพจาก Google Photos ทั้งหมด 2 บัญชี (บัญชีส่วนตัว, บัญชีการศึกษา) รวม 50GB ไปไว้ที่ NAS ส่วนตัวที่ติดตั้งระบบ Immich ไว้
Google Photo | ใช้ไปแล้ว | หมายเหตุ |
---|---|---|
บัญชีส่วนตัว (15GB) | 11GB | ไม่รวม Gmail, Drive |
บัญชีการศึกษา (50GB) | 39GB | ไม่รวม Gmail, Drive |
รวม | 50GB |
บัญชีการศึกษาตอนนี้จำกัดไว้ 50GB แล้ว
รู้จักกับ Immich
Immich คือ Self-hosted สำหรับ Photos, Videos ซึ่งเป็นโซลูชันสำรองรูปภาพและวิดีโอด้วยตนเอง ช่วยให้เราสามารถจัดการรูปภาพและวิดีโอได้คล้ายกับ Google Photos โดย Immich มีความพิเศษดังนี้
- Self-Hosted: แตกต่างจาก Google Photos ตรงที่ Immich จะเก็บข้อมูลของคุณไว้บนเซิร์ฟเวอร์ของเราเอง และดูแลความเป็นส่วนตัวและความปลอดภัยด้วยตนเอง
- Mobile Backup: Immich รองรับการทำงานบน Mobile Apps ทั้ง iOS และ Android เพื่อให้สามารถสำรองรูปภาพและวิดีโอโดยตรงผ่านมือถือ
- Features: คุณสมบัติต่าง ๆ ที่น่าสนใจ เช่น การจดจําใบหน้า แยกแยะบุคคล การค้นหารูปภาพแบบง่าย และเป็นมิตรกับผู้ใช้งานคล้ายกับ Google Photos
- Open-Source: ซอฟต์แวร์เป ็นโอเพ่นซอร์ส ซึ่งหมายความว่าใช้งานฟรีโดยอิสระสําหรับทุกคน และความสามารถในการตรวจสอบและมีส่วนร่วมพัฒนาได้
หากกําลังมองหาทางเลือกอื่นที่เน้นความเป็นส่วนตัวแทน Google Photos ที่มีฟังก์ชันการทํางานคล้ายกัน Immich ก็เป็นตัวเลือกที่ดีในการพิจารณา อย่างไรก็ตามสิ่งสําคัญคือต้องเข้าใจการตั้งค่าและบํารุงรักษาระบบ ซึ่งก็ต้องใช้ความรู้ทางเทคนิคร่วมด้วย
สำหรับผู้ที่มี NAS อยู่แล้วถึงจะคุ้ม
(What is NAS from https://www.seagate.com/as/en/blog/what-is-nas-master-ti/)
ก่อนจะอ่านต่อ ขอเตือนว่าบทความนี้สำหรับผู้ที่มี NAS อยู่แล้วถึงจะคุ้มเพราะว่า
ใครที่ไม่มี NAS อยากลองติดตั้ง Immich ก็สามารถทำได้แต่ไม่แนะนำให้ใช้งานจริง (ถ้าเป็นข้อมูลที่สำคัญ) เพราะถ้า HDD เสียหรือพังข้อมูลจะเสียหายหมด
NAS คือเครื่องจัดเก็บข้อมูลโดยเป็น Hardware ที่ทำงานร่วมกับ Software เฉพาะมีลักษณะการทำงานคล้าย ๆ การเก็บข้อมูลบน Cloud Storage (Google Drive, Dropbox, หรืออื่นๆ) แต่ NAS จะเน้นการจัดเก็บข้อมูลในเครือข่าย (Network) ภายในบ้าน หรือในองค์กร
- ต้องใช้ระบบ RAID 1 หรือ RAID 5 (หรือตัวอื่นที่มีความสามารถเมื่อ HDD ตัวใดตัวหนึ่งพังแต่ระบบยังสามารถใช้งานได้)
- NAS ปัจจุบันมี 2 ประเภท
- แบบสำเร็จรูปพร้อมใช้งานก็มีขายทั่วไปที่ดัง ๆ มี 2 ยี่ห้อ เช่น Synology, QNAP (ลองดูราค าตามลิงค์ ราคาส่วนใหญ่ยังไม่รวม HDD) สำหรับผู้ไม่อยากทำอะไรเองเยอะ แค่อยากใช้งานแบบ User ทั่วไป
- แบบสร้างเอง ประเภทนี้ต้องหา Hardware มาประกอบเอง และติดตั้ง OS เอง ข้อดีคือได้สเปคที่สูงในราคาที่ถูก ข้อเสียคือต้องทำเองแก้ปัญหาทุกอย่าง ส่วน OS ดัง ๆ ได้แก่ TrueNAS Scale, OpenMediaVault, Unraid
RAID 1 หรือ RAID 5 คือการนำ HDD หลายตัวมาต่อกัน (Disk Array) เพื่อเพิ่มขนาดความจุ และเพิ่มความสามารถของ HDD รวมกัน อีกทั้งยังมีข้อดีที่สามารถเสียได้ทีละ 1 ลูก (จะเป็นตัวใดก็ได้) จากนั้นเราก็ซื้อตัวใหม่มาเปลี่ยน
ภาพรวมขั้นตอนทั้งหมด
- ติดตั้ง Immich
- (แถม) เพิ่มความสามารถเรื่อง Hardware acceleration สำหรับ Machine learning และ Transcoding
- ทดลอง Sync รูปภาพในมือถือผ่าน Immich App
- ดาวน์โหลดรูปภาพทั้งหมดจาก Google Photos (ผ่านบริการ Google Takeout)
- ย้ายรูปภาพจาก Google Photos ไปยัง Immich
- รู้จักกับ Immich External Library
- นำ .zip ของรูปภาพทั้งหมดของ Google Photos อัพโหลดไปยัง Immich (External Library Path)
- สร้าง Immich External Library ใหม่
- เพื่ม Immich External Library Path
- Scan รูปภาพใหม่จาก Immich External Library Path
การติดตั้ง Immich
(NAS ที่ใช้ระบบ RAID 5 ใช้งานส่วนตัวที่บ้านแบบประกอบเอง)
Hardware Specs ขั้นต่ำสำหรับ Immich
- OS: แนะนำ Linux (Ubuntu, Debian, etc)
- Windows ที่มี Docker Desktop หรือ WSL 2
- macOS ที่มี Docker Desktop
- RAM: ขั้นต่ำ 4GB (แนะนำ 6GB)
- CPU: ขั้นต่ำ 2 cores (แนะนำ 4 cores)
- Storage: แนะนำเป็น Unix-compatible filesystem (EXT4, ZFS, APFS, etc.) ที่สนับสนุนการทำ user/group ownership และ permissions
- รายละเอียดอื่น ๆ ทั้งหมด https://immich.app/docs/install/requirements
สำหรับการติดตั้ง Immich นั้นสามารถทำได้หลายวิธีสามารถอ่านได้จาก Immich install แต่สำหรับบทความนี้จะใช้ Docker ในการติดตั้งเพราะสะดวกต่อการดูแล และการอัปเดตในอนาคต
1. ติดตั้งผ่าน Docker (แนะนำ)
ขั้นตอนการติดตั้ง Immich นั้นมีหลายวิธีแต่บทความนี้จะใช้ Docker กับ Docker Compose ในการติดตั้งเพราะสะดวกต่อการดูแล และการอัปเดตในอนาคต
ขั้นตอนที่ 1
mkdir ./immich
cd ./immich
ดาวน์โหลด Template ของ docker-compose.yml
และ .env
จากคำสั่ง
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
เพิ่มความสามารถ Hardware acceleration สำหรับ Machine learning และ Transcoding
รายละเอียดเพิ่มเติม:
- https://immich.app/docs/features/hardware-transcoding
- https://immich.app/docs/features/ml-hardware-acceleration
เป็นการเพิ่มความสามารถในการประมวลผลรูปภาพโดยอาศัยความสามารถของ Hardware (CPU, GPU)
ตัวอย่างนี้จะเป็นการใช้ Hardware acceleration (CPU Intel) กำหนดค่าดังนี้
immich-microservices:
container_name: immich_microservices
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
file: hwaccel.transcoding.yml
service: quicksync # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-openvino
extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
file: hwaccel.ml.yml
service: openvino # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
wget -O hwaccel.transcoding.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml
wget -O hwaccel.ml.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml