immich-app / immich Goto Github PK
View Code? Open in Web Editor NEWHigh performance self-hosted photo and video management solution.
Home Page: https://immich.app
License: GNU Affero General Public License v3.0
High performance self-hosted photo and video management solution.
Home Page: https://immich.app
License: GNU Affero General Public License v3.0
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
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):
Additional context
Add any other context about the problem here.
How do I procede? am I doing something wrong here?
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.
Adding support for Apple ProRaw format
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:
Could this be node's watch mode? How do I turn this off?
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=
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.
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:
Expected behavior
Spinn up an immich docker container
Desktop (please complete the following information):
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
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):
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?
Describe the bug
immich_microservices_1 fails with message: Cannot find module '/usr/src/app/dist/main'
To Reproduce
Steps to reproduce the behavior:
docker-compose -f ./docker/docker-compose.yml up --build -V
Desktop (please complete the following information):
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
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
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).
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:
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):
Smartphone (please complete the following information):
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
Only login and password is to weak secure for 2022 year :)
Current Behavior: When you upload using your Android device, by default Immich uploads all the photos in your phone.
Requested Behavior: Add support to allow uploads from selected folders (e.g. Camera) so that images from other folders such as Whatsapp media folders do not get uploaded.
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.
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.
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):
[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.
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.
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 "-" "-" "-"
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
Follow the guide here for steps to create the required XML files for unraid.
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.
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
on_upload_success
event when navigating to backup_controller_page
backup_controller_page
I don't know if it's a bug or a configuration problem but immich_postgres is consuming all server resources below the logs
Logs
Publish Android App To F-Droid
Follow the guide here
Describe the bug
immich_microservices
container data leak leads to slow/unresponsive server.
Possibly related to Tensorflow's Node.js implementation
To Reproduce
Steps to reproduce the behavior:
Expected behavior
App continues to function
Reference Source
Memory Leak (keep increasing even after disposing/tidying them)
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:
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:
Expected behavior
All uploads should succeed.
Server (please complete the following information):
Smartphone (please complete the following information):
Additional context
I also tried without TensorFlow (removed the immich_microservices) but it also fails at the exact same asset.
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
My target sync dir is an NFS mounted share, Immich reports free diskspace of the server host, not the actual UPLOAD_LOCATION. Basically, that could by anything, a fuse mounted S3, sftp, etc.
.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
Describe the bug
Screenshot with a duplicated name like FullSizeRender overwritten image of the file on the server. This behavior caused incorrect image render on the timeline
Device
iOS
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
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...
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:
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):
macOS
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
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
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.
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
Hello I have a problem in which this container crashes giving this information
Illegal instruction (core dumped)
[email protected] prebuild
rimraf dist
[email protected] build
nest build
[email protected] start:prod
node dist/main
Illegal instruction (core dumped)
The interesting thing is that besides the startup. Immich works without this container
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.