Blank page on first launch

Hello!

After launching the docker compose, it does turn on without any problem but accessing the frontend only shows a blank page.

I’m installing Penpot through a Docker Container. I’m using Dockge to manage the Docker Compose file in case it’s something relevant and nginx for the proxy for a local network installation.

I’ve downloaded the official docker_compose.yaml file from: Github
the only things that I’ve modified are specifing the URL (http://penpot.casa), and binded the volumes to my machine hard drives .

Logs do register me entering the front-end, so I don’t think nginx is an issue and it has websocket support enabled

Docker compose file:

## Common flags:
# demo-users
# email-verification
# log-emails
# log-invitation-tokens
# login-with-github
# login-with-gitlab
# login-with-google
# login-with-ldap
# login-with-oidc
# login-with-password
# prepl-server
# registration
# secure-session-cookies
# smtp
# smtp-debug
# telemetry
# webhooks
##
## You can read more about all available flags and other
## environment variables here:
## https://help.penpot.app/technical-guide/configuration/#advanced-configuration
#
# WARNING: if you're exposing Penpot to the internet, you should remove the flags
# 'disable-secure-session-cookies' and 'disable-email-verification'
x-flags: &a1
  PENPOT_FLAGS: disable-email-verification enable-smtp enable-prepl-server
    disable-secure-session-cookies
x-uri: &a3
  PENPOT_PUBLIC_URI: http://penpot.casa
x-body-size:
  # Max body size (30MiB); Used for plain requests, should never be
  # greater than multi-part size
  &a2
  PENPOT_HTTP_SERVER_MAX_BODY_SIZE: 31457280
  # Max multipart body size (350MiB)
  PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE: 367001600
networks:
  penpot: null
volumes:
  penpot_postgres_v15:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /mnt/Personal/Apps/Penpot/pgData
  penpot_assets:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /mnt/Personal/Apps/Penpot/Assets
    # penpot_traefik:
    # penpot_minio:
services:
  penpot-frontend:
    image: penpotapp/frontend:${PENPOT_VERSION:-latest}
    container_name: penpot-frontend
    restart: always
    ports:
      - 9001:8080
    volumes:
      - penpot_assets:/opt/data/assets
    depends_on:
      - penpot-backend
      - penpot-exporter
    networks:
      - penpot
    environment:
      <<:
        - *a1
        - *a2
  penpot-backend:
    image: penpotapp/backend:${PENPOT_VERSION:-latest}
    container_name: penpot-backend
    restart: always
    volumes:
      - penpot_assets:/opt/data/assets
    depends_on:
      penpot-postgres:
        condition: service_healthy
      penpot-valkey:
        condition: service_healthy
    networks:
      - penpot
    environment:
      <<:
        - *a1
        - *a3
        - *a2
      PENPOT_DATABASE_URI: postgresql://penpot-postgres/penpot
      PENPOT_DATABASE_USERNAME: penpot
      PENPOT_DATABASE_PASSWORD: penpot
      PENPOT_REDIS_URI: redis://penpot-valkey/0
      PENPOT_ASSETS_STORAGE_BACKEND: assets-fs
      PENPOT_STORAGE_ASSETS_FS_DIRECTORY: /opt/data/assets
      PENPOT_TELEMETRY_ENABLED: true
      PENPOT_TELEMETRY_REFERER: compose
      PENPOT_SMTP_DEFAULT_FROM: no-reply@example.com
      PENPOT_SMTP_DEFAULT_REPLY_TO: no-reply@example.com
      PENPOT_SMTP_HOST: penpot-mailcatch
      PENPOT_SMTP_PORT: 1025
      PENPOT_SMTP_USERNAME: null
      PENPOT_SMTP_PASSWORD: null
      PENPOT_SMTP_TLS: false
      PENPOT_SMTP_SSL: false
  penpot-exporter:
    image: penpotapp/exporter:${PENPOT_VERSION:-latest}
    container_name: penpot-exporter
    restart: always
    depends_on:
      penpot-valkey:
        condition: service_healthy
    networks:
      - penpot
    environment:
      PENPOT_PUBLIC_URI: http://penpot-frontend:8080
      PENPOT_REDIS_URI: redis://penpot-valkey/0
  penpot-postgres:
    image: postgres:15
    container_name: penpot-postgres
    restart: always
    stop_signal: SIGINT
    healthcheck:
      test:
        - CMD-SHELL
        - pg_isready -U penpot
      interval: 2s
      timeout: 10s
      retries: 5
      start_period: 2s
    volumes:
      - penpot_postgres_v15:/var/lib/postgresql/data
    networks:
      - penpot
    environment:
      - POSTGRES_INITDB_ARGS=--data-checksums
      - POSTGRES_DB=penpot
      - POSTGRES_USER=penpot
      - POSTGRES_PASSWORD=penpot
  penpot-valkey:
    image: valkey/valkey:8.1
    container_name: penpot-valkey
    restart: always
    healthcheck:
      test:
        - CMD-SHELL
        - valkey-cli ping | grep PONG
      interval: 1s
      timeout: 3s
      retries: 5
      start_period: 3s
    networks:
      - penpot
  penpot-mailcatch:
    image: sj26/mailcatcher:latest
    container_name: penpot-mailcatch
    restart: always
    expose:
      - "1025"
    ports:
      - 1080:1080
    networks:
      - penpot

The Frontend seems to be the problem.
I’ve tested downloading and installing the desktop client (Release v0.18.1 (2025-08-22) · author-more/penpot-desktop · GitHub) and it’s working without any problems whatsoever

Any idea on what may be causing the issues? Thanks!

I’ve found the issue. It’s not docker related, but Adblock related.

Using Adguard Adblocker chrome plugin causes both the official and the self-hosted front-end to not load. Paused it and works like a charm