Git Product home page Git Product logo

immich-app / immich Goto Github PK

View Code? Open in Web Editor NEW
31.8K 118.0 1.5K 151.73 MB

High performance self-hosted photo and video management solution.

Home Page: https://immich.app

License: GNU Affero General Public License v3.0

HTML 0.04% Makefile 0.03% Shell 0.27% JavaScript 0.39% Dockerfile 0.15% TypeScript 43.89% Ruby 0.13% Kotlin 0.63% Swift 0.66% Objective-C 0.01% Dart 32.32% Python 2.09% CSS 0.07% Svelte 18.84% Mustache 0.28% C++ 0.22%
backup-tool mobile-app photo-gallery photos self-hosted videos flutter nestjs nodejs google-photos-alternative

immich's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

immich's Issues

[BUG] Backup stuck after 8 elements

I have a total of 218 assets I want to backup but after uploading 8 of them, the app is stuck at 100% on asset 210.
I cannot see anything in the logs: none of the docker containers shows anything during the upload attempt period (except for redis which says it successfully saved the changes).

I let the app run for over 30min to see if it was just a very slow/long upload, but the problem is still there.

To Reproduce
Steps to reproduce the behavior:

  1. Attempt to upload more than 8 files through the android app?

Expected behavior
All uploads should succeed.

Screenshots
Screenshot_2022-04-04-15-13-42-999_app alextran immich

Server (please complete the following information):

  • OS: Ubuntu 20.04
  • Version 1.5.0

Smartphone (please complete the following information):

  • Device: Mi 11
  • OS: MIUI 13
  • Version 1.5.0 build.8

Additional context
I also tried without TensorFlow (removed the immich_microservices) but it also fails at the exact same asset.

Android client disconnects when screen goes off

Client: v.0.6 Android 8.0
Server: Pi4

Backup stops as soon as the screen of my device turns off/locks.

Server reports

immich_server_1  | [Nest] 29  - 03/20/2022, 7:58:06 AM     LOG Client AEq3t1AYFKHKs2TeAAAN disconnected

I'd expect it to continue to run in the background?

When I turn on/unlock the device, backup will continue, there is the following message in the server's log:

immich_server_1  | [Nest] 29  - 03/20/2022, 7:49:00 AM   ERROR [ExceptionsHandler] The "path" argument must be of type string or an instance of Buffer or URL. Received null
immich_server_1  | TypeError: The "path" argument must be of type string or an instance of Buffer or URL. Received null
immich_server_1  |     at new ReadStream (node:internal/fs/streams:171:5)
immich_server_1  |     at createReadStream (node:fs:2873:10)
immich_server_1  |     at AssetService.serveFile (/usr/src/app/src/api-v1/asset/asset.service.ts:161:32)
immich_server_1  |     at runMicrotasks (<anonymous>)
immich_server_1  |     at processTicksAndRejections (node:internal/process/task_queues:96:5)
immich_server_1  |     at /usr/src/app/node_modules/@nestjs/core/router/router-execution-context.js:46:28
immich_server_1  |     at /usr/src/app/node_modules/@nestjs/core/router/router-proxy.js:9:17

Backup continues for a while until the screen turns off again.

Support docker secrets

Hi!

Would you please implement extra Docker environment variables called *_FILE or something in that fashion, and feed them /run/secrets/immich_*, at least for the database password and the jwt secret?
Doing otherwise can be unsafe. Ideally, the database name and username can also be read as secrets.

The docker-compose.yml would look like (only included the relevant parts)

services:
  server:
    environment:
      # STAGE
      NODE_ENV: development

      # Database
      DB_USERNAME_FILE: /run/secrets/immich_db_user
      DB_PASSWORD_FILE: /run/secrets/immich_db_password
      DB_DATABASE_NAME_FILE: /run/secrets/immich_db_db

      # Upload File Config
      UPLOAD_LOCATION: ./upload

      # JWT SECRET
      JWT_SECRET_FILE: /run/secrets/immich_jwt
    secrets:
      - immich_db_db
      - immich_db_user
      - immich_db_password
      - immich_jwt

  database:
    environment:
      TZ: ${TZ}
      POSTGRES_DB_FILE: /run/secrets/immich_db_db
      POSTGRES_USER: /run/secrets/immich_db_user
      POSTGRES_PASSWORD_FILE: /run/secrets/immich_db_password
    secrets:
      - immich_db_db
      - immich_db_user
      - immich_db_password

secrets:
  immich_db_db:
    file: /secrets_path/immich_db_db
  immich_db_user:
    file: /secrets_path/immich_db_user
  immich_db_password:
    file: /secrets_path/immich_db_password
  immich_jwt:
    file: /secrets_path/immich_jwt

I don't know Dart and TypeScript, but some possible code to read them in bash and store the contents in variables is:

