แบ่งปันภาพถ่ายและอัลบั้ม Immich ของคุณอย่างปลอดภัยโดยไม่ต้องเปิดเผยอินสแตนซ์ Immich ของคุณต่อสาธารณะ
การตั้งค่าใช้เวลาไม่ถึงหนึ่งนาที และคุณไม่จำเป็นต้องแตะมันอีกเลย เนื่องจากการแบ่งปันทั้งหมดของคุณได้รับการจัดการภายใน Immich
เกี่ยวกับโครงการนี้
ติดตั้งด้วยนักเทียบท่า
วิธีการใช้งาน
มันทำงานอย่างไร
การกำหนดค่าเพิ่มเติม
การแก้ไขปัญหา
คำขอคุณสมบัติ
Immich เป็นซอฟต์แวร์ที่ยอดเยี่ยม แต่เนื่องจากมันเก็บภาพถ่ายส่วนตัวทั้งหมดของคุณไว้ จึงเป็นการดีที่สุดที่จะล็อคมันไว้อย่างสมบูรณ์ ปัญหานี้ทำให้เกิดปัญหาเมื่อคุณต้องการแชร์รูปภาพหรือแกลเลอรีกับบุคคลอื่น
Immich Public Proxy มอบกำแพงรักษาความปลอดภัยระหว่างสาธารณะและ Immich และอนุญาต เฉพาะคำขอที่คุณแชร์แบบสาธารณะเท่านั้น
ไม่มีสถานะและไม่ทราบอะไรเกี่ยวกับอินสแตนซ์ Immich ของคุณ ไม่จำเป็นต้องมีคีย์ API ซึ่งจะช่วยลดพื้นผิวการโจมตีให้ดียิ่งขึ้นไปอีก สิ่งเดียวที่พร็อกซีสามารถเข้าถึงได้คือรูปถ่ายที่คุณเปิดเผยต่อสาธารณะใน Immich
ดูแกลเลอรีสาธิตสดที่ให้บริการโดยตรงจากอินสแตนซ์ Immich ของฉันเอง
รองรับการแชร์รูปภาพและวิดีโอ
รองรับการแชร์ที่มีการป้องกันด้วยรหัสผ่าน
หากแชร์รูปภาพเดียว ตามค่าเริ่มต้น ลิงก์จะเปิดไฟล์รูปภาพนั้นโดยตรง เพื่อให้คุณสามารถฝังไว้ที่ใดก็ได้ที่ไม่ใช่รูปภาพปกติ (สิ่งนี้สามารถกำหนดค่าได้)
การใช้งานทั้งหมดเกิดขึ้นผ่าน Immich - คุณไม่จำเป็นต้องแตะแอปนี้หลังจากการกำหนดค่าเริ่มต้น
/share/
สู่สาธารณะเท่านั้น หากต้องการดูอัลบั้มที่แชร์ใน Immich คุณต้องเข้าถึงเส้นทาง /api/
หากคุณกำลังแชร์แกลเลอรีกับสาธารณะ คุณต้องทำให้เส้นทางนั้นเป็นสาธารณะ ช่องโหว่ที่มีอยู่หรือในอนาคตมีโอกาสที่จะโจมตีอินสแตนซ์ Immich ของคุณได้
สำหรับฉัน การตั้งค่าที่เหมาะสมที่สุดคือให้ Immich ปลอดภัยแบบส่วนตัวหลัง mTLS หรือ VPN และอนุญาตให้สาธารณะเข้าถึง Immich Public Proxy เท่านั้น นี่คือตัวอย่างการตั้งค่าสำหรับการรักษาความปลอดภัย Immich เบื้องหลัง mTLS โดยใช้ Caddy
ดาวน์โหลดไฟล์ docker-compose.yml
อัปเดตค่าสำหรับ IMMICH_URL
ในไฟล์เขียนนักเทียบท่าของคุณให้ชี้ไปที่ URL ในเครื่องของคุณสำหรับ Immich นี่ไม่ควรเป็น URL สาธารณะ
เริ่มคอนเทนเนอร์นักเทียบท่า คุณสามารถทดสอบได้ว่าใช้งานได้หรือไม่โดยไปที่ https://your-proxy-url.com/healthcheck
ตรวจสอบเอาต์พุตคอนโซลคอนเทนเนอร์เพื่อดูข้อความแสดงข้อผิดพลาด
นักเทียบท่าเขียนขึ้น -d
ตั้งค่า "โดเมนภายนอก" ใน การตั้งค่าเซิร์ฟเวอร์ Immich ของคุณให้เป็นโดเมนใดก็ตามที่คุณใช้เพื่อให้บริการ Immich Public Proxy แบบสาธารณะ:
ตอนนี้เมื่อใดก็ตามที่คุณแชร์รูปภาพหรือแกลเลอรี่ผ่าน Immich มันจะสร้างเส้นทางสาธารณะที่ถูกต้องให้คุณโดยอัตโนมัติ
สิ่งสำคัญ : หากคุณใช้ Cloudflare โปรดตรวจสอบให้แน่ใจว่าได้ตั้งค่าเส้นทาง /share/video/*
ของคุณเป็น Bypass Cache ไม่เช่นนั้นคุณอาจประสบปัญหาในการเล่นวิดีโอ ดูการแก้ไขปัญหาสำหรับข้อมูลเพิ่มเติม
เนื่องจากเส้นทาง IPP ทั้งหมดอยู่ภายใต้ /share/...
คุณจึงสามารถเรียกใช้ Immich Public Proxy และ Immich บนโดเมนเดียวกันได้
ดูคำแนะนำที่นี่: ทำงานบนโดเมนเดียว
นอกเหนือจากการกำหนดค่าเริ่มต้นข้างต้น ทุกอย่างได้รับการจัดการผ่าน Immich
คุณแบ่งปันภาพถ่าย/วิดีโอของคุณตามปกติผ่าน Immich เนื่องจากคุณได้ตั้ง ค่าโดเมนภายนอก ในการตั้งค่า Immich ให้เป็น URL สำหรับแอปพร็อกซีของคุณ ลิงก์ที่ Immich สร้างจะมี URL ที่ถูกต้องโดยอัตโนมัติ:
เมื่อพร็อกซีได้รับคำขอ มันจะมาเป็นลิงก์ดังนี้:
https://your-proxy-url.com/share/ffSw63qnIYMtpmg0RNvOui0Dpio7BbxsObjvH8YZaobIjIAzl5n7zTX5d6EDHdOYEvo
ส่วนหลัง /share/
คือ ID สาธารณะของลิงก์ที่แชร์ของ Immich (เรียกว่า key
ในเอกสาร)
Immich Public Proxy รับคีย์นั้นและทำการเรียก API ไปยังอินสแตนซ์ Immich ของคุณผ่านเครือข่ายท้องถิ่นของคุณ เพื่อถามว่ารูปภาพหรือวิดีโอใดบ้างที่แชร์ใน URL ที่แชร์นั้น
หากเป็น URL ที่ใช้ร่วมกันที่ถูกต้อง พร็อกซีจะดึงเฉพาะเนื้อหาเหล่านั้นผ่าน API ในเครื่อง และส่งคืนให้ผู้เยี่ยมชมเป็นภาพหรือแกลเลอรีแต่ละรายการ
หากลิงก์ที่แชร์หมดอายุหรือเนื้อหาใด ๆ ถูกทิ้งลงในถังขยะของ Immich ลิงก์นั้นจะไม่ส่งคืนสิ่งเหล่านั้น
ข้อมูลขาเข้าทั้งหมดได้รับการตรวจสอบและฆ่าเชื้อ และสิ่งที่ไม่คาดคิดก็จะหายไปด้วย 404
มีตัวเลือกการกำหนดค่าเพิ่มเติมบางอย่างที่คุณสามารถเปลี่ยนแปลงได้ เช่น วิธีการตั้งค่าแกลเลอรี
ทำสำเนาของ config.json ในโฟลเดอร์เดียวกับ docker-compose.yml
ของคุณ
ส่งการกำหนดค่าไปยังคอนเทนเนอร์นักเทียบท่าของคุณโดยเพิ่มวอลุ่มดังนี้:
เล่ม: - ./config.json:/app/config.json:ro
รีสตาร์ทคอนเทนเนอร์ของคุณและการกำหนดค่าแบบกำหนดเองของคุณควรใช้งานได้
ตัวเลือก | คำอธิบาย |
---|---|
responseHeaders | เปลี่ยนส่วนหัวที่ส่งมาพร้อมกับการตอบกลับเว็บของคุณ ตามค่าเริ่มต้นจะมี cache-control และเพิ่ม CORS |
downloadOriginalPhoto | ตั้งค่าเป็น false หากคุณต้องการให้ผู้อื่นสามารถดาวน์โหลดภาพถ่ายคุณภาพ 'ตัวอย่าง' ได้ แทนที่จะเป็นภาพถ่ายต้นฉบับของคุณ |
showGalleryTitle | แสดงชื่อในหน้าแกลเลอรี |
allowDownloadAll | อนุญาตให้ผู้เยี่ยมชมดาวน์โหลดไฟล์ทั้งหมดในรูปแบบ zip |
แกลเลอรีถูกสร้างขึ้นโดยใช้ lightGallery คุณสามารถค้นหาการตั้งค่าทั้งหมดของ lightGallery ได้ที่นี่: https://www.lightgalleryjs.com/docs/settings/
ตัวอย่างเช่น หากต้องการปิดใช้งานปุ่มดาวน์โหลดสำหรับรูปภาพ คุณจะต้องแก้ไขส่วน lightGallery
และเปลี่ยน download
เป็น false
:
{ "lightGallery": { "การควบคุม": จริง "ดาวน์โหลด": เท็จ "การตั้งค่ามือถือ": { "การควบคุม": เท็จ "showCloseIcon": จริง "ดาวน์โหลด": เท็จ - - -
หากคุณใช้ Cloudflare และมีปัญหากับวิดีโอที่เล่นได้ไม่ดี ตรวจสอบให้แน่ใจว่า /share/video/
พาธของคุณได้รับการตั้งค่าเป็นบายพาสแคช ฉันพบปัญหานี้ด้วยตัวเอง และพบคำแนะนำที่เป็นประโยชน์ที่นี่
คุณสามารถเพิ่มคำขอคุณลักษณะได้ที่นี่ แต่เป้าหมายของฉันในโปรเจ็กต์นี้คือการทำให้โปรเจ็กต์มีความคล่องตัวมากที่สุด
เนื่องจากความละเอียดอ่อนของข้อมูลที่มีอยู่ใน Immich ฉันต้องการให้ใครก็ตามที่มีความรู้ด้านการเขียนโค้ดเพียงเล็กน้อยสามารถอ่านโค้ดเบสนี้ได้และเข้าใจทุกอย่างที่กำลังทำอยู่อย่างถ่องแท้
สิ่งที่ไม่ได้รับการพิจารณาสำหรับโครงการนี้คือ:
สิ่งใดก็ตามที่แก้ไข Immich หรือไฟล์ของมันในทางใดทางหนึ่ง หากต้องใช้คีย์ API หรือการเข้าถึงแบบมีสิทธิ์พิเศษ จะไม่ถือเป็นคุณลักษณะใหม่
การอัปโหลดรูปภาพ (ดูด้านบน)