mirror of
https://github.com/alangrainger/immich-public-proxy.git
synced 2024-12-29 12:21:57 +00:00
Add custom configuration
This commit is contained in:
parent
ca7236022b
commit
5d93fb9662
7 changed files with 59 additions and 28 deletions
48
README.md
48
README.md
|
@ -13,7 +13,7 @@ Share your Immich photos and albums in a safe way without exposing your Immich i
|
||||||
- [Install with Docker](#how-to-install-with-docker)
|
- [Install with Docker](#how-to-install-with-docker)
|
||||||
- [How to use it](#how-to-use-it)
|
- [How to use it](#how-to-use-it)
|
||||||
- [How it works](#how-it-works)
|
- [How it works](#how-it-works)
|
||||||
- [Additional configuration](#configuration)
|
- [Additional configuration](#additional-configuration)
|
||||||
- [Feature requests](#feature-requests)
|
- [Feature requests](#feature-requests)
|
||||||
|
|
||||||
## About this project
|
## About this project
|
||||||
|
@ -82,7 +82,7 @@ Other than the initial configuration above, everything else is managed through I
|
||||||
You share your photos/videos as normal through Immich. Because you have set the **External domain** in Immich settings
|
You share your photos/videos as normal through Immich. Because you have set the **External domain** in Immich settings
|
||||||
to be the URL for your proxy app, the links that Immich generates will automaticaly have the correct URL:
|
to be the URL for your proxy app, the links that Immich generates will automaticaly have the correct URL:
|
||||||
|
|
||||||
<img src="docs/share-link.webp" width="601" height="419">
|
<img src="docs/share-link.webp" width="751" height="524">
|
||||||
|
|
||||||
## How it works
|
## How it works
|
||||||
|
|
||||||
|
@ -102,32 +102,40 @@ individual image or gallery.
|
||||||
|
|
||||||
If the shared link has expired or any of the assets have been put in the Immich trash, it will not return those.
|
If the shared link has expired or any of the assets have been put in the Immich trash, it will not return those.
|
||||||
|
|
||||||
## Configuration
|
## Additional configuration
|
||||||
|
|
||||||
The gallery is created using [lightGallery](https://github.com/sachinchoolur/lightGallery). You can change various settings to change how your gallery displays by
|
The gallery is created using [lightGallery](https://github.com/sachinchoolur/lightGallery). You can adjust various settings to customise how your gallery displays.
|
||||||
updating the `lightGallery` section in `/views/gallery.ejs`:
|
|
||||||
|
|
||||||
```javascript
|
1. Make a copy of `config.json` in the same folder as your `docker-compose.yml`.
|
||||||
lightGallery(document.getElementById('lightgallery'), {
|
|
||||||
plugins: [lgZoom, lgThumbnail, lgVideo, lgFullscreen],
|
2. Pass the config to your docker container by adding a volume like this:
|
||||||
speed: 500
|
|
||||||
})
|
```yaml
|
||||||
|
volumes:
|
||||||
|
- ./config.json:/app/config.json:ro
|
||||||
```
|
```
|
||||||
|
|
||||||
For example to disable the download button for images, you would add `download: false`:
|
3. Restart your container and your custom configuration should be active.
|
||||||
|
|
||||||
```javascript
|
|
||||||
lightGallery(document.getElementById('lightgallery'), {
|
|
||||||
plugins: [lgZoom, lgThumbnail, lgVideo, lgFullscreen],
|
|
||||||
download: false,
|
|
||||||
speed: 500
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
You can find all of lightGallery's settings here:
|
You can find all of lightGallery's settings here:
|
||||||
|
|
||||||
https://www.lightgalleryjs.com/docs/settings/
|
https://www.lightgalleryjs.com/docs/settings/
|
||||||
|
|
||||||
|
For example to disable the download button for images, you would change `download` to `false`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"lightGallery": {
|
||||||
|
"controls": true,
|
||||||
|
"download": false,
|
||||||
|
"mobileSettings": {
|
||||||
|
"controls": false,
|
||||||
|
"showCloseIcon": true,
|
||||||
|
"download": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Feature requests
|
## Feature requests
|
||||||
|
|
||||||
You can [add feature requests here](https://github.com/alangrainger/immich-public-proxy/discussions/categories/feature-requests?discussions_q=is%3Aopen+category%3A%22Feature+Requests%22+sort%3Atop),
|
You can [add feature requests here](https://github.com/alangrainger/immich-public-proxy/discussions/categories/feature-requests?discussions_q=is%3Aopen+category%3A%22Feature+Requests%22+sort%3Atop),
|
||||||
|
|
11
config.json
Normal file
11
config.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"lightGallery": {
|
||||||
|
"controls": true,
|
||||||
|
"download": true,
|
||||||
|
"mobileSettings": {
|
||||||
|
"controls": false,
|
||||||
|
"showCloseIcon": true,
|
||||||
|
"download": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,8 @@ services:
|
||||||
- NODE_ENV=production
|
- NODE_ENV=production
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
|
volumes:
|
||||||
|
- ./config.json:/app/config.json:ro
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: node /app/healthcheck.js
|
test: node /app/healthcheck.js
|
||||||
interval: 120s
|
interval: 120s
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "immich-public-proxy",
|
"name": "immich-public-proxy",
|
||||||
"version": "1.3.1",
|
"version": "1.3.2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "ts-node src/index.ts",
|
"dev": "ts-node src/index.ts",
|
||||||
"build": "npx tsc",
|
"build": "npx tsc",
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
function initLightGallery () {
|
function initLightGallery (config = {}) {
|
||||||
lightGallery(document.getElementById('lightgallery'), {
|
lightGallery(document.getElementById('lightgallery'), Object.assign({
|
||||||
plugins: [lgZoom, lgThumbnail, lgVideo, lgFullscreen],
|
plugins: [lgZoom, lgThumbnail, lgVideo, lgFullscreen],
|
||||||
/*
|
/*
|
||||||
This license key was graciously provided by LightGallery under their
|
This license key was graciously provided by LightGallery under their
|
||||||
GPLv3 open-source project license:
|
GPLv3 open-source project license:
|
||||||
*/
|
*/
|
||||||
licenseKey: '8FFA6495-676C4D30-8BFC54B6-4D0A6CEC',
|
licenseKey: '8FFA6495-676C4D30-8BFC54B6-4D0A6CEC'
|
||||||
/*
|
/*
|
||||||
Please do not take it and use it for other projects, as it was provided
|
Please do not take it and use it for other projects, as it was provided
|
||||||
specifically for Immich Public Proxy.
|
specifically for Immich Public Proxy.
|
||||||
|
@ -15,6 +15,5 @@ function initLightGallery () {
|
||||||
|
|
||||||
https://www.lightgalleryjs.com/docs/settings/#licenseKey
|
https://www.lightgalleryjs.com/docs/settings/#licenseKey
|
||||||
*/
|
*/
|
||||||
speed: 500
|
}, config))
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,16 @@ import { Response } from 'express-serve-static-core'
|
||||||
import { Asset, AssetType, ImageSize, SharedLink } from './types'
|
import { Asset, AssetType, ImageSize, SharedLink } from './types'
|
||||||
|
|
||||||
class Render {
|
class Render {
|
||||||
|
lgConfig = {}
|
||||||
|
|
||||||
|
constructor () {
|
||||||
|
try {
|
||||||
|
// Import user-provided lightGallery config (if exists)
|
||||||
|
const config = require('../config.json')
|
||||||
|
if (typeof config === 'object' && config.lightGallery) this.lgConfig = config.lightGallery
|
||||||
|
} catch (e) { }
|
||||||
|
}
|
||||||
|
|
||||||
async assetBuffer (res: Response, asset: Asset, size?: ImageSize) {
|
async assetBuffer (res: Response, asset: Asset, size?: ImageSize) {
|
||||||
const data = await immich.getAssetBuffer(asset, size)
|
const data = await immich.getAssetBuffer(asset, size)
|
||||||
if (data) {
|
if (data) {
|
||||||
|
@ -50,7 +60,8 @@ class Render {
|
||||||
res.render('gallery', {
|
res.render('gallery', {
|
||||||
items,
|
items,
|
||||||
openItem,
|
openItem,
|
||||||
title: this.title(share)
|
title: this.title(share),
|
||||||
|
lgConfig: this.lgConfig
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
<script src="/lg-video.min.js"></script>
|
<script src="/lg-video.min.js"></script>
|
||||||
<script src="/lg-zoom.min.js"></script>
|
<script src="/lg-zoom.min.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
initLightGallery() // from web.js
|
initLightGallery(<%- JSON.stringify(lgConfig) %>) // initLightGallery imported from web.js
|
||||||
<% if (openItem) { %>
|
<% if (openItem) { %>
|
||||||
const openItem = <%- openItem %>
|
const openItem = <%- openItem %>
|
||||||
const thumbs = document.querySelectorAll('#lightgallery a')
|
const thumbs = document.querySelectorAll('#lightgallery a')
|
||||||
|
|
Loading…
Reference in a new issue