From 58e516c766aeeaf40257728f4f920e14e83cd329 Mon Sep 17 00:00:00 2001 From: aviv926 <51673860+aviv926@users.noreply.github.com> Date: Tue, 16 Apr 2024 08:26:12 +0300 Subject: [PATCH] Docs: minor changes (#8814) * minor * add image * PR feedback * npm run format:fix of course 4_4 * Remove what is not relevant * pr feedback * PR feedback * revert npm run format * Update docs/docs/FAQ.mdx Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * Update FAQ.mdx --------- Co-authored-by: Alex Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- docs/README.md | 2 +- docs/docs/FAQ.mdx | 87 ++++++++++-------- docs/docs/developer/pr-checklist.md | 8 +- .../img/library-custom-scan-interval.png | Bin 0 -> 31611 bytes docs/docs/features/libraries.md | 13 ++- .../docs/features/ml-hardware-acceleration.md | 2 +- docs/docs/guides/database-gui.md | 2 +- docs/docs/guides/database-queries.md | 6 ++ docs/docs/guides/external-library.md | 6 -- docs/docs/guides/remote-machine-learning.md | 6 +- docs/docs/install/docker-compose.mdx | 3 +- docs/docs/partials/_user-create.md | 4 +- docs/docusaurus.config.js | 8 ++ docs/src/pages/milestones.tsx | 10 ++ machine-learning/README.md | 2 +- 15 files changed, 102 insertions(+), 57 deletions(-) create mode 100644 docs/docs/features/img/library-custom-scan-interval.png diff --git a/docs/README.md b/docs/README.md index aaba2fa1e1..0c6c2c27be 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,6 @@ # Website -This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. +This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. ### Installation diff --git a/docs/docs/FAQ.mdx b/docs/docs/FAQ.mdx index 452f1d91eb..5583ae8b63 100644 --- a/docs/docs/FAQ.mdx +++ b/docs/docs/FAQ.mdx @@ -6,7 +6,7 @@ The admin password can be reset by running the [reset-admin-password](/docs/administration/server-commands.md) command on the immich-server. -### How can I see list of all users in Immich? +### How can I see a list of all users in Immich? You can see the list of all users by running [list-users](/docs/administration/server-commands.md) Command on the Immich-server. @@ -24,14 +24,14 @@ You can see the list of all users by running [list-users](/docs/administration/s ### I cannot log into the application after an update. What can I do? -First, verify that the mobile app and server are both running the same version (major and minor). +Verify that the mobile app and server are both running the same version (major and minor). :::note -App store updates sometimes take longer because the stores (Google play store and Apple app store) -need to approve the update first which may take some time. +App store updates sometimes take longer because the stores (Google Play Store and Apple App Store) +need to approve the update first, and it can take some time. ::: -If you still cannot login to the app, try the following: +If you still cannot log in to the app, try the following: - Check the mobile logs - Make sure login credentials are correct by logging in on the web app @@ -40,6 +40,11 @@ If you still cannot login to the app, try the following: ## Assets +### Does Immich change the file? + +No, Immich does not touch the original file under any circumstances, +all edited metadata are saved in the companion sidecar file and the database. + ### Can I add my existing photo library? Yes, with an [External Library](/docs/features/libraries.md). @@ -50,11 +55,11 @@ Template changes will only apply to _new_ assets. To retroactively apply the tem ### Why are only photos and not videos being uploaded to Immich? -This often happens when using a reverse proxy (such as nginx or Cloudflare tunnel) in front of Immich. Make sure to set your reverse proxy to allow large `POST` requests. In `nginx`, set `client_max_body_size 50000M;` or similar. Also check the disk space of your reverse proxy, in some cases proxies cache requests to disk before passing them on, and if disk space runs out the request fails. +This often happens when using a reverse proxy (such as Nginx or Cloudflare tunnel) in front of Immich. Make sure to set your reverse proxy to allow large `POST` requests. In `nginx`, set `client_max_body_size 50000M;` or similar. Also, check the disk space of your reverse proxy. In some cases, proxies cache requests to disk before passing them on, and if disk space runs out, the request fails. ### Why are some photos stored in the file system with the wrong date? -There are a few different scenarios that can lead to this situation. The solution is to run the storage migration job again. The job is only _automatically_ run once per asset, after upload. If metadata extraction originally failed, the jobs were cleared/cancelled, etc. the job may not have run automatically the first time. +There are a few different scenarios that can lead to this situation. The solution is to rerun the storage migration job. The job is only automatically run once per asset after upload. If metadata extraction originally failed, the jobs were cleared/canceled, etc., the job may not have run automatically the first time. ### How can I hide photos from the timeline? @@ -68,23 +73,27 @@ See [Backup and Restore](/docs/administration/backup-and-restore.md). No, it currently does not. There is an [open feature request on GitHub](https://github.com/immich-app/immich/discussions/4348). -### Does Immich support filtering of NSFW images? +### Does Immich support the filtering of NSFW images? No, it currently does not. There is an [open feature request on Github](https://github.com/immich-app/immich/discussions/2451). ### Why are there so many thumbnail generation jobs? -There are three thubmanil jobs for each asset: +There are three thumbnail jobs for each asset: - Blurred (thumbhash) -- Small (webp) -- Large (jpeg) +- Preview (Webp) +- Thumbnail (Jpeg) Also, there are additional jobs for person (face) thumbnails. +### Why do files from WhatsApp not appear with the correct date? + +Files sent on WhatsApp are saved without metadata on the file. Therefore, Immich has no way of knowing the original date of the file when files are uploaded from WhatsApp, not the order of arrival on the device. [See #3527](https://github.com/immich-app/immich/issues/3527). + ### What happens if an asset exists in more than one account? -There are no requirements for assets to be unique across users. If multiple users upload the same image they are processed as if they were distinct assets and jobs run and thumbnails are generated accordingly. +There are no requirements for assets to be unique across users. If multiple users upload the same image, it is processed as if it were a distinct asset, and jobs run and thumbnails are generated accordingly. ### Why do HDR videos appear pale in Immich player but look normal after download? @@ -96,40 +105,36 @@ Immich always keeps your original files. Alongside that, it generates a transcod ### How can I delete transcoded videos without deleting the original? -The transcoded version of an asset can be deleted by setting a transcode policy that makes it unnecessary, then running a transcoding job for that asset. This can be done on a per-asset basis by starting a transcoding job for a single asset with the _Refresh encoded videos_ button in the asset viewer options, or for all assets by running transcoding jobs for all assets from the administration page. +The transcoded version of an asset can be deleted by setting a transcode policy that makes it unnecessary and then running a transcoding job for that asset. This can be done on a per-asset basis by starting a transcoding job for a single asset with the _Refresh encoded videos_ button in the asset viewer options or for all assets by running transcoding jobs for all assets from the administration page. To update the transcode policy, navigate to Administration > Video Transcoding Settings > Transcoding Policy and select a policy from the drop-down. This policy will determine whether an existing transcode will be deleted or overwritten in the transcoding job. If a video should be transcoded according to this policy, an existing transcode is overwritten. If not, then it is deleted. :::note -For example, say you have existing transcodes with the policy "Videos higher than normal resolution or not in the desired format" and switch to a narrower policy: "Videos not in the desired format". If an asset was only transcoded due to its resolution, then running a transcoding job for it will now delete the existing transcode. This is because resolution is no longer part of the transcode policy and the transcode is unnecessary as a result. Likewise, if you set the policy to "Don't transcode any videos" and run transcoding jobs for all assets, this will delete all existing transcodes as they are all unnecessary. +For example, say you have existing transcodes with the policy "Videos higher than normal resolution or not in the desired format" and switch to a narrower policy: "Videos not in the desired format." If an asset was only transcoded due to its resolution, running a transcoding job for it will delete the existing transcode. This is because resolution is no longer part of the transcode policy and the transcode is unnecessary. Likewise, if you set the policy to "Don't transcode any videos" and run transcoding jobs for all assets, this will delete all existing transcodes as they are unnecessary. ::: ### Is it possible to compress images during backup? -No. Our golden rule is that the original assets should always be untouched, so we don't think this feature is a good fit for Immich. +No. Our design principle is that the original assets should always be untouched. ### How can I move all data (photos, persons, albums) from one user to another? -This is not officially supported, but can be accomplished with some database updates. You can do this on the command line (in the PostgreSQL container using the `psql` command), or you can add for example an [Adminer](https://www.adminer.org/) container to the `docker-compose.yml` file, so that you can use a web-interface. - -:::warning -This is an advanced operation. If you can't do it with the steps described here, this is not for you. -::: +This is not officially supported but can be accomplished with some database updates. You can do this on the command line (in the PostgreSQL container using the `psql` command), or you can add, for example, an [Adminer](https://www.adminer.org/) container to the `docker-compose.yml` file so that you can use a web interface.
Steps 1. **MAKE A BACKUP** - See [backup and restore](/docs/administration/backup-and-restore.md). -2. Find the id of both the 'source' and the 'destination' user (it's the id column in the users table) +2. Find the ID of both the 'source' and the 'destination' user (it's the id column in the `users` table) 3. Three tables need to be updated: ```sql -// reassign albums +// Reassign albums UPDATE albums SET "ownerId" = '' WHERE "ownerId" = ''; -// reassign people +// Reassign people UPDATE person SET "ownerId" = '' WHERE "ownerId" = ''; // reassign assets @@ -159,7 +164,7 @@ No, not yet. For updates on this planned feature, follow the [GitHub discussion] ### Can I add an external library while keeping the existing album structure? -We haven't put in an official mechanism to create albums from external libraries at the moment, but there are some [workarounds from the community](https://github.com/immich-app/immich/discussions/4279) to help you achieve that. +We haven't implemented an official mechanism for creating albums from external libraries, but there are some [workarounds from the community](https://github.com/immich-app/immich/discussions/4279) to help you achieve that. ### What happens to duplicates in external libraries? @@ -171,7 +176,7 @@ Duplicate checking only exists for upload libraries, using the file hash. Furthe ### How does smart search work? -Immich uses CLIP models, for more information about CLIP and its capabilities read about it [here](https://openai.com/research/clip). +Immich uses CLIP models. For more information about CLIP and its capabilities, read about it [here](https://openai.com/research/clip). ### How does facial recognition work? @@ -189,12 +194,7 @@ However, disabling all jobs will not disable the machine learning service itself ### I'm getting errors about models being corrupt or failing to download. What do I do? -You can delete the model cache volume, which is where models are downloaded to. This will give the service a clean environment to download the model again. If models are failing to download entirely, you can manually download them from [Huggingface](https://huggingface.co/immich-app) and place them in the cache folder. - -### Why did Immich decide to remove object detection? - -The feature added keywords to images for metadata search, but wasn't used for smart search. Smart search made it unnecessary as it isn't limited to exact keywords. Combined with it causing crashes on some devices, using many dependencies and causing user confusion as to how search worked, it was better to remove the job altogether. -For more info see [here](https://github.com/immich-app/immich/pull/5903) +You can delete the model cache volume, where models are downloaded. This will give the service a clean environment to download the model again. If models are failing to download entirely, you can manually download them from [Huggingface](https://huggingface.co/immich-app) and place them in the cache folder. ### Can I use a custom CLIP model? @@ -208,14 +208,17 @@ You can change to a multilingual model listed [here](https://huggingface.co/coll Feel free to make a feature request if there's a model you want to use that isn't in [Immich Huggingface list](https://huggingface.co/immich-app). ::: -### Does Immich support Facial Recognition for videos ? +### Does Immich support Facial Recognition for videos? -Immich's machine learning feature operate on the generated thumbnail. If a face is visible in the video's thumbnail it will be picked up by facial recognition. +Immich's machine learning feature operates on the generated thumbnail. If a face is visible in the video's thumbnail it will be picked up by facial recognition. Scanning the entire video for faces may be implemented in the future. ### Does Immich have animal recognition? No. +:::tip +You can use [Smart Search](/docs/features/smart-search.md) for this to some extent. For example, if you have a Golden Retriever and a Chihuahua, type these words in the smart search and watch the results. +::: ### I'm getting a lot of "faces" that aren't faces, what can I do? @@ -248,8 +251,8 @@ The initial backup is the most intensive due to the number of jobs running. The - Lower the job concurrency for these jobs to 1. - Under Settings > Transcoding Settings > Threads, set the number of threads to a low number like 1 or 2. - Under Settings > Machine Learning Settings > Facial Recognition > Model Name, you can change the facial recognition model to `buffalo_s` instead of `buffalo_l`. The former is a smaller and faster model, albeit not as good. - - You _must_ re-run the Face Detection job for all images after this for facial recognition on new images to work properly. -- If these changes are not enough, see [below](/docs/FAQ#how-can-i-disable-machine-learning) for how you can disable machine learning. +- For facial recognition on new images to work properly, You must re-run the Face Detection job for all images after this. +- If these changes are not enough, see [below](/docs/FAQ#how-can-i-disable-machine-learning) for instructions on how to disable machine learning. ### Can I limit the amount of CPU and RAM usage? @@ -280,13 +283,17 @@ On a normal machine, 2 or 3 concurrent jobs can probably max the CPU. Beyond thi Do not exaggerate with the amount of jobs because you're probably thoroughly overloading the server. -More detail can be found [here](https://discord.com/channels/979116623879368755/994044917355663450/1174711719994605708) +More details can be found [here](https://discord.com/channels/979116623879368755/994044917355663450/1174711719994605708) ::: ### Why is Immich using so much of my CPU? -When a large amount of assets are uploaded to Immich it makes sense that the CPU and RAM will be heavily used due to machine learning work and creating image thumbnails. -Once this process completes, the percentage of CPU usage will drop to around 3-5% usage +When a large number of assets are uploaded to Immich, it makes sense that the CPU and RAM will be heavily used for machine learning work and creating image thumbnails. +Once this process is completed, the percentage of CPU usage will drop to around 3-5% usage + +### My server shows Server Status Offline | Version Unknown what can I do? + +You need to enable Websocket on your reverse proxy. --- @@ -311,7 +318,7 @@ For a further hardened system, you can add the following block to every containe ```yaml security_opt: - # Prevent escalation of privileges after container is started + # Prevent escalation of privileges after the container is started - no-new-privileges:true cap_drop: # Prevent access to raw network traffic @@ -322,7 +329,7 @@ cap_drop: Data for Immich comes in two forms: -1. **Metadata** stored in a postgres database, persisted via the `pg_data` volume +1. **Metadata** stored in a Postgres database, persisted via the `pg_data` volume 2. **Files** (originals, thumbs, profile, etc.), stored in the `UPLOAD_LOCATION` folder, more [info](/docs/administration/backup-and-restore#asset-types-and-storage-locations). To remove the **Metadata** you can stop Immich and delete the volume. diff --git a/docs/docs/developer/pr-checklist.md b/docs/docs/developer/pr-checklist.md index 32d9b03507..372dd2b1eb 100644 --- a/docs/docs/developer/pr-checklist.md +++ b/docs/docs/developer/pr-checklist.md @@ -9,7 +9,7 @@ When contributing code through a pull request, please check the following: - [ ] `npm run check:svelte` (Type checking via SvelteKit) - [ ] `npm test` (unit tests) -:::tip +:::tip AIO Run all web checks with `npm run check:all` ::: @@ -20,10 +20,14 @@ Run all web checks with `npm run check:all` - [ ] `npm run check` (Type checking via `tsc`) - [ ] `npm test` (unit tests) -:::tip +:::tip AIO Run all server checks with `npm run check:all` ::: +:::info Auto Fix +You can use `npm run __:fix` to potentially correct some issues automatically for `npm run format` and `lint`. +::: + ## OpenAPI The OpenAPI client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file. Note that you should not modify this file directly as it is auto-generated. See [OpenAPI](/docs/developer/open-api.md) for more details. diff --git a/docs/docs/features/img/library-custom-scan-interval.png b/docs/docs/features/img/library-custom-scan-interval.png new file mode 100644 index 0000000000000000000000000000000000000000..3d2e8d3dbdfab4450418b323c4b837cb6bd555e4 GIT binary patch literal 31611 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 literal 0 HcmV?d00001 diff --git a/docs/docs/features/libraries.md b/docs/docs/features/libraries.md index 28c68ced46..b934abd730 100644 --- a/docs/docs/features/libraries.md +++ b/docs/docs/features/libraries.md @@ -161,7 +161,7 @@ The christmas trip library will now be scanned in the background. In the meantim - Click on Create External Library. -:::info Note +:::note If you get an error here, please rename the other external library to something else. This is a bug that will be fixed in a future release. ::: @@ -175,3 +175,14 @@ If you get an error here, please rename the other external library to something - Click on Scan Library Files Within seconds, the assets from the old-pics and videos folders should show up in the main timeline. + +### Set Custom Scan Interval + +:::note +Only an admin can do this. +::: + +You can define a custom interval for the trigger external library rescan under Administration -> Settings -> Library. +You can set the scanning interval using the preset or cron format. For more information please refer to e.g. [Crontab Guru](https://crontab.guru/) + + diff --git a/docs/docs/features/ml-hardware-acceleration.md b/docs/docs/features/ml-hardware-acceleration.md index 1e646a0e7e..4b6012e71c 100644 --- a/docs/docs/features/ml-hardware-acceleration.md +++ b/docs/docs/features/ml-hardware-acceleration.md @@ -10,7 +10,7 @@ You do not need to redo any machine learning jobs after enabling hardware accele ## Supported Backends - ARM NN (Mali) -- CUDA (NVIDIA) +- CUDA (NVIDIA) Note: It is supported with [compute capability](https://developer.nvidia.com/cuda-gpus) 5.2 or higher - OpenVINO (Intel) ## Limitations diff --git a/docs/docs/guides/database-gui.md b/docs/docs/guides/database-gui.md index 1d5eedf990..1b0bd7931c 100644 --- a/docs/docs/guides/database-gui.md +++ b/docs/docs/guides/database-gui.md @@ -45,5 +45,5 @@ Open pgAdmin and click "Add New Server". Click on "Save" to connect to the Immich database. :::tip -View [Database Queries](https://immich.app/docs/guides/database-queries/) for common database queries. +View [Database Queries](/docs/guides/database-queries/) for common database queries. ::: diff --git a/docs/docs/guides/database-queries.md b/docs/docs/guides/database-queries.md index 45112849fa..65aa357fc8 100644 --- a/docs/docs/guides/database-queries.md +++ b/docs/docs/guides/database-queries.md @@ -86,3 +86,9 @@ SELECT "key", "value" FROM "system_config"; ``` (Only used when not using the [config file](/docs/install/config-file)) + +## Persons + +```sql title="Delete person and unset it for the faces it was associated with" +DELETE FROM person WHERE name = 'PersonNameHere'; +``` diff --git a/docs/docs/guides/external-library.md b/docs/docs/guides/external-library.md index ba60e8b118..b1d4b67b2e 100644 --- a/docs/docs/guides/external-library.md +++ b/docs/docs/guides/external-library.md @@ -14,12 +14,6 @@ Edit `docker-compose.yml` to add two new mount points under `volumes:` - ${EXTERNAL_PATH}:/usr/src/app/external ``` -``` - immich-microservices: - volumes: - - ${EXTERNAL_PATH}:/usr/src/app/external -``` - Be sure to add exactly the same line to both `immich-server:` and `immich-microservices:`. Edit `.env` to define `EXTERNAL_PATH`, substituting in the correct path for your computer: diff --git a/docs/docs/guides/remote-machine-learning.md b/docs/docs/guides/remote-machine-learning.md index a5dbf5498d..e79f6b33e9 100644 --- a/docs/docs/guides/remote-machine-learning.md +++ b/docs/docs/guides/remote-machine-learning.md @@ -6,10 +6,14 @@ To alleviate [performance issues on low-memory systems](/docs/FAQ.mdx#why-is-imm - Copy the following `docker-compose.yml` to your ML system. - Start the container by running `docker compose up -d`. -:::note Info +:::info Starting with version v1.93.0 face detection work and face recognize were split. From now on face detection is done in the immich_machine_learning service, but facial recognition is done in the immich_microservices service. ::: +:::note +The [hwaccel.ml.yml](https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml) file also needs to be in the same folder if trying to use [hardware acceleration](/docs/features/ml-hardware-acceleration). +::: + ```yaml version: '3.8' diff --git a/docs/docs/install/docker-compose.mdx b/docs/docs/install/docker-compose.mdx index 60fcbbe8b8..52259f2eb0 100644 --- a/docs/docs/install/docker-compose.mdx +++ b/docs/docs/install/docker-compose.mdx @@ -7,7 +7,8 @@ import ExampleEnv from '!!raw-loader!../../../docker/example.env'; # Docker Compose [Recommended] -Docker Compose is the recommended method to run Immich in production. Below are the steps to deploy Immich with Docker Compose. +Docker Compose is the recommended method to run Immich in production. Below are the steps to deploy Immich with Docker Compose. +Immich requires Docker Compose version 2.x. ### Step 1 - Download the required files diff --git a/docs/docs/partials/_user-create.md b/docs/docs/partials/_user-create.md index 5d08591386..db99620677 100644 --- a/docs/docs/partials/_user-create.md +++ b/docs/docs/partials/_user-create.md @@ -1,3 +1,3 @@ -If you have friends or family members who want to use the application as well, you can create addition accounts. The default password is `password`, and the user can change their password after logging in to the application for the first time. +If you have friends or family members who want to use the application as well, you can create addition accounts. The default password is `password`, and the user has to change their password after logging in to the application for the first time. The system administrator can disable this option by unchecking the option "Require user to change password on first login" in the user registration interface. - + diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index afe9f0eecd..75513e3d3b 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -144,6 +144,10 @@ const config = { label: 'Discord', href: 'https://discord.com/invite/D8JsnBEuKb', }, + { + label: 'Reddit', + href: 'https://www.reddit.com/r/immich/', + }, ], }, { @@ -157,6 +161,10 @@ const config = { label: 'GitHub', href: 'https://github.com/immich-app/immich', }, + { + label: 'YouTube', + href: 'https://www.youtube.com/@immich-app', + }, ], }, ], diff --git a/docs/src/pages/milestones.tsx b/docs/src/pages/milestones.tsx index ea00f486cf..76e9b804d2 100644 --- a/docs/src/pages/milestones.tsx +++ b/docs/src/pages/milestones.tsx @@ -51,12 +51,22 @@ import { mdiVideo, mdiWeb, mdiScaleBalance, + mdiMagnifyScan, } from '@mdi/js'; import Layout from '@theme/Layout'; import React from 'react'; import Timeline, { DateType, Item } from '../components/timeline'; const items: Item[] = [ + { + icon: mdiMagnifyScan, + description: 'Advanced search with filters by date, location and more', + title: 'Search enhancement with advanced filters', + release: 'v1.95.0', + tag: 'v1.95.0', + date: new Date(2024, 1, 20), + dateType: DateType.RELEASE, + }, { icon: mdiScaleBalance, description: 'Immich switches to AGPLv3 license', diff --git a/machine-learning/README.md b/machine-learning/README.md index b30e18ceb4..d7d099a87e 100644 --- a/machine-learning/README.md +++ b/machine-learning/README.md @@ -7,7 +7,7 @@ This project uses [Poetry](https://python-poetry.org/docs/#installation), so be sure to install it first. Running `poetry install --no-root --with dev --with cpu` will install everything you need in an isolated virtual environment. -CUDA and OpenVINO are supported as acceleration APIs. To use them, you can replace `--with cpu` with either of `--with cuda` or `--with openvino`. +CUDA and OpenVINO are supported as acceleration APIs. To use them, you can replace `--with cpu` with either of `--with cuda` or `--with openvino`. In the case of CUDA, a [compute capability](https://developer.nvidia.com/cuda-gpus) of 5.2 or higher is required. To add or remove dependencies, you can use the commands `poetry add $PACKAGE_NAME` and `poetry remove $PACKAGE_NAME`, respectively. Be sure to commit the `poetry.lock` and `pyproject.toml` files with `poetry lock --no-update` to reflect any changes in dependencies.