Yarn errors leading to crash on docker startup

Operating system

Linux

Joplin version

3.5.2

Desktop version info

N/A

Sync target

Joplin Server

What issue do you have?

I'm new to Joplin and am trying to set up the server on Ubuntu Server 24.04, running docker.

I am using the latest images, and the docker-compose and .env files published on the docker hub.

When I try to run docker compose --profile full up -d, I see a bunch of errors pertaining to Yarn in the logs for the joplin container (see screenshot attached). I did have to move the docker working directory to /mnt/docker/wd, which is a mounted local physical drive, as the Ubuntu VM said it ran out of space when downloading all the files for the Transcribe container. I'm not sure if this is related, or if permissions have been broken in the process of doing this. Please can anyone help?

Screenshots

Docker-compose.yml

networks:
    app-network:
    transcribe-network:
    shared-network:

services:
    db:
        image: postgres:16
        profiles:
            - full
            - server
        volumes:
            - /mnt/docker/joplin/postgres:/var/lib/postgresql/data
        networks:
            - app-network
        ports:
            - "5432:5432"
        restart: unless-stopped
        environment:
            - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
            - POSTGRES_USER=${POSTGRES_USER}
            - POSTGRES_DB=${POSTGRES_DATABASE}
    app:
        image: joplin/server:latest
        profiles:
            - full
            - server
        depends_on:
            - db
            - transcribe
        ports:
            - "22300:22300"
        networks:
            - app-network
            - shared-network
        restart: unless-stopped
        environment:
            - APP_PORT=22300
            - APP_BASE_URL=${APP_BASE_URL}
            - DB_CLIENT=pg
            - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
            - POSTGRES_DATABASE=${POSTGRES_DATABASE}
            - POSTGRES_USER=${POSTGRES_USER}
            - POSTGRES_PORT=${POSTGRES_PORT}
            - POSTGRES_HOST=db
            - TRANSCRIBE_API_KEY=${TRANSCRIBE_API_KEY}
            - TRANSCRIBE_BASE_URL=http://transcribe:4567
            - TRANSCRIBE_ENABLED=${TRANSCRIBE_ENABLED}
    transcribe-db:
        image: postgres:16
        profiles:
            - full
        volumes:
            - /mnt/docker/joplin/transcribe_postgres:/var/lib/postgresql/data
        networks:
            - transcribe-network
        ports:
            - "${QUEUE_DATABASE_PORT}:5432"
        restart: unless-stopped
        environment:
            - POSTGRES_PASSWORD=${QUEUE_DATABASE_PASSWORD}
            - POSTGRES_USER=${QUEUE_DATABASE_USER}
            - POSTGRES_DB=${QUEUE_DATABASE_NAME}
        command: -p ${QUEUE_DATABASE_PORT}
    transcribe:
        image: joplin/transcribe:latest
        profiles:
            - full
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - ${HTR_CLI_IMAGES_FOLDER}:/app/packages/transcribe/images
        depends_on:
            - transcribe-db
        ports:
            - "4567:4567"
        networks:
            - transcribe-network
            - shared-network
        restart: unless-stopped
        environment:
            - APP_PORT=4567
            - DB_CLIENT=pg
            - QUEUE_DATABASE_NAME=${QUEUE_DATABASE_NAME}
            - QUEUE_DATABASE_USER=${QUEUE_DATABASE_USER}
            - QUEUE_DATABASE_PASSWORD=${QUEUE_DATABASE_PASSWORD}
            - QUEUE_DATABASE_PORT=${QUEUE_DATABASE_PORT}
            - QUEUE_DATABASE_HOST=transcribe-db
            - API_KEY=${TRANSCRIBE_API_KEY}
            - HTR_CLI_IMAGES_FOLDER=${HTR_CLI_IMAGES_FOLDER}


And .env:

# =============================================================================
# PRODUCTION CONFIG EXAMPLE
# -----------------------------------------------------------------------------
# By default it will use SQLite, but that's mostly to test and evaluate the
# server. So you'll want to specify db connection settings to use Postgres.
# =============================================================================
#
APP_BASE_URL=http://192.168.1.96
APP_PORT=22300
#
DB_CLIENT=pg
POSTGRES_PASSWORD='redacted'
POSTGRES_DATABASE=joplin
POSTGRES_USER=joplin
POSTGRES_PORT=5432
POSTGRES_HOST=localhost

# =============================================================================
# TRANSCRIBE CONFIG EXAMPLE
# -----------------------------------------------------------------------------
# This service is not required, and it will be ignored by using --profile server
# when running docker-compose. If you want to use it, you need to set the
# following environment variables.
# =============================================================================

TRANSCRIBE_API_KEY='redacted'
TRANSCRIBE_ENABLED=true

QUEUE_DATABASE_NAME=transcribe
QUEUE_DATABASE_USER=transcribe
QUEUE_DATABASE_PASSWORD='redacted'
QUEUE_DATABASE_PORT=5431
HTR_CLI_IMAGES_FOLDER=/mnt/docker/joplin/user/images_storage

# =============================================================================
# DEV CONFIG EXAMPLE
# -----------------------------------------------------------------------------
# Example of local config, for development. In dev mode, you would usually use
# SQLite so database settings are not needed.
# =============================================================================
#
# APP_BASE_URL=http://localhost:22300
# APP_PORT=22300