diff --git a/.env.example b/.env.example index 6d94329..72a1784 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ IMMICH_URL=http://localhost:2283 -API_KEY="Get this from your Account Settings page" -SERVER_URL=http://localhost:3000 +API_KEY="Get this from your Immich Account Settings page" +SERVER_URL=https://shared.example.com SERVER_PORT=3000 diff --git a/README.md b/README.md new file mode 100644 index 0000000..5c4ff47 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# Immich Public Proxy + +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. + +## How to install + +1. Clone the repo: + +```bash +git clone https://github.com/alangrainger/immich-public-proxy.git +``` + +2. Create a `.env` file to configure the app. + +``` +IMMICH_URL=http://localhost:2283 +API_KEY="Get this from your Immich Account Settings page" +SERVER_URL=https://shared.example.com +SERVER_PORT=3000 +``` + +- `IMMICH_URL` is the URL to access Immich in your local network. This is not your public URL. +- `SERVER_URL` will be the public URL for accessing this Immich Public Proxy app. + +3. Start the docker container: + +```bash +docker-compose up -d +``` + +4. Set the same `SERVER_URL` as your "External domain" in your Immich **Server Settings**: + + + +Now whenever you share an image or gallery through Immich, it will automatically create the +correct public path for you. diff --git a/package.json b/package.json index 3715649..000451a 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "devDependencies": { "@types/express": "^4.17.21", "@types/node": "^16.18.111", - "@immich/sdk": "^1.118.2", "@typescript-eslint/eslint-plugin": "5.29.0", "@typescript-eslint/parser": "5.29.0", "eslint": "^8.49.0", diff --git a/public/images/server-settings.png b/public/images/server-settings.png new file mode 100644 index 0000000..3754b6e Binary files /dev/null and b/public/images/server-settings.png differ