Certain large video assets won't upload [iOS] #3523

Closed
opened 2026-02-05 08:50:40 +03:00 by OVERLORD · 0 comments
Owner

Originally created by @seanmuth on GitHub (Jun 14, 2024).

The bug

I have 9 assets that won't successfully upload using the iOS app.

I've searched through issue here, and the common fix was to ensure my nginx reverse proxy had a sufficiently high client_max_body_size set. Previously I had it set to 0 (disabled) and have since set it to 50000M as suggested in the immich reverse proxy docs and the issue remains.

I've tried tailing both the immich logs (docker compose logs -f) and the nginx error logs (tail -f logs/nginx/error.log) but I'm not able to actually catch any HTTP errors, suggesting this might not be an issue with nginx ingress at all.

Happy to provide additional logs/configs!

IMG_EC22472D20C6-1

The OS that Immich Server is running on

Ubuntu 22.04.4 / Linux kernel 5.15.0-112-generic

Version of Immich Server

v1.106.4

Version of Immich Mobile App

v1.106.4

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

---
services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${RELEASE_VERSION}
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    environment:
      - NODE_ENV=production
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
      file: hwaccel.transcoding.yml
      service: quicksync # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    restart: unless-stopped

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${RELEASE_VERSION}
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - ${CLOUD_ROOT_DIR}/immich/model-cache:/cache
    env_file:
      - .env
    environment:
      - NODE_ENV=production
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
      # file: hwaccel.ml.yml
      # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    restart: unless-stopped

  redis:
    container_name: immich_redis
    image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
    restart: unless-stopped

  database:
    container_name: immich_postgres
    # image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      PG_DATA: /var/lib/postgresql/data
    volumes:
      - ${CLOUD_ROOT_DIR}/immich/pgdata:/var/lib/postgresql/data
    restart: unless-stopped

Your .env content

# RELEASE VERSION TO PULL, CHANGE THIS TO UPGRADE
RELEASE_VERSION=v1.106.4


###################################################################################
# Database
###################################################################################

DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=<REDACTED>
DB_DATABASE_NAME=immich

# Optional Database settings:
# DB_PORT=5432

###################################################################################
# Redis
###################################################################################

REDIS_HOSTNAME=immich_redis

# Optional Redis settings:

# Note: these parameters are not automatically passed to the Redis Container
# to do so, please edit the docker-compose.yml file as well. Redis is not configured
# via environment variables, only redis.conf or the command line

# REDIS_PORT=6379
# REDIS_DBINDEX=0
# REDIS_PASSWORD=
# REDIS_SOCKET=

###################################################################################
# Upload File Location
#
# This is the location where uploaded files are stored.
###################################################################################

UPLOAD_LOCATION=/cloud/immich/photos
CLOUD_ROOT_DIR=/cloud

###################################################################################
# Typesense
###################################################################################
TYPESENSE_API_KEY=<REDACTED>
# TYPESENSE_ENABLED=false

###################################################################################
# Reverse Geocoding
#
# Reverse geocoding is done locally which has a small impact on memory usage
# This memory usage can be altered by changing the REVERSE_GEOCODING_PRECISION variable
# This ranges from 0-3 with 3 being the most precise
# 3 - Cities > 500 population: ~200MB RAM
# 2 - Cities > 1000 population: ~150MB RAM
# 1 - Cities > 5000 population: ~80MB RAM
# 0 - Cities > 15000 population: ~40MB RAM
####################################################################################

# DISABLE_REVERSE_GEOCODING=false
REVERSE_GEOCODING_PRECISION=3

####################################################################################
# WEB - Optional
#
# Custom message on the login page, should be written in HTML form.
# For example:
# PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>"
####################################################################################

PUBLIC_LOGIN_PAGE_MESSAGE=

####################################################################################
# Alternative Service Addresses - Optional
#
# This is an advanced feature for users who may be running their immich services on different hosts.
# It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers.
# Note: immich-microservices is bound to 3002, but no references are made
####################################################################################

IMMICH_WEB_URL=http://immich-web:3000
IMMICH_SERVER_URL=http://immich-server:3001
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003

####################################################################################
# Alternative API's External Address - Optional
#
# This is an advanced feature used to control the public server endpoint returned to clients during Well-known discovery.
# You should only use this if you want mobile apps to access the immich API over a custom URL. Do not include trailing slash.
# NOTE: At this time, the web app will not be affected by this setting and will continue to use the relative path: /api
# Examples: http://localhost:3001, http://immich-api.example.com, etc
####################################################################################

#IMMICH_API_URL_EXTERNAL=http://localhost:3001

Reproduction steps

Unsure if this will reliably reproduce the issue, but:
1. Generate large >1Gb video on iPhone
2. Run immich backup
3. Asset will upload, hang for a while, then move onto the next large asset, with no error visible

Relevant log output

No response

Additional information

No response

