[BUG] Error: Write EPIPE when playing a video outside of local network #1462

Closed
opened 2026-02-05 01:55:42 +03:00 by OVERLORD · 0 comments
Owner

Originally created by @Uzurka on GitHub (Oct 16, 2023).

The bug

Hello.
I created a shared album to share some photos & videos to my familly, then complained about videos can't load.
I tried some things to debug, and i got this :
Playing a video from immich web or iOS app is working fine as long as i'm connected to the same network.
When i use 5G/LTE, i got those errors in immich-server logs :
[Nest] 7 - 10/16/2023, 6:52:12 AM ERROR [AssetService] Unable to send file: Error Error: write EPIPE at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:94:16)

The OS that Immich Server is running on

Debian 12 Docker

Version of Immich Server

1.81.1

Version of Immich Mobile App

latest

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

Not a compose but ansible variables :
# Immich related containers
  - name: typesense
    restart_policy: always
    image: typesense/typesense:0.24.1
    networks: 
    - name: immich
    env:
      TYPESENSE_API_KEY: '{{ typesense_api_key }}'
      TYPESENSE_DATA_DIR: /data
      # remove this to get debug messages
      GLOG_minloglevel: '1'
    mounts:
      - source: tsdata
        target: /data
        type: volume
    labels: 
      com.centurylinklabs.watchtower.enable: 'true'

  - name: immich_redis
    image: redis:latest
    hostname: immich_redis
    restart_policy: always
    networks:
      - name: immich
    mounts:
      - source: /mnt/sdb1/immich-redis
        target: /data
        type: bind
    env:
      TZ: "Europe/Paris"
      ALLOW_EMPTY_PASSWORD: "yes"
      WORKDIR: /data
    labels:
      com.centurylinklabs.watchtower.enable: 'true'
    state: absent

  - name: immich-server
    restart_policy: always
    image: ghcr.io/immich-app/immich-server:release
    networks: 
      - name: immich
    ports: 
      3001:3001
    env: 
      SERVER_PORT: '3001'
      REDIS_HOSTNAME: '{{ redis_host }}'
      REDIS_PORT: '{{ redis_port }}'
      DB_HOSTNAME: '{{ postgres_host }}'
      DB_PORT: '{{ postgres_port }}'
      DB_USERNAME: immich
      DB_PASSWORD: '{{ immich_postgres_password }}'
      DB_DATABASE: immich
      DB_DATABASE_NAME: immich
      TYPESENSE_API_KEY: '{{ typesense_api_key }}'
    command: [ "start.sh", "immich" ]
    mounts:
      - source: /mnt/sdb1/immich
        target: /usr/src/app/upload
        type: bind
    labels: 
      com.centurylinklabs.watchtower.enable: 'true'

  - name: immich-microservices
    restart_policy: always
    cpus: '0.5'
    image: ghcr.io/immich-app/immich-server:release
    networks: 
      - name: immich
    ports:
      - 3002:3002
    runtime: nvidia
    command: [ "start.sh", "microservices" ]
    mounts:
      - source: /mnt/sdb1/immich
        target: /usr/src/app/upload
        type: bind
    env:
      NVIDIA_VISIBLE_DEVICES: 'all'
      NVIDIA_DRIVER_CAPABILITIES: 'all'
      MICROSERVICES_PORT: '3002'
      REDIS_HOSTNAME: '{{ redis_host }}'
      REDIS_PORT: '{{ redis_port }}'
      DB_HOSTNAME: '{{ postgres_host }}'
      DB_PORT: '{{ postgres_port }}'
      DB_USERNAME: immich
      DB_PASSWORD: '{{ immich_postgres_password }}'
      DB_DATABASE: immich
      DB_DATABASE_NAME: immich
      TYPESENSE_API_KEY: '{{ typesense_api_key }}'
      DISABLE_REVERSE_GEOCODING: 'true'
    labels: 
      com.centurylinklabs.watchtower.enable: 'true'
    device_requests:
      - count: '-1'
        driver: nvidia
        capabilities: 
          - 'gpu'
          - 'video'

  - name: immich-machine-learning
    restart_policy: always
    image: ghcr.io/immich-app/immich-machine-learning:release
    cpus: '0.5'
    networks: 
      - name: immich
    env: 
      MACHINE_LEARNING_HOST: '0.0.0.0'
      MACHINE_LEARNING_PORT: '3003'
    mounts:
      - source: model-cache
        target: /cache
        type: volume
    labels: 
      com.centurylinklabs.watchtower.enable: 'true'

  - name: immich-web
    networks: 
      - name: immich
    ports:
      - 3000:3000
    restart_policy: always
    image: ghcr.io/immich-app/immich-web:release
    env: 
      PORT: '3000'
    labels: 
      com.centurylinklabs.watchtower.enable: 'true'
    
  - name: immich-proxy
    restart_policy: always
    image: ghcr.io/immich-app/immich-proxy:release
    networks: 
      - name: immich
    env:
      # Make sure these values get passed through from the env file
      IMMICH_SERVER_URL: 'http://192.168.1.13:3001'
      IMMICH_WEB_URL: 'http://192.168.1.13:3000'
      PUBLIC_IMMICH_SERVER_URL: https://immich.{{ domain }}
    ports:
      - 8081:8080
    labels:
      com.centurylinklabs.watchtower.enable: 'true'

