Hello, there Penpot Community!
I’m reaching to you as I’ve run into a problem (of course) and cannot fix it, which has been flustering me for some time now.
The problem happens no matter if I want to export frames, single assets or components in any kind of format. The issue just happens every single time with similar kind of log.
The user and file permissions are properly set up, I’m not using the user with penpot-frontend because it fails for some reason if I do that, but backend runs smoothly. I’ve tried running penpot-exporter as root which didn’t bare any fruits.
Another thing to take note on is that I’m using Nginx Proxy Manager as my reverse proxy, which in itself shouldn’t be of issue. I did use Cloudflare as an proxy (orange cloud) but also tried to without it, which in both cases led to the former again.
Anyways, most importantly, here is my docker-compose.yml:
## 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: &penpot-flags
PENPOT_FLAGS: enable-smtp enable-prepl-server
x-uri: &penpot-public-uri
PENPOT_PUBLIC_URI: ${PENPOT_PUBLIC_URI}
x-body-size: &penpot-http-body-size
# Max body size (30MiB); Used for plain requests, should never be
# greater than multi-part size
PENPOT_HTTP_SERVER_MAX_BODY_SIZE: 31457280
# Max multipart body size (350MiB)
PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE: 367001600
networks:
penpot:
proxy:
driver: bridge
external: true
volumes:
penpot_postgres_v15:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/srv/penpot/penpot-data'
penpot_assets:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/srv/penpot/penpot-assets'
services:
penpot-frontend:
image: "penpotapp/frontend:latest"
container_name: penpot-frontend
restart: always
volumes:
- penpot_assets:/opt/data/assets
depends_on:
- penpot-backend
- penpot-exporter
networks:
- penpot
- proxy
environment:
<< : [*penpot-flags, *penpot-http-body-size]
PENPOT_PUBLIC_URI: ${PENPOT_PUBLIC_URI}
penpot-backend:
image: "penpotapp/backend:latest"
user: ${PENPOT_USER}:${PENPOT_GROUP}
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
## Configuration envronment variables for the backend container.
environment:
<< : [*penpot-flags, *penpot-http-body-size]
PENPOT_PUBLIC_URI: ${PENPOT_PUBLIC_URI}
PENPOT_DATABASE_URI: postgresql://penpot-postgres/penpot
PENPOT_DATABASE_USERNAME: ${POSTGRES_USER}
PENPOT_DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
PENPOT_REDIS_URI: redis://penpot-valkey/0
PENPOT_ASSETS_STORAGE_BACKEND: assets-fs
PENPOT_STORAGE_ASSETS_FS_DIRECTORY: /opt/data/assets
PENPOT_TELEMETRY_ENABLED: false
PENPOT_TELEMETRY_REFERER: compose
PENPOT_SMTP_DEFAULT_FROM: ${SMTP_FROM_ADDRESS}
PENPOT_SMTP_DEFAULT_REPLY_TO: ${SMTP_FROM_ADDRESS}
PENPOT_SMTP_HOST: ${SMTP_HOST}
PENPOT_SMTP_PORT: ${SMTP_PORT}
PENPOT_SMTP_USERNAME: ${SMTP_USERNAME}
PENPOT_SMTP_PASSWORD: ${SMTP_PASSWORD}
PENPOT_SMTP_TLS: true
PENPOT_SMTP_SSL: true
penpot-exporter:
image: "penpotapp/exporter:latest"
user: ${PENPOT_USER}:${PENPOT_GROUP}
container_name: penpot-exporter
restart: always
depends_on:
penpot-valkey:
condition: service_healthy
networks:
- penpot
environment:
# Don't touch it; this uses an internal docker network to
# communicate with the frontend.
PENPOT_PUBLIC_URI: http://penpot-frontend:8080
#PENPOT_PUBLIC_URI: ${PENPOT_PUBLIC_URI}
## Valkey (or previously Redis) is used for the websockets notifications.
PENPOT_REDIS_URI: redis://penpot-valkey/0
penpot-postgres:
image: "postgres:17"
user: ${PENPOT_USER}:${PENPOT_GROUP}
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=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
penpot-valkey:
image: valkey/valkey:8.1
user: ${PENPOT_USER}:${PENPOT_GROUP}
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
Besides that, here is the issue I’ve been having:
Log provided by the frontend via the download report button:
Hint: ResourceRequest timed out
Prof ID: 6b27875e-b7bf-808f-8006-ac0c73109d9a
Team ID: --
Data:
{:type :server-error, :code :internal, :hint "ResourceRequest timed out", :data "(...)"}
{:type :internal, :code :timeout, :hint "ResourceRequest timed out"}
Trace:
Error: http error
at new PENPOT.eh (https://penpot.einaldr.com/js/shared.44bc4b7fa-1754046250.js:306:97)
at PENPOT.fh (https://penpot.einaldr.com/js/shared.44bc4b7fa-1754046250.js:306:419)
at PENPOT.gh (https://penpot.einaldr.com/js/shared.44bc4b7fa-1754046250.js:306:372)
at PENPOT.y_a (https://penpot.einaldr.com/js/shared.44bc4b7fa-1754046250.js:1496:424)
at https://penpot.einaldr.com/js/shared.44bc4b7fa-1754046250.js:1254:242
at _ (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:16436)
at e.f [as _nextOverride] (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:16386)
at e.htr [as _next] (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:1873)
at e.next (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:1370)
at e.next [as _nextOverride] (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:13985)
at e.htr [as _next] (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:1873)
at e.next (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:1370)
at e.next [as _nextOverride] (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:16499)
at e.htr [as _next] (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:1873)
at e.next (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:1370)
at e.next [as _nextOverride] (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:13985)
at e.htr [as _next] (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:1873)
at e.next (https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:1370)
at https://penpot.einaldr.com/js/libs.js?ts=1754046776119:757:4469
Last events:
[":app.main.features/initialize"
":app.main.data.team/fetch-members"
":app.main.data.team/team-initialized"
":app.main.data.team/members-fetched"
":app.main.data.workspace/bundle-fetched"
":app.main.data.project/fetch-project"
":app.main.data.project/initialize-project"
":app.main.data.workspace.notifications/handle-presence"
":app.main.data.workspace.notifications/initialize"
":app.main.data.workspace.shape-layout/initialize-shape-layout"
":app.main.data.workspace/fetch-libries"
":app.main.data.plugins/check-open-plugin"
":app.main.data.workspace.fix-deleted-fonts/fix-deleted-fonts"
":app.main.data.workspace.fix-broken-shapes/fix-broken-shapes"
":app.main.data.workspace/workspace-initialized"
":app.main.data.workspace.pages/initialize-page*"
":app.main.data.workspace.thumbnails/watch-state-changes"
":app.main.data.workspace.libraries/watch-component-changes"
":app.main.data.workspace.pages/initialize-page"
":app.main.data.shortcuts/push-shortcuts"
":app.main.data.project/project-fetched"
":app.main.data.workspace/libraries-fetched"
":app.main.data.workspace.libraries/library-thumbnails-fetched"
":app.main.data.workspace.highlight/highlight-shape"
":app.main.data.workspace.libraries/library-thumbnails-fetched"
":app.main.data.workspace.collapse/expand-all-parents"
":app.main.router/navigate"
":app.main.data.workspace.selection/select-shape"
":app.main.router/navigated"
":app.main.data.workspace/library-resolved"
":app.main.data.workspace.highlight/dehighlight-shape"
":app.main.data.persistence/persistence-notification"
":app.main.data.workspace.common/set-workspace-visited"
":app.main.data.persistence/persistence-notification"
":app.main.data.exports.assets/request-simple-export"
":app.main.data.event/event"
":app.main.data.workspace/library-resolved"
":app.main.data.workspace/check-libraries-synchronozation"
":app.main.data.exports.assets/clear-export-state"
":app.main.data.team/finalize-team"
":app.main.data.persistence/persistence-notification"
":app.main.data.workspace.notifications/finalize"
":app.main.data.project/finalize-project"
":app.main.data.workspace.shape-layout/finalize-shape-layout"
":app.main.data.workspace.colors/stop-picker"
":app.main.data.workspace.common/set-workspace-visited"
":app.main.data.modal/hide-modal"
":app.main.data.notifications/hide"
":app.main.data.workspace/finalize-workspace"
":app.main.data.workspace.pages/finalize-page"
":app.main.data.shortcuts/pop-shortcuts"]
The penpot-exporter log:
DBG [app.handlers] hint="process-request", cmd=:export-frames
ERR [app.handlers.export-frames] hint="unexpected error on frames exportation"
Data:
{:type :internal, :code :timeout, :hint "ResourceRequest timed out"}
Error: ResourceRequest timed out
at new cljs.core.ExceptionInfo (/opt/penpot/exporter/app.js:25881:14)
at cljs.core.ex_info.cljs$core$IFn$_invoke$arity$3 (/opt/penpot/exporter/app.js:25916:10)
at app.browser.translate_browser_errors (/opt/penpot/exporter/app.js:76404:29)
at /opt/penpot/exporter/app.js:75673:134
at Object.reject (/opt/penpot/exporter/app.js:75188:107)
at $jscomp$scope$84173391$25$processNextTick (/opt/penpot/exporter/app.js:74067:167)
at $jscomp$scope$84173391$27$transition (/opt/penpot/exporter/app.js:74046:110)
at $jscomp$scope$84173391$14$PromiseImpl.reject (/opt/penpot/exporter/app.js:74148:82)
at Object.complete (/opt/penpot/exporter/app.js:74080:28)
at $jscomp$scope$84173391$26$resolveTask (/opt/penpot/exporter/app.js:74055:65)
DBG [app.handlers] hint="process-request", cmd=:get-resource
Thanks for your time.