forked from immich-app/immich
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[docs]: Document environment variables (immich-app#2814)
* draft env vars * remove mapbox refs, fixes immich-app#2535 * formatting and add some notes * add examples for redis and typesense url * [skipci] add note for redis socket * do some formatting * update md * fix url * fix variable * add web for NODE_ENV * fix variable name * Apply suggestions from code review Co-authored-by: Jason Rasmussen <[email protected]> * address review feedback * Update docker/example.env Co-authored-by: Jason Rasmussen <[email protected]> * add section for docker compose envs --------- Co-authored-by: Jason Rasmussen <[email protected]>
- Loading branch information
Showing
3 changed files
with
192 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
# Environment Variables | ||
|
||
## Docker Compose | ||
|
||
| Variable | Description | Default | Services | | ||
| :---------------- | :-------------------- | :-------: | :------------------------------------------------------------- | | ||
| `IMMICH_VERSION` | Image tags | `release` | server, microservices, machine learning, web, proxy, typesense | | ||
| `UPLOAD_LOCATION` | Host Path for uploads | | server, microservices | | ||
|
||
:::tip | ||
|
||
These environment variables are used by the `docker-compose.yml` file and do **NOT** affect the containers directly. | ||
|
||
::: | ||
|
||
## General | ||
|
||
| Variable | Description | Default | Services | | ||
| :---------------------- | :------------------------------------------- | :----------: | :------------------------------------------- | | ||
| `TZ` | Timezone | | microservices | | ||
| `NODE_ENV` | Environment (production, development) | `production` | server, microservices, machine learning, web | | ||
| `LOG_LEVEL` | Log Level (verbose, debug, log, warn, error) | `log` | server, microservices | | ||
| `IMMICH_MEDIA_LOCATION` | Media Location | `./upload` | server, microservices | | ||
|
||
:::tip | ||
|
||
`TZ` is only used by the `exiftool` as a fallback in case the timezone cannot be determined from the image metadata. | ||
|
||
`exiftool` is only present in the microservices container. | ||
|
||
::: | ||
|
||
## Geocoding | ||
|
||
| Variable | Description | Default | Services | | ||
| :--------------------------------- | :---------------------------------- | :--------------------------: | :------------ | | ||
| `DISABLE_REVERSE_GEOCODING` | Disable Reverse Geocoding Precision | `false` | microservices | | ||
| `REVERSE_GEOCODING_PRECISION` | Reverse Geocoding Precision | `3` | microservices | | ||
| `PUBLIC_LOGIN_PAGE_MESSAGE` | Public Login Page Message | | web | | ||
| `REVERSE_GEOCODING_DUMP_DIRECTORY` | Reverse Geocoding Dump Directory | `./.reverse-geocoding-dump/` | microservices | | ||
|
||
## Ports | ||
|
||
| Variable | Description | Default | Services | | ||
| :---------------------- | :-------------------- | :-----: | :--------------- | | ||
| `PORT` | Web Port | `3000` | web | | ||
| `SERVER_PORT` | Server Port | `3001` | server | | ||
| `MICROSERVICES_PORT` | Microservices Port | `3002` | microservices | | ||
| `MACHINE_LEARNING_PORT` | Machine Learning Port | `3003` | machine learning | | ||
|
||
## URLs | ||
|
||
| Variable | Description | Default | Services | | ||
| :---------------------------- | :------------------------------------------------------- | :-----------------------------------: | :-------------------- | | ||
| `IMMICH_WEB_URL` | Immich Web URL | `http://immich-web:3000` | proxy | | ||
| `IMMICH_SERVER_URL` | Immich Server URL | `http://immich-server:3001` | web, proxy | | ||
| `IMMICH_MACHINE_LEARNING_URL` | Immich Machine Learning URL, set `"false"` to disable ML | `http://immich-machine-learning:3003` | server, microservices | | ||
| `PUBLIC_IMMICH_SERVER_URL` | Public Immich URL | `http://immich-server:3001` | web | | ||
| `IMMICH_API_URL_EXTERNAL` | Immich API URL External | `/api` | web | | ||
|
||
:::info | ||
|
||
The above paths are modifying the internal paths of the containers. | ||
|
||
::: | ||
|
||
## Database | ||
|
||
| Variable | Description | Default | Services | | ||
| :------------ | :---------------- | :---------: | :-------------------- | | ||
| `DB_URL` | Database URL | | server, microservices | | ||
| `DB_HOSTNAME` | Database Host | `localhost` | server, microservices | | ||
| `DB_PORT` | Database Port | `5432` | server, microservices | | ||
| `DB_USERNAME` | Database User | `postgres` | server, microservices | | ||
| `DB_PASSWORD` | Database Password | `postgres` | server, microservices | | ||
| `DB_DATABASE` | Database Name | `immich` | server, microservices | | ||
|
||
:::info | ||
|
||
When `DB_URL` is defined, the other database (`DB_*`) variables are ignored. | ||
|
||
::: | ||
|
||
## Redis | ||
|
||
| Variable | Description | Default | Services | | ||
| :--------------- | :------------- | :------------: | :-------------------- | | ||
| `REDIS_URL` | Redis URL | | server, microservices | | ||
| `REDIS_HOSTNAME` | Redis Host | `immich_redis` | server, microservices | | ||
| `REDIS_PORT` | Redis Port | `6379` | server, microservices | | ||
| `REDIS_DBINDEX` | Redis DB Index | `0` | server, microservices | | ||
| `REDIS_USERNAME` | Redis Username | | server, microservices | | ||
| `REDIS_PASSWORD` | Redis Password | | server, microservices | | ||
| `REDIS_SOCKET` | Redis Socket | | server, microservices | | ||
|
||
:::info | ||
|
||
`REDIS_URL` must start with `ioredis://` and then include a `base64` encoded JSON string for the configuration. | ||
More info can be found in the upstream [ioredis](https://ioredis.readthedocs.io/en/latest/API/) documentation. | ||
|
||
- When `REDIS_URL` is defined, the other redis (`REDIS_*`) variables are ignored. | ||
- When `REDIS_SOCKET` is defined, the other redis (`REDIS_*`) variables are ignored. | ||
|
||
::: | ||
|
||
Redis (Sentinel) URL example JSON before encoding: | ||
|
||
```json | ||
{ | ||
"sentinels": [ | ||
{ | ||
"host": "redis-sentinel-node-0", | ||
"port": 26379 | ||
}, | ||
{ | ||
"host": "redis-sentinel-node-1", | ||
"port": 26379 | ||
}, | ||
{ | ||
"host": "redis-sentinel-node-2", | ||
"port": 26379 | ||
} | ||
], | ||
"name": "redis-sentinel" | ||
} | ||
``` | ||
|
||
## Typesense | ||
|
||
| Variable | Description | Default | Services | | ||
| :------------------- | :----------------------- | :---------: | :------------------------------- | | ||
| `TYPESENSE_ENABLED` | Enable Typesense | | server, microservices | | ||
| `TYPESENSE_URL` | Typesense URL | | server, microservices | | ||
| `TYPESENSE_HOST` | Typesense Host | `typesense` | server, microservices | | ||
| `TYPESENSE_PORT` | Typesense Port | `8108` | server, microservices | | ||
| `TYPESENSE_PROTOCOL` | Typesense Protocol | `http` | server, microservices | | ||
| `TYPESENSE_API_KEY` | Typesense API Key | | server, microservices, typesense | | ||
| `TYPESENSE_DATA_DIR` | Typesense Data Directory | `/data` | typesense | | ||
|
||
:::info | ||
|
||
`TYPESENSE_URL` must start with `ha://` and then include a `base64` encoded JSON string for the configuration. | ||
|
||
`TYPESENSE_ENABLED`: Anything other than `false`, behaves as `true`. | ||
Even undefined is treated as `true`. | ||
|
||
- When `TYPESENSE_URL` is defined, the other typesense (`TYPESENSE_*`) variables are ignored. | ||
|
||
::: | ||
|
||
Typesense URL example JSON before encoding: | ||
|
||
```json | ||
[ | ||
{ | ||
"host": "typesense-1.example.net", | ||
"port": "443", | ||
"protocol": "https" | ||
}, | ||
{ | ||
"host": "typesense-2.example.net", | ||
"port": "443", | ||
"protocol": "https" | ||
}, | ||
{ | ||
"host": "typesense-3.example.net", | ||
"port": "443", | ||
"protocol": "https" | ||
} | ||
] | ||
``` | ||
|
||
## Machine Learning | ||
|
||
| Variable | Description | Default | Services | | ||
| :------------------------------------------ | :----------------------------- | :-------------------: | :--------------- | | ||
| `MACHINE_LEARNING_MIN_FACE_SCORE` | Minimum Face Score | `0.7` | machine learning | | ||
| `MACHINE_LEARNING_MODEL_TTL` | Model TTL | `300` | machine learning | | ||
| `MACHINE_LEARNING_EAGER_STARTUP` | Eager Startup | `true` | machine learning | | ||
| `MACHINE_LEARNING_MIN_TAG_SCORE` | Minimum Tag Score | `0.9` | machine learning | | ||
| `MACHINE_LEARNING_FACIAL_RECOGNITION_MODEL` | Facial Recognition Model | `buffalo_l` | machine learning | | ||
| `MACHINE_LEARNING_CLIP_TEXT_MODEL` | Clip Text Model | `clip-ViT-B-32` | machine learning | | ||
| `MACHINE_LEARNING_CLIP_IMAGE_MODEL` | Clip Image Model | `clip-ViT-B-32` | machine learning | | ||
| `MACHINE_LEARNING_CLASSIFICATION_MODEL` | Classification Model | `microsoft/resnet-50` | machine learning | | ||
| `MACHINE_LEARNING_CACHE_FOLDER` | ML Cache Location | `/cache` | machine learning | | ||
| `TRANSFORMERS_CACHE` | ML Transformers Cache Location | `/cache` | machine learning | |