Your .env content

None, everything in my Ansible vars

Reproduction steps

1.Upload photos & videos to a shared album
2. Try to load videos from WAN
3.
...

Additional information

No response

Originally created by @Uzurka on GitHub (Oct 16, 2023). ### The bug Hello. I created a shared album to share some photos & videos to my familly, then complained about videos can't load. I tried some things to debug, and i got this : Playing a video from immich web or iOS app is working fine as long as i'm connected to the same network. When i use 5G/LTE, i got those errors in immich-server logs : `[Nest] 7 - 10/16/2023, 6:52:12 AM ERROR [AssetService] Unable to send file: Error Error: write EPIPE at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:94:16)` ### The OS that Immich Server is running on Debian 12 Docker ### Version of Immich Server 1.81.1 ### Version of Immich Mobile App latest ### Platform with the issue - [X] Server - [X] Web - [X] Mobile ### Your docker-compose.yml content ```YAML Not a compose but ansible variables : # Immich related containers - name: typesense restart_policy: always image: typesense/typesense:0.24.1 networks: - name: immich env: TYPESENSE_API_KEY: '{{ typesense_api_key }}' TYPESENSE_DATA_DIR: /data # remove this to get debug messages GLOG_minloglevel: '1' mounts: - source: tsdata target: /data type: volume labels: com.centurylinklabs.watchtower.enable: 'true' - name: immich_redis image: redis:latest hostname: immich_redis restart_policy: always networks: - name: immich mounts: - source: /mnt/sdb1/immich-redis target: /data type: bind env: TZ: "Europe/Paris" ALLOW_EMPTY_PASSWORD: "yes" WORKDIR: /data labels: com.centurylinklabs.watchtower.enable: 'true' state: absent - name: immich-server restart_policy: always image: ghcr.io/immich-app/immich-server:release networks: - name: immich ports: 3001:3001 env: SERVER_PORT: '3001' REDIS_HOSTNAME: '{{ redis_host }}' REDIS_PORT: '{{ redis_port }}' DB_HOSTNAME: '{{ postgres_host }}' DB_PORT: '{{ postgres_port }}' DB_USERNAME: immich DB_PASSWORD: '{{ immich_postgres_password }}' DB_DATABASE: immich DB_DATABASE_NAME: immich TYPESENSE_API_KEY: '{{ typesense_api_key }}' command: [ "start.sh", "immich" ] mounts: - source: /mnt/sdb1/immich target: /usr/src/app/upload type: bind labels: com.centurylinklabs.watchtower.enable: 'true' - name: immich-microservices restart_policy: always cpus: '0.5' image: ghcr.io/immich-app/immich-server:release networks: - name: immich ports: - 3002:3002 runtime: nvidia command: [ "start.sh", "microservices" ] mounts: - source: /mnt/sdb1/immich target: /usr/src/app/upload type: bind env: NVIDIA_VISIBLE_DEVICES: 'all' NVIDIA_DRIVER_CAPABILITIES: 'all' MICROSERVICES_PORT: '3002' REDIS_HOSTNAME: '{{ redis_host }}' REDIS_PORT: '{{ redis_port }}' DB_HOSTNAME: '{{ postgres_host }}' DB_PORT: '{{ postgres_port }}' DB_USERNAME: immich DB_PASSWORD: '{{ immich_postgres_password }}' DB_DATABASE: immich DB_DATABASE_NAME: immich TYPESENSE_API_KEY: '{{ typesense_api_key }}' DISABLE_REVERSE_GEOCODING: 'true' labels: com.centurylinklabs.watchtower.enable: 'true' device_requests: - count: '-1' driver: nvidia capabilities: - 'gpu' - 'video' - name: immich-machine-learning restart_policy: always image: ghcr.io/immich-app/immich-machine-learning:release cpus: '0.5' networks: - name: immich env: MACHINE_LEARNING_HOST: '0.0.0.0' MACHINE_LEARNING_PORT: '3003' mounts: - source: model-cache target: /cache type: volume labels: com.centurylinklabs.watchtower.enable: 'true' - name: immich-web networks: - name: immich ports: - 3000:3000 restart_policy: always image: ghcr.io/immich-app/immich-web:release env: PORT: '3000' labels: com.centurylinklabs.watchtower.enable: 'true' - name: immich-proxy restart_policy: always image: ghcr.io/immich-app/immich-proxy:release networks: - name: immich env: # Make sure these values get passed through from the env file IMMICH_SERVER_URL: 'http://192.168.1.13:3001' IMMICH_WEB_URL: 'http://192.168.1.13:3000' PUBLIC_IMMICH_SERVER_URL: https://immich.{{ domain }} ports: - 8081:8080 labels: com.centurylinklabs.watchtower.enable: 'true' ``` ### Your .env content ```Shell None, everything in my Ansible vars ``` ### Reproduction steps ```bash 1.Upload photos & videos to a shared album 2. Try to load videos from WAN 3. ... ``` ### 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#1462