Hardware-Transcoding für Immich-Server via Container Manager auf DS220+?

gadabout

Benutzer
Registriert
20. März 2013
Beiträge
18
Reaktionspunkte
3
Punkte
3
Hallo zusammen

Wie im Titel erwähnt habe ich nach Synologys Abkündigung des HEVC/HEIC-Supports mit DSM 7.2.2, Immich via Container Manager installiert und das funktioniert soweit auch, ABER trotz Befolgen der Immich-Konfigurationshinweise für Transcoding-Support von hier https://immich.app/docs/features/hardware-transcoding/ wird beim Vorschaubilder-rechnen die Synology CPU auf Anschlag getrieben, ausser ich beschränke die CPU-Nutzung mittels Container-Manager für Immich insgesamt.

Soweit ich das verstanden habe, sollte der Intel-Prozessor der DS220+ QuickSync-fähig sein und die Thumbnail-Generierung von Immich sollte eigentlich das HW-Transcoding nutzen.

Hat jemand von euch Erfahrung damit auf der DS220+ oder einem anderen Synology-Modell mit Intel/QuickSync-Prozessor und Immich-Hardware Transcoding?
 
Selbst nutze ich es nicht, aber nach anderen Berichten im Forum nutzen viele Softwarepakete die iGPU nicht. Eigentlich wird immer nur Plex erwähnt, wenn es um die iGPU geht.
 
  • Like
Reaktionen: ElaCorp
@gadabout Gibt es schon eine Rückmeldung. Eventuell würde dir auch auf dem Discord geholfen werden. Dort kann man ein Ticket eröffnen und die sind besonders schnell. Ich frag mich das gleiche für die 920+
 
Hi @ElaCorp

