Bagikan foto dan album Immich Anda dengan cara yang aman tanpa memaparkan contoh Immich Anda ke publik.
Penyiapan membutuhkan waktu kurang dari satu menit, dan Anda tidak perlu menyentuhnya lagi karena semua aktivitas berbagi Anda tetap dikelola dalam Immich.
Tentang proyek ini
Instal dengan Docker
Bagaimana cara menggunakannya
Bagaimana cara kerjanya
Konfigurasi tambahan
Pemecahan masalah
Permintaan fitur
Immich adalah perangkat lunak yang luar biasa, tetapi karena ia menyimpan semua foto pribadi Anda, sebaiknya tetap terkunci sepenuhnya. Hal ini menimbulkan masalah ketika Anda ingin berbagi foto atau galeri dengan seseorang.
Proxy Publik Immich memberikan penghalang keamanan antara publik dan Immich, dan hanya mengizinkan melalui permintaan yang telah Anda bagikan secara publik.
Itu tidak memiliki kewarganegaraan dan tidak tahu apa pun tentang instance Immich Anda. Itu tidak memerlukan kunci API yang mengurangi permukaan serangan lebih jauh. Satu-satunya hal yang dapat diakses oleh proxy adalah foto yang Anda buat tersedia untuk umum di Immich.
Lihat galeri demo langsung yang disajikan langsung dari contoh Immich saya sendiri.
Mendukung berbagi foto dan video.
Mendukung pembagian yang dilindungi kata sandi.
Jika membagikan satu gambar, secara default tautan akan langsung membuka file gambar tersebut sehingga Anda dapat menyematkannya di mana pun Anda ingin menggunakan gambar normal. (Ini dapat dikonfigurasi.)
Semua penggunaan terjadi melalui Immich - Anda tidak perlu menyentuh aplikasi ini setelah konfigurasi awal.
/share/
ke publik? Untuk melihat album bersama di Immich, Anda memerlukan akses ke jalur /api/
. Jika Anda berbagi galeri dengan publik, Anda perlu menjadikan jalur tersebut publik. Kerentanan apa pun yang ada atau di masa depan berpotensi membahayakan instans Immich Anda.
Bagi saya, pengaturan yang ideal adalah mengamankan Immich secara pribadi di belakang mTLS atau VPN, dan hanya mengizinkan akses publik ke Proxy Publik Immich. Berikut adalah contoh pengaturan untuk mengamankan Immich di belakang mTLS menggunakan Caddy.
Unduh file docker-compose.yml.
Perbarui nilai IMMICH_URL
di file penulisan buruh pelabuhan Anda agar mengarah ke URL lokal Anda untuk Immich. Ini tidak boleh menjadi URL publik.
Mulai wadah buruh pelabuhan. Anda dapat menguji apakah ini berfungsi dengan mengunjungi https://your-proxy-url.com/healthcheck
. Periksa keluaran konsol kontainer untuk melihat pesan kesalahan apa pun.
buruh pelabuhan-menulis -d
Tetapkan "Domain eksternal" di Pengaturan Server Immich Anda menjadi domain apa pun yang Anda gunakan untuk melayani Proxy Publik Immich secara publik:
Sekarang setiap kali Anda membagikan gambar atau galeri melalui Immich, secara otomatis akan membuat jalur publik yang benar untuk Anda.
PENTING : Jika Anda menggunakan Cloudflare, pastikan untuk menyetel jalur /share/video/*
Anda ke Bypass Cache, jika tidak, Anda mungkin mengalami masalah pemutaran video. Lihat Pemecahan Masalah untuk informasi lebih lanjut.
Karena semua jalur IPP berada di bawah /share/...
, Anda dapat menjalankan Immich Public Proxy dan Immich di domain yang sama.
Lihat petunjuknya di sini: Berjalan di satu domain.
Selain konfigurasi awal di atas, semuanya dikelola melalui Immich.
Anda membagikan foto/video Anda seperti biasa melalui Immich. Karena Anda telah menetapkan domain Eksternal di pengaturan Immich menjadi URL untuk aplikasi proxy Anda, tautan yang dihasilkan Immich akan secara otomatis memiliki URL yang benar:
Ketika proxy menerima permintaan, itu akan muncul sebagai tautan seperti ini:
https://your-proxy-url.com/share/ffSw63qnIYMtpmg0RNvOui0Dpio7BbxsObjvH8YZaobIjIAzl5n7zTX5d6EDHdOYEvo
Bagian setelah /share/
adalah ID publik tautan bersama Immich (disebut key
dalam dokumen).
Proksi Publik Immich mengambil kunci itu dan membuat panggilan API ke instance Immich Anda melalui jaringan lokal Anda, untuk menanyakan foto atau video apa yang dibagikan di URL yang dibagikan itu.
Jika itu adalah URL berbagi yang valid, proksi hanya mengambil aset tersebut melalui API lokal dan mengembalikannya kepada pengunjung sebagai gambar atau galeri individual.
Jika tautan yang dibagikan telah kedaluwarsa atau aset apa pun telah dibuang ke sampah Immich, aset tersebut tidak akan dikembalikan.
Semua data yang masuk divalidasi dan dibersihkan, dan segala sesuatu yang tidak terduga akan dibuang begitu saja dengan 404.
Ada beberapa opsi konfigurasi tambahan yang dapat Anda ubah, misalnya cara pengaturan galeri.
Buat salinan config.json di folder yang sama dengan docker-compose.yml
Anda.
Teruskan konfigurasi ke wadah buruh pelabuhan Anda dengan menambahkan volume seperti ini:
volume: - ./config.json:/app/config.json:ro
Mulai ulang penampung Anda dan konfigurasi khusus Anda akan aktif.
Pilihan | Keterangan |
---|---|
responseHeaders | Ubah header yang dikirimkan bersama respons web Anda. Secara default ada cache-control dan CORS ditambahkan. |
downloadOriginalPhoto | Setel ke false jika Anda hanya ingin orang-orang dapat mendownload foto berkualitas 'pratinjau', bukan foto asli Anda. |
showGalleryTitle | Tampilkan judul di halaman galeri. |
allowDownloadAll | Izinkan pengunjung mengunduh semua file sebagai zip. |
Galeri dibuat menggunakan lightGallery. Anda dapat menemukan semua pengaturan lightGallery di sini: https://www.lightgalleryjs.com/docs/settings/
Misalnya, untuk menonaktifkan tombol unduh gambar, Anda perlu mengedit bagian lightGallery
dan mengubah download
menjadi false
:
{ "lightGallery": { "kontrol": benar, "unduh": salah, "mobileSettings": { "kontrol": salah, "showCloseIcon": benar, "unduh": salah } } }
Jika Anda menggunakan Cloudflare dan mengalami masalah dengan video yang tidak diputar dengan baik, pastikan jalur /share/video/
Anda disetel untuk melewati cache. Saya sendiri mengalami masalah ini, dan menemukan beberapa saran berguna di sini.
Anda dapat menambahkan permintaan fitur di sini, namun tujuan saya dengan proyek ini adalah membuatnya seramping mungkin.
Karena sensitivitas data yang terkandung dalam Immich, saya ingin siapa pun yang memiliki sedikit pengetahuan pengkodean dapat membaca basis kode ini dan memahami sepenuhnya semua yang dilakukannya.
Hal-hal yang tidak diperhatikan untuk proyek ini adalah:
Apa pun yang mengubah Immich atau filenya dengan cara apa pun. Jika memerlukan kunci API atau akses istimewa, fitur ini tidak akan dianggap sebagai fitur baru.
Mengunggah foto (lihat di atas).