102 lines
3.4 KiB
Markdown
102 lines
3.4 KiB
Markdown
# Immich automatic Person -> Album
|
|
|
|
Automatically add people (faces) to an album and keep that album up-to-date. You can then share that automatic person-album
|
|
with another user (for example, a shared album of your children).
|
|
|
|
You can arbitrarily add any face/person to any album. So you could make a "Family" album which contains all your family
|
|
members and is automatically updated.
|
|
|
|
You can use API keys from any number of Immich users, so the one Docker container can handle doing automatic
|
|
albums for all your users.
|
|
|
|
## Setup
|
|
|
|
Take a copy of the [docker-compose.yml](https://github.com/alangrainger/immich-person-to-album/blob/main/docker-compose.yml) file.
|
|
|
|
```yaml
|
|
services:
|
|
immich-person-to-album:
|
|
image: alangrainger/immich-person-to-album:latest
|
|
restart: always
|
|
volumes:
|
|
- ./data:/data
|
|
```
|
|
|
|
There are two methods for specifying the config options:
|
|
|
|
### Configure via `config.json` file
|
|
|
|
1. In the folder which contains your `docker-compose.yml` file, create a `/data/` folder.
|
|
2. Inside the `data` folder, put a copy of [config.json](https://github.com/alangrainger/immich-person-to-album/blob/main/data/config.json.example).
|
|
3. Edit the `config.json` file as required.
|
|
|
|
### ...or via Inline configuration
|
|
|
|
Alternatively, you can add the configuration inline in your `docker-compose.yml` file like this:
|
|
|
|
```yaml
|
|
volumes:
|
|
- ./data:/data
|
|
environment:
|
|
CONFIG: |
|
|
{
|
|
"immichServer": "http://192.168.0.20:2283",
|
|
"schedule": "*/30 * * * *",
|
|
"startDate": "2026-07-27T00:00:00.000Z",
|
|
"users": [
|
|
{
|
|
"apiKey": "XXXXXXXXXX", # Immich user's API key (read-only access)
|
|
"personLinks": [
|
|
{
|
|
"description": "Photos of Joe",
|
|
"personId": "YYYYYYYYYY", # Joe's person ID
|
|
"albumId": "ZZZZZZZZZZ" # Shared album ID
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Create an API key
|
|
|
|
1. Open Immich on desktop
|
|
2. Click on your profile picture
|
|
3. Click **Account Settings**
|
|
4. Go to API Keys
|
|
5. Click **New API Key**
|
|
6. Give it a name
|
|
7. Add the permissions of `asset.read` and `albumAsset.create`
|
|
8. Click **Create**
|
|
9. Copy the new API key and put it in your config file
|
|
|
|
### Get your person and album IDs
|
|
|
|
Person IDs:
|
|
|
|
- Immich → Explore → People → Click person → Copy ID from URL
|
|
- Example URL: http://your-server/people/f3437c84-83f9-4e84-9640-0dcd12efd08e
|
|
- Person ID: f3437c84-83f9-4e84-9640-0dcd12efd08e
|
|
|
|
Album IDs:
|
|
|
|
- Immich → Albums → Click album → Copy ID from URL
|
|
- Example URL: http://your-server/albums/ff85e8c5-32e6-49e0-a0ad-e4dd7ef66bce
|
|
- Album ID: ff85e8c5-32e6-49e0-a0ad-e4dd7ef66bce
|
|
|
|
## Troubleshooting
|
|
|
|
Make sure you can access your Immich API from inside the `immich-person-to-album` container. Run this command from outside the container, making sure to replace the address with your Immich server address:
|
|
|
|
```bash
|
|
docker exec immich-person-to-album sh -c "wget -qO- http://192.168.0.20:2283/api/server/ping"
|
|
```
|
|
|
|
It will return `{"res":"pong"}` if Immich is accessible to the `immich-person-to-album` container.
|
|
|
|
## Acknowledgements
|
|
|
|
Thanks to https://github.com/ajb3932/immich-partner-sharing for the idea and for some of the readme text.
|
|
|
|
The only reason for making this project is that at time of release, the above project [hadn't been updated](https://github.com/ajb3932/immich-partner-sharing/issues/4) to support Immich 2.x.
|