Fix for blank screen and “column User.role does not exist” when using n8nio/n8n-ffmpeg:latest

Hey everyone :waving_hand:

After a lot of testing and headaches, I found the definitive fix for the login error and blank screen issue that happens when using the n8nio/n8n-ffmpeg image.


:red_exclamation_mark: The problem

If you’re using:

image: n8nio/n8n-ffmpeg:latest

You’ll probably hit one or more of these:

  • Login error: column User.role does not exist

  • Blank screen after login

  • /rest/projects/my-projects or /rest/projects/personal returning HTTP 500

  • Browser console shows e[1] is not iterable

But when switching to the normal image:

image: n8nio/n8n:latest

Everything works fine.


:light_bulb: The real cause

The latest tag of n8nio/n8n-ffmpeg is stuck on an older version (1.108.1)
Meanwhile, n8nio/n8n:latest is already at 1.118.x and has newer database migrations.

So when you first run n8n:latest, it migrates your DB schema to the new version —
but if you later switch to the ffmpeg image, it uses old backend code on a newer database → :collision: crash and blank screen.


:white_check_mark: The solution

Build your own custom image using the same n8n version that works (in my case 1.118.2) and install FFmpeg manually:

FROM n8nio/n8n:1.118.2
USER root
RUN apk add --no-cache ffmpeg
USER node

Then build it:

docker build -t n8n-custom-ffmpeg:1.118.2 .

And update your docker-compose.yml to use it:

image: n8n-custom-ffmpeg:1.118.2

Do this for all your services (editor, worker, webhook) and you’re done.
No login issues, no blank screen, and FFmpeg works perfectly.

Hopefully this helps anyone stuck with the same problem.
Huge thanks to the n8n community — and remember: latest doesn’t always mean “newest”! :firecracker:

2 Likes

Thanks for sharing @bugzoidTM

Just a quick note, n8nio/n8n-ffmpeg isn’t an official n8n image, nor is it a valid Docker image.

However, I think I know which image you’re referring to, I used it myself in the past before switching to the task runner and building a custom image with FFmpeg installed directly in the runner.

So your current setup is definitely the correct approach..

1 Like

Yup yup…. running ffmpeg locally is fast. I haven’t upgraded to 1.118.2 but will look into it now. this is my setup, and its practically the same.

FROM n8nio/n8n:1.117.3

# become root to install packages
USER root

# install ffmpeg on Alpine
RUN apk update && apk add --no-cache ffmpeg

# drop back to node user that n8n expects
USER node

I add this above to a “dockerfile” on my local windows server running N8N to build ffmpeg locally and it works

Then build it using docker using this, for my windows server

docker compose -p <image> -f docker-compose.yml --profile gpu-nvidia up --build -d

I actually find updating a chore, but a necessary one. Always backup your workflows before the updating your local N8N!