[[ -z "${JWT_SECRET_FILE}" ]] && [[ -f "${JWT_SECRET_FILE}" ]] && JWT_SECRET='$(head -n 1 "${JWT_SECRET_FILE}")'

Hopefully this helps

[Feature] Unraid Community / All-Inclusive Image

Feature Details:

  • Create a single docker image for all components
  • Create necessary XML files for publishing the new image to the unraid community applications section.
  • We will create the necessary thread on the unraid forum after any PRs are merged.

Follow the guide here for steps to create the required XML files for unraid.

Constant high CPU load when idling

Platform: Linux pi4 5.10.92-v8+ #1514 SMP PREEMPT Mon Jan 17 17:39:38 GMT 2022 aarch64 GNU/Linux
OS: Raspbian 11/bullseye

UPLOAD_LOCATION is an NFS filesystem, NODE_ENV=development

The docker node process from immich-server-dev:1.3.0 produces constant high CPU load:

plot

Could this be node's watch mode? How do I turn this off?

FATAL: password authentication / DETAIL: Role “” does not exist

i cant access http://ip:2283 , https://ip:2284 nor can create a user
lsogs say i didnt configure database properly

immich_server    | 
proxy_nginx      | 2022/02/10 10:31:38 [error] 22#22: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.32, server: , request: "GET / HTTP/1.1", upstream: "http://.21.0.4:3000/", host: "192.168.1.24:2283"
proxy_nginx      | 192.168.1.32 - - [10/Feb/2022:10:31:38 +0000] "GET / HTTP/1.1" 502 559 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36" "-"
proxy_nginx      | 2022/02/10 10:31:38 [error] 22#22: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.32, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://xxx.21.0.4:3000/favicon.ico", host: "192.168.1.24:2283", referrer: "http://192.168.1.24:2283/"
proxy_nginx      | 192.168.1.32 - - [10/Feb/2022:10:31:38 +0000] "GET /favicon.ico HTTP/1.1" 502 559 "http://192.168.1.24:2283/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36" "-"

and

immich_postgres  | 2022-02-10 10:31:59.225 UTC [32] FATAL:  password authentication failed for user "immich"
immich_postgres  | 2022-02-10 10:31:59.225 UTC [32] DETAIL:  Role "immich" does not exist.
immich_postgres  | 	Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"
immich_server    | [Nest] 29  - 02/10/2022, 10:31:59 AM   ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...
immich_server    | error: password authentication failed for user "immich"
immich_server    |     at Parser.parseErrorMessage (/usr/src/app/node_modules/pg-protocol/src/parser.ts:369:69)
immich_server    |     at Parser.handlePacket (/usr/src/app/node_modules/pg-protocol/src/parser.ts:188:21)
immich_server    |     at Parser.parse (/usr/src/app/node_modules/pg-protocol/src/parser.ts:103:30)
immich_server    |     at Socket.<anonymous> (/usr/src/app/node_modules/pg-protocol/src/index.ts:7:48)
immich_server    |     at Socket.emit (node:events:520:28)
immich_server    |     at addChunk (node:internal/streams/readable:315:12)
immich_server    |     at readableAddChunk (node:internal/streams/readable:289:9)
immich_server    |     at Socket.Readable.push (node:internal/streams/readable:228:10)
immich_server    |     at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
immich_postgres  | 2022-02-10 10:32:02.520 UTC [33] FATAL:  password authentication failed for user "immich"
immich_postgres  | 2022-02-10 10:32:02.520 UTC [33] DETAIL:  Role "immich" does not exist.
immich_postgres  | 	Connection matched pg_hba.conf line 100: "host all all all scram-sha-256"

my .env

NODE_ENV=development

# Database
DB_USERNAME=immich
DB_PASSWORD=immich
DB_DATABASE_NAME=immich

# Upload File Config
UPLOAD_LOCATION=./upload

# JWT SECRET
JWT_SECRET=immich

my docker-compose.yml

  database:
    container_name: immich_postgres
    image: postgres:14
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: immich
      POSTGRES_USER: immich
      POSTGRES_DB: immich
      PG_DATA: /var/lib/postgresql/data
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - 5432:5432
    networks:
      - immich_network

most likely i missed something
any ideas apreciated

VipsJpeg: out of order read at line 0

Client: v.0.6 Android 8.0 / Samsung A5
Server: Pi4

Getting this for every image that is sent:

immich_server_1  | Error resizing file  [Error: VipsJpeg: Invalid SOS parameters for sequential JPEG
immich_server_1  | VipsJpeg: out of order read at line 0
immich_server_1  | ]