Leider ja: Immich unterstützt mindestens derzeit Hardware Transcoding/GPU-Offloading nicht für die Thumbnail-Generierung. Das hat nix mit Synology NASen und/oder deren Prozessoren, sondern mit den genutzten Containern/Libraries zu tun :(

Siehe für mehr Details:
https://github.com/immich-app/immich/discussions/11222 oder
https://www.reddit.com/r/immich/comments/1g49yjc/til_immich_doesnt_use_hardware_acceleration_for/

Was anscheinend geht, ist Immich via eine andere Kiste (z.B. Windows) im gleichen Netzwerk zu scalen und so die Thumbnail-Erstellung (massiv) zu beschleunigen, Immich gibt dazu aber keine Anleitung, weil es eigentlich "nur" bedingt, dass du einen weiteren Immich-Server mit Zugriff auf die NAS-gehostete PostgreSQL- und Redis-DB von Immich hast. Das übersteigt meinen Docker-Horizont aber bei weitem.

Wüsstest du, wie man sowas aufsetzen könnte?
 
  • Like
Reaktionen: ElaCorp
So gut kenne ich mich damit nicht aus. Ich hab nun die Aufgaben auf 1 umgestellt. So dass wenig paralell stattfindet. Und das überwiegend über Nacht laufen lassen. 400GB Fotos und Videos haben 3 oder 4 Tage gedauert. 95% CPU.
 
Hi,
habe heute immich auf meiner DS 918+ installiert.

HW Beschleunigung wie folgt aktiviert.

- als sudo erstmal geprüft ob der Pfad erreichbar ist
Code:
/dev/dri

- dann im docker compose folgende Zeilen eingefügt

1738261620242.png

- Zieht euch dann das file welches im extends: Block genannt wird, führt folgendes Kommando auf der gleichen Ebene aus in welcher die docker-compose.yml von immich liegt
Bash:
wget -O https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml

- Nach dem Kommando
Bash:
docker-compose up -d
wurde der container neu gebaut und gestartet.

- In meinem Log (Portainer) die Bestätigung:

1738261501499.png

Info: Wir haben kein docker compose auf der DS, bei uns ist es docker-compose
(https://immich.app/docs/install/docker-compose)

Für die User die 1:1 die commands kopieren wird es folglich nicht auf anhieb klappen.
Viel Erfolg!
 
  • Like
Reaktionen: ElaCorp
Hallo @arphex Läuft es gut bei dir? Lohnt es sich das zu aktivieren?
Leider bin ich nicht so gut. Deswegen wollte ich höflich nachfragen, ob es auch über den Stack geht?
Was müsste man verändern, damit es auch so geht?

C:
services:
  immich-redis:
    image: redis
    container_name: Immich-REDIS
    hostname: immich-redis
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping || exit 1"]
    user: 1026:100
    environment:
      - TZ=Europe/Berlin
    volumes:
      - /volume2/docker2/immich/redis:/data:rw
    restart: on-failure:5

  immich-db:
    image: tensorchord/pgvecto-rs:pg16-v0.2.0
    container_name: Immich-DB
    hostname: immich-db
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "immich", "-U", "immichuser"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - /volume2/docker2/immich/db:/var/lib/postgresql/data:rw
    environment:
      - TZ=Europe/Berlin
      - POSTGRES_DB=immich
      - POSTGRES_USER=immichuser
      - POSTGRES_PASSWORD=immichpw
    restart: on-failure:5

  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: Immich-SERVER
    hostname: immich-server
    user: 1026:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    ports:
      - 8212:2283
    volumes:
      - /volume2/docker2/immich/upload:/usr/src/app/upload:rw
    restart: on-failure:5
    depends_on:
      immich-redis:
        condition: service_healthy
      immich-db:
        condition: service_started

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: Immich-LEARNING
    hostname: immich-machine-learning
    user: 1026:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    volumes:
      - /volume2/docker2/immich/upload:/usr/src/app/upload:rw
      - /volume2/docker2/immich/cache:/cache:rw
      - /volume2/docker2/immich/matplotlib:/matplotlib:rw
    environment:
      - MPLCONFIGDIR=/matplotlib
    restart: on-failure:5
    depends_on:
      immich-db:
        condition: service_started

Und falls das nicht über den Stack geht. Was meinst du mit :
"Für die User die 1:1 die commands kopieren wird es folglich nicht auf anhieb klappen."
Muss ma dann "docker compose" mit Lesezeichen schreiben?

Und falls ich das schaffe von dir nachzumachen. Wenn ich dan über den Stack update. Also den Stack nochmal mit frischem Image installiere. So update ich immer. Würden dann deine Änderungen verloren gehen?

Würde mich freuen, falls noch jemand anderes das hier getestet hat.
 
  • Like
Reaktionen: Benie
Aber leider kommt ein Fehler, was hast du in der Immich App unter Verwaltung dann noch eingestellt?
 
Ok, ich habe es hinbekommen:
[Nest] 7 - 02/17/2025, 2:48:15 AM LOG [Microservices:MediaService] Transcoding video 5ec98864-b3fd-457f-9d5b-72e1fc9c495c with QSV-accelerated encoding and decoding

@ElaCorp poste mal den Output per SSH:

ls -l /dev/dri

Mein Beispiel mit meinem USER: 1040

Teil des Portainer Stacks
Code:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: Immich-SERVER
    hostname: immich-server
    user: 1040:100
    group_add:
      - 937
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    ports:
      - 2283:2283
    devices:
      - /dev/dri:/dev/dri

    volumes:
      - /volume2/docker/immich/upload:/usr/src/app/upload:rw
      - /volume2/photo:/photo:rw

    restart: on-failure:5
    depends_on:
      immich-redis:
        condition: service_healthy
      immich-db:
        condition: service_started

Code:
root@DS920plus:~# sudo synogroup --memberadd videodriver 1040
Group Name: [videodriver]
Group Type: [AUTH_LOCAL]
Group ID:   [937]
Group Members:
0:[sc-ffmpeg]
1:[PlexMediaServer]
2:[emby]
3:[sc-jellyfin]
4:[sc-tvheadend]
5:[sc-ffmpeg5]
6:[sc-synocli-videodriver]
7:[1040]
root@DS920plus:~# ls -l /dev/dri
total 0
crw------- 1 root root        226,   0 Feb  5 09:17 card0
crw-rw---- 1 root videodriver 226, 128 Feb  5 09:17 renderD128
 
Zuletzt bearbeitet:
  • Like
Reaktionen: plang.pl
@arphex Kannst du bitte trotzdem mal deine Einstellungen posten?
 

Anhänge

  • 1739757303792.png
    1739757303792.png
    149 KB · Aufrufe: 14
Ich habe meinen Code um diese zwei Zeilen ergänzt:
Code:
services:
  immich-redis:
    image: redis
    container_name: Immich-REDIS
    hostname: immich-redis
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping || exit 1"]
    user: 1026:100
    environment:
      - TZ=Europe/Berlin
    volumes:
      - /volume2/docker2/immich/redis:/data:rw
    restart: on-failure:5

  immich-db:
    image: tensorchord/pgvecto-rs:pg16-v0.2.0
    container_name: Immich-DB
    hostname: immich-db
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "immich", "-U", "immichuser"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - /volume2/docker2/immich/db:/var/lib/postgresql/data:rw
    environment:
      - TZ=Europe/Berlin
      - POSTGRES_DB=immich
      - POSTGRES_USER=immichuser
      - POSTGRES_PASSWORD=immichpw
    restart: on-failure:5

  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: Immich-SERVER
    hostname: immich-server
    user: 1026:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    ports:
      - 8212:2283
    volumes:
      - /volume2/docker2/immich/upload:/usr/src/app/upload:rw
    restart: on-failure:5
    devices: # selber hinzugefügt wegen iGPu, erstmal weglassen.
      - /dev/dri:/dev/dri # selber hinzugefügt wegen iGPu , sonst loeschen
    depends_on:
      immich-redis:
        condition: service_healthy
      immich-db:
        condition: service_started

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: Immich-LEARNING
    hostname: immich-machine-learning
    user: 1026:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    volumes:
      - /volume2/docker2/immich/upload:/usr/src/app/upload:rw
      - /volume2/docker2/immich/cache:/cache:rw
      - /volume2/docker2/immich/matplotlib:/matplotlib:rw
    environment:
      - MPLCONFIGDIR=/matplotlib
    restart: on-failure:5
    depends_on:
      immich-db:
        condition: service_started

Das Log vom immich Server ist:
https://paste.ofcode.org/Zk3Mi74tgZGRTnvSiUxTuT

Und hier nachdem ich den Befehl für dich da eingeben habe:
SCR-20250217-sart.png
 
Und bei mir schaut es so aus in den Eistellungen:
 

Anhänge

  • SCR-20250217-scig.png
    SCR-20250217-scig.png
    227,4 KB · Aufrufe: 11
  • SCR-20250217-sckw.png
    SCR-20250217-sckw.png
    293,9 KB · Aufrufe: 12
  • SCR-20250217-scmn.png
    SCR-20250217-scmn.png
    138,7 KB · Aufrufe: 11
  • SCR-20250217-scox.png
    SCR-20250217-scox.png
    95,2 KB · Aufrufe: 10
Bei dir fehlt noch:
group_add:
- 937
und deinen user der Gruppe hinzufügen:
sudo synogroup --memberadd videodriver 1026
 
Ich hab diese zwei Zeilen noch meinem Stack hinzugefügt.
Aber wie mach ich "sudo synogroup --memberadd videodriver 1026" ? bei mir schaut es so aus:
SCR-20250218-dbiz.pngim Log vom Container ImmichServer ist alles grün.
Der Befehl: "ls -l /dev/dri" ergibt das gleiche wie in meinem Beitrag davor.
 
Nix Container, Konsole SSH
 
  • Like
Reaktionen: ElaCorp
Nix Container, Konsole SSH
Group Name: [videodriver]
Group Type: [AUTH_LOCAL]
Group ID: [937]
Group Members:
0:[PlexMediaServer]
1:[1026]

und der andere Befehl ergibt:
total 0
crw------- 1 root root 226, 0 Jan 24 19:53 card0
crw-rw---- 1 root videodriver 226, 128 Jan 24 19:53 renderD128
 
Bei meiner 720+ sieht das bei Jellyfin mit Hardwaretranscoding so aus:
YAML:
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
Nach der Anleitung von marius
 

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat