diff --git a/docs/docs/administration/backup-and-restore.md b/docs/docs/administration/backup-and-restore.md index 2ca965624f..111a39ac8d 100644 --- a/docs/docs/administration/backup-and-restore.md +++ b/docs/docs/administration/backup-and-restore.md @@ -2,6 +2,8 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +import { mdiAlertCircle, mdiCheckCircle } from '@mdi/js'; +import Icon from '@mdi/react'; A [3-2-1 backup strategy](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) is recommended to protect your data. You should keep copies of your uploaded photos/videos as well as the Immich database for a comprehensive backup solution. This page provides an overview on how to backup the database and the location of user-uploaded pictures and videos. A template bash script that can be run as a cron job is provided [here](/guides/template-backup-script.md) @@ -11,47 +13,127 @@ The instructions on this page show you how to prepare your Immich instance to be ## Database +Immich stores [file paths](https://github.com/immich-app/immich/discussions/3299) and user metadata in the database. It does not scan the library folder, so database backups are essential. + +### Automatic Database Backups + +Immich automatically creates database backups for disaster-recovery purposes. These backups are stored in `UPLOAD_LOCATION/backups` and can be managed through the web interface. + +You can adjust the backup schedule and retention settings in **Administration > Settings > Backup** (default: keep last 14 backups, create daily at 2:00 AM). + :::caution -Immich saves [file paths in the database](https://github.com/immich-app/immich/discussions/3299), it does not scan the library folder to update the database so backups are crucial. +Database backups do **not** contain photos or videos — only metadata. They must be used together with a copy of the files in `UPLOAD_LOCATION` as outlined below. ::: +#### Creating a Backup + +You can trigger a database backup manually: + +1. Go to **Administration > Job Queues** +2. Click **Create job** in the top right +3. Select **Create Database Backup** and click **Confirm** + +The backup will appear in `UPLOAD_LOCATION/backups` and counts toward your retention limit. + +### Restoring a Database Backup + +Immich provides two ways to restore a database backup: through the web interface or via the command line. The web interface is the recommended method for most users. + +#### Restore from Settings {#restore-from-settings} + +If you have an existing Immich installation: + + + +1. Go to **Administration > Maintenance** +2. Expand the **Restore database backup** section +3. You'll see a list of available backups with their version and creation date +4. Click **Restore** next to the backup you want to restore +5. Confirm the restore operation + :::info -Refer to the official [postgres documentation](https://www.postgresql.org/docs/current/backup.html) for details about backing up and restoring a postgres database. +Restoring a backup will wipe the current database and replace it with the backup. A restore point is automatically created before the operation begins, allowing rollback if the restore fails. ::: -:::caution -It is not recommended to directly backup the `DB_DATA_LOCATION` folder. Doing so while the database is running can lead to a corrupted backup that cannot be restored. +#### Restore from Onboarding {#restore-from-onboarding} + +If you're setting up Immich on a fresh installation and want to restore from an existing backup: + +1. Download and populate `.env` and `docker-compose.yml` as per the [installation instructions](/install/docker-compose). +2. Move the previous's instance data directories containing `backups`, `encoded-video`, `library`, `profile`, `thumbs` and `upload` into the new `UPLOAD_LOCATION` +3. **(For external libraries)** If you used external library feature in your previous instance, make sure that the mount settings in your new `docker-compose.yml` reflect the same structure. You may need to move files accordingly. + +:::info Example + +Assuming your previous `UPLOAD_LOCATION` was `UPLOAD_LOCATION=/my-broken-instance/media` and your new one is `UPLOAD_LOCATION=/a-brand-new-instance/data`, you will need to perform the following file moves: + +``` +/my-broken-instance/media/backups -> /a-brand-new-instance/data/backups +/my-broken-instance/media/encoded-video -> /a-brand-new-instance/data/encoded-video +/my-broken-instance/media/library -> /a-brand-new-instance/data/library +/my-broken-instance/media/profile -> /a-brand-new-instance/data/profile +/my-broken-instance/media/thumbs -> /a-brand-new-instance/data/thumbs +/my-broken-instance/media/upload -> /a-brand-new-instance/data/upload +``` + ::: -### Automatic Database Dumps +4. Start the Immich services with `docker compose up -d` + + + +5. On the welcome screen, click **Restore from backup** +6. Immich will enter maintenance mode and display integrity checks for your storage folders +7. Review the folder status to ensure your library files are accessible +8. Click **Next** to proceed to backup selection +9. Select a backup from the list or upload a backup file (`.sql.gz`) +10. Click **Restore** to begin the restoration process + +:::tip +Before restoring, ensure your `UPLOAD_LOCATION` folders contain the same files that existed when the backup was created. The integrity check will show you which folders are readable/writable and how many files they contain. +::: + +### Uploading a Backup File {#uploading-backup} + +You can upload a database backup file directly: + +1. In the **Restore database backup** section, click **Select from computer** +2. Choose a `.sql.gz` file +3. The uploaded backup will appear in the list with an `uploaded-` prefix +4. Click **Restore** to restore from the uploaded file + +### Backup Version Compatibility {#backup-compatibility} + +When viewing backups, Immich displays compatibility indicators based on the current version and the information from the filename: + +- Backup version matches current Immich version +- Backup was created with a different Immich version +- Could not determine backup version :::warning -The automatic database dumps can be used to restore the database in the event of damage to the Postgres database files. -There is no monitoring for these dumps and you will not be notified if they are unsuccessful. +Restoring a backup from a different Immich version may require database migrations. The restore process will attempt to run migrations automatically, but you should ensure you're restoring to a compatible version when possible. ::: -:::caution -The database dumps do **NOT** contain any pictures or videos, only metadata. They are only usable with a copy of the other files in `UPLOAD_LOCATION` as outlined below. -::: +### Restore Process {#restore-process} -For disaster-recovery purposes, Immich will automatically create database dumps. The dumps are stored in `UPLOAD_LOCATION/backups`. -Please be sure to make your own, independent backup of the database together with the asset folders as noted below. -You can adjust the schedule and amount of kept database dumps in the [admin settings](http://my.immich.app/admin/system-settings?isOpen=backup). -By default, Immich will keep the last 14 database dumps and create a new dump every day at 2:00 AM. +During restoration, Immich will: -#### Trigger Dump +1. Create a backup of the current database (restore point) +2. Restore the selected backup +3. Run database migrations if needed +4. Perform a health check to verify the restore succeeded -You are able to trigger a database dump in the [admin job status page](http://my.immich.app/admin/queues). -Visit the page, open the "Create job" modal from the top right, select "Create Database Dump" and click "Confirm". -A job will run and trigger a dump, you can verify this worked correctly by checking the logs or the `backups/` folder. -This dumps will count towards the last `X` dumps that will be kept based on your settings. +If the restore fails (e.g., corrupted backup or missing admin user), Immich will automatically roll back to the restore point. -#### Restoring +### Restore via Command Line {#restore-cli} -We hope to make restoring simpler in future versions, for now you can find the database dumps in the `UPLOAD_LOCATION/backups` folder on your host. -Then please follow the steps in the following section for restoring the database. - -### Manual Backup and Restore +For advanced users or automated recovery scenarios, you can restore a database backup using the command line. @@ -106,10 +188,12 @@ docker compose up -d # Start remainder of Immich ap -Note that for the database restore to proceed properly, it requires a completely fresh install (i.e. the Immich server has never run since creating the Docker containers). If the Immich app has run, Postgres conflicts may be encountered upon database restoration (relation already exists, violated foreign key constraints, multiple primary keys, etc.), in which case you need to delete the `DB_DATA_LOCATION` folder to reset the database. +:::note +For the database restore to proceed properly, it requires a completely fresh install (i.e., the Immich server has never run since creating the Docker containers). If the Immich app has run, you may encounter Postgres conflicts (relation already exists, violated foreign key constraints, etc.). In this case, delete the `DB_DATA_LOCATION` folder to reset the database. +::: :::tip -Some deployment methods make it difficult to start the database without also starting the server. In these cases, you may set the environment variable `DB_SKIP_MIGRATIONS=true` before starting the services. This will prevent the server from running migrations that interfere with the restore process. Be sure to remove this variable and restart the services after the database is restored. +Some deployment methods make it difficult to start the database without also starting the server. In these cases, set the environment variable `DB_SKIP_MIGRATIONS=true` before starting the services. This prevents the server from running migrations that interfere with the restore process. Remove this variable and restart services after the database is restored. ::: ## Filesystem @@ -157,17 +241,14 @@ for more info read the [release notes](https://github.com/immich-app/immich/rele - **Encoded Assets:** - Videos that have been re-encoded from the original for wider compatibility. The original is not removed. - Stored in `UPLOAD_LOCATION/encoded-video/`. - +- **Database Dump Backups:** + - Automatic database backups created by Immich for disaster recovery. + - Stored in `UPLOAD_LOCATION/backups/`. - **Postgres** - The Immich database containing all the information to allow the system to function properly. **Note:** This folder will only appear to users who have made the changes mentioned in [v1.102.0](https://github.com/immich-app/immich/discussions/8930) (an optional, non-mandatory change) or who started with this version. - Stored in `DB_DATA_LOCATION`. - :::danger - A backup of this folder does not constitute a backup of your database! - Follow the instructions listed [here](/administration/backup-and-restore#database) to learn how to perform a proper backup. - ::: - @@ -203,16 +284,14 @@ When you turn off the storage template engine, it will leave the assets in `UPLO - Files uploaded through mobile apps. - Temporarily located in `UPLOAD_LOCATION/upload/`. - Transferred to `UPLOAD_LOCATION/library/` upon successful upload. +- **Database Dump Backups:** + - Automatic database backups created by Immich for disaster recovery. + - Stored in `UPLOAD_LOCATION/backups/`. - **Postgres** - The Immich database containing all the information to allow the system to function properly. **Note:** This folder will only appear to users who have made the changes mentioned in [v1.102.0](https://github.com/immich-app/immich/discussions/8930) (an optional, non-mandatory change) or who started with this version. - Stored in `DB_DATA_LOCATION`. - :::danger - A backup of this folder does not constitute a backup of your database! - Follow the instructions listed [here](/administration/backup-and-restore#database) to learn how to perform a proper backup. - ::: - diff --git a/docs/docs/administration/img/admin-jobs.webp b/docs/docs/administration/img/admin-jobs.webp index 2867e18adc..c9863d163a 100644 Binary files a/docs/docs/administration/img/admin-jobs.webp and b/docs/docs/administration/img/admin-jobs.webp differ diff --git a/docs/docs/administration/img/admin-nightly-tasks.webp b/docs/docs/administration/img/admin-nightly-tasks.webp index b3d8f13cb6..e95aa56a7b 100644 Binary files a/docs/docs/administration/img/admin-nightly-tasks.webp and b/docs/docs/administration/img/admin-nightly-tasks.webp differ diff --git a/docs/docs/administration/img/customize-delete-user.webp b/docs/docs/administration/img/customize-delete-user.webp deleted file mode 100644 index 6f171b4bc2..0000000000 Binary files a/docs/docs/administration/img/customize-delete-user.webp and /dev/null differ diff --git a/docs/docs/administration/img/immediately-remove-user.webp b/docs/docs/administration/img/immediately-remove-user.webp index 8addeff14c..0960548f1d 100644 Binary files a/docs/docs/administration/img/immediately-remove-user.webp and b/docs/docs/administration/img/immediately-remove-user.webp differ diff --git a/docs/docs/administration/img/restore-from-onboarding.webp b/docs/docs/administration/img/restore-from-onboarding.webp new file mode 100644 index 0000000000..d09454ef19 Binary files /dev/null and b/docs/docs/administration/img/restore-from-onboarding.webp differ diff --git a/docs/docs/administration/img/restore-from-settings.webp b/docs/docs/administration/img/restore-from-settings.webp new file mode 100644 index 0000000000..f205e7ec6d Binary files /dev/null and b/docs/docs/administration/img/restore-from-settings.webp differ diff --git a/docs/docs/administration/img/server-stats.webp b/docs/docs/administration/img/server-stats.webp index 3048c38b66..33ffa1353b 100644 Binary files a/docs/docs/administration/img/server-stats.webp and b/docs/docs/administration/img/server-stats.webp differ diff --git a/docs/docs/administration/img/user-edit-menu.webp b/docs/docs/administration/img/user-edit-menu.webp new file mode 100644 index 0000000000..5dd7edd298 Binary files /dev/null and b/docs/docs/administration/img/user-edit-menu.webp differ diff --git a/docs/docs/administration/img/user-notifications-settings.webp b/docs/docs/administration/img/user-notifications-settings.webp index 301dce7c6b..964556e928 100644 Binary files a/docs/docs/administration/img/user-notifications-settings.webp and b/docs/docs/administration/img/user-notifications-settings.webp differ diff --git a/docs/docs/administration/img/user-notifications-templates.webp b/docs/docs/administration/img/user-notifications-templates.webp index a40bf82414..5c5f68ac5e 100644 Binary files a/docs/docs/administration/img/user-notifications-templates.webp and b/docs/docs/administration/img/user-notifications-templates.webp differ diff --git a/docs/docs/administration/img/user-quota-size.webp b/docs/docs/administration/img/user-quota-size.webp index 2989bba392..d35fca571b 100644 Binary files a/docs/docs/administration/img/user-quota-size.webp and b/docs/docs/administration/img/user-quota-size.webp differ diff --git a/docs/docs/administration/img/user-storage-label.webp b/docs/docs/administration/img/user-storage-label.webp index 5d54e43899..661dd2b23f 100644 Binary files a/docs/docs/administration/img/user-storage-label.webp and b/docs/docs/administration/img/user-storage-label.webp differ diff --git a/docs/docs/administration/jobs-workers.md b/docs/docs/administration/jobs-workers.md index 8ed3ba2694..74025f8ae8 100644 --- a/docs/docs/administration/jobs-workers.md +++ b/docs/docs/administration/jobs-workers.md @@ -50,7 +50,7 @@ When a new asset is uploaded it kicks off a series of jobs, which include metada Additionally, some jobs (such as memories generation) run on a schedule, which is every night at midnight by default. To change when they run or enable/disable a job navigate to System Settings -> [Nightly Tasks Settings](https://my.immich.app/admin/system-settings?isOpen=nightly-tasks). - + :::note Some jobs ([External Libraries](/features/libraries) scanning, Database Dump) are configured in their own sections in System Settings. diff --git a/docs/docs/administration/maintenance-mode.md b/docs/docs/administration/maintenance-mode.md index 300c27ca40..47848bef42 100644 --- a/docs/docs/administration/maintenance-mode.md +++ b/docs/docs/administration/maintenance-mode.md @@ -4,7 +4,7 @@ Maintenance mode is used to perform administrative tasks such as restoring backu You can enter maintenance mode by either: -- Selecting "enable maintenance mode" in system settings in administration. +- Selecting "Switch to maintenance mode" in `Maintenance` tab in administration. - Running the enable maintenance mode [administration command](./server-commands.md). ## Logging in during maintenance diff --git a/docs/docs/administration/user-management.mdx b/docs/docs/administration/user-management.mdx index b98ffe0d69..6d2b2f9062 100644 --- a/docs/docs/administration/user-management.mdx +++ b/docs/docs/administration/user-management.mdx @@ -31,7 +31,7 @@ Admin can send a welcome email if the Email option is set, you can learn here ho Admin can specify the storage quota for the user as the instance's admin; once the limit is reached, the user won't be able to upload to the instance anymore. -In order to select a storage quota, click on the pencil icon and enter the storage quota in GiB. You can choose an unlimited quota by leaving it empty (default). +In order to select a storage quota, click on the edit user icon and enter the storage quota in GiB. You can choose an unlimited quota by leaving it empty (default). :::tip The system administrator can see the usage quota percentage of all users in Server Stats page. @@ -41,12 +41,12 @@ The system administrator can see the usage quota percentage of all users in Serv External libraries don't take up space from the storage quota. ::: - + ## Set Storage Label For User The admin can add a custom label for each user, so instead of `upload/{userId}/your-template` it will be `upload/{custom_user_label}/your-template`. -To apply a storage template, go to the Administration page -> click on the pencil button next to the user. +To apply a storage template, go to the `Administration > Users`, then click on the context menu button next to the user. :::note To apply the Storage Label to previously uploaded assets, run the Storage Migration Job. ::: @@ -55,25 +55,21 @@ To apply the Storage Label to previously uploaded assets, run the Storage Migrat ## Password Reset -To reset a user's password, click the pencil icon to edit a user, then click "Reset Password". The user's password will be reset to random password and they have to change it next time the sign in. + - +To reset a user's password, go to `Administration > Users`, then click on the context menu button next to the user, then click "Reset Password". The user's password will be reset to a random password and they have to change it next time they sign in. ## Delete a User -If you need to remove a user from Immich, head to "Administration", where users can be scheduled for deletion. The user account will immediately become disabled and their library and all associated data will be removed after 7 days by default. - - +If you need to remove a user from Immich, go to `Administration > Users`, then click on the context menu button next to the user. The user account will immediately become disabled and their library and all associated data will be removed after 7 days by default. ### Delete Delay -You can customize the time of the deletion of the users from the Administration -> Settings -> User Settings. +You can customize the time of the deletion of the users from `Administration -> Settings -> User Settings`. :::info user deletion job The user deletion job runs at midnight to check for users that are ready for deletion. Changes to this setting will be evaluated at the next execution. ::: - - ### Immediately Remove User You can choose to delete a user immediately by checking the box diff --git a/docs/docs/developer/setup.md b/docs/docs/developer/setup.md index fbda3c2983..8262d6a0d0 100644 --- a/docs/docs/developer/setup.md +++ b/docs/docs/developer/setup.md @@ -37,7 +37,8 @@ All the services are packaged to run as with single Docker Compose command. 1. Clone the project repo. 2. Run `cp docker/example.env docker/.env`. 3. Edit `docker/.env` to provide values for the required variable `UPLOAD_LOCATION`. -4. From the root directory, run: +4. Install dependencies - `pnpm i` +5. From the root directory, run: ```bash title="Start development server" make dev # required Makefile installed on the system. diff --git a/docs/docs/features/automatic-backup.md b/docs/docs/features/automatic-backup.md deleted file mode 100644 index 30d132cef8..0000000000 --- a/docs/docs/features/automatic-backup.md +++ /dev/null @@ -1,42 +0,0 @@ -# Automatic Backup - -Immich supports uploading photos and videos from your mobile device to the server automatically. - ---- - -You can enable the settings by accessing the upload options from the upload page - - - - - -## Foreground backup - -If foreground backup is enabled: whenever the app is opened or resumed, it will check if any photos or videos in the selected album(s) have yet to be uploaded to the cloud (the remainder count). If there are any, they will be uploaded. - -## Background backup - -This feature is intended for everyday use. For initial bulk uploading, please use the foreground upload feature. For more information on why background upload is not working as expected, please refer to the [FAQ](/FAQ#why-does-foreground-backup-stop-when-i-navigate-away-from-the-app-shouldnt-it-transfer-the-job-to-background-backup). - -If background backup is enabled. The app will periodically check if there are any new photos or videos in the selected album(s) to be uploaded to the server. If there are, it will upload them to the cloud in the background. - -:::info Note - -#### General - -- The app must be in the background for the backup worker to start running. -- If you reopen the app and the first page you see is the backup page, the counts will not reflect the background uploaded result. You have to navigate out of the page and come back to see the updated counts. - -#### Android - -- It is a well-known problem that some Android models are very strict with battery optimization settings, which can cause a problem with the background worker. Please visit [Don't kill my app](https://dontkillmyapp.com/) for a guide on disabling this setting on your phone. - -#### iOS - -- You must enable **Background App Refresh** for the app to work in the background. You can enable it in the Settings app under General > Background App Refresh. - -
- -
- -::: diff --git a/docs/docs/features/command-line-interface.md b/docs/docs/features/command-line-interface.md index 9a00cb50e1..4b477600f4 100644 --- a/docs/docs/features/command-line-interface.md +++ b/docs/docs/features/command-line-interface.md @@ -188,6 +188,8 @@ immich upload --dry-run . | tail -n +6 | jq .newFiles[] ### Obtain the API Key -The API key can be obtained in the user setting panel on the web interface. +The API key can be obtained in the user setting panel on the web interface. You can also specify permissions for the key to limit its access. ![Obtain Api Key](./img/obtain-api-key.webp) + +![Specify permissions for the key](./img/obtain-api-key-2.webp) diff --git a/docs/docs/features/editing.mdx b/docs/docs/features/editing.mdx new file mode 100644 index 0000000000..5d51798e15 --- /dev/null +++ b/docs/docs/features/editing.mdx @@ -0,0 +1,19 @@ +# Editing + +Immich supports non-destructive editing of photos. This means that any edits you make to an asset do not modify the original file, but instead create a new version of the asset with the edits applied. You can always revert back to the original asset if needed. + +## Supported Edits + +Currently, Immich supports the following types of edits: + +- Cropping +- Rotation +- Mirroring + + + +## Download + +When you download an edited asset, Immich provides the edited version of the asset by default. However, you can choose to download the original version if needed. + + diff --git a/docs/docs/features/facial-recognition.md b/docs/docs/features/facial-recognition.md index 85712ef5f6..cb896ca19e 100644 --- a/docs/docs/features/facial-recognition.md +++ b/docs/docs/features/facial-recognition.md @@ -21,14 +21,14 @@ The asset detail view will also show the faces that are recognized in the asset. Additional actions you can do include: - Changing the feature photo of the person -- Setting a person's date of birth -- Merging two or more detected faces into one person - Hiding the faces of a person from the Explore page and detail view -- Assigning an unrecognized face to a person +- Setting a person's date of birth, so that the age of the person can be shown at the time the photo was taken +- Merging two or more detected people into one person +- Favoriting a person to pin them to the top of the list It can be found from the app bar when you access the detail view of a person. - + ## How Face Detection Works diff --git a/docs/docs/features/img/advanced-search-filters.webp b/docs/docs/features/img/advanced-search-filters.webp index 822d84faec..2d56ccad15 100644 Binary files a/docs/docs/features/img/advanced-search-filters.webp and b/docs/docs/features/img/advanced-search-filters.webp differ diff --git a/docs/docs/features/img/android-backup-options.webp b/docs/docs/features/img/android-backup-options.webp new file mode 100644 index 0000000000..aa5364d812 Binary files /dev/null and b/docs/docs/features/img/android-backup-options.webp differ diff --git a/docs/docs/features/img/background-foreground-backup.webp b/docs/docs/features/img/background-foreground-backup.webp deleted file mode 100644 index dddef137d2..0000000000 Binary files a/docs/docs/features/img/background-foreground-backup.webp and /dev/null differ diff --git a/docs/docs/features/img/backup-album-selection.webp b/docs/docs/features/img/backup-album-selection.webp new file mode 100644 index 0000000000..8c978c678e Binary files /dev/null and b/docs/docs/features/img/backup-album-selection.webp differ diff --git a/docs/docs/features/img/backup-album-sync.webp b/docs/docs/features/img/backup-album-sync.webp new file mode 100644 index 0000000000..1a05ef0584 Binary files /dev/null and b/docs/docs/features/img/backup-album-sync.webp differ diff --git a/docs/docs/features/img/backup-options.webp b/docs/docs/features/img/backup-options.webp new file mode 100644 index 0000000000..7fdccd27fb Binary files /dev/null and b/docs/docs/features/img/backup-options.webp differ diff --git a/docs/docs/features/img/enable-backup-button.webp b/docs/docs/features/img/enable-backup-button.webp new file mode 100644 index 0000000000..d3d4bb29e5 Binary files /dev/null and b/docs/docs/features/img/enable-backup-button.webp differ diff --git a/docs/docs/features/img/facial-recognition-1.webp b/docs/docs/features/img/facial-recognition-1.webp index dd96393b06..6d8f90f8e5 100644 Binary files a/docs/docs/features/img/facial-recognition-1.webp and b/docs/docs/features/img/facial-recognition-1.webp differ diff --git a/docs/docs/features/img/facial-recognition-2.webp b/docs/docs/features/img/facial-recognition-2.webp index 3c910fd315..363dd7e9bc 100644 Binary files a/docs/docs/features/img/facial-recognition-2.webp and b/docs/docs/features/img/facial-recognition-2.webp differ diff --git a/docs/docs/features/img/facial-recognition-3.webp b/docs/docs/features/img/facial-recognition-3.webp index fd0180ac66..c094617452 100644 Binary files a/docs/docs/features/img/facial-recognition-3.webp and b/docs/docs/features/img/facial-recognition-3.webp differ diff --git a/docs/docs/features/img/facial-recognition-4.webp b/docs/docs/features/img/facial-recognition-4.webp index 07dd378e9e..94c48320fd 100644 Binary files a/docs/docs/features/img/facial-recognition-4.webp and b/docs/docs/features/img/facial-recognition-4.webp differ diff --git a/docs/docs/features/img/folder-view-enable.webp b/docs/docs/features/img/folder-view-enable.webp index 784ecffc73..46477b120e 100644 Binary files a/docs/docs/features/img/folder-view-enable.webp and b/docs/docs/features/img/folder-view-enable.webp differ diff --git a/docs/docs/features/img/free-up-space.webp b/docs/docs/features/img/free-up-space.webp new file mode 100644 index 0000000000..603a088e99 Binary files /dev/null and b/docs/docs/features/img/free-up-space.webp differ diff --git a/docs/docs/features/img/gcast-enable.webp b/docs/docs/features/img/gcast-enable.webp index f128b82e25..a39c83dd84 100644 Binary files a/docs/docs/features/img/gcast-enable.webp and b/docs/docs/features/img/gcast-enable.webp differ diff --git a/docs/docs/features/img/library-custom-scan-interval.webp b/docs/docs/features/img/library-custom-scan-interval.webp index d9861ada97..a383c480dd 100644 Binary files a/docs/docs/features/img/library-custom-scan-interval.webp and b/docs/docs/features/img/library-custom-scan-interval.webp differ diff --git a/docs/docs/features/img/mobile-smart-search.webp b/docs/docs/features/img/mobile-smart-search.webp deleted file mode 100644 index e125fa5c62..0000000000 Binary files a/docs/docs/features/img/mobile-smart-search.webp and /dev/null differ diff --git a/docs/docs/features/img/mobile-upload-selected-photos.webp b/docs/docs/features/img/mobile-upload-selected-photos.webp index 3c69d0c459..fa032752cb 100644 Binary files a/docs/docs/features/img/mobile-upload-selected-photos.webp and b/docs/docs/features/img/mobile-upload-selected-photos.webp differ diff --git a/docs/docs/features/img/my-wife.webp b/docs/docs/features/img/my-wife.webp deleted file mode 100644 index cac17c1a37..0000000000 Binary files a/docs/docs/features/img/my-wife.webp and /dev/null differ diff --git a/docs/docs/features/img/obtain-api-key-2.webp b/docs/docs/features/img/obtain-api-key-2.webp new file mode 100644 index 0000000000..3f946f2ea8 Binary files /dev/null and b/docs/docs/features/img/obtain-api-key-2.webp differ diff --git a/docs/docs/features/img/obtain-api-key.webp b/docs/docs/features/img/obtain-api-key.webp index 5706d39524..daba7d8b4b 100644 Binary files a/docs/docs/features/img/obtain-api-key.webp and b/docs/docs/features/img/obtain-api-key.webp differ diff --git a/docs/docs/features/img/partner-sharing-1.webp b/docs/docs/features/img/partner-sharing-1.webp index 489cfa9a70..0c8e96be34 100644 Binary files a/docs/docs/features/img/partner-sharing-1.webp and b/docs/docs/features/img/partner-sharing-1.webp differ diff --git a/docs/docs/features/img/partner-sharing-2.webp b/docs/docs/features/img/partner-sharing-2.webp index d1d9b4df5f..394302d6b0 100644 Binary files a/docs/docs/features/img/partner-sharing-2.webp and b/docs/docs/features/img/partner-sharing-2.webp differ diff --git a/docs/docs/features/img/partner-sharing-3.webp b/docs/docs/features/img/partner-sharing-3.webp index 47bb89d072..86e1fcb986 100644 Binary files a/docs/docs/features/img/partner-sharing-3.webp and b/docs/docs/features/img/partner-sharing-3.webp differ diff --git a/docs/docs/features/img/partner-sharing-4.webp b/docs/docs/features/img/partner-sharing-4.webp index 4bdf9263e7..15e2204d39 100644 Binary files a/docs/docs/features/img/partner-sharing-4.webp and b/docs/docs/features/img/partner-sharing-4.webp differ diff --git a/docs/docs/features/img/partner-sharing-5.webp b/docs/docs/features/img/partner-sharing-5.webp index 80ab5da037..d648cc717a 100644 Binary files a/docs/docs/features/img/partner-sharing-5.webp and b/docs/docs/features/img/partner-sharing-5.webp differ diff --git a/docs/docs/features/img/partner-sharing-7.webp b/docs/docs/features/img/partner-sharing-7.webp index 7a71107f4e..0db1a1aeb5 100644 Binary files a/docs/docs/features/img/partner-sharing-7.webp and b/docs/docs/features/img/partner-sharing-7.webp differ diff --git a/docs/docs/features/img/public-shared-link-album.webp b/docs/docs/features/img/public-shared-link-album.webp index 1b68cb0869..6f54ef95f0 100644 Binary files a/docs/docs/features/img/public-shared-link-album.webp and b/docs/docs/features/img/public-shared-link-album.webp differ diff --git a/docs/docs/features/img/public-shared-link-form.webp b/docs/docs/features/img/public-shared-link-form.webp index 1f2a791691..b3ccc732ed 100644 Binary files a/docs/docs/features/img/public-shared-link-form.webp and b/docs/docs/features/img/public-shared-link-form.webp differ diff --git a/docs/docs/features/img/public-shared-link-individual.webp b/docs/docs/features/img/public-shared-link-individual.webp index 63ddb04668..c7463060f6 100644 Binary files a/docs/docs/features/img/public-shared-link-individual.webp and b/docs/docs/features/img/public-shared-link-individual.webp differ diff --git a/docs/docs/features/img/read-only-mode.webp b/docs/docs/features/img/read-only-mode.webp new file mode 100644 index 0000000000..cb1694f609 Binary files /dev/null and b/docs/docs/features/img/read-only-mode.webp differ diff --git a/docs/docs/features/img/reverse-geocoding-mobile1.webp b/docs/docs/features/img/reverse-geocoding-mobile1.webp index 8df3a0dd6e..6a16b4c433 100644 Binary files a/docs/docs/features/img/reverse-geocoding-mobile1.webp and b/docs/docs/features/img/reverse-geocoding-mobile1.webp differ diff --git a/docs/docs/features/img/reverse-geocoding-mobile2.webp b/docs/docs/features/img/reverse-geocoding-mobile2.webp index d0c4c3e39d..5c2a3c3364 100644 Binary files a/docs/docs/features/img/reverse-geocoding-mobile2.webp and b/docs/docs/features/img/reverse-geocoding-mobile2.webp differ diff --git a/docs/docs/features/img/reverse-geocoding-mobile3.webp b/docs/docs/features/img/reverse-geocoding-mobile3.webp index 542ac678ac..2bd78c778b 100644 Binary files a/docs/docs/features/img/reverse-geocoding-mobile3.webp and b/docs/docs/features/img/reverse-geocoding-mobile3.webp differ diff --git a/docs/docs/features/img/search-ex-1.webp b/docs/docs/features/img/search-ex-1.webp deleted file mode 100644 index f441fc4789..0000000000 Binary files a/docs/docs/features/img/search-ex-1.webp and /dev/null differ diff --git a/docs/docs/features/img/shared-album-mobile.webp b/docs/docs/features/img/shared-album-mobile.webp index 13c4ac24f9..26bf7793f9 100644 Binary files a/docs/docs/features/img/shared-album-mobile.webp and b/docs/docs/features/img/shared-album-mobile.webp differ diff --git a/docs/docs/features/img/shared-album-user-selection.webp b/docs/docs/features/img/shared-album-user-selection.webp index 5852233bd3..1e7e3203f9 100644 Binary files a/docs/docs/features/img/shared-album-user-selection.webp and b/docs/docs/features/img/shared-album-user-selection.webp differ diff --git a/docs/docs/features/img/shared-album.webp b/docs/docs/features/img/shared-album.webp index dcd03c6b75..506219e1ee 100644 Binary files a/docs/docs/features/img/shared-album.webp and b/docs/docs/features/img/shared-album.webp differ diff --git a/docs/docs/features/img/web-edit-download.webp b/docs/docs/features/img/web-edit-download.webp new file mode 100644 index 0000000000..07b0ebfcb5 Binary files /dev/null and b/docs/docs/features/img/web-edit-download.webp differ diff --git a/docs/docs/features/img/web-edit-interface.webp b/docs/docs/features/img/web-edit-interface.webp new file mode 100644 index 0000000000..d3b73a4607 Binary files /dev/null and b/docs/docs/features/img/web-edit-interface.webp differ diff --git a/docs/docs/features/libraries.md b/docs/docs/features/libraries.md index 9f1cef0bc4..2fb5a1c56a 100644 --- a/docs/docs/features/libraries.md +++ b/docs/docs/features/libraries.md @@ -118,46 +118,35 @@ _Remember to run `docker compose up -d` to register the changes. Make sure you c These actions must be performed by the Immich administrator. -- Click on your avatar in the upper right corner -- Click on Administration -> External Libraries -- Click on Create an external library… -- Select which user owns the library, this can not be changed later -- Enter `/mnt/media/christmas-trip` then click Add -- Click on Save -- Click the drop-down menu on the newly created library -- Click on Scan -- Click the drop-down menu on the newly created library -- Click on Rename Library and rename it to "Christmas Trip" +- Click on your avatar in the upper right corner. +- Click on `Administration -> External Libraries`. +- Click on `Create Library`. +- Select which user owns the library, this **can not** be changed later +- You are now entering the library management page. +- Click on `Add` in the `Folders` section. +- Enter `/mnt/media/christmas-trip` then click Add. +- Click on `Edit` Library and rename it to "Christmas Trip". NOTE: We have to use the `/mnt/media/christmas-trip` path and not the `/mnt/nas/christmas-trip` path since all paths have to be what the Docker containers see. Next, we'll add an exclusion pattern to filter out raw files. -- Click the drop-down menu on the newly-created Christmas library -- Click on Manage -- Click on Scan Settings -- Click on Add Exclusion Pattern -- Enter `**/Raw/**` and click save. -- Click save -- Click the drop-down menu on the newly created library -- Click on Scan +- Click on `Add` in the `Exclusion Patterns` section. +- Enter `**/Raw/**` and click Add. +- Click on `Scan` The christmas trip library will now be scanned in the background. In the meantime, let's add the videos and old photos to another library. -- Click on Create External Library. - -:::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. -::: - -- Click the drop-down menu on the newly created library -- Click Edit Import Paths -- Click on Add Path +- Go back to `Administration -> External Libraries`. +- Click on `Create Library`. +- Select which user owns the library, +- You are now entering the library management page. +- Click on `Add` in the `Folders` section. - Enter `/mnt/media/old-pics` then click Add -- Click on Add Path +- Click on `Add` in the `Folders` section. - Enter `/mnt/media/videos` then click Add -- Click Save -- Click on Scan +- Click on `Scan` +- Click on `Edit` Library and rename it to "Old videos and photos". Within seconds, the assets from the old-pics and videos folders should show up in the main timeline. diff --git a/docs/docs/features/mobile-app.mdx b/docs/docs/features/mobile-app.mdx index 73ba2f7cc0..02b5d492f4 100644 --- a/docs/docs/features/mobile-app.mdx +++ b/docs/docs/features/mobile-app.mdx @@ -20,14 +20,6 @@ Below are the SHA-256 fingerprints for the certificates signing the android appl ::: -:::info Beta Program -The beta release channel allows users to test upcoming changes before they are officially released. To join the channel use the links below. - -- Android: Invitation link from [web](https://play.google.com/store/apps/details?id=app.alextran.immich) or from [mobile](https://play.google.com/store/apps/details?id=app.alextran.immich) -- iOS: [TestFlight invitation link](https://testflight.apple.com/join/1vYsAa8P) - -::: - ## Login @@ -36,15 +28,11 @@ The beta release channel allows users to test upcoming changes before they are o -:::info -You can enable automatic backup on supported devices. For more information see [Automatic Backup](/features/automatic-backup.md). -::: - ## Sync only selected photos If you have a large number of photos on the device, and you would prefer not to backup all the photos, then it might be prudent to only backup selected photos from device to the Immich server. -First, you need to enable the Storage Indicator in your app's settings. Navigate to **Settings -> Photo Grid** and enable **"Show Storage indicator on asset tiles"**; this makes it easy to distinguish local-only assets and synced assets. +First, you need to enable the Storage Indicator in your app's settings. Navigate to **Settings -> Photo Grid** and enable **`Show Storage indicator on asset tiles`**; this makes it easy to distinguish local-only assets and synced assets. :::note @@ -55,13 +43,8 @@ This will enable a small cloud icon on the bottom right corner of the asset tile ::: -Now make sure that the local album is selected in the backup screen (steps 1-2 above). You can find these albums listed in **Library -> On this device**. To selectively upload photos from these albums, simply select the local-only photos and tap on "Upload" button in the dynamic bottom menu. +Now make sure that the local album is selected in the backup screen (steps 1-2 above). You can find these albums listed in **Library -> On this device**. To selectively upload photos from these albums, simply select the local-only photos and tap on the `Upload` button in the dynamic bottom menu. - + 1. **Configuration:** - - **Cutoff Date:** You can select a cutoff date. The tool will only look for photos and videos **on or before** this date. - - **Filter Options:** You can choose to remove **All** assets, or restrict removal to **Photos only** or **Videos only**. - - **Keep Favorites:** By default, local assets marked as favorites are preserved on your device, even if they match the cutoff date. -2. **Scan & Review:** Before any files are removed, you are presented with a review screen to verify which items will be deleted. -3. **Deletion:** Confirmed items are moved to your device's native Trash/Recycle Bin. They will be permanently removed by the OS based on your system settings (usually after 30 days). + - **Cutoff date:** Free Up Space will only look for photos and videos **on or before** this date. Photos removed from the device don't show up in other (messaging) apps and have to be shared from Immich in order to send them. + - **Keep favorites:** This works the same way `Keep albums` does. By default, favorited assets are preserved on your device. + - **Keep albums:** Hold all photos and videos in the selected albums on your device, regardless of other settings. By default, `WhatsApp` [related albums](#external-app-dependencies) are selected to be kept on the device. Assets not already on the device will not be re-downloaded. + - **Keep on device:** You can choose to restrict removal to `Always keep` **All photos** or **All videos**, regardless of other settings. This setting can hamper freeing up space significantly — with 80 GB of videos and 40 GB photos, selecting `Always keep photos` retains thousands of photos on your device. -:::info Android Permissions -For the smoothest experience on Android, you should grant Immich special delete privileges. Without this, you may be prompted to confirm deletion for every single image. +2. **Scan & Review:** Before any files are removed, you are presented with a review screen to verify which items will be deleted and how much storage is reclamable. +3. **Deletion:** Confirmed items are moved to your device's native Trash/Recycle Bin. -Go to **Immich Settings > Advanced** and enable **"Media Management Access"**. +:::info reclaim storage +To use the reclaimed space right away, you must empty the system/gallery trash manually outside of Immich. ::: -### iCloud Photos (iOS Users) +Provided the server is healthy and [backed up](/administration/backup-and-restore.md), assets removed by Free Up Space can always be accessed in the Immich app. -If you use **iCloud Photos** alongside Immich, it is vital to understand how deletion affects your data. iCloud utilizes a two-way sync; this means deleting a photo from your iPhone to free up space will **also delete it from iCloud**. +### iCloud Photos + +If you use **iCloud Photos** alongside Immich, it is vital to understand how deletion affects your data. After using **Free Up Space**, the photo will be stored **only** on your Immich server (and your phone's "Recently Deleted" folder for 30 days). + +Assets that are part of an **iCloud Shared Album** are automatically excluded from the cleanup scan because iCloud does not allow removing the items in Shared Album from the device. :::warning iCloud & Backups -If you rely on iCloud as a secondary backup (part of a 3-2-1 backup strategy), using the Free Up Space feature in Immich will remove the file from both your phone and iCloud. +If, in addition to Immich, you rely on iCloud as a secondary backup (as part of your [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) backup strategy), you should instead use `Optimize iPhone Storage` in [iCloud Photos](https://support.apple.com/en-us/105061). -Once deleted, the photo will exist **only** on your Immich server (and your phone's "Recently Deleted" folder for 30 days). - -When you use iCloud Photos and delete a photo or video on one device, it's also deleted on all other devices where you're signed in with the same Apple Account. - -More information on the [Apple Support](https://support.apple.com/en-us/108922#iCloud_photo_library) website - -**Shared Albums** -Assets that are part of an **iCloud Shared Album** are automatically excluded from the cleanup scan to ensure they remain viewable to others in the shared album. +iCloud utilizes a two-way sync; this means deleting a photo, or using Free Up Space from your iPhone will **also delete it from iCloud** and all other devices (Mac, iPad) where you're signed in with the same Apple Account. See [Apple Support](https://support.apple.com/en-us/108922#iCloud_photo_library) for more info. ::: -### External App Dependencies (WhatsApp, etc.) +### External App Dependencies (WhatsApp, etc.) \{#external-app-dependencies\} -:::danger WhatsApp & Local Files Android applications like **WhatsApp** rely on local files to display media in chat history. If Immich backs up your WhatsApp folder and you run **Free Up Space**, the local copies of these images will be deleted. Consequently, **media in your WhatsApp chats will appear blurry or missing.** You will only be able to view these photos inside the Immich app; they will no longer be visible within the WhatsApp interface. -**Recommendation:** If keeping chat history intact is important, please ensure you review the deletion list carefully or consider excluding WhatsApp folders from the backup if you intend to use this feature frequently. -::: - -:::info reclaim storage -You must empty the system/gallery trash manually to reclaim storage. -::: +**Recommendation:** If keeping chat history intact is important, exclude WhatsApp with `Keep albums` in Free Up Space and review the deletion list carefully. You have to enable [Album Sync](#album-sync) for WhatsApp to show up in the list. Alternatively, don't [back up](#backup) WhatsApp with Immich. ## Album Sync @@ -138,10 +114,19 @@ You can sync or mirror an album from your phone to the Immich server on your acc ### Synchronizing albums from the past -Albums can be synchronized to the server even if they did not exist on the server before. In order to apply this setting you have to: -Enter the cloud on the top right -> cog wheel on the top right -> select the sync option under Sync albums. + + +Albums can be synchronized to the server even if they did not exist on the server before. You can enable this feature at any time and use the **Reorganize into album** button to backfill existing uploads into their corresponding albums. :::info Sync albums delete/move photos If you delete/move photos in the local album on your device, it will not be reflected in the album on the server **even if** you click Sync albums It will only reflect files you add. ::: + +## Read-only/kid Mode + +You can set the app to read-only mode to prevent accidental deletion of photos from your device, and only allow viewing photos on the timeline. + +To toggle this feature, long-press the profile icon or go to `Settings > Advanced > Read-only Mode`. + + diff --git a/docs/docs/features/mobile-backup.md b/docs/docs/features/mobile-backup.md new file mode 100644 index 0000000000..f3eb1a359c --- /dev/null +++ b/docs/docs/features/mobile-backup.md @@ -0,0 +1,85 @@ +--- +sidebar_position: 1 +--- + +# Mobile Backup + +## Overview + +Immich supports uploading photos and videos from your mobile device to the server automatically. + +When backup is enabled, Immich will upload new photos and videos from selected albums when you open or resume the app, as well as periodically in the background. + + + +## General Features + +### Backup albums selection + + + +You can select which albums on your mobile device to back up to the server. You can also exclude specific albums (by double-tapping on them) from being backed up. This is useful for iOS users since assets can belong to multiple albums. For example, you may want to back up all assets except those in the "Videos" album. + +### Deduplication + +When you first select albums for backup, Immich calculates a checksum for each file's content. This checksum identifies assets already on the server—whether uploaded via CLI, web interface, or another device. Files matching existing assets are skipped, preventing duplicate uploads and saving bandwidth. + +### Networking requirements + +By default, Immich will only upload photos and videos when connected to Wi-Fi. You can change this behavior in the backup settings page. + + + +### Backup album synchronization + + + +When enabled, Immich automatically creates albums on the server that mirror the albums on your mobile device. Photos and videos are organized into these server-side albums to match your device's album structure, making it easy to find and browse your content the same way you do on your phone. + +This is a one-way sync from your device to the server. You can enable this feature at any time and use the **Reorganize into album** button to backfill existing uploads into their corresponding albums. + +## Platform Specific Features + +### Android + + + +- It is a well-known problem that some Android models are very strict with battery optimization settings, which can cause a problem with the background worker. Please visit [Don't kill my app](https://dontkillmyapp.com/) for a guide on disabling this setting on your phone. +- You can allow the background task to run only when the device is charging. +- You can set the minimum delay from the time a photo is taken to when the background upload task will run. + +### iOS + +- You must enable **Background App Refresh** for the app to work in the background. You can enable it in the Settings app under General > Background App Refresh. + +
+ +
+ +- iOS automatically manages background tasks; the app cannot control when the background upload task will run. The more frequently you open the app, the more often background tasks will run. + +#### iCloud Backup + +Local albums containing assets from iCloud and marked for backup in Immich will be pulled from iCloud and temporarily stored in the app's cache folder. Once the hashing and uploading process is completed, the temporary files will be emptied. + +This process may consume additional data and storage space on your device, especially if you have a large number of iCloud photos and videos. Please ensure you have sufficient storage space and monitor your data usage if you are not connected to Wi-Fi. diff --git a/docs/docs/features/searching.md b/docs/docs/features/searching.md index e8985b0c92..7360787127 100644 --- a/docs/docs/features/searching.md +++ b/docs/docs/features/searching.md @@ -11,45 +11,25 @@ Contextual CLIP search is powered by the [VectorChord](https://github.com/tensor In addition, Immich offers advanced search functionality, allowing you to find specific content using customizable search filters. These filters include location, one or more faces, specific albums, and more. You can try out the search filters on the [Demo site](https://demo.immich.app). -The filters smart search allows you to search by include: +You can search the following types of content: -- People -- Location - - Country - - State - - City -- Camera - - Make - - Model -- Date range -- File name or extension -- Media type - - Image (including live/motion photos) - - Video - - All -- Condition - - Not in any album - - Archived - - Favorited - - Rating - - - - -Some search examples: +| Type | Description | +| ----------------------------------- | ----------------------------------------------------- | +| People | Faces that are recognized in your photos/videos. | +| Contextual | Content of the photos and videos. | +| File name or extension | Full or partial file's name, or file's extension | +| Description | Description added to assets. | +| Optical Character Recognition (OCR) | Text in images | +| Locations | Cities, states, and countries from reverse geocoding. | +| Tags | Tags assigned or extracted from assets. | +| Camera | make, model and lens model | +| Time frame | Start and end date of a specific time bucket | +| Media type | Image or video or both | +| Display options | In Archive, in Favorites or Not in any album | +| Start rating | User-assigned start rating | - - - - - - - - - - ## Configuration Navigating to `Administration > Settings > Machine Learning Settings > Smart Search` will show the options available. diff --git a/docs/docs/guides/external-library.md b/docs/docs/guides/external-library.md index 3f366bb0d4..a1c8092732 100644 --- a/docs/docs/guides/external-library.md +++ b/docs/docs/guides/external-library.md @@ -30,26 +30,17 @@ In the Immich web UI: - click the **Administration** link in the upper right corner. -- Select the **External Libraries** tab - - -- Click the **Create Library** button - +- Select the **External Libraries** tab and click the **Create Library** button + - In the dialog, select which user should own the new library -- Click the three-dots menu and select **Edit Import Paths** - +- You are now entering the library management page. + -- Click Add path - - -- Enter **/home/user/photos1** as the path and click Add - - -- Save the new path - +- Click `Add` in the Folder section to specify a path for scanning and enter **/home/user/photos1** as the path and click Add + - Click the three-dots menu and select **Scan New Library Files** @@ -64,4 +55,3 @@ In the Immich web UI: - You should see non-zero Active jobs for Library, Generate Thumbnails, and Extract Metadata. - diff --git a/docs/docs/guides/img/administration-link.webp b/docs/docs/guides/img/administration-link.webp index 22bc4e4c87..dc0b6cd63a 100644 Binary files a/docs/docs/guides/img/administration-link.webp and b/docs/docs/guides/img/administration-link.webp differ diff --git a/docs/docs/guides/img/create-external-library.webp b/docs/docs/guides/img/create-external-library.webp index 595d699829..90c38af077 100644 Binary files a/docs/docs/guides/img/create-external-library.webp and b/docs/docs/guides/img/create-external-library.webp differ diff --git a/docs/docs/guides/img/edit-import-path.webp b/docs/docs/guides/img/edit-import-path.webp new file mode 100644 index 0000000000..c07ae7b7fc Binary files /dev/null and b/docs/docs/guides/img/edit-import-path.webp differ diff --git a/docs/docs/guides/img/external-libraries.webp b/docs/docs/guides/img/external-libraries.webp deleted file mode 100644 index b257ac3def..0000000000 Binary files a/docs/docs/guides/img/external-libraries.webp and /dev/null differ diff --git a/docs/docs/guides/img/job-status.webp b/docs/docs/guides/img/job-status.webp deleted file mode 100644 index 2ec8709859..0000000000 Binary files a/docs/docs/guides/img/job-status.webp and /dev/null differ diff --git a/docs/docs/guides/img/jobs-tab.webp b/docs/docs/guides/img/jobs-tab.webp index b8f45494b9..4cd5ec5026 100644 Binary files a/docs/docs/guides/img/jobs-tab.webp and b/docs/docs/guides/img/jobs-tab.webp differ diff --git a/docs/docs/guides/img/library-management-page.webp b/docs/docs/guides/img/library-management-page.webp new file mode 100644 index 0000000000..dc81ece2d7 Binary files /dev/null and b/docs/docs/guides/img/library-management-page.webp differ diff --git a/docs/docs/guides/img/library-owner.webp b/docs/docs/guides/img/library-owner.webp index f92342f205..9a3ccb7778 100644 Binary files a/docs/docs/guides/img/library-owner.webp and b/docs/docs/guides/img/library-owner.webp differ diff --git a/docs/docs/guides/img/scan-new-library-files.webp b/docs/docs/guides/img/scan-new-library-files.webp index 815cc594cd..f5ef481db8 100644 Binary files a/docs/docs/guides/img/scan-new-library-files.webp and b/docs/docs/guides/img/scan-new-library-files.webp differ diff --git a/docs/docs/install/environment-variables.md b/docs/docs/install/environment-variables.md index a7494d5415..07b37f0e41 100644 --- a/docs/docs/install/environment-variables.md +++ b/docs/docs/install/environment-variables.md @@ -17,11 +17,11 @@ If this does not work, try running `docker compose up -d --force-recreate`. ## Docker Compose -| Variable | Description | Default | Containers | -| :----------------- | :------------------------------ | :-------: | :----------------------- | -| `IMMICH_VERSION` | Image tags | `release` | server, machine learning | -| `UPLOAD_LOCATION` | Host path for uploads | | server | -| `DB_DATA_LOCATION` | Host path for Postgres database | | database | +| Variable | Description | Default | Containers | +| :----------------- | :------------------------------ | :-----: | :----------------------- | +| `IMMICH_VERSION` | Image tags | `v2` | server, machine learning | +| `UPLOAD_LOCATION` | Host path for uploads | | server | +| `DB_DATA_LOCATION` | Host path for Postgres database | | database | :::tip These environment variables are used by the `docker-compose.yml` file and do **NOT** affect the containers directly. diff --git a/docs/docs/overview/quick-start.mdx b/docs/docs/overview/quick-start.mdx index d80a194ad2..521d0a232c 100644 --- a/docs/docs/overview/quick-start.mdx +++ b/docs/docs/overview/quick-start.mdx @@ -10,7 +10,7 @@ to install and use it. ## Requirements -- A system with at least 4GB of RAM and 2 CPU cores. +- A system with at least 6GB of RAM and 2 CPU cores. - [Docker](https://docs.docker.com/engine/install/) > For a more detailed list of requirements, see the [requirements page](/install/requirements). @@ -63,9 +63,9 @@ The backup time differs depending on how many photos are on your mobile device. take quite a while. To quickly get going, you can selectively upload few photos first, by following this [guide](/features/mobile-app#sync-only-selected-photos). -You can select the **Jobs** tab to see Immich processing your photos. +You can select the **Job Queues** tab to see Immich processing your photos. - + --- @@ -90,4 +90,4 @@ You may want to [upload photos from your own archive](/features/command-line-int You may want to incorporate a pre-existing archive of photos from an [External Library](/features/libraries); there's a [guide](/guides/external-library) for that. -You may want your mobile device to [back photos up to your server automatically](/features/automatic-backup). +You may want your mobile device to [back photos up to your server automatically](/features/mobile-backup). diff --git a/docs/docs/partials/_mobile-app-backup.md b/docs/docs/partials/_mobile-app-backup.md index 67c43e83b7..777a989334 100644 --- a/docs/docs/partials/_mobile-app-backup.md +++ b/docs/docs/partials/_mobile-app-backup.md @@ -6,4 +6,8 @@ -3. Scroll down to the bottom and press "**Start Backup**" to start the backup process. This will upload all the assets in the selected albums. +3. Scroll down to the bottom and press "**Enable Backup**" to start the backup process. This will upload all the assets in the selected albums. + +:::info +You can read more about backup options [here](/features/mobile-backup.md). +::: diff --git a/docs/docs/partials/_user-create.md b/docs/docs/partials/_user-create.md index 5c5e1fd6f9..8856b8f2e9 100644 --- a/docs/docs/partials/_user-create.md +++ b/docs/docs/partials/_user-create.md @@ -2,6 +2,6 @@ If you have friends or family members who want to use the application as well, y -In the Administration panel, you can click on the **Create user** button, and you'll be presented with the following dialog: +On the **Administration > Users** page, you can click on the **Create user** button, and you'll be presented with the following dialog: - + diff --git a/docs/docs/partials/img/admin-registration-form.webp b/docs/docs/partials/img/admin-registration-form.webp index eac5da94d0..5300a888f8 100644 Binary files a/docs/docs/partials/img/admin-registration-form.webp and b/docs/docs/partials/img/admin-registration-form.webp differ diff --git a/docs/docs/partials/img/album-selection.webp b/docs/docs/partials/img/album-selection.webp index fc7faf2150..8c81350e0c 100644 Binary files a/docs/docs/partials/img/album-selection.webp and b/docs/docs/partials/img/album-selection.webp differ diff --git a/docs/docs/partials/img/create-new-user-dialog.webp b/docs/docs/partials/img/create-new-user-dialog.webp index 47d50f8b04..058abc698d 100644 Binary files a/docs/docs/partials/img/create-new-user-dialog.webp and b/docs/docs/partials/img/create-new-user-dialog.webp differ diff --git a/docs/docs/partials/img/create-new-user.webp b/docs/docs/partials/img/create-new-user.webp index e3cdb796a3..c4497aa3dc 100644 Binary files a/docs/docs/partials/img/create-new-user.webp and b/docs/docs/partials/img/create-new-user.webp differ diff --git a/docs/docs/partials/img/enable-storage-template.webp b/docs/docs/partials/img/enable-storage-template.webp index 809bf09adf..d27ed59379 100644 Binary files a/docs/docs/partials/img/enable-storage-template.webp and b/docs/docs/partials/img/enable-storage-template.webp differ diff --git a/docs/docs/partials/img/sign-in-phone.webp b/docs/docs/partials/img/sign-in-phone.webp index 2af8163af3..45265bed39 100644 Binary files a/docs/docs/partials/img/sign-in-phone.webp and b/docs/docs/partials/img/sign-in-phone.webp differ diff --git a/docs/docs/partials/img/storage-template-migration-job.webp b/docs/docs/partials/img/storage-template-migration-job.webp index 7d4c62cfbe..b6d07300f7 100644 Binary files a/docs/docs/partials/img/storage-template-migration-job.webp and b/docs/docs/partials/img/storage-template-migration-job.webp differ diff --git a/docs/docs/partials/img/storage-template.webp b/docs/docs/partials/img/storage-template.webp index e2f9401a70..07cf05dfed 100644 Binary files a/docs/docs/partials/img/storage-template.webp and b/docs/docs/partials/img/storage-template.webp differ diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index b65cddfeb3..147f981aff 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -76,6 +76,10 @@ const config = { autoCollapseCategories: false, }, }, + tableOfContents: { + minHeadingLevel: 2, + maxHeadingLevel: 4, + }, navbar: { logo: { alt: 'Immich Logo', diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 29b9186307..665bc8fd55 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -69,7 +69,13 @@ h6 { --ifm-color-primary-lighter: #e9f1fe; --ifm-color-primary-lightest: #ffffff; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); - --ifm-background-color: #000000; + --ifm-navbar-background-color: #0c0c0c; + --ifm-footer-background-color: #0c0c0c; +} + +[data-theme='dark'] body, +[data-theme='dark'] .main-wrapper { + background-color: #070707; } div[class^='announcementBar_'] { diff --git a/docs/static/_redirects b/docs/static/_redirects index ce4b670246..5d4ad14f00 100644 --- a/docs/static/_redirects +++ b/docs/static/_redirects @@ -34,3 +34,4 @@ /overview/introduction /overview/quick-start 307 /overview/welcome /overview/quick-start 307 /docs/* /:splat 307 +/features/automatic-backup /features/mobile-backup 307 diff --git a/docs/tailwind.config.js b/docs/tailwind.config.js index 5ed28c737d..9a654487cc 100644 --- a/docs/tailwind.config.js +++ b/docs/tailwind.config.js @@ -17,9 +17,9 @@ module.exports = { // Dark Theme 'immich-dark-primary': '#adcbfa', - 'immich-dark-bg': '#070a14', + 'immich-dark-bg': '#000000', 'immich-dark-fg': '#e5e7eb', - 'immich-dark-gray': '#212121', + 'immich-dark-gray': '#111111', }, }, }, diff --git a/mobile/lib/widgets/settings/backup_settings/drift_backup_settings.dart b/mobile/lib/widgets/settings/backup_settings/drift_backup_settings.dart index b44971a135..2c179c42ea 100644 --- a/mobile/lib/widgets/settings/backup_settings/drift_backup_settings.dart +++ b/mobile/lib/widgets/settings/backup_settings/drift_backup_settings.dart @@ -326,7 +326,7 @@ class _BackupDelaySliderState extends ConsumerState<_BackupDelaySlider> { crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: const EdgeInsets.only(left: 16.0, top: 8.0), + padding: const EdgeInsets.only(left: 24.0, top: 8.0), child: Text( 'backup_controller_page_background_delay'.tr( namedArgs: {'duration': formatBackupDelaySliderValue(currentValue)}, diff --git a/mobile/lib/widgets/settings/free_up_space_settings.dart b/mobile/lib/widgets/settings/free_up_space_settings.dart index fbd6a08736..a300951285 100644 --- a/mobile/lib/widgets/settings/free_up_space_settings.dart +++ b/mobile/lib/widgets/settings/free_up_space_settings.dart @@ -226,7 +226,7 @@ class _FreeUpSpaceSettingsState extends ConsumerState { } if (state.keepFavorites) { - parts.add('favorites'.t(context: context).toLowerCase()); + parts.add('favorites'.t(context: context)); } if (state.keepAlbumIds.isNotEmpty) {