diff --git a/README.md b/README.md index 11289b4e0..c6d6c0bed 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +

Immich

+

High performance self-hosted photo and video backup solution.

+

+ +

+

License: MIT Star on Github @@ -14,75 +20,66 @@
-
-
-
- -

- -

+

-# Immich - -**High performance self-hosted photo and video backup solution.** - -![](https://media.giphy.com/media/y8ZeaAigGmNvlSoKhU/giphy.gif) - -Loading ~4000 images/videos - -## Screenshots - -### Mobile -

- - - - - - - -

- -### Web -

- - -

- -# Note - -**!! NOT READY FOR PRODUCTION! DO NOT USE TO STORE YOUR ASSETS !!** - -This project is under heavy development, there will be continuous functions, features and api changes. +## Content +- [Features](#features) +- [Screenshots](#screenshots) +- [Installation](#installation) +- [Mobile App](#-mobile-app) +- [Development](#development) +- [Support](#support) +- [Known Issues](#known-issues) # Features +> ⚠️ WARNING: **NOT READY FOR PRODUCTION! DO NOT USE TO STORE YOUR ASSETS**. This project is under heavy development, there will be continuous functions, features and api changes. + | | Mobile | Web | -| - | - | - | -| Upload and view videos and photos | Yes | Yes -| Auto backup when the app is opened | Yes | N/A -| Selective album(s) for backup | Yes | N/A -| Download photos and videos to local device | Yes | Yes -| Multi-user support | Yes | Yes -| Album | Yes | Yes -| Shared Albums | Yes | Yes -| Quick navigation with draggable scrollbar | Yes | Yes -| Support RAW (HEIC, HEIF, DNG, Apple ProRaw) | Yes | Yes -| Metadata view (EXIF, map) | Yes | Yes -| Search by metadata, objects and image tags | Yes | No -| Administrative functions (user management) | N/A | Yes +| - | - | - | +| ☁️ Upload and view videos and photos | Yes | Yes +| 🔄 Auto backup when the app is opened | Yes | N/A +| ☑️ Selective album(s) for backup | Yes | N/A +| ⬇️ Download photos and videos to local device | Yes | Yes +| 👪 Multi-user support | Yes | Yes +| 🖼️ Album | Yes | Yes +| 🤝 Shared Albums | Yes | Yes +| 🚀 Quick navigation with draggable scrollbar | Yes | Yes +| 🗃️ Support RAW (HEIC, HEIF, DNG, Apple ProRaw) | Yes | Yes +| 🧭 Metadata view (EXIF, map) | Yes | Yes +| 🔎 Search by metadata, objects and image tags | Yes | No +| ⚙️ Administrative functions (user management) | N/A | Yes -# System Requirement +
-**OS**: Preferred unix-based operating system (Ubuntu, Debian, MacOS...etc). +# Screenshots -**RAM**: At least 2GB, preferred 4GB. +### Mobile +| | | | | | +| - | - | - | - | - | +|

Login with custom URL

|

Backup Settings

|

Backup selection

|

Home Screen

|

Curated search

| +|

Shared albums

|

EXIF info

|

Loading ~4000 images/videos

