1
0
Fork 0
mirror of https://github.com/alangrainger/immich-public-proxy.git synced 2024-12-28 03:41:58 +00:00
Share your Immich photos and albums in a safe way without exposing your Immich instance to the public.
Find a file
2024-10-30 12:36:17 +01:00
.github/ISSUE_TEMPLATE Update issue templates 2024-10-30 12:29:18 +01:00
dist Sanitize 2024-10-29 20:44:46 +01:00
public Add robots.txt 2024-10-30 12:36:17 +01:00
src Add robots.txt 2024-10-30 12:36:17 +01:00
views Update docs 2024-10-30 11:12:51 +01:00
.env.example Update docs 2024-10-29 19:57:44 +01:00
.eslintrc Convert to Typescript 2024-10-28 09:56:11 +01:00
.gitignore Initial commit 2024-10-28 09:08:16 +01:00
docker-compose.yml Update docs 2024-10-29 19:57:44 +01:00
LICENSE Add license 2024-10-28 10:26:27 +01:00
package-lock.json Add gallery 2024-10-28 20:47:14 +01:00
package.json Rebuild 2024-10-29 15:55:12 +01:00
README.md Update docs 2024-10-30 11:31:00 +01:00
tsconfig.json Convert to Typescript 2024-10-28 09:56:11 +01:00

Immich Public Proxy

Share your Immich photos and albums in a safe way without exposing your Immich instance to the public.

Immich is a wonderful bit of software, but since it holds all your private photos it's best to keep it fully locked down. This presents a problem when you want to share a photo or a gallery with someone.

Immich Public Proxy provides a barrier of security between the public and Immich, and only allows through requests which you have publicly shared. When it receives a valid request, it talks to Immich locally via API and returns only those shared images.

It exposes no ports, allows no incoming data, and has no API to exploit.

The ideal setup is to have Immich secured privately behind VPN or mTLS, and only allow public access to Immich Public Proxy.

Live demo

How to install with Docker

  1. Clone the repo:
git clone https://github.com/alangrainger/immich-public-proxy.git
  1. Create a .env file to configure the app.
IMMICH_URL=http://localhost:2283
API_KEY="Get this from your Immich Account Settings page"
PORT=3000
CACHE_AGE=2592000
  • IMMICH_URL is the URL to access Immich in your local network. This is not your public URL.
  • API_KEY get this from the Account Settings page of your Immich user account.
  • CACHE_AGE this is setting the cache-control header, to tell the browser to cache the assets. Set to 0 to disable caching.
  1. Start the docker container:
docker-compose up -d
  1. Set the "External domain" in your Immich Server Settings to be the same as the public URL for your Immich Public Proxy:

Now whenever you share an image or gallery through Immich, it will automatically create the correct public path for you.

Configuration

The gallery is created using lightGallery. You can change various settings to change how your gallery displays by updating the lightGallery section in /views/gallery.ejs:

lightGallery(document.getElementById('lightgallery'), {
  plugins: [lgZoom, lgThumbnail, lgVideo, lgFullscreen],
  speed: 500
})

For example to disable the download button for images, you would add download: false:

lightGallery(document.getElementById('lightgallery'), {
  plugins: [lgZoom, lgThumbnail, lgVideo, lgFullscreen],
  download: false,
  speed: 500
})

You can find all of lightGallery's settings here:

https://www.lightgalleryjs.com/docs/settings/