Originally created by @seanmuth on GitHub (Jun 14, 2024). ### The bug I have 9 assets that won't successfully upload using the iOS app. I've searched through issue here, and the common fix was to ensure my nginx reverse proxy had a sufficiently high `client_max_body_size` set. Previously I had it set to `0` (disabled) and have since set it to 50000M as suggested in the [immich reverse proxy docs](https://immich.app/docs/administration/reverse-proxy/) and the issue remains. I've tried tailing both the immich logs (`docker compose logs -f`) and the nginx error logs (`tail -f logs/nginx/error.log`) but I'm not able to actually catch any HTTP errors, suggesting this might not be an issue with nginx ingress at all. Happy to provide additional logs/configs! ![IMG_EC22472D20C6-1](https://github.com/immich-app/immich/assets/12852047/5646ee55-ee70-4acd-a73e-76d3e5005b69) ### The OS that Immich Server is running on Ubuntu 22.04.4 / Linux kernel 5.15.0-112-generic ### Version of Immich Server v1.106.4 ### Version of Immich Mobile App v1.106.4 ### Platform with the issue - [ ] Server - [ ] Web - [X] Mobile ### Your docker-compose.yml content ```YAML --- services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${RELEASE_VERSION} volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload env_file: - .env environment: - NODE_ENV=production ports: - 2283:3001 depends_on: - redis - database extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding file: hwaccel.transcoding.yml service: quicksync # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding restart: unless-stopped immich-machine-learning: container_name: immich_machine_learning image: ghcr.io/immich-app/immich-machine-learning:${RELEASE_VERSION} volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - ${CLOUD_ROOT_DIR}/immich/model-cache:/cache env_file: - .env environment: - NODE_ENV=production # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration # file: hwaccel.ml.yml # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable restart: unless-stopped redis: container_name: immich_redis image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 restart: unless-stopped database: container_name: immich_postgres # image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441 image: tensorchord/pgvecto-rs:pg14-v0.2.0 env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} PG_DATA: /var/lib/postgresql/data volumes: - ${CLOUD_ROOT_DIR}/immich/pgdata:/var/lib/postgresql/data restart: unless-stopped ``` ### Your .env content ```Shell # RELEASE VERSION TO PULL, CHANGE THIS TO UPGRADE RELEASE_VERSION=v1.106.4 ################################################################################### # Database ################################################################################### DB_HOSTNAME=immich_postgres DB_USERNAME=postgres DB_PASSWORD=<REDACTED> DB_DATABASE_NAME=immich # Optional Database settings: # DB_PORT=5432 ################################################################################### # Redis ################################################################################### REDIS_HOSTNAME=immich_redis # Optional Redis settings: # Note: these parameters are not automatically passed to the Redis Container # to do so, please edit the docker-compose.yml file as well. Redis is not configured # via environment variables, only redis.conf or the command line # REDIS_PORT=6379 # REDIS_DBINDEX=0 # REDIS_PASSWORD= # REDIS_SOCKET= ################################################################################### # Upload File Location # # This is the location where uploaded files are stored. ################################################################################### UPLOAD_LOCATION=/cloud/immich/photos CLOUD_ROOT_DIR=/cloud ################################################################################### # Typesense ################################################################################### TYPESENSE_API_KEY=<REDACTED> # TYPESENSE_ENABLED=false ################################################################################### # Reverse Geocoding # # Reverse geocoding is done locally which has a small impact on memory usage # This memory usage can be altered by changing the REVERSE_GEOCODING_PRECISION variable # This ranges from 0-3 with 3 being the most precise # 3 - Cities > 500 population: ~200MB RAM # 2 - Cities > 1000 population: ~150MB RAM # 1 - Cities > 5000 population: ~80MB RAM # 0 - Cities > 15000 population: ~40MB RAM #################################################################################### # DISABLE_REVERSE_GEOCODING=false REVERSE_GEOCODING_PRECISION=3 #################################################################################### # WEB - Optional # # Custom message on the login page, should be written in HTML form. # For example: # PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>" #################################################################################### PUBLIC_LOGIN_PAGE_MESSAGE= #################################################################################### # Alternative Service Addresses - Optional # # This is an advanced feature for users who may be running their immich services on different hosts. # It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers. # Note: immich-microservices is bound to 3002, but no references are made #################################################################################### IMMICH_WEB_URL=http://immich-web:3000 IMMICH_SERVER_URL=http://immich-server:3001 IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003 #################################################################################### # Alternative API's External Address - Optional # # This is an advanced feature used to control the public server endpoint returned to clients during Well-known discovery. # You should only use this if you want mobile apps to access the immich API over a custom URL. Do not include trailing slash. # NOTE: At this time, the web app will not be affected by this setting and will continue to use the relative path: /api # Examples: http://localhost:3001, http://immich-api.example.com, etc #################################################################################### #IMMICH_API_URL_EXTERNAL=http://localhost:3001 ``` ### Reproduction steps ```bash Unsure if this will reliably reproduce the issue, but: 1. Generate large >1Gb video on iPhone 2. Run immich backup 3. Asset will upload, hang for a while, then move onto the next large asset, with no error visible ``` ### Relevant log output _No response_ ### Additional information _No response_
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#3523