| -**Core**: At least 2 cores, preferred 4 cores. +### Web +| Home Dashboard | Image view | +| - | - | +| | | -# Technology Stack + +
+ +# Project Details +## 💾 System Requirements + +- **OS**: Preferred unix-based operating system (Ubuntu, Debian, MacOS...etc). + +- **RAM**: At least 2GB, preferred 4GB. + +- **Core**: At least 2 cores, preferred 4 cores. + +## 🔩 Technology Stack There are several services that compose Immich: @@ -93,15 +90,18 @@ There are several services that compose Immich: 5. **Nginx** - Load balancing and optimized file uploading. 6. **TensorFlow** - Object Detection (COCO SSD) and Image Classification (ImageNet). -# Installing -## One-step installation - for evaluating only +
+ +# Installation + +## Testing One-step installation (not recommended for production) + +> ⚠️ *This installation method is for evaluating Immich before futher customization to meet the users' needs.* *Applicable system: Ubuntu, Debian, MacOS* -*This installation method is for evaluating Immich before futher customization to meet the users' needs.* - -In the shell, from the directory of your choice, run the following command: +- In the shell, from the directory of your choice, run the following command: ```bash curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | bash @@ -114,116 +114,70 @@ The web application will be available at `http://:2283`, and The directory which is used to store the backup file is `./immich-app/immich-data`. -## Customize installation - for production usage +
+ +## Custom installation (Recommended) ### Step 1 - Download necessary files -Create a directory called `immich-app` and cd into it. Then +- Create a directory called `immich-app` and cd into it. -Get `docker-compose.yml` +- Get `docker-compose.yml` ```bash wget https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml ``` -Get `.env` +- Get `.env` ```bash wget -O .env https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example ``` -### Step 2 - Populate .env file with customed information +### Step 2 - Populate .env file with custom information -* Populate customised database information if necessary. +See the example .env file + +* Populate custom database information if necessary. * Populate `UPLOAD_LOCATION` as prefered location for storing backup assets. -* Populate a secret value for `JWT_SECRET` -* [Optional] Populate Mapbox value. - -**Example** - -```bash -################################################################################### -# Database -################################################################################### -DB_USERNAME=postgres -DB_PASSWORD=postgres -DB_DATABASE_NAME=immich - -################################################################################### -# Upload File Config -################################################################################### -UPLOAD_LOCATION= - -################################################################################### -# JWT SECRET -################################################################################### -JWT_SECRET=randomstringthatissolongandpowerfulthatnoonecanguess - -################################################################################### -# MAPBOX -#################################################################################### -# ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY -ENABLE_MAPBOX=false -MAPBOX_KEY= -``` +* Populate a secret value for `JWT_SECRET`, you can use this command: `openssl rand -base64 128` +* [Optional] Populate Mapbox value to use reverse geocoding. ### Step 3 - Start the containers -Run `docker-compose up` or `docker compose up` (based on your docker's version) +- Run `docker-compose up` or `docker compose up` (based on your docker's version) ### Step 4 - Register admin user -Navigate to the web at `http://:2283` and follow the prompts to register admin user. - -

+- Navigate to the web at `http://:2283` and follow the prompts to register admin user. +

-

+

-Additional accounts on the server can be created by the admin account. - -

- -

+- You can add and manage users from the administration page. +

+ +

### Step 5 - Access the mobile app -Login the mobile app with the server endpoint URL at `http://:2283/api` - -

+- Login the mobile app with the server endpoint URL at `http://:2283/api` +

-

+

-## Mobile app +
-## F-Droid -You can get the app on F-droid by clicking the image below. +# Mobile app -[Get it on F-Droid](https://f-droid.org/packages/app.alextran.immich) +| F-Droid | Google Play | iOS | +| - | - | - | +| Get it on F-Droid |

|

| + +> *The App version might be lagging behind the latest release due to the review process.* -## Android - -#### Get the app on Google Play Store [here](https://play.google.com/store/apps/details?id=app.alextran.immich) - -*The App version might be lagging behind the latest release due to the review process.* - -

- -

- -## iOS - -#### Get the app on Apple AppStore [here](https://apps.apple.com/us/app/immich/id1613945652): - -*The App version might be lagging behind the latest release due to the review process.* - - -

- -

- +
# Development @@ -244,31 +198,28 @@ npm run api:generate # Run from server directory ``` You can find the generated client SDK in the [`web/src/api`](web/src/api) for Typescript SDK and [`mobile/openapi`](mobile/openapi) for Dart SDK. + +
+ # Support -If you like the app, find it helpful, and want to support me to offset the cost of publishing to AppStores, you can sponsor the project with [**one time**](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) or monthly donation from [**Github Sponsor**](https://github.com/sponsors/alextran1502) +If you like the app, find it helpful, and want to support me to offset the cost of publishing to AppStores, you can sponsor the project with [**one time**](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) or monthly donation from [**Github Sponsor**](https://github.com/sponsors/alextran1502). You can also donate using crypto currency with the following addresses: -

- -1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX -

+

Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX

- -

- - -addr1qyy567vqhqrr3p7vpszr5p264gw89sqcwts2z8wqy4yek87cdmy79zazyjp7tmwhkluhk3krvslkzfvg0h43tytp3f5q49nycc - -

+

Cardano: addr1qyy567vqhqrr3p7vpszr5p264gw89sqcwts2z8wqy4yek87cdmy79zazyjp7tmwhkluhk3krvslkzfvg0h43tytp3f5q49nycc

This is also a meaningful way to give me motivation and encouragement to continue working on the app. Cheers! 🎉 -# Known Issue + +
+ +# Known Issues ## TensorFlow Build Issue