Might be related to [this|https://github.com/lovell/sharp/issues/1578] which correlates with my Samsung device. Maybe add an option failOnError: false like they did?

Also, does this error have any negative effect downstream? It appears as if my files get stored and thumbnails are created...

Build does not work

.env file:

# STAGE
NODE_ENV=development

# Database
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich

# Upload File Config
UPLOAD_LOCATION=/mnt/data/Immich

# JWT SECRET
JWT_SECRET=mNQXf1R6S1m7jwvwW82e

# MAPBOX
## ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY
ENABLE_MAPBOX=false
MAPBOX_KEY=

UPLOAD_LOCATION exists:

root@docker:~/immich/immich-1.4.0-dev# ls -l /mnt/data/Immich/
total 0
root@docker:~/immich/immich-1.4.0-dev# docker-compose -f ./docker/docker-compose.yml up --build -V
WARNING: The UPLOAD_LOCATION variable is not set. Defaulting to a blank string.
WARNING: The DB_PASSWORD variable is not set. Defaulting to a blank string.
WARNING: The DB_USERNAME variable is not set. Defaulting to a blank string.
WARNING: The DB_DATABASE_NAME variable is not set. Defaulting to a blank string.
Building immich_microservices
ERROR: forbidden path outside the build context: ../microservices/Dockerfile ()

I dont know why the warnings appear, altough a .env file exists and the variables are filled:

root@docker:~/immich/immich-1.4.0-dev# ls -la docker/.env
-rw-rw-r-- 1 root root 327 Mar 29 23:44 docker/.env

[BUG] Failure to build app on RPi4, Ubuntu 21.10 Server. Log: Error: Unsupported system: cpu-linux-arm64

Describe the bug
Following the install instructions exactly, I get an error when building the app.

The error is as follows, on steap 7/9: RUN npm install
The command '/bin/sh -c npm install' returned a non-zero code: 1
ERROR: Service 'immich_microservices' failed to build : Build failed

Docker-compose.yml is unchanged, and .env has a DB name entered, a JWT code and commented out MAPBOX.

Desktop (please complete the following information):

  • OS: Ubuntu Server 20.10 Raspberry Pi 4 edition

Additional context
Add any other context about the problem here.
Screenshot 2022-03-30 113956

How do I procede? am I doing something wrong here?

Preserve directory structure on backup

Could you implement the backup mechanism to preserve folder structure?

-Consider I have  DCIM/Camera and Pictures/Telegram folders in the phone.
-When doing backup, in the remote server, these photos are located as merged folder with random name like $UPLOAD_DIR/0268595a-45c0-4d09-af89-70ecb56b3c63/original/....
-But I want them to be same as the folder structure in my phone.
-With this way, one can easily identify photos with their appropriate folder names.

[BUG] Android can't login

Describe the bug
A clear and concise description of what the bug is.

Can't login, see the logcat output below.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Version [e.g. 22]

Android 11

Additional context
Add any other context about the problem here.

03-31 21:31:31.558  7692  7719 I flutter : pint server at url http://10.0.0.223:2283/server-info/ping
03-31 21:31:36.539   735   787 E LightsService: Light requested not available on this device. 2
03-31 21:31:36.850   735   893 E LightsService: Light requested not available on this device. 2
03-31 21:31:39.011  7692  7719 I flutter : DioError: null
03-31 21:31:39.012  7692  7719 I flutter : Error getAllAsset  type 'Null' is not a subtype of type 'List<dynamic>'
03-31 21:31:39.013  7692  7719 I flutter : DioError: null
03-31 21:31:39.014  7692  7719 E flutter : [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: type 'Null' is not a subtype of type 'Response<dynamic>'
03-31 21:31:39.014  7692  7719 E flutter : #0      ServerInfoService.getServerVersion (package:immich_mobile/shared/services/server_info.service.dart:23)
03-31 21:31:39.014  7692  7719 E flutter : <asynchronous suspension>
03-31 21:31:39.014  7692  7719 E flutter : #1      ServerInfoNotifier.getServerVersion (package:immich_mobile/shared/providers/server_info.provider.dart:28)
03-31 21:31:39.014  7692  7719 E flutter : <asynchronous suspension>
03-31 21:31:39.014  7692  7719 E flutter : 
03-31 21:31:40.498  7692  7719 I flutter : [PING SERVER] DioError: null - DioError [DioErrorType.connectTimeout]: Connecting timed out [0ms]
03-31 21:31:40.498  7692  7719 I flutter : Source stack:
03-31 21:31:40.499  7692  7719 I flutter : #0      DioMixin.fetch (package:dio/src/dio_mixin.dart:473)
03-31 21:31:40.499  7692  7719 I flutter : #1      DioMixin.request (package:dio/src/dio_mixin.dart:468)
03-31 21:31:40.499  7692  7719 I flutter : #2      DioMixin.get (package:dio/src/dio_mixin.dart:55)
03-31 21:31:40.499  7692  7719 I flutter : #3      NetworkService.pingServer (package:immich_mobile/shared/services/network.service.dart:91)
03-31 21:31:40.499  7692  7719 I flutter : #4      AuthenticationNotifier.login (package:immich_mobile/modules/login/providers/authentication.provider.dart:49)
03-31 21:31:40.500  7692  7719 I flutter : #5      LoginButton.build.<anonymous closure> (package:immich_mobile/modules/login/ui/login_form.dart:122)
03-31 21:31:40.500  7692  7719 I flutter : #6      LoginButton.build.<anonymous closure> (package:immich_mobile/modules/login/ui/login_form.dart:116)
03-31 21:31:40.500  7692  7719 I flutter : #7      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989)
03-31 21:31:40.500  7692  7719 I flutter : #8      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:198)
03-31 21:31:40.500  7692  7719 I flutter : #9      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608)
03-31 21:31:40.500  7692  7719 I flutter : #10     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296)
03-31 21:31:40.501  7692  7719 I flutter : #11     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:230)
03-31 21:31:40.501  7692  7719 I flutter : #12     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:563)
03-31 21:31:40.501  7692  7719 I flutter : #13     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:94)
03-31 21:31:40.501  7692  7719 I flutter : #14     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:139)
03-31 21:31:40.502  7692  7719 I flutter : #15     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:539)
03-31 21:31:40.502  7692  7719 I flutter : #16     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:137)
03-31 21:31:40.502  7692  7719 I flutter : #17     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:123)
03-31 21:31:40.502  7692  7719 I flutter : #18     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:439)
03-31 21:31:40.502  7692  7719 I flutter : #19     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:419)
03-31 21:31:40.502  7692  7719 I flutter : #20     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:322)
03-31 21:31:40.503  7692  7719 I flutter : #21     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374)
03-31 21:31:40.503  7692  7719 I flutter : #22     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338)
03-31 21:31:40.503  7692  7719 I flutter : #23     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:296)
03-31 21:31:40.503  7692  7719 I flutter : #24     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:279)
03-31 21:31:40.503  7692  7719 I flutter : #25     _rootRunUnary (dart:async/zone.dart:1442)
03-31 21:31:40.503  7692  7719 I flutter : #26     _CustomZone.runUnary (dart:async/zone.dart:1335)
03-31 21:31:40.504  7692  7719 I flutter : #27     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244)
03-31 21:31:40.504  7692  7719 I flutter : #28     _invoke1 (dart:ui/hooks.dart:170)
03-31 21:31:40.504  7692  7719 I flutter : #29     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:331)
03-31 21:31:40.504  7692  7719 I flutter : #30     _dispatchPointerDataPacket (dart:ui/hooks.dart:94)
03-31 21:31:40.504  7692  7719 I flutter : 
03-31 21:31:41.565  7692  7719 I flutter : [PING SERVER] DioError: null - DioError [DioErrorType.connectTimeout]: Connecting timed out [0ms]
03-31 21:31:41.565  7692  7719 I flutter : Source stack:
03-31 21:31:41.566  7692  7719 I flutter : #0      DioMixin.fetch (package:dio/src/dio_mixin.dart:473)
03-31 21:31:41.566  7692  7719 I flutter : #1      DioMixin.request (package:dio/src/dio_mixin.dart:468)
03-31 21:31:41.566  7692  7719 I flutter : #2      DioMixin.get (package:dio/src/dio_mixin.dart:55)
03-31 21:31:41.566  7692  7719 I flutter : #3      NetworkService.pingServer (package:immich_mobile/shared/services/network.service.dart:91)
03-31 21:31:41.566  7692  7719 I flutter : #4      AuthenticationNotifier.login (package:immich_mobile/modules/login/providers/authentication.provider.dart:49)
03-31 21:31:41.567  7692  7719 I flutter : #5      LoginButton.build.<anonymous closure> (package:immich_mobile/modules/login/ui/login_form.dart:122)
03-31 21:31:41.567  7692  7719 I flutter : #6      LoginButton.build.<anonymous closure> (package:immich_mobile/modules/login/ui/login_form.dart:116)
03-31 21:31:41.567  7692  7719 I flutter : #7      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989)
03-31 21:31:41.567  7692  7719 I flutter : #8      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:198)
03-31 21:31:41.567  7692  7719 I flutter : #9      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608)
03-31 21:31:41.568  7692  7719 I flutter : #10     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296)
03-31 21:31:41.568  7692  7719 I flutter : #11     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:230)
03-31 21:31:41.568  7692  7719 I flutter : #12     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:563)
03-31 21:31:41.569  7692  7719 I flutter : #13     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:94)
03-31 21:31:41.569  7692  7719 I flutter : #14     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:139)
03-31 21:31:41.569  7692  7719 I flutter : #15     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:539)
03-31 21:31:41.569  7692  7719 I flutter : #16     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:137)
03-31 21:31:41.569  7692  7719 I flutter : #17     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:123)
03-31 21:31:41.570  7692  7719 I flutter : #18     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:439)
03-31 21:31:41.570  7692  7719 I flutter : #19     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:419)
03-31 21:31:41.570  7692  7719 I flutter : #20     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:322)
03-31 21:31:41.570  7692  7719 I flutter : #21     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374)
03-31 21:31:41.570  7692  7719 I flutter : #22     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338)
03-31 21:31:41.570  7692  7719 I flutter : #23     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:296)
03-31 21:31:41.570  7692  7719 I flutter : #24     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:279)
03-31 21:31:41.570  7692  7719 I flutter : #25     _rootRunUnary (dart:async/zone.dart:1442)
03-31 21:31:41.570  7692  7719 I flutter : #26     _CustomZone.runUnary (dart:async/zone.dart:1335)
03-31 21:31:41.570  7692  7719 I flutter : #27     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244)
03-31 21:31:41.570  7692  7719 I flutter : #28     _invoke1 (dart:ui/hooks.dart:170)
03-31 21:31:41.570  7692  7719 I flutter : #29     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:331)
03-31 21:31:41.570  7692  7719 I flutter : #30     _dispatchPointerDataPacket (dart:ui/hooks.dart:94)
03-31 21:31:41.571  7692  7719 I flutter : 
03-31 21:31:41.949   735   787 E LightsService: Light requested not available on this device. 2

iOS app crashes during upload

App crashes occasionally when uploading long(er) videos, no errors on server side. I have "Share With App Developers" enabled so you might be able to see crash logs but I'm not sure how to collect them myself.

Remembering login data

Hello
I would like to offer an option to the application as in the title.
I want to not logging out every time when you exit the application and remembering the data by which you logged in

Server crashes with long running backup, Android maybe running out of ressources

Uploading 2096 images form an Android 8.0 Galaxy A5, device doesn't turn off on its own, StayAlive is active, WiFi is stable (i.e. no connection drops or anything):

  • all goes well until ~ 500 images at which point StayAlive apparently gets killed (no more resources from the OS?) and the device/screen turns off
  • turn on again, backup resumes
  • this happens once more at around 600
  • at around 750 the server crashes (i.e. docker container exits) with the following error:
[Nest] 51  - 03/26/2022, 5:14:02 PM     LOG [NewWebSocketConnection] New websocket connection: -4GaZgiZGyx2cd9cAAAJ
[Nest] 51  - 03/26/2022, 5:14:03 PM     LOG Client -4GaZgiZGyx2cd9cAAAJ disconnected
[Nest] 51  - 03/26/2022, 5:14:17 PM     LOG [NewWebSocketConnection] New websocket connection: QCybZ9cILqixmgB5AAAL
[Nest] 51  - 03/26/2022, 5:14:23 PM   ERROR [createUserAsset] Error Create New Asset QueryFailedError: duplicate key value violates unique constraint "UQ_b599ab0bd9574958acb0b30a90e"
/usr/src/app/dist/api-v1/asset/asset.controller.js:40
                await this.assetService.updateThumbnailInfo(savedAsset.id, uploadFiles.thumbnailData[0].path);
                                                                       ^

TypeError: Cannot read properties of undefined (reading 'id')
    at /usr/src/app/dist/api-v1/asset/asset.controller.js:40:72
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

Android apparently killing StayAlive happened again and again after that, server crash only occured once. (but I also observed during a previous full backup test).

The Immich process on Android ate 320mAh of battery for backing up those 2096 images and videos, battery charge went down from > 80% to 30% - which is quite some loss.

[BUG] immich_microservices_1: Cannot find module '/usr/src/app/dist/main'

Describe the bug
immich_microservices_1 fails with message: Cannot find module '/usr/src/app/dist/main'

To Reproduce
Steps to reproduce the behavior:

  1. Clone repo
  2. Run docker-compose -f ./docker/docker-compose.yml up --build -V
  3. See error (log attached)

Screenshots
Screen Shot 2022-03-29 at 12 27 56 pm

Desktop (please complete the following information):

  • OS: Debian 11

log.txt

[Enhancement] Better docker compose deployment.

Enhancement for easy deployment

Firstly amazing development! Really great stuff

As far as I can see, to update my current installation I have to pull the repository again and rebuild the images and then redeploy, which I admit is quite easy. However, to set up automated image builds on hub.docker.com is also quite straightforward and would reduce the clutter on my (selfish) hard drives quite significantly. I am sure other agree as well.

It would be nice if immich_server and immich_microservices would be available on docker hub, and docker compose would be provided that I dont have to build.

Kind Regards
Mak

[PERFORMANCE] Slow backup when the backup list is long - mobile app.

Performance Problem
Websocket causes slow backup when the backup list is long, due to continuous rerendering of the assets list on the home page.

Suggestion

  1. Stop listening to WebSocket on_upload_success event when navigating to backup_controller_page
  2. Refetch all assets after poping back from backup_controller_page

404 from nginx

I have an instance up and was able to create a user with the curl commands. I can also ping the server with

curl http://localhost:2283/server-info/ping
{"res":"pong"}%

However, when i open my browser to the app (http://localhost:2283/), I get:

{"statusCode":404,"message":"Cannot GET /","error":"Not Found"}

I'm running this on Docker Desktop for Mac (Intel).

build errors

trying to build on a raspbbery 400 running manjaro arm connected to eth0

running sudo docker-compose -f ./server/docker-compose.yml up -d
gives
server error
and

[2/4] Fetching packages...

info There appears to be trouble with your network connection. Retrying...
error An unexpected error occurred: "https://registry.yarnpkg.com/class-validator/-/class-validator-0.13.2.tgz: ESOCKETTIMEDOUT".
info If you think this is a bug, please open a bug report with the information provided in "/usr/src/app/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
ls 1 error occurred:
	* Status: The command '/bin/sh -c yarn install' returned a non-zero code: 1, Code: 1

Build fails with error: database "immich" does not exist

I've tried deleting the container and recreating it but I'm getting the same error. Here is my docker compose:

version: "3.8"

services:
  immich_server:
    image: immich-server:1.4.0
    build:
      context: ../server
      dockerfile: ../server/Dockerfile
    entrypoint: ["/bin/sh", "./entrypoint.sh"]
    restart: unless-stopped
    expose:
      - "3000"
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    environment:
      - NODE_ENV=production
    depends_on:
      - redis
      - database
    networks:
      - immich_network

  immich_microservices:
    image: immich-microservices:1.4.0
    build:
      context: ../microservices
      dockerfile: ../microservices/Dockerfile
    entrypoint: ["/bin/sh", "./entrypoint.sh"]
    restart: unless-stopped
    expose:
      - "3001"
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    environment:
      - NODE_ENV=production
    depends_on:
      - database
    networks:
      - immich_network


  redis:
    container_name: immich_redis
    image: redis:6.2
    networks:
      - immich_network

  database:
    container_name: immich_postgres
    image: postgres:14
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      PG_DATA: /var/lib/postgresql/data
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - 5432:5432
    networks:
      - immich_network

  nginx:
    container_name: proxy_nginx
    image: nginx:latest
    volumes:
      - ./settings/nginx-conf:/etc/nginx/conf.d
    ports:
      - 2283:80
      - 2284:443
    logging:
      driver: none
    networks:
      - immich_network
    depends_on:
      - immich_server

networks:
  immich_network:
volumes:
  pgdata:

And my .env:

# Database
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich

# Upload File Config
UPLOAD_LOCATION=\home\immich\backup\

# JWT SECRET
JWT_SECRET=

# MAPBOX
## ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY
ENABLE_MAPBOX= 
MAPBOX_KEY=

Will the immich app also show local photos?

I think it should be able to at least. Imagine having a button on the picture view like this: a cloud with a up arrow in it if it's only on the device, a cloud with a check mark if it's on both and a cloud with a down arrow if it's just on the server. While uploading/downloading, the cloud icon should have a progress bar around it.

[Enhancement] Swipe up on photo for information (similar to iOS photos app)

Current Behavior: When you have a photo open in Immich you tap the 3 dots in the top right corner to view image information.

Requested Behavior: Same as the iOS Photos app, when you have an image open you just swipe up to view image information.

I think copying this functionality suits Immich as the information appears on the bottom of the image anyway, making the swipe up functionality feel quite natural.

Support watching the file system

As I already mentioned on Reddit, some people will have their photo volume mounted on their desktops via SMB or similar. When adding a picture there (let's say, when dumping from a DSLR), immich should watch the file system and index new files automatically.

Reinstall app doesn't persist device id.

Reinstalling the ios app doesn't persist the device id, causing the backup to duplicate old files. This issue happens in development and through TestFlight

This issue is known and the device id doesn't change if the app is installed via the app store.

arm build error (Pi4, aarch64)

Trying to build the docker-compose.yml, I get this:

            Copying numpy.egg-info to build/bdist.linux-aarch64/wheel/numpy-1.19.3-py3.8.egg-info
            running install_scripts
            Running from numpy source directory.
...
              File "/tmp/pip-build-env-uxfs2b_0/overlay/lib/python3.8/site-packages/wheel/bdist_wheel.py", line 278, in get_tag
                assert tag in supported_tags, "would build wheel with unsupported tag {}".format(tag)
            AssertionError: would build wheel with unsupported tag ('cp38', 'cp38', 'linux_aarch64')
            [end of output]
      
        note: This error originates from a subprocess, and is likely not a problem with pip.
        ERROR: Failed building wheel for numpy
        Building wheel for cmake (pyproject.toml): started
        Building wheel for cmake (pyproject.toml): finished with status 'error'
        error: subprocess-exited-with-error
      
        × Building wheel for cmake (pyproject.toml) did not run successfully.
        │ exit code: 1
        ╰─> [9 lines of output]
              File "/tmp/pip-build-env-0shkflic/overlay/lib/python3.8/site-packages/skbuild/setuptools_wrap.py", line 566, in setup
                cmkr = cmaker.CMaker(cmake_executable)
              File "/tmp/pip-build-env-0shkflic/overlay/lib/python3.8/site-packages/skbuild/cmaker.py", line 133, in __init__
                self.cmake_version = get_cmake_version(self.cmake_executable)
              File "/tmp/pip-build-env-0shkflic/overlay/lib/python3.8/site-packages/skbuild/cmaker.py", line 88, in get_cmake_version
                raise SKBuildError(
            Traceback (most recent call last):
      
            Problem with the CMake installation, aborting build. CMake executable is cmake
            [end of output]
      
        note: This error originates from a subprocess, and is likely not a problem with pip.
        ERROR: Failed building wheel for cmake
      Failed to build numpy cmake
      ERROR: Could not build wheels for numpy, cmake, which is required to install pyproject.toml-based projects
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
The command '/bin/sh -c pip install --no-cache-dir --upgrade -r /code/requirements.txt' returned a non-zero code: 1
ERROR: Service 'immich_tf_fastapi' failed to build : Build failed

can't backup

proxy_nginx      | 192.168.1.7 - - [10/Feb/2022:13:05:52 +0000] "GET /server-info HTTP/1.1" 200 172 "-" "Dart/2.16 (dart:io)" "-"
proxy_nginx      | 192.168.1.7 - - [10/Feb/2022:13:05:54 +0000] "GET /asset/825a5b4cc4e8809d HTTP/1.1" 200 2 "-" "Dart/2.16 (dart:io)" "-"
proxy_nginx      | 2022/02/10 13:05:54 [warn] 23#23: *5 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000001, client: 192.168.1.7, server: , request: "POST /asset/upload HTTP/1.1", host: "192.168.1.24:2283"
immich_server    | Error: EACCES: permission denied, mkdir './upload/d718b7a8-1b85-4604-ac76-a374f8447dd9/original/825a5b4cc4e8809d'
immich_server    |     at mkdirSync (node:fs:1336:3)
immich_server    |     at DiskStorage.destination [as getDestination] (/usr/src/app/src/config/multer-option.config.ts:28:18)
immich_server    |     at DiskStorage._handleFile (/usr/src/app/node_modules/multer/storage/disk.js:31:8)
immich_server    |     at /usr/src/app/node_modules/multer/lib/make-middleware.js:145:17
immich_server    |     at fileFilter (/usr/src/app/src/config/multer-option.config.ts:15:7)
immich_server    |     at wrappedFileFilter (/usr/src/app/node_modules/multer/index.js:44:7)
immich_server    |     at Busboy.<anonymous> (/usr/src/app/node_modules/multer/lib/make-middleware.js:115:7)
immich_server    |     at Busboy.emit (node:events:520:28)
immich_server    |     at Busboy.emit (/usr/src/app/node_modules/busboy/lib/main.js:38:33)
immich_server    |     at PartStream.<anonymous> (/usr/src/app/node_modules/busboy/lib/types/multipart.js:213:13)
proxy_nginx      | 2022/02/10 13:05:55 [error] 23#23: *5 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.7, server: , request: "POST /asset/upload HTTP/1.1", upstream: "http://xxx.xx.x.x:3000/asset/upload", host: "192.168.1.24:2283"
proxy_nginx      | 192.168.1.7 - - [10/Feb/2022:13:05:55 +0000] "POST /asset/upload HTTP/1.1" 502 157 "-" "-" "-"

i chmod -R 755 ~/immich/sever/upload

proxy_nginx      | 2022/02/10 13:14:36 [error] 22#22: *25 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.7, server: , request: "POST /asset/upload HTTP/1.1", upstream: "http://xxx.xx.x.x:3000/asset/upload", host: "192.168.1.24:2283"
proxy_nginx      | 192.168.1.7 - - [10/Feb/2022:13:14:36 +0000] "POST /asset/upload HTTP/1.1" 502 157 "-" "-" "-"

[BUG] Backup in upload loop on specific asset

Describe the bug
Backup of a specific asset (unknown if picture or video) from Android app goes from 0-100% and then restarts.

To Reproduce
I'm sure if I knew what asset it was trying to upload, I could give you the file to troubleshoot.

Expected behavior
Backup completes

Smartphone (please complete the following information):

  • Device: Pixel 6 Pro
  • OS: Latest Android 12

First off, this is an awesome little project that's providing me with exactly the experience I want. I love how it places the emphasis on the mobile device.

Secondly, what's the best way to provide debug logs from my Android device for you?

[BUG] can't launch with docker compose

Describe the bug
A clear and concise description of what the bug is.

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Recreating immich_redis    ... done
Recreating immich_postgres ... done
Recreating docker_immich_server_1 ... 
Recreating docker_immich_microservices_1 ... 

ERROR: for docker_immich_microservices_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for docker_immich_server_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for immich_microservices  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for immich_server  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

only changed UPLOAD_LOCATION in ".env", then run "docker-compose -f ./docker/docker-compose.yml up --build -V"

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]

macOS

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Can't register user

I have set up everything and running without error codes in docker, but when I do curl request to server I got no response. Here is my docker compose file

  redis:
    container_name: immich_redis
    image: redis:6.2
    networks:
      - internal

  database:
    container_name: immich_postgres
    image: postgres:14
    # env_file:
    #   - .env
    networks:
      - internal
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: immich
      POSTGRES_USER: immich
      POSTGRES_DB: immich
      PG_DATA: /var/lib/postgresql/data
    volumes:
      - pgdata:/var/lib/postgresql/data

  immich_server:
    container_name: immich_server
    image: altran1502/immich-server:latest # immich-server-dev:1.0.0
    # build:
    #   context: ../server
    #   target: development
    #   dockerfile: ../server/Dockerfile
    # entrypoint: ["/bin/sh", "./entrypoint.sh"]
    depends_on:
      - redis
      - database
    networks:
      - internal
    expose: 
      - "3000"
    ports:
      - 2283:80
      - 2284:443
    volumes:
      - $DOCKERDIR/appdata/immich/Upload:/usr/src/app/upload
      - /usr/src/app/node_modules
    environment:
      DB_USERNAME: immich
      DB_PASSWORD: immich
      DB_DATABASE_NAME: immich
      UPLOAD_LOCATION: $DOCKERDIR/appdata/immich/Upload
      JWT_SECRET: "test"

volumes:
  pgdata:

Support user defined storage location/structure

I mentioned this on Reddit, but the user should be able to define how images are stored on the file system. This will not only allow for the user to choose how the images are named, but should allow Immich to index existing images.

Let's say I have an existing photos library where the photos are structured like this:
Photos |
|-> 2022
|-> 01
|-> filename.ext

Immich should respect the existing file structure and index the existing images.

While importing new photos, it should ask the user how the photos should be stored allowing the user to define the file structure above so that newly imported photos are placed in the correct place on the existing file system in the users defined folder structure.

Ideally, we should be able to define the filename pattern as well. Mine is currently date_timestamp_number.ext. for example, 2022-02-23-203109-001.jpeg

Docker fails

I really wanted this to work. It fails every time using docker.

npm WARN deprecated [email protected]: This package has been renamed to '@socket.io/redis-adapter', please see the migration guide here: https://socket.io/docs/v4/redis-adapter/#migrating-from-socketio-redis
npm WARN deprecated [email protected]: This module renamed to process-warning

[BUG] Docker-compose script execution failed

Describe the bug
Can't spinn up an the immich docker container due to a docker-compose script execution error.

To Reproduce
Steps to reproduce the behavior/The way I tried to get immich to work:

  1. git clone immich repo
  2. cd into docker folder
  3. edit .env
  4. run docker-compose up -d

Expected behavior
Spinn up an immich docker container

Desktop (please complete the following information):

  • OS: Linux 5.4.0-104 Ubunutu x86_64
  • Docker version 20.10.11, build dea9396e18
  • Docker-compose version 1.29.2, build 5becea4c

Additional context

Docker build logs:

Building immich_server
Sending build context to Docker daemon 921.1kB
Step 1/8 : FROM node:16-alpine3.14 AS development
---> 61b24385412d
Step 2/8 : ARG DEBIAN_FRONTEND=noninteractive
---> Using cache
---> 7e4c97e5be92
Step 3/8 : WORKDIR /usr/src/app
---> Using cache
---> 0d12dcab5684
Step 4/8 : COPY package.json package-lock.json ./
---> Using cache
---> 48eee65e6cc3
Step 5/8 : RUN apk add --update-cache build-base python3 libheif vips-dev vips ffmpeg
---> Using cache
---> 193e80027251
Step 6/8 : RUN npm install
---> Using cache
---> 0af961d58b89
Step 7/8 : COPY . .
---> Using cache
---> 83dc6a049be7
Step 8/8 : RUN npm run build
---> Using cache
---> a1459b1289b3
Successfully built a1459b1289b3
Successfully tagged immich-server-dev:1.0.0
Traceback (most recent call last):
File "docker-compose", line 3, in
File "compose/cli/main.py", line 81, in main
File "compose/cli/main.py", line 203, in perform_command
File "compose/metrics/decorator.py", line 18, in wrapper
File "compose/cli/main.py", line 1186, in up
File "compose/cli/main.py", line 1182, in up
File "compose/project.py", line 664, in up
File "compose/service.py", line 348, in ensure_image_exists
File "compose/service.py", line 1133, in build
File "compose/service.py", line 1948, in build
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmptan9biqs'
[549391] Failed to execute script docker-compose

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.