[GH-ISSUE #1767] Status showing Pending , after both parties signed #512

Open
opened 2026-02-26 18:47:21 +03:00 by kerem · 46 comments
Owner

Originally created by @Aj7ay7 on GitHub (Apr 28, 2025).
Original GitHub issue: https://github.com/documenso/documenso/issues/1767

Originally assigned to: @Mythie on GitHub.

Issue Description

  • After completion of signatures, status still shows as pending
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}
Error: No session found
    at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900)
    at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) {
  digest: '2788342345'
}

Logs in coolify

Image

Steps to Reproduce

  • Use coolify to deploy documenso as a service
  • Sent a document to sign to your friend
  • Sign both parties
  • you will see the above issue

Expected Behavior

  • It should shows completed and both parties should download signed documents

Current Behavior

  • Status showing as pending

Screenshots (optional)

Image

Operating System [e.g., Windows 10]

MacOs, Windows

Browser [e.g., Chrome, Firefox]

Chrome, Firefox

Version [e.g., 2.0.1]

1.9.0, latest , 1.8.1 versions tested

Please check the boxes that apply to this issue report.

  • I have searched the existing issues to make sure this is not a duplicate.
  • I have provided steps to reproduce the issue.
  • I have included relevant environment information.
  • I have included any relevant screenshots.
  • I understand that this is a voluntary contribution and that there is no guarantee of resolution.
  • I want to work on creating a PR for this issue if approved
Originally created by @Aj7ay7 on GitHub (Apr 28, 2025). Original GitHub issue: https://github.com/documenso/documenso/issues/1767 Originally assigned to: @Mythie on GitHub. ### Issue Description - After completion of signatures, status still shows as pending ``` Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } Error: No session found at c (/app/apps/web/.next/server/chunks/5529.js:1:1202900) at async b (/app/apps/web/.next/server/app/(dashboard)/documents/page.js:1:18990) { digest: '2788342345' } ``` Logs in coolify <img width="1271" alt="Image" src="https://github.com/user-attachments/assets/4becc7d0-eaeb-4bce-8392-0b6a5b110a39" /> ### Steps to Reproduce - Use coolify to deploy documenso as a service - Sent a document to sign to your friend - Sign both parties - you will see the above issue ### Expected Behavior - It should shows completed and both parties should download signed documents ### Current Behavior - Status showing as pending ### Screenshots (optional) <img width="1271" alt="Image" src="https://github.com/user-attachments/assets/e589fb49-de36-47f8-a163-038a699ea71d" /> ### Operating System [e.g., Windows 10] MacOs, Windows ### Browser [e.g., Chrome, Firefox] Chrome, Firefox ### Version [e.g., 2.0.1] 1.9.0, latest , 1.8.1 versions tested ### Please check the boxes that apply to this issue report. - [x] I have searched the existing issues to make sure this is not a duplicate. - [x] I have provided steps to reproduce the issue. - [x] I have included relevant environment information. - [x] I have included any relevant screenshots. - [x] I understand that this is a voluntary contribution and that there is no guarantee of resolution. - [ ] I want to work on creating a PR for this issue if approved
Author
Owner

@github-actions[bot] commented on GitHub (Apr 28, 2025):

Thank you for opening your first issue and for being a part of the open signing revolution!

One of our team members will review it and get back to you as soon as it possible 💚

Meanwhile, please feel free to hop into our community in Discord

<!-- gh-comment-id:2834232494 --> @github-actions[bot] commented on GitHub (Apr 28, 2025): Thank you for opening your first issue and for being a part of the open signing revolution! <br /> One of our team members will review it and get back to you as soon as it possible 💚 <br /> Meanwhile, please feel free to hop into our community in [Discord](https://documen.so/discord)
Author
Owner

@bobvmierlo commented on GitHub (Apr 28, 2025):

Having the same issue with a fresh install using "Proxmox VE Helper-Scripts" installation script on Proxmox host.

<!-- gh-comment-id:2836128217 --> @bobvmierlo commented on GitHub (Apr 28, 2025): Having the same issue with a fresh install using "Proxmox VE Helper-Scripts" installation script on Proxmox host.
Author
Owner

@HungryHowies commented on GitHub (Apr 29, 2025):

I have the same issue.

<!-- gh-comment-id:2837117713 --> @HungryHowies commented on GitHub (Apr 29, 2025): I have the same issue.
Author
Owner

@jaybarnes33 commented on GitHub (Apr 29, 2025):

@ephraimduncan can I look into this and send a PR?

<!-- gh-comment-id:2837686151 --> @jaybarnes33 commented on GitHub (Apr 29, 2025): @ephraimduncan can I look into this and send a PR?
Author
Owner

@ephraimduncan commented on GitHub (Apr 29, 2025):

Hi @jaybarnes33, yes you can look at it. Can you let me know when you open a PR?

<!-- gh-comment-id:2838256330 --> @ephraimduncan commented on GitHub (Apr 29, 2025): Hi @jaybarnes33, yes you can look at it. Can you let me know when you open a PR?
Author
Owner

@matmurdock commented on GitHub (Apr 30, 2025):

I had this problem when my certificate was not correctly installed. I have only installed Documenso with docker. Do you have a way to check your certificate?

Mat

<!-- gh-comment-id:2840705016 --> @matmurdock commented on GitHub (Apr 30, 2025): I had this problem when my certificate was not correctly installed. I have only installed Documenso with docker. Do you have a way to check your certificate? Mat
Author
Owner

@Woahai321 commented on GitHub (May 1, 2025):

I am also getting this when installing via "Proxmox VE Helper-Scripts" installation script on Proxmox host, i receive the emails stating the document is complete but not in the UI

<!-- gh-comment-id:2845999078 --> @Woahai321 commented on GitHub (May 1, 2025): I am also getting this when installing via "Proxmox VE Helper-Scripts" installation script on Proxmox host, i receive the emails stating the document is complete but not in the UI
Author
Owner

@livansilvagarcia commented on GitHub (May 2, 2025):

I have the same issue.

<!-- gh-comment-id:2847869939 --> @livansilvagarcia commented on GitHub (May 2, 2025): I have the same issue.
Author
Owner

@colocated commented on GitHub (May 3, 2025):

@jaybarnes33 I get this same issue in Docker Compose but I get more in-depth logs. Are you on the Documenso Discord, or do you want me to send them to you here?

<!-- gh-comment-id:2848686449 --> @colocated commented on GitHub (May 3, 2025): @jaybarnes33 I get this same issue in Docker Compose but I get more in-depth logs. Are you on the Documenso Discord, or do you want me to send them to you here?
Author
Owner

@Dav-id commented on GitHub (May 6, 2025):

We are having the same issue, the previous version we were using was fine so shouldn't be a configuration issue with certificates unless something changed regarding those configuration strings.

Update; I changed the ports in my docker compose / env from custom ones I was using back to the default 3000 and it has resolved the issue we had. Somehow the latest docker image wasn't respecting the port number I specified but the worker for signing the completed document was. Using default 3000 solved it.

<!-- gh-comment-id:2855143025 --> @Dav-id commented on GitHub (May 6, 2025): We are having the same issue, the previous version we were using was fine so shouldn't be a configuration issue with certificates unless something changed regarding those configuration strings. Update; I changed the ports in my docker compose / env from custom ones I was using back to the default 3000 and it has resolved the issue we had. Somehow the latest docker image wasn't respecting the port number I specified but the worker for signing the completed document was. Using default 3000 solved it.
Author
Owner

@tttuntcloud commented on GitHub (May 19, 2025):

I got the same Problem. The standard Ports were not changed :-(.

<!-- gh-comment-id:2889634615 --> @tttuntcloud commented on GitHub (May 19, 2025): I got the same Problem. The standard Ports were not changed :-(.
Author
Owner

@Aj7ay7 commented on GitHub (May 19, 2025):

I got the same Problem. The standard Ports were not changed :-(.

@ephraimduncan already raised PR and waiting to be merged
Thanks

<!-- gh-comment-id:2889701252 --> @Aj7ay7 commented on GitHub (May 19, 2025): > I got the same Problem. The standard Ports were not changed :-(. @ephraimduncan already raised PR and waiting to be merged Thanks
Author
Owner

@DisPaisy commented on GitHub (Jun 21, 2025):

After two months I still have this problem.

<!-- gh-comment-id:2993819942 --> @DisPaisy commented on GitHub (Jun 21, 2025): After two months I still have this problem.
Author
Owner

@DisPaisy commented on GitHub (Jun 23, 2025):

Temp fix: Change the status on the database from Pending to Completed. Hoping that it get fixed ASAP 👍

<!-- gh-comment-id:2994558771 --> @DisPaisy commented on GitHub (Jun 23, 2025): Temp fix: Change the status on the database from Pending to Completed. Hoping that it get fixed ASAP 👍
Author
Owner

@Dav-id commented on GitHub (Jun 23, 2025):

@DisPaisy I believe this is most likely a configuration issue as I had the same as mentioned previously, but it was due to the ports not being picked up from my configuration. Once I had reverted my custom port selection from the docker compose and went with the defaults it was working fine.

I had already previously struggled (and figured out) the self-signing certificate configuration so that may also be something you should look at in your setup.

The logs generated by Documenso are not great so it can be very difficult to know what the actual cause is though, but I can confirm I am using the "latest" tagged docker image and my documents are getting signed, processed and marked as completed which makes me think it is indeed configuration rather than a bug.

<!-- gh-comment-id:2994976511 --> @Dav-id commented on GitHub (Jun 23, 2025): @DisPaisy I believe this is most likely a configuration issue as I had the same as mentioned previously, but it was due to the ports not being picked up from my configuration. Once I had reverted my custom port selection from the docker compose and went with the defaults it was working fine. I had already previously struggled (and figured out) the self-signing certificate configuration so that may also be something you should look at in your setup. The logs generated by Documenso are not great so it can be very difficult to know what the actual cause is though, but I can confirm I am using the "latest" tagged docker image and my documents are getting signed, processed and marked as completed which makes me think it is indeed configuration rather than a bug.
Author
Owner

@DisPaisy commented on GitHub (Jun 23, 2025):

@DisPaisy I believe this is most likely a configuration issue as I had the same as mentioned previously, but it was due to the ports not being picked up from my configuration. Once I had reverted my custom port selection from the docker compose and went with the defaults it was working fine.

I had already previously struggled (and figured out) the self-signing certificate configuration so that may also be something you should look at in your setup.

The logs generated by Documenso are not great so it can be very difficult to know what the actual cause is though, but I can confirm I am using the "latest" tagged docker image and my documents are getting signed, processed and marked as completed which makes me think it is indeed configuration rather than a bug.

I am using the default port :3000 and cloudflared to use it without the port. Could this cause the problem?

<!-- gh-comment-id:2996554495 --> @DisPaisy commented on GitHub (Jun 23, 2025): > [@DisPaisy](https://github.com/DisPaisy) I believe this is most likely a configuration issue as I had the same as mentioned previously, but it was due to the ports not being picked up from my configuration. Once I had reverted my custom port selection from the docker compose and went with the defaults it was working fine. > > I had already previously struggled (and figured out) the self-signing certificate configuration so that may also be something you should look at in your setup. > > The logs generated by Documenso are not great so it can be very difficult to know what the actual cause is though, but I can confirm I am using the "latest" tagged docker image and my documents are getting signed, processed and marked as completed which makes me think it is indeed configuration rather than a bug. I am using the default port :3000 and cloudflared to use it without the port. Could this cause the problem?
Author
Owner

@rihards-simanovics commented on GitHub (Jun 23, 2025):

I am using the default port :3000 and cloudflared to use it without the port. Could this cause the problem?

According to their own docs, port 3000 IS default on Docker installs, no, I think there is a bug somewhere after all, besides Docker installs are kind of self-contained and based on the configs (i.e. env vars), I don't see anything that'd cause the issue of them not getting "compleated".

https://docs.documenso.com/developers/self-hosting/how-to

@ephraimduncan opened this PR https://github.com/documenso/documenso/pull/1776, but it looks like it was closed by @dguyen without explanation.

<!-- gh-comment-id:2996969038 --> @rihards-simanovics commented on GitHub (Jun 23, 2025): > I am using the default port :3000 and cloudflared to use it without the port. Could this cause the problem? According to their own docs, port 3000 IS default on Docker installs, no, I think there is a bug somewhere after all, besides Docker installs are kind of self-contained and based on the configs (i.e. env vars), I don't see anything that'd cause the issue of them not getting "compleated". https://docs.documenso.com/developers/self-hosting/how-to @ephraimduncan opened this PR https://github.com/documenso/documenso/pull/1776, but it looks like it was closed by @dguyen without explanation.
Author
Owner

@tttuntcloud commented on GitHub (Jun 23, 2025):

@DisPaisy I believe this is most likely a configuration issue as I had the same as mentioned previously, but it was due to the ports not being picked up from my configuration. Once I had reverted my custom port selection from the docker compose and went with the defaults it was working fine.

I reinstalled and tried to change the "docker" Port (3513:3000) back to 3000:3000 - the Problem is still the same :-(.

<!-- gh-comment-id:2997339266 --> @tttuntcloud commented on GitHub (Jun 23, 2025): > [@DisPaisy](https://github.com/DisPaisy) I believe this is most likely a configuration issue as I had the same as mentioned previously, but it was due to the ports not being picked up from my configuration. Once I had reverted my custom port selection from the docker compose and went with the defaults it was working fine. I reinstalled and tried to change the "docker" Port (3513:3000) back to 3000:3000 - the Problem is still the same :-(.
Author
Owner

@rihards-simanovics commented on GitHub (Jun 23, 2025):

just tried signing here are the logs in case it helps:

2025-06-23T15:42:56.565764382Z + npx prisma migrate deploy --schema ../../packages/prisma/schema.prisma
2025-06-23T15:42:58.140144935Z Prisma schema loaded from ../../packages/prisma/schema.prisma
2025-06-23T15:42:58.149442615Z Datasource "db": PostgreSQL database "documenso-db", schema "public" at "database"
2025-06-23T15:42:58.244986171Z 
2025-06-23T15:42:58.245012321Z 129 migrations found in prisma/migrations
2025-06-23T15:42:58.245186699Z 
2025-06-23T15:42:58.303000082Z Applying migration `20241101112106_enable_typed_signature_by_default`
2025-06-23T15:42:58.316610093Z Applying migration `20241112223435_add_rejection_status_and_reason_to_recipient_schema`
2025-06-23T15:42:58.324560579Z Applying migration `20241119123601_add_typed_signature_team_global_settings`
2025-06-23T15:42:58.329037260Z Applying migration `20241122081012_download_document_without_certificate`
2025-06-23T15:42:58.332831287Z Applying migration `20241126014353_add_typed_signature_setting_to_templates`
2025-06-23T15:42:58.337026048Z Applying migration `20241203223835_add_document_rejected_webhook_enum`
2025-06-23T15:42:58.339631639Z Applying migration `20241217103826_add_disabled_property_user_table`
2025-06-23T15:42:58.344174705Z Applying migration `20241231121013_add_visibility_to_template`
2025-06-23T15:42:58.348248529Z Applying migration `20250108133544_add_assistant_recipient_role`
2025-06-23T15:42:58.350698547Z Applying migration `20250124135853_add_cancelled_event_webhooks`
2025-06-23T15:42:58.352977444Z Applying migration `20250217120859_add_session_fields`
2025-06-23T15:42:58.358513718Z Applying migration `20250311103458_add_rejected_document_status`
2025-06-23T15:42:58.361002620Z Applying migration `20250313015104_add_signatures_toggle`
2025-06-23T15:42:58.368147540Z Applying migration `20250318072444_add_document_folders`
2025-06-23T15:42:58.402577907Z Applying migration `20250320113205_add_dictate_signing_order_meta_field`
2025-06-23T15:42:58.406271385Z Applying migration `20250320113413_add_signing_order_dictate_meta_field_to_templates`
2025-06-23T15:42:58.410004337Z Applying migration `20250324135010_model_folder_update_id_type_and_add_pinned_property`
2025-06-23T15:42:58.456573728Z Applying migration `20250328135807_add_folder_visibility`
2025-06-23T15:42:58.460420074Z Applying migration `20250404111643_add_folder_type_and_template_folders`
2025-06-23T15:42:58.469631251Z Applying migration `20250407124054_add_delete_oncascade_folder`
2025-06-23T15:42:58.479431947Z Applying migration `20250423062206_add_legacy_field_insertion_column`
2025-06-23T15:42:58.484471597Z Applying migration `20250423062248_set_legacy_field_insert_default_to_false`
2025-06-23T15:42:58.488652682Z Applying migration `20250425015123_add_qr_token_to_document`
2025-06-23T15:42:58.491719651Z Applying migration `20250501123616_add_embedded_authoring_team_flag`
2025-06-23T15:42:58.495116561Z 
2025-06-23T15:42:58.495499271Z The following migration(s) have been applied:
2025-06-23T15:42:58.495518928Z 
2025-06-23T15:42:58.495525169Z migrations/
2025-06-23T15:42:58.495528947Z   └─ 20241101112106_enable_typed_signature_by_default/
2025-06-23T15:42:58.495532183Z     └─ migration.sql
2025-06-23T15:42:58.495535078Z   └─ 20241112223435_add_rejection_status_and_reason_to_recipient_schema/
2025-06-23T15:42:58.495538084Z     └─ migration.sql
2025-06-23T15:42:58.495540770Z   └─ 20241119123601_add_typed_signature_team_global_settings/
2025-06-23T15:42:58.495543565Z     └─ migration.sql
2025-06-23T15:42:58.495546200Z   └─ 20241122081012_download_document_without_certificate/
2025-06-23T15:42:58.495548945Z     └─ migration.sql
2025-06-23T15:42:58.495551540Z   └─ 20241126014353_add_typed_signature_setting_to_templates/
2025-06-23T15:42:58.495554305Z     └─ migration.sql
2025-06-23T15:42:58.495556930Z   └─ 20241203223835_add_document_rejected_webhook_enum/
2025-06-23T15:42:58.495559695Z     └─ migration.sql
2025-06-23T15:42:58.495562310Z   └─ 20241217103826_add_disabled_property_user_table/
2025-06-23T15:42:58.495565005Z     └─ migration.sql
2025-06-23T15:42:58.495567610Z   └─ 20241231121013_add_visibility_to_template/
2025-06-23T15:42:58.495570285Z     └─ migration.sql
2025-06-23T15:42:58.495572880Z   └─ 20250108133544_add_assistant_recipient_role/
2025-06-23T15:42:58.495575535Z     └─ migration.sql
2025-06-23T15:42:58.495578140Z   └─ 20250124135853_add_cancelled_event_webhooks/
2025-06-23T15:42:58.495580845Z     └─ migration.sql
2025-06-23T15:42:58.495583450Z   └─ 20250217120859_add_session_fields/
2025-06-23T15:42:58.495586095Z     └─ migration.sql
2025-06-23T15:42:58.495588680Z   └─ 20250311103458_add_rejected_document_status/
2025-06-23T15:42:58.495591355Z     └─ migration.sql
2025-06-23T15:42:58.495593939Z   └─ 20250313015104_add_signatures_toggle/
2025-06-23T15:42:58.495596584Z     └─ migration.sql
2025-06-23T15:42:58.495599169Z   └─ 20250318072444_add_document_folders/
2025-06-23T15:42:58.495601854Z     └─ migration.sql
2025-06-23T15:42:58.495604419Z   └─ 20250320113205_add_dictate_signing_order_meta_field/
2025-06-23T15:42:58.495607104Z     └─ migration.sql
2025-06-23T15:42:58.495609689Z   └─ 20250320113413_add_signing_order_dictate_meta_field_to_templates/
2025-06-23T15:42:58.495612404Z     └─ migration.sql
2025-06-23T15:42:58.495614999Z   └─ 20250324135010_model_folder_update_id_type_and_add_pinned_property/
2025-06-23T15:42:58.495617744Z     └─ migration.sql
2025-06-23T15:42:58.495620439Z   └─ 20250328135807_add_folder_visibility/
2025-06-23T15:42:58.495634235Z     └─ migration.sql
2025-06-23T15:42:58.495637090Z   └─ 20250404111643_add_folder_type_and_template_folders/
2025-06-23T15:42:58.495639845Z     └─ migration.sql
2025-06-23T15:42:58.495642470Z   └─ 20250407124054_add_delete_oncascade_folder/
2025-06-23T15:42:58.495645135Z     └─ migration.sql
2025-06-23T15:42:58.495647740Z   └─ 20250423062206_add_legacy_field_insertion_column/
2025-06-23T15:42:58.495650435Z     └─ migration.sql
2025-06-23T15:42:58.495653050Z   └─ 20250423062248_set_legacy_field_insert_default_to_false/
2025-06-23T15:42:58.495655815Z     └─ migration.sql
2025-06-23T15:42:58.495658410Z   └─ 20250425015123_add_qr_token_to_document/
2025-06-23T15:42:58.495661085Z     └─ migration.sql
2025-06-23T15:42:58.495663700Z   └─ 20250501123616_add_embedded_authoring_team_flag/
2025-06-23T15:42:58.495667267Z     └─ migration.sql
2025-06-23T15:42:58.495669872Z       
2025-06-23T15:42:58.495672487Z All migrations have been successfully applied.
2025-06-23T15:42:58.523003529Z npm notice
2025-06-23T15:42:58.523031442Z npm notice New major version of npm available! 10.9.2 -> 11.4.2
2025-06-23T15:42:58.523037684Z npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.4.2
2025-06-23T15:42:58.523042473Z npm notice To update run: npm install -g npm@11.4.2
2025-06-23T15:42:58.523046460Z npm notice
2025-06-23T15:42:58.540275559Z + HOSTNAME=0.0.0.0 node build/server/main.js
2025-06-23T15:52:01.330680078Z no data
2025-06-23T15:52:27.850140122Z Error: No route matches URL "/installHook.js.map"
2025-06-23T15:52:27.850181641Z     at getInternalRouterError (file:///app/node_modules/react-router/dist/development/chunk-IR6S3I6Y.mjs:3776:5)
2025-06-23T15:52:27.850189445Z     at Object.query (file:///app/node_modules/react-router/dist/development/chunk-IR6S3I6Y.mjs:2606:19)
2025-06-23T15:52:27.850195667Z     at handleDocumentRequest (file:///app/node_modules/react-router/dist/development/chunk-IR6S3I6Y.mjs:9157:35)
2025-06-23T15:52:27.850201628Z     at requestHandler (file:///app/node_modules/react-router/dist/development/chunk-IR6S3I6Y.mjs:9074:24)
2025-06-23T15:52:27.850207569Z     at file:///app/node_modules/hono-react-router-adapter/dist/handlers/node/index.js:22:18
2025-06-23T15:52:27.850213210Z     at file:///app/node_modules/hono-react-router-adapter/dist/handlers/node/index.js:45:7
2025-06-23T15:52:27.850218600Z     at dispatch (file:///app/node_modules/hono/dist/compose.js:30:23)
2025-06-23T15:52:27.850224230Z     at file:///app/node_modules/hono/dist/compose.js:31:20
2025-06-23T15:52:27.850229851Z     at file:///app/node_modules/@hono/node-server/dist/serve-static.mjs:76:14
2025-06-23T15:52:27.850235291Z     at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
2025-06-23T15:52:27.853765322Z No routes matched location "/installHook.js.map" 
2025-06-23T20:14:41.385385503Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/send.recipient.signed.email/cmc9jcbmq000if5tm63eh2428
2025-06-23T20:14:41.443842055Z [JOBS]: Triggering job send.recipient.signed.email with payload { documentId: 2, recipientId: 2 }
2025-06-23T20:31:36.986650849Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/send.recipient.signed.email/cmc9jy39y000pf5tm1aqqyi7g
2025-06-23T20:31:37.014090528Z [JOBS]: Triggering job send.recipient.signed.email with payload { documentId: 2, recipientId: 3 }
2025-06-23T20:31:37.266235361Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/internal.seal-document/cmc9gy3hl100qfjtmqfx8s19s
2025-06-23T20:31:37.286520674Z [JOBS]: Triggering job internal.seal-document with payload {
2025-06-23T20:31:37.286550651Z   documentId: 2,
2025-06-23T20:31:37.286555340Z   requestMetadata: {
2025-06-23T20:31:37.286559157Z     ipAddress: '82.36.155.133',
2025-06-23T20:31:37.286563204Z     userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
2025-06-23T20:31:37.286567172Z   }
2025-06-23T20:31:37.286570698Z }
2025-06-23T20:31:38.914878735Z [JOBS:task-06292354c47ced55f2e4d03bfb7e63bc9b46a8180d6f46eb02d23d3ebb8b8a45--cmc9gy3hl100qfjtmqfx8s19s] Task failed Error: ENOENT: no such file or directory, open './example/cert.p12'
2025-06-23T20:31:38.914903572Z     at Object.openSync (node:fs:562:18)
2025-06-23T20:31:38.914908231Z     at Object.readFileSync (node:fs:446:35)
2025-06-23T20:31:38.914912168Z     at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:35:27)
2025-06-23T20:31:38.914916236Z     at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10)
2025-06-23T20:31:38.914920003Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:151:23
2025-06-23T20:31:38.914923720Z     at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
2025-06-23T20:31:38.914927447Z     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21)
2025-06-23T20:31:38.914931234Z     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5)
2025-06-23T20:31:38.914934961Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-06-23T20:31:38.914938728Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) {
2025-06-23T20:31:38.914942375Z   errno: -2,
2025-06-23T20:31:38.914946012Z   code: 'ENOENT',
2025-06-23T20:31:38.914949608Z   syscall: 'open',
2025-06-23T20:31:38.914965388Z   path: './example/cert.p12'
2025-06-23T20:31:38.914967883Z }
2025-06-23T20:31:38.915017647Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed
2025-06-23T20:31:38.915026433Z     at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17)
2025-06-23T20:31:38.915030130Z     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21)
2025-06-23T20:31:38.915033026Z     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5)
2025-06-23T20:31:38.915035450Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-06-23T20:31:38.915037735Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:38.915040109Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:38.915042343Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:38.915044648Z     at async contextStorage2 (file:///app/node_modules/hono/dist/middleware/context-storage/index.js:6:5)
2025-06-23T20:31:38.915046982Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:38.915052192Z     at async file:///app/node_modules/hono/dist/hono-base.js:195:25
2025-06-23T20:31:38.919051463Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/internal.seal-document/cmc9gy3hl100qfjtmqfx8s19s
2025-06-23T20:31:38.943641253Z [JOBS]: Triggering job internal.seal-document with payload {
2025-06-23T20:31:38.943669115Z   documentId: 2,
2025-06-23T20:31:38.943681609Z   requestMetadata: {
2025-06-23T20:31:38.943684594Z     ipAddress: '82.36.155.133',
2025-06-23T20:31:38.943686989Z     userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
2025-06-23T20:31:38.943689684Z   }
2025-06-23T20:31:38.943692409Z }
2025-06-23T20:31:40.061425350Z [JOBS:task-06292354c47ced55f2e4d03bfb7e63bc9b46a8180d6f46eb02d23d3ebb8b8a45--cmc9gy3hl100qfjtmqfx8s19s] Task failed Error: ENOENT: no such file or directory, open './example/cert.p12'
2025-06-23T20:31:40.061460997Z     at Object.openSync (node:fs:562:18)
2025-06-23T20:31:40.061464573Z     at Object.readFileSync (node:fs:446:35)
2025-06-23T20:31:40.061467188Z     at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:35:27)
2025-06-23T20:31:40.061469753Z     at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10)
2025-06-23T20:31:40.061472679Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:151:23
2025-06-23T20:31:40.061475203Z     at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
2025-06-23T20:31:40.061494169Z     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21)
2025-06-23T20:31:40.061496774Z     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5)
2025-06-23T20:31:40.061499238Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-06-23T20:31:40.061501643Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) {
2025-06-23T20:31:40.061503987Z   errno: -2,
2025-06-23T20:31:40.061506282Z   code: 'ENOENT',
2025-06-23T20:31:40.061508596Z   syscall: 'open',
2025-06-23T20:31:40.061510900Z   path: './example/cert.p12'
2025-06-23T20:31:40.061513235Z }
2025-06-23T20:31:40.062070332Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed
2025-06-23T20:31:40.062085701Z     at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17)
2025-06-23T20:31:40.062089238Z     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21)
2025-06-23T20:31:40.062092404Z     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5)
2025-06-23T20:31:40.062095279Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-06-23T20:31:40.062097814Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:40.062100218Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:40.062102603Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:40.062104947Z     at async contextStorage2 (file:///app/node_modules/hono/dist/middleware/context-storage/index.js:6:5)
2025-06-23T20:31:40.062107392Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:40.062109756Z     at async file:///app/node_modules/hono/dist/hono-base.js:195:25
2025-06-23T20:31:40.064755472Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/internal.seal-document/cmc9gy3hl100qfjtmqfx8s19s
2025-06-23T20:31:40.075256673Z [JOBS]: Triggering job internal.seal-document with payload {
2025-06-23T20:31:40.075281040Z   documentId: 2,
2025-06-23T20:31:40.075283915Z   requestMetadata: {
2025-06-23T20:31:40.075286500Z     ipAddress: '82.36.155.133',
2025-06-23T20:31:40.075288915Z     userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
2025-06-23T20:31:40.075291480Z   }
2025-06-23T20:31:40.075293974Z }
2025-06-23T20:31:40.934008914Z [JOBS:task-06292354c47ced55f2e4d03bfb7e63bc9b46a8180d6f46eb02d23d3ebb8b8a45--cmc9gy3hl100qfjtmqfx8s19s] Task failed Error: ENOENT: no such file or directory, open './example/cert.p12'
2025-06-23T20:31:40.934182361Z     at Object.openSync (node:fs:562:18)
2025-06-23T20:31:40.934193662Z     at Object.readFileSync (node:fs:446:35)
2025-06-23T20:31:40.934197970Z     at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:35:27)
2025-06-23T20:31:40.934202508Z     at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10)
2025-06-23T20:31:40.934206636Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:151:23
2025-06-23T20:31:40.934210834Z     at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
2025-06-23T20:31:40.934214521Z     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21)
2025-06-23T20:31:40.934218027Z     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5)
2025-06-23T20:31:40.934221314Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-06-23T20:31:40.934225221Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) {
2025-06-23T20:31:40.934229279Z   errno: -2,
2025-06-23T20:31:40.934233166Z   code: 'ENOENT',
2025-06-23T20:31:40.934237023Z   syscall: 'open',
2025-06-23T20:31:40.934240870Z   path: './example/cert.p12'
2025-06-23T20:31:40.934245158Z }
2025-06-23T20:31:40.934268242Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed
2025-06-23T20:31:40.934272960Z     at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17)
2025-06-23T20:31:40.934277259Z     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21)
2025-06-23T20:31:40.934281426Z     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5)
2025-06-23T20:31:40.934285735Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-06-23T20:31:40.934290114Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:40.934293911Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:40.934297598Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:40.934301535Z     at async contextStorage2 (file:///app/node_modules/hono/dist/middleware/context-storage/index.js:6:5)
2025-06-23T20:31:40.934305623Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:40.934309600Z     at async file:///app/node_modules/hono/dist/hono-base.js:195:25
2025-06-23T20:31:40.936171162Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/internal.seal-document/cmc9gy3hl100qfjtmqfx8s19s
2025-06-23T20:31:40.946483287Z [JOBS]: Triggering job internal.seal-document with payload {
2025-06-23T20:31:40.946498816Z   documentId: 2,
2025-06-23T20:31:40.946502102Z   requestMetadata: {
2025-06-23T20:31:40.946504557Z     ipAddress: '82.36.155.133',
2025-06-23T20:31:40.946506981Z     userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
2025-06-23T20:31:40.946509626Z   }
2025-06-23T20:31:40.946512792Z }
2025-06-23T20:31:41.022182945Z [JOBS]: Job internal.seal-document failed BackgroundTaskExceededRetriesError: Task exceeded retries
2025-06-23T20:31:41.022211358Z     at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:201:17)
2025-06-23T20:31:41.022216728Z     at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21)
2025-06-23T20:31:41.022220906Z     at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5)
2025-06-23T20:31:41.022225024Z     at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-06-23T20:31:41.022228782Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:41.022232869Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:41.022236997Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:41.022240674Z     at async contextStorage2 (file:///app/node_modules/hono/dist/middleware/context-storage/index.js:6:5)
2025-06-23T20:31:41.022244110Z     at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-06-23T20:31:41.022248038Z     at async file:///app/node_modules/hono/dist/hono-base.js:195:25
<!-- gh-comment-id:2997876547 --> @rihards-simanovics commented on GitHub (Jun 23, 2025): just tried signing here are the logs in case it helps: ```log 2025-06-23T15:42:56.565764382Z + npx prisma migrate deploy --schema ../../packages/prisma/schema.prisma 2025-06-23T15:42:58.140144935Z Prisma schema loaded from ../../packages/prisma/schema.prisma 2025-06-23T15:42:58.149442615Z Datasource "db": PostgreSQL database "documenso-db", schema "public" at "database" 2025-06-23T15:42:58.244986171Z 2025-06-23T15:42:58.245012321Z 129 migrations found in prisma/migrations 2025-06-23T15:42:58.245186699Z 2025-06-23T15:42:58.303000082Z Applying migration `20241101112106_enable_typed_signature_by_default` 2025-06-23T15:42:58.316610093Z Applying migration `20241112223435_add_rejection_status_and_reason_to_recipient_schema` 2025-06-23T15:42:58.324560579Z Applying migration `20241119123601_add_typed_signature_team_global_settings` 2025-06-23T15:42:58.329037260Z Applying migration `20241122081012_download_document_without_certificate` 2025-06-23T15:42:58.332831287Z Applying migration `20241126014353_add_typed_signature_setting_to_templates` 2025-06-23T15:42:58.337026048Z Applying migration `20241203223835_add_document_rejected_webhook_enum` 2025-06-23T15:42:58.339631639Z Applying migration `20241217103826_add_disabled_property_user_table` 2025-06-23T15:42:58.344174705Z Applying migration `20241231121013_add_visibility_to_template` 2025-06-23T15:42:58.348248529Z Applying migration `20250108133544_add_assistant_recipient_role` 2025-06-23T15:42:58.350698547Z Applying migration `20250124135853_add_cancelled_event_webhooks` 2025-06-23T15:42:58.352977444Z Applying migration `20250217120859_add_session_fields` 2025-06-23T15:42:58.358513718Z Applying migration `20250311103458_add_rejected_document_status` 2025-06-23T15:42:58.361002620Z Applying migration `20250313015104_add_signatures_toggle` 2025-06-23T15:42:58.368147540Z Applying migration `20250318072444_add_document_folders` 2025-06-23T15:42:58.402577907Z Applying migration `20250320113205_add_dictate_signing_order_meta_field` 2025-06-23T15:42:58.406271385Z Applying migration `20250320113413_add_signing_order_dictate_meta_field_to_templates` 2025-06-23T15:42:58.410004337Z Applying migration `20250324135010_model_folder_update_id_type_and_add_pinned_property` 2025-06-23T15:42:58.456573728Z Applying migration `20250328135807_add_folder_visibility` 2025-06-23T15:42:58.460420074Z Applying migration `20250404111643_add_folder_type_and_template_folders` 2025-06-23T15:42:58.469631251Z Applying migration `20250407124054_add_delete_oncascade_folder` 2025-06-23T15:42:58.479431947Z Applying migration `20250423062206_add_legacy_field_insertion_column` 2025-06-23T15:42:58.484471597Z Applying migration `20250423062248_set_legacy_field_insert_default_to_false` 2025-06-23T15:42:58.488652682Z Applying migration `20250425015123_add_qr_token_to_document` 2025-06-23T15:42:58.491719651Z Applying migration `20250501123616_add_embedded_authoring_team_flag` 2025-06-23T15:42:58.495116561Z 2025-06-23T15:42:58.495499271Z The following migration(s) have been applied: 2025-06-23T15:42:58.495518928Z 2025-06-23T15:42:58.495525169Z migrations/ 2025-06-23T15:42:58.495528947Z └─ 20241101112106_enable_typed_signature_by_default/ 2025-06-23T15:42:58.495532183Z └─ migration.sql 2025-06-23T15:42:58.495535078Z └─ 20241112223435_add_rejection_status_and_reason_to_recipient_schema/ 2025-06-23T15:42:58.495538084Z └─ migration.sql 2025-06-23T15:42:58.495540770Z └─ 20241119123601_add_typed_signature_team_global_settings/ 2025-06-23T15:42:58.495543565Z └─ migration.sql 2025-06-23T15:42:58.495546200Z └─ 20241122081012_download_document_without_certificate/ 2025-06-23T15:42:58.495548945Z └─ migration.sql 2025-06-23T15:42:58.495551540Z └─ 20241126014353_add_typed_signature_setting_to_templates/ 2025-06-23T15:42:58.495554305Z └─ migration.sql 2025-06-23T15:42:58.495556930Z └─ 20241203223835_add_document_rejected_webhook_enum/ 2025-06-23T15:42:58.495559695Z └─ migration.sql 2025-06-23T15:42:58.495562310Z └─ 20241217103826_add_disabled_property_user_table/ 2025-06-23T15:42:58.495565005Z └─ migration.sql 2025-06-23T15:42:58.495567610Z └─ 20241231121013_add_visibility_to_template/ 2025-06-23T15:42:58.495570285Z └─ migration.sql 2025-06-23T15:42:58.495572880Z └─ 20250108133544_add_assistant_recipient_role/ 2025-06-23T15:42:58.495575535Z └─ migration.sql 2025-06-23T15:42:58.495578140Z └─ 20250124135853_add_cancelled_event_webhooks/ 2025-06-23T15:42:58.495580845Z └─ migration.sql 2025-06-23T15:42:58.495583450Z └─ 20250217120859_add_session_fields/ 2025-06-23T15:42:58.495586095Z └─ migration.sql 2025-06-23T15:42:58.495588680Z └─ 20250311103458_add_rejected_document_status/ 2025-06-23T15:42:58.495591355Z └─ migration.sql 2025-06-23T15:42:58.495593939Z └─ 20250313015104_add_signatures_toggle/ 2025-06-23T15:42:58.495596584Z └─ migration.sql 2025-06-23T15:42:58.495599169Z └─ 20250318072444_add_document_folders/ 2025-06-23T15:42:58.495601854Z └─ migration.sql 2025-06-23T15:42:58.495604419Z └─ 20250320113205_add_dictate_signing_order_meta_field/ 2025-06-23T15:42:58.495607104Z └─ migration.sql 2025-06-23T15:42:58.495609689Z └─ 20250320113413_add_signing_order_dictate_meta_field_to_templates/ 2025-06-23T15:42:58.495612404Z └─ migration.sql 2025-06-23T15:42:58.495614999Z └─ 20250324135010_model_folder_update_id_type_and_add_pinned_property/ 2025-06-23T15:42:58.495617744Z └─ migration.sql 2025-06-23T15:42:58.495620439Z └─ 20250328135807_add_folder_visibility/ 2025-06-23T15:42:58.495634235Z └─ migration.sql 2025-06-23T15:42:58.495637090Z └─ 20250404111643_add_folder_type_and_template_folders/ 2025-06-23T15:42:58.495639845Z └─ migration.sql 2025-06-23T15:42:58.495642470Z └─ 20250407124054_add_delete_oncascade_folder/ 2025-06-23T15:42:58.495645135Z └─ migration.sql 2025-06-23T15:42:58.495647740Z └─ 20250423062206_add_legacy_field_insertion_column/ 2025-06-23T15:42:58.495650435Z └─ migration.sql 2025-06-23T15:42:58.495653050Z └─ 20250423062248_set_legacy_field_insert_default_to_false/ 2025-06-23T15:42:58.495655815Z └─ migration.sql 2025-06-23T15:42:58.495658410Z └─ 20250425015123_add_qr_token_to_document/ 2025-06-23T15:42:58.495661085Z └─ migration.sql 2025-06-23T15:42:58.495663700Z └─ 20250501123616_add_embedded_authoring_team_flag/ 2025-06-23T15:42:58.495667267Z └─ migration.sql 2025-06-23T15:42:58.495669872Z 2025-06-23T15:42:58.495672487Z All migrations have been successfully applied. 2025-06-23T15:42:58.523003529Z npm notice 2025-06-23T15:42:58.523031442Z npm notice New major version of npm available! 10.9.2 -> 11.4.2 2025-06-23T15:42:58.523037684Z npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.4.2 2025-06-23T15:42:58.523042473Z npm notice To update run: npm install -g npm@11.4.2 2025-06-23T15:42:58.523046460Z npm notice 2025-06-23T15:42:58.540275559Z + HOSTNAME=0.0.0.0 node build/server/main.js 2025-06-23T15:52:01.330680078Z no data 2025-06-23T15:52:27.850140122Z Error: No route matches URL "/installHook.js.map" 2025-06-23T15:52:27.850181641Z at getInternalRouterError (file:///app/node_modules/react-router/dist/development/chunk-IR6S3I6Y.mjs:3776:5) 2025-06-23T15:52:27.850189445Z at Object.query (file:///app/node_modules/react-router/dist/development/chunk-IR6S3I6Y.mjs:2606:19) 2025-06-23T15:52:27.850195667Z at handleDocumentRequest (file:///app/node_modules/react-router/dist/development/chunk-IR6S3I6Y.mjs:9157:35) 2025-06-23T15:52:27.850201628Z at requestHandler (file:///app/node_modules/react-router/dist/development/chunk-IR6S3I6Y.mjs:9074:24) 2025-06-23T15:52:27.850207569Z at file:///app/node_modules/hono-react-router-adapter/dist/handlers/node/index.js:22:18 2025-06-23T15:52:27.850213210Z at file:///app/node_modules/hono-react-router-adapter/dist/handlers/node/index.js:45:7 2025-06-23T15:52:27.850218600Z at dispatch (file:///app/node_modules/hono/dist/compose.js:30:23) 2025-06-23T15:52:27.850224230Z at file:///app/node_modules/hono/dist/compose.js:31:20 2025-06-23T15:52:27.850229851Z at file:///app/node_modules/@hono/node-server/dist/serve-static.mjs:76:14 2025-06-23T15:52:27.850235291Z at process.processTicksAndRejections (node:internal/process/task_queues:105:5) 2025-06-23T15:52:27.853765322Z No routes matched location "/installHook.js.map" 2025-06-23T20:14:41.385385503Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/send.recipient.signed.email/cmc9jcbmq000if5tm63eh2428 2025-06-23T20:14:41.443842055Z [JOBS]: Triggering job send.recipient.signed.email with payload { documentId: 2, recipientId: 2 } 2025-06-23T20:31:36.986650849Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/send.recipient.signed.email/cmc9jy39y000pf5tm1aqqyi7g 2025-06-23T20:31:37.014090528Z [JOBS]: Triggering job send.recipient.signed.email with payload { documentId: 2, recipientId: 3 } 2025-06-23T20:31:37.266235361Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/internal.seal-document/cmc9gy3hl100qfjtmqfx8s19s 2025-06-23T20:31:37.286520674Z [JOBS]: Triggering job internal.seal-document with payload { 2025-06-23T20:31:37.286550651Z documentId: 2, 2025-06-23T20:31:37.286555340Z requestMetadata: { 2025-06-23T20:31:37.286559157Z ipAddress: '82.36.155.133', 2025-06-23T20:31:37.286563204Z userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0' 2025-06-23T20:31:37.286567172Z } 2025-06-23T20:31:37.286570698Z } 2025-06-23T20:31:38.914878735Z [JOBS:task-06292354c47ced55f2e4d03bfb7e63bc9b46a8180d6f46eb02d23d3ebb8b8a45--cmc9gy3hl100qfjtmqfx8s19s] Task failed Error: ENOENT: no such file or directory, open './example/cert.p12' 2025-06-23T20:31:38.914903572Z at Object.openSync (node:fs:562:18) 2025-06-23T20:31:38.914908231Z at Object.readFileSync (node:fs:446:35) 2025-06-23T20:31:38.914912168Z at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:35:27) 2025-06-23T20:31:38.914916236Z at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10) 2025-06-23T20:31:38.914920003Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:151:23 2025-06-23T20:31:38.914923720Z at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) 2025-06-23T20:31:38.914927447Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21) 2025-06-23T20:31:38.914931234Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5) 2025-06-23T20:31:38.914934961Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-06-23T20:31:38.914938728Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) { 2025-06-23T20:31:38.914942375Z errno: -2, 2025-06-23T20:31:38.914946012Z code: 'ENOENT', 2025-06-23T20:31:38.914949608Z syscall: 'open', 2025-06-23T20:31:38.914965388Z path: './example/cert.p12' 2025-06-23T20:31:38.914967883Z } 2025-06-23T20:31:38.915017647Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed 2025-06-23T20:31:38.915026433Z at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17) 2025-06-23T20:31:38.915030130Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21) 2025-06-23T20:31:38.915033026Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5) 2025-06-23T20:31:38.915035450Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-06-23T20:31:38.915037735Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:38.915040109Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:38.915042343Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:38.915044648Z at async contextStorage2 (file:///app/node_modules/hono/dist/middleware/context-storage/index.js:6:5) 2025-06-23T20:31:38.915046982Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:38.915052192Z at async file:///app/node_modules/hono/dist/hono-base.js:195:25 2025-06-23T20:31:38.919051463Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/internal.seal-document/cmc9gy3hl100qfjtmqfx8s19s 2025-06-23T20:31:38.943641253Z [JOBS]: Triggering job internal.seal-document with payload { 2025-06-23T20:31:38.943669115Z documentId: 2, 2025-06-23T20:31:38.943681609Z requestMetadata: { 2025-06-23T20:31:38.943684594Z ipAddress: '82.36.155.133', 2025-06-23T20:31:38.943686989Z userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0' 2025-06-23T20:31:38.943689684Z } 2025-06-23T20:31:38.943692409Z } 2025-06-23T20:31:40.061425350Z [JOBS:task-06292354c47ced55f2e4d03bfb7e63bc9b46a8180d6f46eb02d23d3ebb8b8a45--cmc9gy3hl100qfjtmqfx8s19s] Task failed Error: ENOENT: no such file or directory, open './example/cert.p12' 2025-06-23T20:31:40.061460997Z at Object.openSync (node:fs:562:18) 2025-06-23T20:31:40.061464573Z at Object.readFileSync (node:fs:446:35) 2025-06-23T20:31:40.061467188Z at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:35:27) 2025-06-23T20:31:40.061469753Z at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10) 2025-06-23T20:31:40.061472679Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:151:23 2025-06-23T20:31:40.061475203Z at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) 2025-06-23T20:31:40.061494169Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21) 2025-06-23T20:31:40.061496774Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5) 2025-06-23T20:31:40.061499238Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-06-23T20:31:40.061501643Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) { 2025-06-23T20:31:40.061503987Z errno: -2, 2025-06-23T20:31:40.061506282Z code: 'ENOENT', 2025-06-23T20:31:40.061508596Z syscall: 'open', 2025-06-23T20:31:40.061510900Z path: './example/cert.p12' 2025-06-23T20:31:40.061513235Z } 2025-06-23T20:31:40.062070332Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed 2025-06-23T20:31:40.062085701Z at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17) 2025-06-23T20:31:40.062089238Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21) 2025-06-23T20:31:40.062092404Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5) 2025-06-23T20:31:40.062095279Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-06-23T20:31:40.062097814Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:40.062100218Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:40.062102603Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:40.062104947Z at async contextStorage2 (file:///app/node_modules/hono/dist/middleware/context-storage/index.js:6:5) 2025-06-23T20:31:40.062107392Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:40.062109756Z at async file:///app/node_modules/hono/dist/hono-base.js:195:25 2025-06-23T20:31:40.064755472Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/internal.seal-document/cmc9gy3hl100qfjtmqfx8s19s 2025-06-23T20:31:40.075256673Z [JOBS]: Triggering job internal.seal-document with payload { 2025-06-23T20:31:40.075281040Z documentId: 2, 2025-06-23T20:31:40.075283915Z requestMetadata: { 2025-06-23T20:31:40.075286500Z ipAddress: '82.36.155.133', 2025-06-23T20:31:40.075288915Z userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0' 2025-06-23T20:31:40.075291480Z } 2025-06-23T20:31:40.075293974Z } 2025-06-23T20:31:40.934008914Z [JOBS:task-06292354c47ced55f2e4d03bfb7e63bc9b46a8180d6f46eb02d23d3ebb8b8a45--cmc9gy3hl100qfjtmqfx8s19s] Task failed Error: ENOENT: no such file or directory, open './example/cert.p12' 2025-06-23T20:31:40.934182361Z at Object.openSync (node:fs:562:18) 2025-06-23T20:31:40.934193662Z at Object.readFileSync (node:fs:446:35) 2025-06-23T20:31:40.934197970Z at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:35:27) 2025-06-23T20:31:40.934202508Z at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10) 2025-06-23T20:31:40.934206636Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:151:23 2025-06-23T20:31:40.934210834Z at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) 2025-06-23T20:31:40.934214521Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21) 2025-06-23T20:31:40.934218027Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5) 2025-06-23T20:31:40.934221314Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-06-23T20:31:40.934225221Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) { 2025-06-23T20:31:40.934229279Z errno: -2, 2025-06-23T20:31:40.934233166Z code: 'ENOENT', 2025-06-23T20:31:40.934237023Z syscall: 'open', 2025-06-23T20:31:40.934240870Z path: './example/cert.p12' 2025-06-23T20:31:40.934245158Z } 2025-06-23T20:31:40.934268242Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed 2025-06-23T20:31:40.934272960Z at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17) 2025-06-23T20:31:40.934277259Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21) 2025-06-23T20:31:40.934281426Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5) 2025-06-23T20:31:40.934285735Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-06-23T20:31:40.934290114Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:40.934293911Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:40.934297598Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:40.934301535Z at async contextStorage2 (file:///app/node_modules/hono/dist/middleware/context-storage/index.js:6:5) 2025-06-23T20:31:40.934305623Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:40.934309600Z at async file:///app/node_modules/hono/dist/hono-base.js:195:25 2025-06-23T20:31:40.936171162Z Submitting job to endpoint: https://documenso.domain.com/api/jobs/internal.seal-document/cmc9gy3hl100qfjtmqfx8s19s 2025-06-23T20:31:40.946483287Z [JOBS]: Triggering job internal.seal-document with payload { 2025-06-23T20:31:40.946498816Z documentId: 2, 2025-06-23T20:31:40.946502102Z requestMetadata: { 2025-06-23T20:31:40.946504557Z ipAddress: '82.36.155.133', 2025-06-23T20:31:40.946506981Z userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0' 2025-06-23T20:31:40.946509626Z } 2025-06-23T20:31:40.946512792Z } 2025-06-23T20:31:41.022182945Z [JOBS]: Job internal.seal-document failed BackgroundTaskExceededRetriesError: Task exceeded retries 2025-06-23T20:31:41.022211358Z at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:201:17) 2025-06-23T20:31:41.022216728Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:125:21) 2025-06-23T20:31:41.022220906Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:25:5) 2025-06-23T20:31:41.022225024Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-06-23T20:31:41.022228782Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:41.022232869Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:41.022236997Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:41.022240674Z at async contextStorage2 (file:///app/node_modules/hono/dist/middleware/context-storage/index.js:6:5) 2025-06-23T20:31:41.022244110Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-06-23T20:31:41.022248038Z at async file:///app/node_modules/hono/dist/hono-base.js:195:25 ```
Author
Owner

@tttuntcloud commented on GitHub (Jun 24, 2025):

I was able to solve the problem for me.
The solution is described here https://docs.documenso.com/developers/local-development/signing-certificate

The problem was that I used a ready-made certificate and Documenso was not allowed to access it.

So I “only” had to set the authorization on my NAS for the certificate correctly and then it worked.

I used ChatGPT to help me with this :-P.
If I were you, I would first check in Portainer whether the Documenso container is allowed to access the certificate ;-).

<!-- gh-comment-id:2999953543 --> @tttuntcloud commented on GitHub (Jun 24, 2025): I was able to solve the problem for me. The solution is described here https://docs.documenso.com/developers/local-development/signing-certificate The problem was that I used a ready-made certificate and Documenso was not allowed to access it. So I “only” had to set the authorization on my NAS for the certificate correctly and then it worked. I used ChatGPT to help me with this :-P. If I were you, I would first check in Portainer whether the Documenso container is allowed to access the certificate ;-).
Author
Owner

@DisPaisy commented on GitHub (Jun 26, 2025):

I was able to solve the problem for me. The solution is described here https://docs.documenso.com/developers/local-development/signing-certificate

The problem was that I used a ready-made certificate and Documenso was not allowed to access it.

So I “only” had to set the authorization on my NAS for the certificate correctly and then it worked.

I used ChatGPT to help me with this :-P. If I were you, I would first check in Portainer whether the Documenso container is allowed to access the certificate ;-).

Fixed with this.

<!-- gh-comment-id:3008539689 --> @DisPaisy commented on GitHub (Jun 26, 2025): > I was able to solve the problem for me. The solution is described here https://docs.documenso.com/developers/local-development/signing-certificate > > The problem was that I used a ready-made certificate and Documenso was not allowed to access it. > > So I “only” had to set the authorization on my NAS for the certificate correctly and then it worked. > > I used ChatGPT to help me with this :-P. If I were you, I would first check in Portainer whether the Documenso container is allowed to access the certificate ;-). Fixed with this.
Author
Owner

@Novapixel1010 commented on GitHub (Aug 7, 2025):

I am currently writing a guide if anyone is still struggling. Here

<!-- gh-comment-id:3162362224 --> @Novapixel1010 commented on GitHub (Aug 7, 2025): I am currently writing a guide if anyone is still struggling. [Here](https://guide.hypernovat.com/s/0d3bca9e-c7b4-4a87-91b0-59dc78345c6d/doc/selfhosted-6tgpEdaUmx)
Author
Owner

@kamasuPaul commented on GitHub (Aug 27, 2025):

I was able to solve the problem for me. The solution is described here https://docs.documenso.com/developers/local-development/signing-certificate

The problem was that I used a ready-made certificate and Documenso was not allowed to access it.

So I “only” had to set the authorization on my NAS for the certificate correctly and then it worked.

I used ChatGPT to help me with this :-P. If I were you, I would first check in Portainer whether the Documenso container is allowed to access the certificate ;-).

I also found the issue to be coming from the certificate. Its either documenso cant find the certificate.p12 from the path specified or it cant extract the private keys in which case you will an error mentioning Task failed Error: Failed to get private key bags. This i resolved by regenerating the certificate using the legacy flag and also changing the owner of certificate.p12 to 1001 on the host machine.

<!-- gh-comment-id:3226661748 --> @kamasuPaul commented on GitHub (Aug 27, 2025): > I was able to solve the problem for me. The solution is described here https://docs.documenso.com/developers/local-development/signing-certificate > > The problem was that I used a ready-made certificate and Documenso was not allowed to access it. > > So I “only” had to set the authorization on my NAS for the certificate correctly and then it worked. > > I used ChatGPT to help me with this :-P. If I were you, I would first check in Portainer whether the Documenso container is allowed to access the certificate ;-). I also found the issue to be coming from the certificate. Its either documenso cant find the certificate.p12 from the path specified or it cant extract the private keys in which case you will an error mentioning `Task failed Error: Failed to get private key bags`. This i resolved by regenerating the certificate using the `legacy `flag and also changing the owner of certificate.p12 to `1001` on the host machine.
Author
Owner

@Dvalin21 commented on GitHub (Aug 27, 2025):

I had this issue. I changed the location of the cert from /opt/documenso to /app/certs(also in the new documentation). I created the cert and changed the permissions to 1001 from inside the container. After that, I was able to actually sign and get the "complete". I used the following (@ephraimduncan Thanks for the chromium tip)

# Access container as root
docker-compose exec --user root documenso sh

# Generate certificate in /app/certs/
openssl genrsa -out private.key 2048
openssl req -new -x509 -key private.key -out certificate.crt -days 1460
openssl pkcs12 -export -out cert.p12 \
  -inkey private.key \
  -in certificate.crt \
  -name "documenso" \
  -passout pass: \  # No password
  -keypbe PBE-SHA1-3DES \  # Use compatible algorithms
  -certpbe PBE-SHA1-3DES \
  -macalg sha1

# Set correct ownership
chown 1001:1001 cert.p12 private.key certificate.crt

sudo docker compose exec --user root documenso sh -c 'chown -R 1001:1001 /app/certs'
services:
  documenso:
    image: documenso/documenso:latest
    depends_on:
      database:
        condition: service_healthy
    ports:
      - '3000:3000'
    environment:
      - NODE_ENV=production
      - NEXTAUTH_URL=${NEXTAUTH_URL}
      - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
      - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL}
      - NEXT_PRIVATE_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB}
      - NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB}
      - NEXT_PRIVATE_BROWSERLESS_URL=${NEXT_PRIVATE_BROWSERLESS_URL:-ws://browserless:3000}   #For Chromium Browsers       
      - NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}
      - NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}
      - NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}
      - NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}
      - NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}
      - NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}
      - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12
      - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY}
      - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY}
    volumes:
      - documenso_certs:/app/certs 
    healthcheck:
      test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/ | grep -q 'Sign in to your account' || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: unless-stopped

 browserless:
    container_name: browserless
    image: browserless/chrome:latest
    ports:
      - "3001:3000"
    environment:
      - MAX_CONCURRENT_SESSIONS=10
      - MAX_QUEUE_LENGTH=20

  database:
    image: postgres:17
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5
    restart: unless-stopped

volumes:
  documenso_certs:  # Certificate volume
  postgres_data:    # Database volume
# Database Configuration
POSTGRES_USER=documenso
POSTGRES_PASSWORD=your_secure_password_here
POSTGRES_DB=documenso-db

# Application Configuration
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret_here
NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000

# Encryption Keys (Generate with: openssl rand -base64 32)
NEXT_PRIVATE_ENCRYPTION_KEY=your_encryption_key_here
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=your_secondary_encryption_key_here

# SMTP Configuration
NEXT_PRIVATE_SMTP_HOST=your_smtp_host
NEXT_PRIVATE_SMTP_PORT=587
NEXT_PRIVATE_SMTP_USERNAME=your_smtp_username
NEXT_PRIVATE_SMTP_PASSWORD=your_smtp_password
NEXT_PRIVATE_SMTP_FROM_NAME=Documenso
NEXT_PRIVATE_SMTP_FROM_ADDRESS=noreply@yourdomain.com

# For Chromium Browsers. Without, the certificate will not be added to the signed document pdf file.
NEXT_PRIVATE_BROWSERLESS_URL="ws://browserless:3000"

# Signing Certificate Configuration :cite[9]:cite[10]
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12
<!-- gh-comment-id:3229861444 --> @Dvalin21 commented on GitHub (Aug 27, 2025): I had this issue. I changed the location of the cert from /opt/documenso to /app/certs(also in the new documentation). I created the cert and changed the permissions to 1001 from inside the container. After that, I was able to actually sign and get the "complete". I used the following (@ephraimduncan Thanks for the chromium tip) ``` # Access container as root docker-compose exec --user root documenso sh # Generate certificate in /app/certs/ openssl genrsa -out private.key 2048 openssl req -new -x509 -key private.key -out certificate.crt -days 1460 openssl pkcs12 -export -out cert.p12 \ -inkey private.key \ -in certificate.crt \ -name "documenso" \ -passout pass: \ # No password -keypbe PBE-SHA1-3DES \ # Use compatible algorithms -certpbe PBE-SHA1-3DES \ -macalg sha1 # Set correct ownership chown 1001:1001 cert.p12 private.key certificate.crt ``` ``` sudo docker compose exec --user root documenso sh -c 'chown -R 1001:1001 /app/certs' ``` ``` services: documenso: image: documenso/documenso:latest depends_on: database: condition: service_healthy ports: - '3000:3000' environment: - NODE_ENV=production - NEXTAUTH_URL=${NEXTAUTH_URL} - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL} - NEXT_PRIVATE_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB} - NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB} - NEXT_PRIVATE_BROWSERLESS_URL=${NEXT_PRIVATE_BROWSERLESS_URL:-ws://browserless:3000} #For Chromium Browsers - NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST} - NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT} - NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME} - NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD} - NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME} - NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS} - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12 - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY} - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY} volumes: - documenso_certs:/app/certs healthcheck: test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/ | grep -q 'Sign in to your account' || exit 1"] interval: 30s timeout: 10s retries: 3 restart: unless-stopped browserless: container_name: browserless image: browserless/chrome:latest ports: - "3001:3000" environment: - MAX_CONCURRENT_SESSIONS=10 - MAX_QUEUE_LENGTH=20 database: image: postgres:17 environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped volumes: documenso_certs: # Certificate volume postgres_data: # Database volume ``` ``` # Database Configuration POSTGRES_USER=documenso POSTGRES_PASSWORD=your_secure_password_here POSTGRES_DB=documenso-db # Application Configuration NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your_nextauth_secret_here NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000 # Encryption Keys (Generate with: openssl rand -base64 32) NEXT_PRIVATE_ENCRYPTION_KEY=your_encryption_key_here NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=your_secondary_encryption_key_here # SMTP Configuration NEXT_PRIVATE_SMTP_HOST=your_smtp_host NEXT_PRIVATE_SMTP_PORT=587 NEXT_PRIVATE_SMTP_USERNAME=your_smtp_username NEXT_PRIVATE_SMTP_PASSWORD=your_smtp_password NEXT_PRIVATE_SMTP_FROM_NAME=Documenso NEXT_PRIVATE_SMTP_FROM_ADDRESS=noreply@yourdomain.com # For Chromium Browsers. Without, the certificate will not be added to the signed document pdf file. NEXT_PRIVATE_BROWSERLESS_URL="ws://browserless:3000" # Signing Certificate Configuration :cite[9]:cite[10] NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12 ```
Author
Owner

@PsionicTemplar commented on GitHub (Aug 30, 2025):

I had a very similar issue. In my case, I was also seeing an issue surrounding my volume path for my cert.
Task failed Error: EISDIR: illegal operation on a directory, read
I'm not sure about Unix based systems, but using ${pwd} on windows to get my current working directory solved my issue.

documenso:
    image: documenso/documenso:v1.12.1
    env_file:
      - .env
    ports:
      - "3005:3000"
    depends_on:
      - postgres
    restart: unless-stopped
    volumes:
      - ${pwd}/certs/cert.p12:/app/certs/cert.p12

I had this issue. I changed the location of the cert from /opt/documenso to /app/certs(also in the new documentation). I created the cert and changed the permissions to 1001 from inside the container. After that, I was able to actually sign and get the "complete". I used the following (@ephraimduncan Thanks for the chromium tip)

# Set correct ownership
chown 1001:1001 cert.p12 private.key certificate.crt

I can confirm this was also an issue for me as well.

Edit: Added the error text I was seeing.
Edit2: Updating "/opt/documenso/" to "/app/certs/" per new documentation. Thanks @Dvalin21

<!-- gh-comment-id:3239603462 --> @PsionicTemplar commented on GitHub (Aug 30, 2025): I had a very similar issue. In my case, I was also seeing an issue surrounding my volume path for my cert. `Task failed Error: EISDIR: illegal operation on a directory, read` I'm not sure about Unix based systems, but using ${pwd} on windows to get my current working directory solved my issue. ``` documenso: image: documenso/documenso:v1.12.1 env_file: - .env ports: - "3005:3000" depends_on: - postgres restart: unless-stopped volumes: - ${pwd}/certs/cert.p12:/app/certs/cert.p12 ``` > I had this issue. I changed the location of the cert from /opt/documenso to /app/certs(also in the new documentation). I created the cert and changed the permissions to 1001 from inside the container. After that, I was able to actually sign and get the "complete". I used the following ([@ephraimduncan](https://github.com/ephraimduncan) Thanks for the chromium tip) > > ``` > # Set correct ownership > chown 1001:1001 cert.p12 private.key certificate.crt > ``` I can confirm this was also an issue for me as well. Edit: Added the error text I was seeing. Edit2: Updating "/opt/documenso/" to "/app/certs/" per new documentation. Thanks @Dvalin21
Author
Owner

@Dvalin21 commented on GitHub (Aug 30, 2025):

You have to stop using /opt/documenso. Use /host/path:/app/certs according to new documentation. Look at my last post

On Aug 30, 2025 at 6:28 PM, Nicholas Braniff @.***> wrote:

PsionicTemplar left a comment (documenso/documenso#1767)

I had a very similar issue. In my case, I was also seeing an issue surrounding my volume path for my cert. Not sure about Unix based systems, but using ${pwd} on windows to get my current working directory solved my issue.

documenso: image: documenso/documenso:v1.12.1 env_file: - .env ports: - "3005:3000" depends_on: - postgres restart: unless-stopped volumes: - ${pwd}/certs/cert.p12:/opt/documenso/cert.p12

I had this issue. I changed the location of the cert from /opt/documenso to /app/certs(also in the new documentation). I created the cert and changed the permissions to 1001 from inside the container. After that, I was able to actually sign and get the "complete". I used the following @.*** Thanks for the chromium tip)

Set correct ownership chown 1001:1001 cert.p12 private.key certificate.crt

I can confirm this was also an issue for me as well.


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

<!-- gh-comment-id:3239607332 --> @Dvalin21 commented on GitHub (Aug 30, 2025): You have to stop using /opt/documenso. Use /host/path:/app/certs according to new documentation. Look at my last post > > On Aug 30, 2025 at 6:28 PM, Nicholas Braniff ***@***.***> wrote: > > > PsionicTemplar left a comment (documenso/documenso#1767) > > > I had a very similar issue. In my case, I was also seeing an issue surrounding my volume path for my cert. Not sure about Unix based systems, but using ${pwd} on windows to get my current working directory solved my issue. > > > > documenso: image: documenso/documenso:v1.12.1 env_file: - .env ports: - "3005:3000" depends_on: - postgres restart: unless-stopped volumes: - ${pwd}/certs/cert.p12:/opt/documenso/cert.p12 > > > > > > > > I had this issue. I changed the location of the cert from /opt/documenso to /app/certs(also in the new documentation). I created the cert and changed the permissions to 1001 from inside the container. After that, I was able to actually sign and get the "complete". I used the following ***@***.*** Thanks for the chromium tip) > > > > > > # Set correct ownership chown 1001:1001 cert.p12 private.key certificate.crt > > > > I can confirm this was also an issue for me as well. > > > > — > Reply to this email directly, view it on GitHub, or unsubscribe. > You are receiving this because you commented.Message ID: ***@***.***> > >
Author
Owner

@Novapixel1010 commented on GitHub (Aug 30, 2025):

Thanks I will make sure to change my guide from /opt/documenso/ to /app/certs

<!-- gh-comment-id:3239610244 --> @Novapixel1010 commented on GitHub (Aug 30, 2025): Thanks I will make sure to change my guide from `/opt/documenso/` to `/app/certs`
Author
Owner

@hironate commented on GitHub (Sep 24, 2025):

Having Same issue with coolify, anyone knows how to fix there ?

<!-- gh-comment-id:3329947047 --> @hironate commented on GitHub (Sep 24, 2025): Having Same issue with coolify, anyone knows how to fix there ?
Author
Owner

@boomam commented on GitHub (Sep 28, 2025):

Same issue irrespective of usage of a mounted certificate, or :NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS".

<!-- gh-comment-id:3344355806 --> @boomam commented on GitHub (Sep 28, 2025): Same issue irrespective of usage of a mounted certificate, or :NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS".
Author
Owner

@eugenewere commented on GitHub (Oct 8, 2025):

I had this issue. I changed the location of the cert from /opt/documenso to /app/certs(also in the new documentation). I created the cert and changed the permissions to 1001 from inside the container. After that, I was able to actually sign and get the "complete". I used the following (@ephraimduncan Thanks for the chromium tip)

# Access container as root
docker-compose exec --user root documenso sh

# Generate certificate in /app/certs/
openssl genrsa -out private.key 2048
openssl req -new -x509 -key private.key -out certificate.crt -days 1460
openssl pkcs12 -export -out cert.p12 \
  -inkey private.key \
  -in certificate.crt \
  -name "documenso" \
  -passout pass: \  # No password
  -keypbe PBE-SHA1-3DES \  # Use compatible algorithms
  -certpbe PBE-SHA1-3DES \
  -macalg sha1

# Set correct ownership
chown 1001:1001 cert.p12 private.key certificate.crt
sudo docker compose exec --user root documenso sh -c 'chown -R 1001:1001 /app/certs'
services:
  documenso:
    image: documenso/documenso:latest
    depends_on:
      database:
        condition: service_healthy
    ports:
      - '3000:3000'
    environment:
      - NODE_ENV=production
      - NEXTAUTH_URL=${NEXTAUTH_URL}
      - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
      - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL}
      - NEXT_PRIVATE_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB}
      - NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB}
      - NEXT_PRIVATE_BROWSERLESS_URL=${NEXT_PRIVATE_BROWSERLESS_URL:-ws://browserless:3000}   #For Chromium Browsers       
      - NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}
      - NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}
      - NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}
      - NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}
      - NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}
      - NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}
      - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12
      - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY}
      - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY}
    volumes:
      - documenso_certs:/app/certs 
    healthcheck:
      test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/ | grep -q 'Sign in to your account' || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: unless-stopped

 browserless:
    container_name: browserless
    image: browserless/chrome:latest
    ports:
      - "3001:3000"
    environment:
      - MAX_CONCURRENT_SESSIONS=10
      - MAX_QUEUE_LENGTH=20

  database:
    image: postgres:17
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5
    restart: unless-stopped

volumes:
  documenso_certs:  # Certificate volume
  postgres_data:    # Database volume
# Database Configuration
POSTGRES_USER=documenso
POSTGRES_PASSWORD=your_secure_password_here
POSTGRES_DB=documenso-db

# Application Configuration
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_nextauth_secret_here
NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000

# Encryption Keys (Generate with: openssl rand -base64 32)
NEXT_PRIVATE_ENCRYPTION_KEY=your_encryption_key_here
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=your_secondary_encryption_key_here

# SMTP Configuration
NEXT_PRIVATE_SMTP_HOST=your_smtp_host
NEXT_PRIVATE_SMTP_PORT=587
NEXT_PRIVATE_SMTP_USERNAME=your_smtp_username
NEXT_PRIVATE_SMTP_PASSWORD=your_smtp_password
NEXT_PRIVATE_SMTP_FROM_NAME=Documenso
NEXT_PRIVATE_SMTP_FROM_ADDRESS=noreply@yourdomain.com

# For Chromium Browsers. Without, the certificate will not be added to the signed document pdf file.
NEXT_PRIVATE_BROWSERLESS_URL="ws://browserless:3000"

# Signing Certificate Configuration :cite[9]:cite[10]
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12

Also had the same issue but followed his steps and i was all set.

<!-- gh-comment-id:3383340919 --> @eugenewere commented on GitHub (Oct 8, 2025): > I had this issue. I changed the location of the cert from /opt/documenso to /app/certs(also in the new documentation). I created the cert and changed the permissions to 1001 from inside the container. After that, I was able to actually sign and get the "complete". I used the following ([@ephraimduncan](https://github.com/ephraimduncan) Thanks for the chromium tip) > > ``` > # Access container as root > docker-compose exec --user root documenso sh > > # Generate certificate in /app/certs/ > openssl genrsa -out private.key 2048 > openssl req -new -x509 -key private.key -out certificate.crt -days 1460 > openssl pkcs12 -export -out cert.p12 \ > -inkey private.key \ > -in certificate.crt \ > -name "documenso" \ > -passout pass: \ # No password > -keypbe PBE-SHA1-3DES \ # Use compatible algorithms > -certpbe PBE-SHA1-3DES \ > -macalg sha1 > > # Set correct ownership > chown 1001:1001 cert.p12 private.key certificate.crt > ``` > > ``` > sudo docker compose exec --user root documenso sh -c 'chown -R 1001:1001 /app/certs' > ``` > > ``` > services: > documenso: > image: documenso/documenso:latest > depends_on: > database: > condition: service_healthy > ports: > - '3000:3000' > environment: > - NODE_ENV=production > - NEXTAUTH_URL=${NEXTAUTH_URL} > - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} > - NEXT_PUBLIC_WEBAPP_URL=${NEXT_PUBLIC_WEBAPP_URL} > - NEXT_PRIVATE_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB} > - NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB} > - NEXT_PRIVATE_BROWSERLESS_URL=${NEXT_PRIVATE_BROWSERLESS_URL:-ws://browserless:3000} #For Chromium Browsers > - NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST} > - NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT} > - NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME} > - NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD} > - NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME} > - NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS} > - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12 > - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY} > - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY} > volumes: > - documenso_certs:/app/certs > healthcheck: > test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/ | grep -q 'Sign in to your account' || exit 1"] > interval: 30s > timeout: 10s > retries: 3 > restart: unless-stopped > > browserless: > container_name: browserless > image: browserless/chrome:latest > ports: > - "3001:3000" > environment: > - MAX_CONCURRENT_SESSIONS=10 > - MAX_QUEUE_LENGTH=20 > > database: > image: postgres:17 > environment: > - POSTGRES_USER=${POSTGRES_USER} > - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} > - POSTGRES_DB=${POSTGRES_DB} > volumes: > - postgres_data:/var/lib/postgresql/data > healthcheck: > test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] > interval: 5s > timeout: 5s > retries: 5 > restart: unless-stopped > > volumes: > documenso_certs: # Certificate volume > postgres_data: # Database volume > ``` > > ``` > # Database Configuration > POSTGRES_USER=documenso > POSTGRES_PASSWORD=your_secure_password_here > POSTGRES_DB=documenso-db > > # Application Configuration > NEXTAUTH_URL=http://localhost:3000 > NEXTAUTH_SECRET=your_nextauth_secret_here > NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000 > > # Encryption Keys (Generate with: openssl rand -base64 32) > NEXT_PRIVATE_ENCRYPTION_KEY=your_encryption_key_here > NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=your_secondary_encryption_key_here > > # SMTP Configuration > NEXT_PRIVATE_SMTP_HOST=your_smtp_host > NEXT_PRIVATE_SMTP_PORT=587 > NEXT_PRIVATE_SMTP_USERNAME=your_smtp_username > NEXT_PRIVATE_SMTP_PASSWORD=your_smtp_password > NEXT_PRIVATE_SMTP_FROM_NAME=Documenso > NEXT_PRIVATE_SMTP_FROM_ADDRESS=noreply@yourdomain.com > > # For Chromium Browsers. Without, the certificate will not be added to the signed document pdf file. > NEXT_PRIVATE_BROWSERLESS_URL="ws://browserless:3000" > > # Signing Certificate Configuration :cite[9]:cite[10] > NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12 > ``` Also had the same issue but followed his steps and i was all set.
Author
Owner

@boomam commented on GitHub (Oct 8, 2025):

Changing the location and permissions doesn't appear to be part of the solution.
Tried it, it did nothing.

Changing or enabling the chrome container and referencing it is what fixes it.

However this should not be required for completing a workflow.
It still needs looking into and resolving.

<!-- gh-comment-id:3383367230 --> @boomam commented on GitHub (Oct 8, 2025): Changing the location and permissions doesn't appear to be part of the solution. Tried it, it did nothing. Changing or enabling the chrome container and referencing it is what fixes it. However this should not be required for completing a workflow. It still needs looking into and resolving.
Author
Owner

@Novapixel1010 commented on GitHub (Oct 18, 2025):

Check my comment on #1634

<!-- gh-comment-id:3418104511 --> @Novapixel1010 commented on GitHub (Oct 18, 2025): Check my comment on #1634
Author
Owner

@Dvalin21 commented on GitHub (Oct 29, 2025):

If anyone is interest, wrote script to automatically generate and upload certificate to the docker container. https://github.com/Dvalin21/certgen/tree/main I know its added for a future build (not this particular script), not sure if it will be 2.0.

<!-- gh-comment-id:3459496383 --> @Dvalin21 commented on GitHub (Oct 29, 2025): If anyone is interest, wrote script to automatically generate and upload certificate to the docker container. https://github.com/Dvalin21/certgen/tree/main I know its added for a future build (not this particular script), not sure if it will be 2.0.
Author
Owner

@rihards-simanovics commented on GitHub (Nov 2, 2025):

Looks like the Coolify template is heavily out of date. Once I added the volume for the certificate and generated one, everything worked as intended. Does anyone know if those certificates have to be renewed, or if you can keep the one you generated initially?

<!-- gh-comment-id:3478164708 --> @rihards-simanovics commented on GitHub (Nov 2, 2025): Looks like the Coolify template is heavily out of date. Once I added the volume for the certificate and generated one, everything worked as intended. Does anyone know if those certificates have to be renewed, or if you can keep the one you generated initially?
Author
Owner

@Dvalin21 commented on GitHub (Nov 3, 2025):

Keep as far as i know

On Nov 2, 2025 at 12:23 PM, Rihards Simanovičs @.***> wrote:

rihards-simanovics left a comment (documenso/documenso#1767)

Looks like the Coolify template is heavily out of date. Once I added the volume for the certificate and generated one, everything worked as intended. Does anyone know if those certificates have to be renewed, or if you can keep the one you generated initially?


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

<!-- gh-comment-id:3480892843 --> @Dvalin21 commented on GitHub (Nov 3, 2025): Keep as far as i know > > On Nov 2, 2025 at 12:23 PM, Rihards Simanovičs ***@***.***> wrote: > > > rihards-simanovics left a comment (documenso/documenso#1767) > > > Looks like the Coolify template is heavily out of date. Once I added the volume for the certificate and generated one, everything worked as intended. Does anyone know if those certificates have to be renewed, or if you can keep the one you generated initially? > > > > — > Reply to this email directly, view it on GitHub, or unsubscribe. > You are receiving this because you were mentioned.Message ID: ***@***.***> > >
Author
Owner

@Minifab commented on GitHub (Nov 19, 2025):

Solution

Add these environment variables to your Docker Compose / deployment:

- NEXT_PRIVATE_JOBS_PROVIDER=local
- NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000

Why this works

- NEXT_PRIVATE_JOBS_PROVIDER=local - Tells Documenso to process jobs locally instead of relying on an external service (like Inngest)
- NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000 - Allows the app to call itself for internal job processing

Important Notes

1. After adding these variables, you need to redeploy (not just restart)
2. Old jobs created before the fix will remain stuck - they need to be deleted manually:
DELETE FROM "BackgroundJob" WHERE status = 'PENDING';
3. New documents will work correctly with jobs processed immediately
<!-- gh-comment-id:3553934263 --> @Minifab commented on GitHub (Nov 19, 2025): ### Solution Add these environment variables to your Docker Compose / deployment: ```yaml - NEXT_PRIVATE_JOBS_PROVIDER=local - NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000 Why this works - NEXT_PRIVATE_JOBS_PROVIDER=local - Tells Documenso to process jobs locally instead of relying on an external service (like Inngest) - NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000 - Allows the app to call itself for internal job processing Important Notes 1. After adding these variables, you need to redeploy (not just restart) 2. Old jobs created before the fix will remain stuck - they need to be deleted manually: DELETE FROM "BackgroundJob" WHERE status = 'PENDING'; 3. New documents will work correctly with jobs processed immediately
Author
Owner

@hironate commented on GitHub (Nov 21, 2025):

I am using coolify for deploying documenso and i am still getting bellow Error

2025-11-21T11:20:46.083803426Z Failed to get certificate PDF
2025-11-21T11:20:46.083912726Z browserType.launch: Executable doesn't exist at /home/nodejs/.cache/ms-playwright/chromium_headless_shell-1169/chrome-linux/headless_shell
2025-11-21T11:20:46.083932586Z ╔═════════════════════════════════════════════════════════════════════════╗
2025-11-21T11:20:46.083938856Z ║ Looks like Playwright Test or Playwright was just installed or updated. ║
2025-11-21T11:20:46.083943317Z ║ Please run the following command to download new browsers: ║
2025-11-21T11:20:46.083947576Z ║ ║
2025-11-21T11:20:46.083952086Z ║ npx playwright install ║
2025-11-21T11:20:46.083956346Z ║ ║
2025-11-21T11:20:46.083960557Z ║ <3 Playwright Team ║
2025-11-21T11:20:46.083965466Z ╚═════════════════════════════════════════════════════════════════════════╝
2025-11-21T11:20:46.083970176Z at getCertificatePdf (/app/apps/remix/build/server/hono/packages/lib/server-only/htmltopdf/get-certificate-pdf.js:27:30)
2025-11-21T11:20:46.083974557Z at async getCertificateAndAuditLogData (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:396:43)
2025-11-21T11:20:46.083978925Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:135:9
2025-11-21T11:20:46.083983245Z at async Object.runTask (/app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
2025-11-21T11:20:46.083987535Z at async Module.run (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
2025-11-21T11:20:46.083991815Z at async Object.handler (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
2025-11-21T11:20:46.083996105Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-11-21T11:20:46.084013015Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.084017956Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
2025-11-21T11:20:46.084022236Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.084026425Z at async requestId2 (/app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
2025-11-21T11:20:46.084030646Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.084034975Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.084039156Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.084043385Z at async contextStorage2 (/app/node_modules/hono/dist/middleware/context-storage/index.js:6:5)
2025-11-21T11:20:46.084047606Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.084053215Z at async file:///app/node_modules/hono/dist/hono-base.js:195:25
2025-11-21T11:20:46.084059316Z at async responseViaResponseObject (/app/node_modules/@hono/node-server/dist/index.mjs:370:13)
2025-11-21T11:20:46.084072665Z at async Server. (/app/node_modules/@hono/node-server/dist/index.mjs:446:14) {
2025-11-21T11:20:46.084080486Z name: 'Error'
2025-11-21T11:20:46.084087406Z }
2025-11-21T11:20:46.915911376Z Certificate error: Failed to read certificate file
2025-11-21T11:20:46.921329352Z [JOBS:task-5cf8e8c4afcbf1e962c0efd6d5fbedb388db34051291cb5429d917fc5be56381--cmi8rrasg002ks22ibkbt9vag] Task failed Error: Document signing failed: Certificate file not accessible
2025-11-21T11:20:46.921366333Z at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:49:13)
2025-11-21T11:20:46.921375203Z at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10)
2025-11-21T11:20:46.921382243Z at async decorateAndSignPdf (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:357:21)
2025-11-21T11:20:46.921388883Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:146:22
2025-11-21T11:20:46.921396403Z at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
2025-11-21T11:20:46.921403413Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
2025-11-21T11:20:46.921410042Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
2025-11-21T11:20:46.921416631Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-11-21T11:20:46.921422782Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.921429522Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
2025-11-21T11:20:46.921575722Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed
2025-11-21T11:20:46.921588452Z at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17)
2025-11-21T11:20:46.921595292Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
2025-11-21T11:20:46.921601772Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
2025-11-21T11:20:46.921607741Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-11-21T11:20:46.921614711Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.921621491Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
2025-11-21T11:20:46.921627991Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.921634241Z at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
2025-11-21T11:20:46.921639871Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.921645851Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:46.933001363Z Submitting job to endpoint: https://sign.advant.xyz/api/jobs/internal.seal-document/cmi8rrasg002ks22ibkbt9vag
2025-11-21T11:20:46.942471443Z [JOBS]: Triggering job internal.seal-document with payload {
2025-11-21T11:20:46.942509661Z documentId: 2,
2025-11-21T11:20:46.942520011Z requestMetadata: {
2025-11-21T11:20:46.942530931Z ipAddress: '162.159.122.101',
2025-11-21T11:20:46.942538632Z userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36'
2025-11-21T11:20:46.942545512Z }
2025-11-21T11:20:46.942552272Z }
2025-11-21T11:20:47.018467586Z Failed to get certificate PDF
2025-11-21T11:20:47.018608535Z browserType.launch: Executable doesn't exist at /home/nodejs/.cache/ms-playwright/chromium_headless_shell-1169/chrome-linux/headless_shell
2025-11-21T11:20:47.018624445Z ╔═════════════════════════════════════════════════════════════════════════╗
2025-11-21T11:20:47.018632365Z ║ Looks like Playwright Test or Playwright was just installed or updated. ║
2025-11-21T11:20:47.018637885Z ║ Please run the following command to download new browsers: ║
2025-11-21T11:20:47.018644055Z ║ ║
2025-11-21T11:20:47.018650695Z ║ npx playwright install ║
2025-11-21T11:20:47.018656725Z ║ ║
2025-11-21T11:20:47.018681066Z ║ <3 Playwright Team ║
2025-11-21T11:20:47.018687586Z ╚═════════════════════════════════════════════════════════════════════════╝
2025-11-21T11:20:47.018693586Z at getCertificatePdf (/app/apps/remix/build/server/hono/packages/lib/server-only/htmltopdf/get-certificate-pdf.js:27:30)
2025-11-21T11:20:47.018700005Z at async getCertificateAndAuditLogData (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:396:43)
2025-11-21T11:20:47.018707815Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:135:9
2025-11-21T11:20:47.018714546Z at async Object.runTask (/app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
2025-11-21T11:20:47.018721095Z at async Module.run (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
2025-11-21T11:20:47.018726555Z at async Object.handler (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
2025-11-21T11:20:47.018730906Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-11-21T11:20:47.018735634Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.018740865Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
2025-11-21T11:20:47.018745174Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.018749374Z at async requestId2 (/app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
2025-11-21T11:20:47.018753734Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.018757934Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.018762145Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.018766454Z at async contextStorage2 (/app/node_modules/hono/dist/middleware/context-storage/index.js:6:5)
2025-11-21T11:20:47.018770724Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.018774934Z at async file:///app/node_modules/hono/dist/hono-base.js:195:25
2025-11-21T11:20:47.018779154Z at async responseViaResponseObject (/app/node_modules/@hono/node-server/dist/index.mjs:370:13)
2025-11-21T11:20:47.018783394Z at async Server. (/app/node_modules/@hono/node-server/dist/index.mjs:446:14) {
2025-11-21T11:20:47.018787914Z name: 'Error'
2025-11-21T11:20:47.018792065Z }
2025-11-21T11:20:47.850626133Z Certificate error: Failed to read certificate file
2025-11-21T11:20:47.854839384Z [JOBS:task-5cf8e8c4afcbf1e962c0efd6d5fbedb388db34051291cb5429d917fc5be56381--cmi8rrasg002ks22ibkbt9vag] Task failed Error: Document signing failed: Certificate file not accessible
2025-11-21T11:20:47.854898614Z at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:49:13)
2025-11-21T11:20:47.854904675Z at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10)
2025-11-21T11:20:47.854909304Z at async decorateAndSignPdf (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:357:21)
2025-11-21T11:20:47.854913675Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:146:22
2025-11-21T11:20:47.854918045Z at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
2025-11-21T11:20:47.854923085Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
2025-11-21T11:20:47.854929275Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
2025-11-21T11:20:47.854940413Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-11-21T11:20:47.854949173Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.854955693Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
2025-11-21T11:20:47.855039423Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed
2025-11-21T11:20:47.855058404Z at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17)
2025-11-21T11:20:47.855065804Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
2025-11-21T11:20:47.855072663Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
2025-11-21T11:20:47.855079204Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
2025-11-21T11:20:47.855085623Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.855091623Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
2025-11-21T11:20:47.855097874Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.855104114Z at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
2025-11-21T11:20:47.855110234Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.855116343Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
2025-11-21T11:20:47.858619368Z Submitting job to endpoint: https://sign.advant.xyz/api/jobs/internal.seal-document/cmi8rrasg002ks22ibkbt9vag
2025-11-21T11:20:47.868616796Z [JOBS]: Triggering job internal.seal-document with payload {
2025-11-21T11:20:47.868660635Z documentId: 2,
2025-11-21T11:20:47.868668404Z requestMetadata: {
2025-11-21T11:20:47.868694545Z ipAddress: '162.159.122.101',
2025-11-21T11:20:47.868700935Z userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36'
2025-11-21T11:20:47.868707495Z }
2025-11-21T11:20:47.868713335Z }

below is my docker-compose file from coolify

services:
  documenso:
    image: documenso/documenso
    depends_on:
      database:
        condition: service_healthy
    environment:
      - SERVICE_URL_DOCUMENSO_3000
      - 'NEXTAUTH_URL=${SERVICE_URL_DOCUMENSO}'
      - 'NEXTAUTH_SECRET=${SERVICE_BASE64_AUTHSECRET}'
      - 'NEXT_PRIVATE_ENCRYPTION_KEY=${SERVICE_BASE64_ENCRYPTIONKEY}'
      - 'NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${SERVICE_BASE64_SECONDARYENCRYPTIONKEY}'
      - 'NEXT_PUBLIC_WEBAPP_URL=${SERVICE_URL_DOCUMENSO}'
      - 'NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT}'
      - 'NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}'
      - 'NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}'
      - 'NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}'
      - 'NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}'
      - 'NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}'
      - 'NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}'
      - 'NEXT_PRIVATE_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public'
      - 'NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public'
      - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/apps/remix/certs/certificate.p12
      - 'NEXT_PRIVATE_SIGNING_PASSPHRASE=${SERVICE_PASSWORD_DOCUMENSO}'
      - 'CERT_VALID_DAYS=${CERT_VALID_DAYS:-365}'
      - 'CERT_INFO_COUNTRY_NAME=${CERT_INFO_COUNTRY_NAME:-DO}'
      - 'CERT_INFO_STATE_OR_PROVIDENCE=${CERT_INFO_STATE_OR_PROVIDENCE:-Santiago}'
      - 'CERT_INFO_LOCALITY_NAME=${CERT_INFO_LOCALITY_NAME:-Santiago}'
      - 'CERT_INFO_ORGANIZATION_NAME=${CERT_INFO_ORGANIZATION_NAME:-Example INC}'
      - 'CERT_INFO_ORGANIZATIONAL_UNIT=${CERT_INFO_ORGANIZATIONAL_UNIT:-IT Department}'
      - 'CERT_INFO_EMAIL=${CERT_INFO_EMAIL:-example@gmail.com}'
      - 'NEXT_PUBLIC_DISABLE_SIGNUP=${DISABLE_LOGIN:-false}'
    healthcheck:
      test:
        - CMD-SHELL
        - "wget -q -O - http://documenso:3000/ | grep -q 'Sign in to your account'"
      interval: 2s
      timeout: 10s
      retries: 20
    entrypoint:
      - /bin/sh
      - '-c'
      - "echo \"./certs\" > /tmp/certs_dir_path\necho \"./make-certs.sh\" > /tmp/cert_script_path\necho \"${SERVICE_PASSWORD_DOCUMENSO}\" > /tmp/cert_pass\n\ntouch /tmp/cert_info_path\ncat <<EOF > /tmp/cert_info_path\n[ req ]\ndistinguished_name = req_distinguished_name\nprompt = no\n[ req_distinguished_name ]\nC            = ${CERT_INFO_COUNTRY_NAME}\nST           = ${CERT_INFO_STATE_OR_PROVIDENCE}\nL            = ${CERT_INFO_LOCALITY_NAME}\nO            = ${CERT_INFO_ORGANIZATION_NAME}\nOU           = ${CERT_INFO_ORGANIZATIONAL_UNIT}\nCN           = ${SERVICE_URL_DOCUMENSO}\nemailAddress = ${CERT_INFO_EMAIL}\nEOF\n\ncat <<EOF > \"$(cat /tmp/cert_script_path)\"\nmkdir -p \"$(cat /tmp/certs_dir_path)\" && cd \"$(cat /tmp/certs_dir_path)\"\n\nopenssl genrsa -out private.key 2048\n\nopenssl req \\\n  -new \\\n  -x509 \\\n  -key private.key \\\n  -out certificate.crt \\\n  -days ${CERT_VALID_DAYS} \\\n  -config /tmp/cert_info_path\n\nopenssl pkcs12 \\\n  -export \\\n  -out certificate.p12 \\\n  -inkey private.key \\\n  -in certificate.crt \\\n  -legacy \\\n  -password file:/tmp/cert_pass\nEOF\nchmod +x \"$(cat /tmp/cert_script_path)\"\n\nsh \"$(cat /tmp/cert_script_path)\"\n\n./start.sh\n"
  database:
    image: 'postgres:17'
    environment:
      - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}'
      - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}'
      - 'POSTGRES_DB=${POSTGRES_DB:-documenso-db}'
    volumes:
      - 'documenso_postgresql_data:/var/lib/postgresql/data'
    healthcheck:
      test:
        - CMD-SHELL
        - 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'
      interval: 5s
      timeout: 20s
      retries: 10

<!-- gh-comment-id:3562597533 --> @hironate commented on GitHub (Nov 21, 2025): I am using coolify for deploying documenso and i am still getting bellow Error 2025-11-21T11:20:46.083803426Z Failed to get certificate PDF 2025-11-21T11:20:46.083912726Z browserType.launch: Executable doesn't exist at /home/nodejs/.cache/ms-playwright/chromium_headless_shell-1169/chrome-linux/headless_shell 2025-11-21T11:20:46.083932586Z ╔═════════════════════════════════════════════════════════════════════════╗ 2025-11-21T11:20:46.083938856Z ║ Looks like Playwright Test or Playwright was just installed or updated. ║ 2025-11-21T11:20:46.083943317Z ║ Please run the following command to download new browsers: ║ 2025-11-21T11:20:46.083947576Z ║ ║ 2025-11-21T11:20:46.083952086Z ║ npx playwright install ║ 2025-11-21T11:20:46.083956346Z ║ ║ 2025-11-21T11:20:46.083960557Z ║ <3 Playwright Team ║ 2025-11-21T11:20:46.083965466Z ╚═════════════════════════════════════════════════════════════════════════╝ 2025-11-21T11:20:46.083970176Z at getCertificatePdf (/app/apps/remix/build/server/hono/packages/lib/server-only/htmltopdf/get-certificate-pdf.js:27:30) 2025-11-21T11:20:46.083974557Z at async getCertificateAndAuditLogData (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:396:43) 2025-11-21T11:20:46.083978925Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:135:9 2025-11-21T11:20:46.083983245Z at async Object.runTask (/app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) 2025-11-21T11:20:46.083987535Z at async Module.run (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) 2025-11-21T11:20:46.083991815Z at async Object.handler (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) 2025-11-21T11:20:46.083996105Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-11-21T11:20:46.084013015Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.084017956Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 2025-11-21T11:20:46.084022236Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.084026425Z at async requestId2 (/app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) 2025-11-21T11:20:46.084030646Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.084034975Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.084039156Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.084043385Z at async contextStorage2 (/app/node_modules/hono/dist/middleware/context-storage/index.js:6:5) 2025-11-21T11:20:46.084047606Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.084053215Z at async file:///app/node_modules/hono/dist/hono-base.js:195:25 2025-11-21T11:20:46.084059316Z at async responseViaResponseObject (/app/node_modules/@hono/node-server/dist/index.mjs:370:13) 2025-11-21T11:20:46.084072665Z at async Server.<anonymous> (/app/node_modules/@hono/node-server/dist/index.mjs:446:14) { 2025-11-21T11:20:46.084080486Z name: 'Error' 2025-11-21T11:20:46.084087406Z } 2025-11-21T11:20:46.915911376Z Certificate error: Failed to read certificate file 2025-11-21T11:20:46.921329352Z [JOBS:task-5cf8e8c4afcbf1e962c0efd6d5fbedb388db34051291cb5429d917fc5be56381--cmi8rrasg002ks22ibkbt9vag] Task failed Error: Document signing failed: Certificate file not accessible 2025-11-21T11:20:46.921366333Z at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:49:13) 2025-11-21T11:20:46.921375203Z at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10) 2025-11-21T11:20:46.921382243Z at async decorateAndSignPdf (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:357:21) 2025-11-21T11:20:46.921388883Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:146:22 2025-11-21T11:20:46.921396403Z at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) 2025-11-21T11:20:46.921403413Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) 2025-11-21T11:20:46.921410042Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) 2025-11-21T11:20:46.921416631Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-11-21T11:20:46.921422782Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.921429522Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 2025-11-21T11:20:46.921575722Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed 2025-11-21T11:20:46.921588452Z at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17) 2025-11-21T11:20:46.921595292Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) 2025-11-21T11:20:46.921601772Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) 2025-11-21T11:20:46.921607741Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-11-21T11:20:46.921614711Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.921621491Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 2025-11-21T11:20:46.921627991Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.921634241Z at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) 2025-11-21T11:20:46.921639871Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.921645851Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:46.933001363Z Submitting job to endpoint: https://sign.advant.xyz/api/jobs/internal.seal-document/cmi8rrasg002ks22ibkbt9vag 2025-11-21T11:20:46.942471443Z [JOBS]: Triggering job internal.seal-document with payload { 2025-11-21T11:20:46.942509661Z documentId: 2, 2025-11-21T11:20:46.942520011Z requestMetadata: { 2025-11-21T11:20:46.942530931Z ipAddress: '162.159.122.101', 2025-11-21T11:20:46.942538632Z userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36' 2025-11-21T11:20:46.942545512Z } 2025-11-21T11:20:46.942552272Z } 2025-11-21T11:20:47.018467586Z Failed to get certificate PDF 2025-11-21T11:20:47.018608535Z browserType.launch: Executable doesn't exist at /home/nodejs/.cache/ms-playwright/chromium_headless_shell-1169/chrome-linux/headless_shell 2025-11-21T11:20:47.018624445Z ╔═════════════════════════════════════════════════════════════════════════╗ 2025-11-21T11:20:47.018632365Z ║ Looks like Playwright Test or Playwright was just installed or updated. ║ 2025-11-21T11:20:47.018637885Z ║ Please run the following command to download new browsers: ║ 2025-11-21T11:20:47.018644055Z ║ ║ 2025-11-21T11:20:47.018650695Z ║ npx playwright install ║ 2025-11-21T11:20:47.018656725Z ║ ║ 2025-11-21T11:20:47.018681066Z ║ <3 Playwright Team ║ 2025-11-21T11:20:47.018687586Z ╚═════════════════════════════════════════════════════════════════════════╝ 2025-11-21T11:20:47.018693586Z at getCertificatePdf (/app/apps/remix/build/server/hono/packages/lib/server-only/htmltopdf/get-certificate-pdf.js:27:30) 2025-11-21T11:20:47.018700005Z at async getCertificateAndAuditLogData (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:396:43) 2025-11-21T11:20:47.018707815Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:135:9 2025-11-21T11:20:47.018714546Z at async Object.runTask (/app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) 2025-11-21T11:20:47.018721095Z at async Module.run (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) 2025-11-21T11:20:47.018726555Z at async Object.handler (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) 2025-11-21T11:20:47.018730906Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-11-21T11:20:47.018735634Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.018740865Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 2025-11-21T11:20:47.018745174Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.018749374Z at async requestId2 (/app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) 2025-11-21T11:20:47.018753734Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.018757934Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.018762145Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.018766454Z at async contextStorage2 (/app/node_modules/hono/dist/middleware/context-storage/index.js:6:5) 2025-11-21T11:20:47.018770724Z at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.018774934Z at async file:///app/node_modules/hono/dist/hono-base.js:195:25 2025-11-21T11:20:47.018779154Z at async responseViaResponseObject (/app/node_modules/@hono/node-server/dist/index.mjs:370:13) 2025-11-21T11:20:47.018783394Z at async Server.<anonymous> (/app/node_modules/@hono/node-server/dist/index.mjs:446:14) { 2025-11-21T11:20:47.018787914Z name: 'Error' 2025-11-21T11:20:47.018792065Z } 2025-11-21T11:20:47.850626133Z Certificate error: Failed to read certificate file 2025-11-21T11:20:47.854839384Z [JOBS:task-5cf8e8c4afcbf1e962c0efd6d5fbedb388db34051291cb5429d917fc5be56381--cmi8rrasg002ks22ibkbt9vag] Task failed Error: Document signing failed: Certificate file not accessible 2025-11-21T11:20:47.854898614Z at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:49:13) 2025-11-21T11:20:47.854904675Z at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10) 2025-11-21T11:20:47.854909304Z at async decorateAndSignPdf (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:357:21) 2025-11-21T11:20:47.854913675Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:146:22 2025-11-21T11:20:47.854918045Z at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) 2025-11-21T11:20:47.854923085Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) 2025-11-21T11:20:47.854929275Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) 2025-11-21T11:20:47.854940413Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-11-21T11:20:47.854949173Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.854955693Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 2025-11-21T11:20:47.855039423Z [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed 2025-11-21T11:20:47.855058404Z at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17) 2025-11-21T11:20:47.855065804Z at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) 2025-11-21T11:20:47.855072663Z at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) 2025-11-21T11:20:47.855079204Z at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 2025-11-21T11:20:47.855085623Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.855091623Z at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 2025-11-21T11:20:47.855097874Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.855104114Z at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) 2025-11-21T11:20:47.855110234Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.855116343Z at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) 2025-11-21T11:20:47.858619368Z Submitting job to endpoint: https://sign.advant.xyz/api/jobs/internal.seal-document/cmi8rrasg002ks22ibkbt9vag 2025-11-21T11:20:47.868616796Z [JOBS]: Triggering job internal.seal-document with payload { 2025-11-21T11:20:47.868660635Z documentId: 2, 2025-11-21T11:20:47.868668404Z requestMetadata: { 2025-11-21T11:20:47.868694545Z ipAddress: '162.159.122.101', 2025-11-21T11:20:47.868700935Z userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36' 2025-11-21T11:20:47.868707495Z } 2025-11-21T11:20:47.868713335Z } below is my docker-compose file from coolify ``` services: documenso: image: documenso/documenso depends_on: database: condition: service_healthy environment: - SERVICE_URL_DOCUMENSO_3000 - 'NEXTAUTH_URL=${SERVICE_URL_DOCUMENSO}' - 'NEXTAUTH_SECRET=${SERVICE_BASE64_AUTHSECRET}' - 'NEXT_PRIVATE_ENCRYPTION_KEY=${SERVICE_BASE64_ENCRYPTIONKEY}' - 'NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${SERVICE_BASE64_SECONDARYENCRYPTIONKEY}' - 'NEXT_PUBLIC_WEBAPP_URL=${SERVICE_URL_DOCUMENSO}' - 'NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT}' - 'NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}' - 'NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}' - 'NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}' - 'NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}' - 'NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}' - 'NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}' - 'NEXT_PRIVATE_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public' - 'NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public' - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/apps/remix/certs/certificate.p12 - 'NEXT_PRIVATE_SIGNING_PASSPHRASE=${SERVICE_PASSWORD_DOCUMENSO}' - 'CERT_VALID_DAYS=${CERT_VALID_DAYS:-365}' - 'CERT_INFO_COUNTRY_NAME=${CERT_INFO_COUNTRY_NAME:-DO}' - 'CERT_INFO_STATE_OR_PROVIDENCE=${CERT_INFO_STATE_OR_PROVIDENCE:-Santiago}' - 'CERT_INFO_LOCALITY_NAME=${CERT_INFO_LOCALITY_NAME:-Santiago}' - 'CERT_INFO_ORGANIZATION_NAME=${CERT_INFO_ORGANIZATION_NAME:-Example INC}' - 'CERT_INFO_ORGANIZATIONAL_UNIT=${CERT_INFO_ORGANIZATIONAL_UNIT:-IT Department}' - 'CERT_INFO_EMAIL=${CERT_INFO_EMAIL:-example@gmail.com}' - 'NEXT_PUBLIC_DISABLE_SIGNUP=${DISABLE_LOGIN:-false}' healthcheck: test: - CMD-SHELL - "wget -q -O - http://documenso:3000/ | grep -q 'Sign in to your account'" interval: 2s timeout: 10s retries: 20 entrypoint: - /bin/sh - '-c' - "echo \"./certs\" > /tmp/certs_dir_path\necho \"./make-certs.sh\" > /tmp/cert_script_path\necho \"${SERVICE_PASSWORD_DOCUMENSO}\" > /tmp/cert_pass\n\ntouch /tmp/cert_info_path\ncat <<EOF > /tmp/cert_info_path\n[ req ]\ndistinguished_name = req_distinguished_name\nprompt = no\n[ req_distinguished_name ]\nC = ${CERT_INFO_COUNTRY_NAME}\nST = ${CERT_INFO_STATE_OR_PROVIDENCE}\nL = ${CERT_INFO_LOCALITY_NAME}\nO = ${CERT_INFO_ORGANIZATION_NAME}\nOU = ${CERT_INFO_ORGANIZATIONAL_UNIT}\nCN = ${SERVICE_URL_DOCUMENSO}\nemailAddress = ${CERT_INFO_EMAIL}\nEOF\n\ncat <<EOF > \"$(cat /tmp/cert_script_path)\"\nmkdir -p \"$(cat /tmp/certs_dir_path)\" && cd \"$(cat /tmp/certs_dir_path)\"\n\nopenssl genrsa -out private.key 2048\n\nopenssl req \\\n -new \\\n -x509 \\\n -key private.key \\\n -out certificate.crt \\\n -days ${CERT_VALID_DAYS} \\\n -config /tmp/cert_info_path\n\nopenssl pkcs12 \\\n -export \\\n -out certificate.p12 \\\n -inkey private.key \\\n -in certificate.crt \\\n -legacy \\\n -password file:/tmp/cert_pass\nEOF\nchmod +x \"$(cat /tmp/cert_script_path)\"\n\nsh \"$(cat /tmp/cert_script_path)\"\n\n./start.sh\n" database: image: 'postgres:17' environment: - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}' - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' - 'POSTGRES_DB=${POSTGRES_DB:-documenso-db}' volumes: - 'documenso_postgresql_data:/var/lib/postgresql/data' healthcheck: test: - CMD-SHELL - 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}' interval: 5s timeout: 20s retries: 10 ```
Author
Owner

@Aj7ay7 commented on GitHub (Nov 21, 2025):

Try this

services:
  documenso:
    image: documenso/documenso
    depends_on:
      database:
        condition: service_healthy
    environment:
      - SERVICE_URL_DOCUMENSO_3000
      - 'NEXTAUTH_URL=${SERVICE_URL_DOCUMENSO}'
      - 'NEXTAUTH_SECRET=${SERVICE_BASE64_AUTHSECRET}'
      - 'NEXT_PRIVATE_ENCRYPTION_KEY=${SERVICE_BASE64_ENCRYPTIONKEY}'
      - 'NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${SERVICE_BASE64_SECONDARYENCRYPTIONKEY}'
      - 'NEXT_PUBLIC_WEBAPP_URL=${SERVICE_URL_DOCUMENSO}'
      - 'NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT}'
      - 'NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}'
      - 'NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}'
      - 'NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}'
      - 'NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}'
      - 'NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}'
      - 'NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}'
      - 'NEXT_PRIVATE_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public'
      - 'NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public'
      - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/apps/remix/certs/certificate.p12
      - 'NEXT_PRIVATE_SIGNING_PASSPHRASE=${SERVICE_PASSWORD_DOCUMENSO}'
      - 'CERT_VALID_DAYS=${CERT_VALID_DAYS:-365}'
      - 'CERT_INFO_COUNTRY_NAME=${CERT_INFO_COUNTRY_NAME:-DO}'
      - 'CERT_INFO_STATE_OR_PROVIDENCE=${CERT_INFO_STATE_OR_PROVIDENCE:-Santiago}'
      - 'CERT_INFO_LOCALITY_NAME=${CERT_INFO_LOCALITY_NAME:-Santiago}'
      - 'CERT_INFO_ORGANIZATION_NAME=${CERT_INFO_ORGANIZATION_NAME:-Example INC}'
      - 'CERT_INFO_ORGANIZATIONAL_UNIT=${CERT_INFO_ORGANIZATIONAL_UNIT:-IT Department}'
      - 'CERT_INFO_EMAIL=${CERT_INFO_EMAIL:-example@gmail.com}'
      - 'NEXT_PUBLIC_DISABLE_SIGNUP=${DISABLE_LOGIN:-false}'
      - 'NEXT_PRIVATE_JOBS_PROVIDER=local'
      - 'NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000'
    healthcheck:
      test:
        - CMD-SHELL
        - "wget -q -O - http://documenso:3000/ | grep -q 'Sign in to your account'"
      interval: 2s
      timeout: 10s
      retries: 20
    entrypoint:
      - /bin/sh
      - '-c'
      - |
        # Install Playwright browsers first
        echo "Installing Playwright browsers..."
        npx playwright install chromium --with-deps || npx playwright install chromium
        
        # Set up certificate paths
        CERT_DIR="/app/apps/remix/certs"
        CERT_SCRIPT="/tmp/make-certs.sh"
        CERT_PASS="/tmp/cert_pass"
        CERT_INFO="/tmp/cert_info_path"
        
        # Create certificate directory
        mkdir -p "$CERT_DIR"
        
        # Store certificate password
        echo "${SERVICE_PASSWORD_DOCUMENSO}" > "$CERT_PASS"
        
        # Create certificate info file
        cat <<EOF > "$CERT_INFO"
        [ req ]
        distinguished_name = req_distinguished_name
        prompt = no
        [ req_distinguished_name ]
        C            = ${CERT_INFO_COUNTRY_NAME}
        ST           = ${CERT_INFO_STATE_OR_PROVIDENCE}
        L            = ${CERT_INFO_LOCALITY_NAME}
        O            = ${CERT_INFO_ORGANIZATION_NAME}
        OU           = ${CERT_INFO_ORGANIZATIONAL_UNIT}
        CN           = ${SERVICE_URL_DOCUMENSO}
        emailAddress = ${CERT_INFO_EMAIL}
        EOF
        
        # Generate certificate script
        cat <<EOF > "$CERT_SCRIPT"
        #!/bin/sh
        cd "$CERT_DIR"
        
        openssl genrsa -out private.key 2048
        
        openssl req \\
          -new \\
          -x509 \\
          -key private.key \\
          -out certificate.crt \\
          -days ${CERT_VALID_DAYS} \\
          -config "$CERT_INFO"
        
        openssl pkcs12 \\
          -export \\
          -out certificate.p12 \\
          -inkey private.key \\
          -in certificate.crt \\
          -legacy \\
          -password file:"$CERT_PASS"
        
        # Set proper permissions
        chmod 644 certificate.p12
        chmod 600 private.key
        chmod 644 certificate.crt
        EOF
        
        chmod +x "$CERT_SCRIPT"
        
        # Generate certificate
        echo "Generating certificate..."
        sh "$CERT_SCRIPT"
        
        # Verify certificate exists
        if [ ! -f "$CERT_DIR/certificate.p12" ]; then
          echo "ERROR: Certificate file was not created at $CERT_DIR/certificate.p12"
          exit 1
        fi
        
        echo "Certificate generated successfully at $CERT_DIR/certificate.p12"
        
        # Start the application
        ./start.sh

  database:
    image: 'postgres:17'
    environment:
      - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}'
      - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}'
      - 'POSTGRES_DB=${POSTGRES_DB:-documenso-db}'
    volumes:
      - 'documenso_postgresql_data:/var/lib/postgresql/data'
    healthcheck:
      test:
        - CMD-SHELL
        - 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'
      interval: 5s
      timeout: 20s
      retries: 10

volumes:
  documenso_postgresql_data:
<!-- gh-comment-id:3562633863 --> @Aj7ay7 commented on GitHub (Nov 21, 2025): Try this ``` services: documenso: image: documenso/documenso depends_on: database: condition: service_healthy environment: - SERVICE_URL_DOCUMENSO_3000 - 'NEXTAUTH_URL=${SERVICE_URL_DOCUMENSO}' - 'NEXTAUTH_SECRET=${SERVICE_BASE64_AUTHSECRET}' - 'NEXT_PRIVATE_ENCRYPTION_KEY=${SERVICE_BASE64_ENCRYPTIONKEY}' - 'NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${SERVICE_BASE64_SECONDARYENCRYPTIONKEY}' - 'NEXT_PUBLIC_WEBAPP_URL=${SERVICE_URL_DOCUMENSO}' - 'NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT}' - 'NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}' - 'NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}' - 'NEXT_PRIVATE_SMTP_USERNAME=${NEXT_PRIVATE_SMTP_USERNAME}' - 'NEXT_PRIVATE_SMTP_PASSWORD=${NEXT_PRIVATE_SMTP_PASSWORD}' - 'NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME}' - 'NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}' - 'NEXT_PRIVATE_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public' - 'NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public' - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/apps/remix/certs/certificate.p12 - 'NEXT_PRIVATE_SIGNING_PASSPHRASE=${SERVICE_PASSWORD_DOCUMENSO}' - 'CERT_VALID_DAYS=${CERT_VALID_DAYS:-365}' - 'CERT_INFO_COUNTRY_NAME=${CERT_INFO_COUNTRY_NAME:-DO}' - 'CERT_INFO_STATE_OR_PROVIDENCE=${CERT_INFO_STATE_OR_PROVIDENCE:-Santiago}' - 'CERT_INFO_LOCALITY_NAME=${CERT_INFO_LOCALITY_NAME:-Santiago}' - 'CERT_INFO_ORGANIZATION_NAME=${CERT_INFO_ORGANIZATION_NAME:-Example INC}' - 'CERT_INFO_ORGANIZATIONAL_UNIT=${CERT_INFO_ORGANIZATIONAL_UNIT:-IT Department}' - 'CERT_INFO_EMAIL=${CERT_INFO_EMAIL:-example@gmail.com}' - 'NEXT_PUBLIC_DISABLE_SIGNUP=${DISABLE_LOGIN:-false}' - 'NEXT_PRIVATE_JOBS_PROVIDER=local' - 'NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000' healthcheck: test: - CMD-SHELL - "wget -q -O - http://documenso:3000/ | grep -q 'Sign in to your account'" interval: 2s timeout: 10s retries: 20 entrypoint: - /bin/sh - '-c' - | # Install Playwright browsers first echo "Installing Playwright browsers..." npx playwright install chromium --with-deps || npx playwright install chromium # Set up certificate paths CERT_DIR="/app/apps/remix/certs" CERT_SCRIPT="/tmp/make-certs.sh" CERT_PASS="/tmp/cert_pass" CERT_INFO="/tmp/cert_info_path" # Create certificate directory mkdir -p "$CERT_DIR" # Store certificate password echo "${SERVICE_PASSWORD_DOCUMENSO}" > "$CERT_PASS" # Create certificate info file cat <<EOF > "$CERT_INFO" [ req ] distinguished_name = req_distinguished_name prompt = no [ req_distinguished_name ] C = ${CERT_INFO_COUNTRY_NAME} ST = ${CERT_INFO_STATE_OR_PROVIDENCE} L = ${CERT_INFO_LOCALITY_NAME} O = ${CERT_INFO_ORGANIZATION_NAME} OU = ${CERT_INFO_ORGANIZATIONAL_UNIT} CN = ${SERVICE_URL_DOCUMENSO} emailAddress = ${CERT_INFO_EMAIL} EOF # Generate certificate script cat <<EOF > "$CERT_SCRIPT" #!/bin/sh cd "$CERT_DIR" openssl genrsa -out private.key 2048 openssl req \\ -new \\ -x509 \\ -key private.key \\ -out certificate.crt \\ -days ${CERT_VALID_DAYS} \\ -config "$CERT_INFO" openssl pkcs12 \\ -export \\ -out certificate.p12 \\ -inkey private.key \\ -in certificate.crt \\ -legacy \\ -password file:"$CERT_PASS" # Set proper permissions chmod 644 certificate.p12 chmod 600 private.key chmod 644 certificate.crt EOF chmod +x "$CERT_SCRIPT" # Generate certificate echo "Generating certificate..." sh "$CERT_SCRIPT" # Verify certificate exists if [ ! -f "$CERT_DIR/certificate.p12" ]; then echo "ERROR: Certificate file was not created at $CERT_DIR/certificate.p12" exit 1 fi echo "Certificate generated successfully at $CERT_DIR/certificate.p12" # Start the application ./start.sh database: image: 'postgres:17' environment: - 'POSTGRES_USER=${SERVICE_USER_POSTGRES}' - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}' - 'POSTGRES_DB=${POSTGRES_DB:-documenso-db}' volumes: - 'documenso_postgresql_data:/var/lib/postgresql/data' healthcheck: test: - CMD-SHELL - 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}' interval: 5s timeout: 20s retries: 10 volumes: documenso_postgresql_data: ```
Author
Owner

@enwikuna commented on GitHub (Nov 21, 2025):

Sorry but this is horrible! There are lots of documentation but all outdated. Nothing works! We are also stuck since the latest update. This makes me thinking to no longer use Documenso for our company...

services:
  postgres:
    image: postgres:18-alpine
    container_name: documenso-db
    restart: always
    env_file:
      - .env
    volumes:
      - ./db:/var/lib/postgresql
    labels:
      - com.centurylinklabs.watchtower.enable=true
    networks:
      - internal
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U $POSTGRES_USER -d $POSTGRES_DB']
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 10s

  documenso:
    image: documenso/documenso:latest
    container_name: documenso
    restart: always
    depends_on:
      - postgres
    env_file:
      - .env
    volumes:
      - ./certs/:/app/certs
    labels:
      - com.centurylinklabs.watchtower.enable=true
    expose:
      - 3000
    networks:
      - proxy
      - internal
    healthcheck:
      test: ['CMD-SHELL', 'wget --spider -q http://localhost:3000/api/health || exit 1']
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 10s

networks:
  proxy:
    external: true
  internal:
    internal: true
-rw-r--r-- 1 1001 1001 4403 Nov 21 20:44 cert.p12
NEXT_PUBLIC_WEBAPP_URL=https://sign.xxx.de
NEXTAUTH_SECRET=...
NEXT_PRIVATE_ENCRYPTION_KEY=...
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=...
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PASSPHRASE=...
NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth
NEXT_PRIVATE_SMTP_HOST=mail.xxx.de
NEXT_PRIVATE_SMTP_PORT=587
NEXT_PRIVATE_SMTP_SECURE=false
NEXT_PRIVATE_SMTP_USERNAME=no-reply@xxx.de
NEXT_PRIVATE_SMTP_PASSWORD=...
NEXT_PRIVATE_SMTP_FROM_NAME=Company Sign
NEXT_PRIVATE_SMTP_FROM_ADDRESS=no-reply@xxx.de
POSTGRES_DB=documenso
POSTGRES_USER=documenso
POSTGRES_PASSWORD=...
DATABASE_URL=postgresql://documenso:...@documenso-db:5432/documenso
NEXT_PRIVATE_DATABASE_URL=${DATABASE_URL}
NEXT_PRIVATE_DIRECT_DATABASE_URL=${DATABASE_URL}
NEXT_PRIVATE_JOBS_PROVIDER=local
NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000

Logs are saying:

🚀 Starting Documenso...

🔐 Checking certificate configuration...
✅ Certificate file found and readable - document signing is ready!

📚 Useful Links:
📖 Documentation: https://docs.documenso.com
🐳 Self-hosting guide: https://docs.documenso.com/developers/self-hosting
🔐 Certificate setup: https://docs.documenso.com/developers/self-hosting/signing-certificate
🏥 Health check: http://localhost:3000/api/health
📊 Certificate status: http://localhost:3000/api/certificate-status
👥 Community: https://github.com/documenso/documenso

🗄️  Running database migrations...
Prisma schema loaded from ../../packages/prisma/schema.prisma
Datasource "db": PostgreSQL database "documenso", schema "public" at "documenso-db:5432"

142 migrations found in prisma/migrations


No pending migrations to apply.
🌟 Starting Documenso server...

Failed to get certificate PDF
browserType.launch: Executable doesn't exist at /home/nodejs/.cache/ms-playwright/chromium_headless_shell-1169/chrome-linux/headless_shell
╔═════════════════════════════════════════════════════════════════════════╗
║ Looks like Playwright Test or Playwright was just installed or updated. ║
║ Please run the following command to download new browsers:              ║
║                                                                         ║
║     npx playwright install                                              ║
║                                                                         ║
║ <3 Playwright Team                                                      ║
╚═════════════════════════════════════════════════════════════════════════╝
    at getCertificatePdf (/app/apps/remix/build/server/hono/packages/lib/server-only/htmltopdf/get-certificate-pdf.js:27:30)
    at async getCertificateAndAuditLogData (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:396:43)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:135:9
    at async Object.runTask (/app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
    at async Module.run (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
    at async Object.handler (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async requestId2 (/app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async contextStorage2 (/app/node_modules/hono/dist/middleware/context-storage/index.js:6:5)
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/node_modules/hono/dist/hono-base.js:195:25
    at async responseViaResponseObject (/app/node_modules/@hono/node-server/dist/index.mjs:370:13)
    at async Server.<anonymous> (/app/node_modules/@hono/node-server/dist/index.mjs:446:14) {
  name: 'Error'
}
[JOBS:task-5cf8e8c4afcbf1e962c0efd6d5fbedb388db34051291cb5429d917fc5be56381--cmi9ar6ze000ro42kvidkcndc] Task failed Error: Failed to get private key bags
    at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:52:21)
    at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10)
    at async decorateAndSignPdf (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:357:21)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:146:22
    at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
    at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
    at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 {
  code: 'GenericFailure'
}
[JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed
    at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17)
    at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
    at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
Submitting job to endpoint: http://localhost:3000/api/jobs/internal.seal-document/cmi9ar6ze000ro42kvidkcndc
[JOBS]: Triggering job internal.seal-document with payload {
  documentId: 14,
  requestMetadata: {
    ipAddress: '23.88.0.221',
    userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36'
  }
}
[JOBS]: Job internal.seal-document failed BackgroundTaskExceededRetriesError: Task exceeded retries
    at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:201:17)
    at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
    at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
[20:12:36.792] INFO (92):
    ipAddress: "23.88.0.221"
    userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"
    requestId: "c2agvj204rbg3vazumbus"
    nonBatchedRequestId: "07gwog2esdxiqdlo5g8rh"
    path: "envelope.signingStatus"
    auth: null
    source: "app"
    trpcMiddleware: "maybeAuthenticated"
    apiTokenId: null
[20:12:36.792] INFO (92):
<!-- gh-comment-id:3564459973 --> @enwikuna commented on GitHub (Nov 21, 2025): Sorry but this is horrible! There are lots of documentation but all outdated. Nothing works! We are also stuck since the latest update. This makes me thinking to no longer use Documenso for our company... ``` services: postgres: image: postgres:18-alpine container_name: documenso-db restart: always env_file: - .env volumes: - ./db:/var/lib/postgresql labels: - com.centurylinklabs.watchtower.enable=true networks: - internal healthcheck: test: ['CMD-SHELL', 'pg_isready -U $POSTGRES_USER -d $POSTGRES_DB'] interval: 30s timeout: 5s retries: 5 start_period: 10s documenso: image: documenso/documenso:latest container_name: documenso restart: always depends_on: - postgres env_file: - .env volumes: - ./certs/:/app/certs labels: - com.centurylinklabs.watchtower.enable=true expose: - 3000 networks: - proxy - internal healthcheck: test: ['CMD-SHELL', 'wget --spider -q http://localhost:3000/api/health || exit 1'] interval: 30s timeout: 5s retries: 5 start_period: 10s networks: proxy: external: true internal: internal: true ``` ``` -rw-r--r-- 1 1001 1001 4403 Nov 21 20:44 cert.p12 ``` ``` NEXT_PUBLIC_WEBAPP_URL=https://sign.xxx.de NEXTAUTH_SECRET=... NEXT_PRIVATE_ENCRYPTION_KEY=... NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=... NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12 NEXT_PRIVATE_SIGNING_LOCAL_FILE_PASSPHRASE=... NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth NEXT_PRIVATE_SMTP_HOST=mail.xxx.de NEXT_PRIVATE_SMTP_PORT=587 NEXT_PRIVATE_SMTP_SECURE=false NEXT_PRIVATE_SMTP_USERNAME=no-reply@xxx.de NEXT_PRIVATE_SMTP_PASSWORD=... NEXT_PRIVATE_SMTP_FROM_NAME=Company Sign NEXT_PRIVATE_SMTP_FROM_ADDRESS=no-reply@xxx.de POSTGRES_DB=documenso POSTGRES_USER=documenso POSTGRES_PASSWORD=... DATABASE_URL=postgresql://documenso:...@documenso-db:5432/documenso NEXT_PRIVATE_DATABASE_URL=${DATABASE_URL} NEXT_PRIVATE_DIRECT_DATABASE_URL=${DATABASE_URL} NEXT_PRIVATE_JOBS_PROVIDER=local NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000 ``` Logs are saying: ``` 🚀 Starting Documenso... 🔐 Checking certificate configuration... ✅ Certificate file found and readable - document signing is ready! 📚 Useful Links: 📖 Documentation: https://docs.documenso.com 🐳 Self-hosting guide: https://docs.documenso.com/developers/self-hosting 🔐 Certificate setup: https://docs.documenso.com/developers/self-hosting/signing-certificate 🏥 Health check: http://localhost:3000/api/health 📊 Certificate status: http://localhost:3000/api/certificate-status 👥 Community: https://github.com/documenso/documenso 🗄️ Running database migrations... Prisma schema loaded from ../../packages/prisma/schema.prisma Datasource "db": PostgreSQL database "documenso", schema "public" at "documenso-db:5432" 142 migrations found in prisma/migrations No pending migrations to apply. 🌟 Starting Documenso server... Failed to get certificate PDF browserType.launch: Executable doesn't exist at /home/nodejs/.cache/ms-playwright/chromium_headless_shell-1169/chrome-linux/headless_shell ╔═════════════════════════════════════════════════════════════════════════╗ ║ Looks like Playwright Test or Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚═════════════════════════════════════════════════════════════════════════╝ at getCertificatePdf (/app/apps/remix/build/server/hono/packages/lib/server-only/htmltopdf/get-certificate-pdf.js:27:30) at async getCertificateAndAuditLogData (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:396:43) at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:135:9 at async Object.runTask (/app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) at async Module.run (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) at async Object.handler (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) at async requestId2 (/app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) at async contextStorage2 (/app/node_modules/hono/dist/middleware/context-storage/index.js:6:5) at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) at async file:///app/node_modules/hono/dist/hono-base.js:195:25 at async responseViaResponseObject (/app/node_modules/@hono/node-server/dist/index.mjs:370:13) at async Server.<anonymous> (/app/node_modules/@hono/node-server/dist/index.mjs:446:14) { name: 'Error' } [JOBS:task-5cf8e8c4afcbf1e962c0efd6d5fbedb388db34051291cb5429d917fc5be56381--cmi9ar6ze000ro42kvidkcndc] Task failed Error: Failed to get private key bags at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:52:21) at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10) at async decorateAndSignPdf (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:357:21) at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:146:22 at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 { code: 'GenericFailure' } [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17) at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) Submitting job to endpoint: http://localhost:3000/api/jobs/internal.seal-document/cmi9ar6ze000ro42kvidkcndc [JOBS]: Triggering job internal.seal-document with payload { documentId: 14, requestMetadata: { ipAddress: '23.88.0.221', userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36' } } [JOBS]: Job internal.seal-document failed BackgroundTaskExceededRetriesError: Task exceeded retries at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:201:17) at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) [20:12:36.792] INFO (92): ipAddress: "23.88.0.221" userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" requestId: "c2agvj204rbg3vazumbus" nonBatchedRequestId: "07gwog2esdxiqdlo5g8rh" path: "envelope.signingStatus" auth: null source: "app" trpcMiddleware: "maybeAuthenticated" apiTokenId: null [20:12:36.792] INFO (92): ```
Author
Owner

@Dvalin21 commented on GitHub (Nov 21, 2025):

Sorry but this is horrible! There are lots of documentation but all outdated. Nothing works! We are also stuck since the latest update. This makes me thinking to no longer use Documenso for our company...

services:
  postgres:
    image: postgres:18-alpine
    container_name: documenso-db
    restart: always
    env_file:
      - .env
    volumes:
      - ./db:/var/lib/postgresql
    labels:
      - com.centurylinklabs.watchtower.enable=true
    networks:
      - internal
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U $POSTGRES_USER -d $POSTGRES_DB']
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 10s

  documenso:
    image: documenso/documenso:latest
    container_name: documenso
    restart: always
    depends_on:
      - postgres
    env_file:
      - .env
    volumes:
      - ./certs/:/app/certs
    labels:
      - com.centurylinklabs.watchtower.enable=true
    expose:
      - 3000
    networks:
      - proxy
      - internal
    healthcheck:
      test: ['CMD-SHELL', 'wget --spider -q http://localhost:3000/api/health || exit 1']
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 10s

networks:
  proxy:
    external: true
  internal:
    internal: true
-rw-r--r-- 1 1001 1001 4403 Nov 21 20:44 cert.p12
NEXT_PUBLIC_WEBAPP_URL=https://sign.xxx.de
NEXTAUTH_SECRET=...
NEXT_PRIVATE_ENCRYPTION_KEY=...
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=...
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PASSPHRASE=...
NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth
NEXT_PRIVATE_SMTP_HOST=mail.xxx.de
NEXT_PRIVATE_SMTP_PORT=587
NEXT_PRIVATE_SMTP_SECURE=false
NEXT_PRIVATE_SMTP_USERNAME=no-reply@xxx.de
NEXT_PRIVATE_SMTP_PASSWORD=...
NEXT_PRIVATE_SMTP_FROM_NAME=Company Sign
NEXT_PRIVATE_SMTP_FROM_ADDRESS=no-reply@xxx.de
POSTGRES_DB=documenso
POSTGRES_USER=documenso
POSTGRES_PASSWORD=...
DATABASE_URL=postgresql://documenso:...@documenso-db:5432/documenso
NEXT_PRIVATE_DATABASE_URL=${DATABASE_URL}
NEXT_PRIVATE_DIRECT_DATABASE_URL=${DATABASE_URL}
NEXT_PRIVATE_JOBS_PROVIDER=local
NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000

Logs are saying:

🚀 Starting Documenso...

🔐 Checking certificate configuration...
✅ Certificate file found and readable - document signing is ready!

📚 Useful Links:
📖 Documentation: https://docs.documenso.com
🐳 Self-hosting guide: https://docs.documenso.com/developers/self-hosting
🔐 Certificate setup: https://docs.documenso.com/developers/self-hosting/signing-certificate
🏥 Health check: http://localhost:3000/api/health
📊 Certificate status: http://localhost:3000/api/certificate-status
👥 Community: https://github.com/documenso/documenso

🗄️  Running database migrations...
Prisma schema loaded from ../../packages/prisma/schema.prisma
Datasource "db": PostgreSQL database "documenso", schema "public" at "documenso-db:5432"

142 migrations found in prisma/migrations


No pending migrations to apply.
🌟 Starting Documenso server...

Failed to get certificate PDF
browserType.launch: Executable doesn't exist at /home/nodejs/.cache/ms-playwright/chromium_headless_shell-1169/chrome-linux/headless_shell
╔═════════════════════════════════════════════════════════════════════════╗
║ Looks like Playwright Test or Playwright was just installed or updated. ║
║ Please run the following command to download new browsers:              ║
║                                                                         ║
║     npx playwright install                                              ║
║                                                                         ║
║ <3 Playwright Team                                                      ║
╚═════════════════════════════════════════════════════════════════════════╝
    at getCertificatePdf (/app/apps/remix/build/server/hono/packages/lib/server-only/htmltopdf/get-certificate-pdf.js:27:30)
    at async getCertificateAndAuditLogData (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:396:43)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:135:9
    at async Object.runTask (/app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
    at async Module.run (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
    at async Object.handler (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async requestId2 (/app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async contextStorage2 (/app/node_modules/hono/dist/middleware/context-storage/index.js:6:5)
    at async dispatch (/app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/node_modules/hono/dist/hono-base.js:195:25
    at async responseViaResponseObject (/app/node_modules/@hono/node-server/dist/index.mjs:370:13)
    at async Server.<anonymous> (/app/node_modules/@hono/node-server/dist/index.mjs:446:14) {
  name: 'Error'
}
[JOBS:task-5cf8e8c4afcbf1e962c0efd6d5fbedb388db34051291cb5429d917fc5be56381--cmi9ar6ze000ro42kvidkcndc] Task failed Error: Failed to get private key bags
    at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:52:21)
    at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10)
    at async decorateAndSignPdf (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:357:21)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:146:22
    at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26)
    at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
    at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 {
  code: 'GenericFailure'
}
[JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed
    at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17)
    at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
    at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
Submitting job to endpoint: http://localhost:3000/api/jobs/internal.seal-document/cmi9ar6ze000ro42kvidkcndc
[JOBS]: Triggering job internal.seal-document with payload {
  documentId: 14,
  requestMetadata: {
    ipAddress: '23.88.0.221',
    userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36'
  }
}
[JOBS]: Job internal.seal-document failed BackgroundTaskExceededRetriesError: Task exceeded retries
    at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:201:17)
    at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7)
    at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5)
    at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async file:///app/apps/remix/build/server/hono/server/router.js:59:3
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5)
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
    at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17)
[20:12:36.792] INFO (92):
    ipAddress: "23.88.0.221"
    userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"
    requestId: "c2agvj204rbg3vazumbus"
    nonBatchedRequestId: "07gwog2esdxiqdlo5g8rh"
    path: "envelope.signingStatus"
    auth: null
    source: "app"
    trpcMiddleware: "maybeAuthenticated"
    apiTokenId: null
[20:12:36.792] INFO (92):

I don't work for documenso, but I've been able to get it to work by adding the browserless container to the stack.

  browserless:    # for chromium based browsers
    container_name: browserless
    image: browserless/chrome:latest
    ports:
      - "3001:3000"
    environment:
      - MAX_CONCURRENT_SESSIONS=10
      - MAX_QUEUE_LENGTH=20

After I added this, it fixed this issue.

<!-- gh-comment-id:3564923604 --> @Dvalin21 commented on GitHub (Nov 21, 2025): > Sorry but this is horrible! There are lots of documentation but all outdated. Nothing works! We are also stuck since the latest update. This makes me thinking to no longer use Documenso for our company... > > ``` > services: > postgres: > image: postgres:18-alpine > container_name: documenso-db > restart: always > env_file: > - .env > volumes: > - ./db:/var/lib/postgresql > labels: > - com.centurylinklabs.watchtower.enable=true > networks: > - internal > healthcheck: > test: ['CMD-SHELL', 'pg_isready -U $POSTGRES_USER -d $POSTGRES_DB'] > interval: 30s > timeout: 5s > retries: 5 > start_period: 10s > > documenso: > image: documenso/documenso:latest > container_name: documenso > restart: always > depends_on: > - postgres > env_file: > - .env > volumes: > - ./certs/:/app/certs > labels: > - com.centurylinklabs.watchtower.enable=true > expose: > - 3000 > networks: > - proxy > - internal > healthcheck: > test: ['CMD-SHELL', 'wget --spider -q http://localhost:3000/api/health || exit 1'] > interval: 30s > timeout: 5s > retries: 5 > start_period: 10s > > networks: > proxy: > external: true > internal: > internal: true > ``` > > ``` > -rw-r--r-- 1 1001 1001 4403 Nov 21 20:44 cert.p12 > ``` > > ``` > NEXT_PUBLIC_WEBAPP_URL=https://sign.xxx.de > NEXTAUTH_SECRET=... > NEXT_PRIVATE_ENCRYPTION_KEY=... > NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=... > NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/certs/cert.p12 > NEXT_PRIVATE_SIGNING_LOCAL_FILE_PASSPHRASE=... > NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth > NEXT_PRIVATE_SMTP_HOST=mail.xxx.de > NEXT_PRIVATE_SMTP_PORT=587 > NEXT_PRIVATE_SMTP_SECURE=false > NEXT_PRIVATE_SMTP_USERNAME=no-reply@xxx.de > NEXT_PRIVATE_SMTP_PASSWORD=... > NEXT_PRIVATE_SMTP_FROM_NAME=Company Sign > NEXT_PRIVATE_SMTP_FROM_ADDRESS=no-reply@xxx.de > POSTGRES_DB=documenso > POSTGRES_USER=documenso > POSTGRES_PASSWORD=... > DATABASE_URL=postgresql://documenso:...@documenso-db:5432/documenso > NEXT_PRIVATE_DATABASE_URL=${DATABASE_URL} > NEXT_PRIVATE_DIRECT_DATABASE_URL=${DATABASE_URL} > NEXT_PRIVATE_JOBS_PROVIDER=local > NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000 > ``` > > Logs are saying: > > ``` > 🚀 Starting Documenso... > > 🔐 Checking certificate configuration... > ✅ Certificate file found and readable - document signing is ready! > > 📚 Useful Links: > 📖 Documentation: https://docs.documenso.com > 🐳 Self-hosting guide: https://docs.documenso.com/developers/self-hosting > 🔐 Certificate setup: https://docs.documenso.com/developers/self-hosting/signing-certificate > 🏥 Health check: http://localhost:3000/api/health > 📊 Certificate status: http://localhost:3000/api/certificate-status > 👥 Community: https://github.com/documenso/documenso > > 🗄️ Running database migrations... > Prisma schema loaded from ../../packages/prisma/schema.prisma > Datasource "db": PostgreSQL database "documenso", schema "public" at "documenso-db:5432" > > 142 migrations found in prisma/migrations > > > No pending migrations to apply. > 🌟 Starting Documenso server... > > Failed to get certificate PDF > browserType.launch: Executable doesn't exist at /home/nodejs/.cache/ms-playwright/chromium_headless_shell-1169/chrome-linux/headless_shell > ╔═════════════════════════════════════════════════════════════════════════╗ > ║ Looks like Playwright Test or Playwright was just installed or updated. ║ > ║ Please run the following command to download new browsers: ║ > ║ ║ > ║ npx playwright install ║ > ║ ║ > ║ <3 Playwright Team ║ > ╚═════════════════════════════════════════════════════════════════════════╝ > at getCertificatePdf (/app/apps/remix/build/server/hono/packages/lib/server-only/htmltopdf/get-certificate-pdf.js:27:30) > at async getCertificateAndAuditLogData (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:396:43) > at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:135:9 > at async Object.runTask (/app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) > at async Module.run (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) > at async Object.handler (/app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) > at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 > at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) > at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 > at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) > at async requestId2 (/app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) > at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) > at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) > at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) > at async contextStorage2 (/app/node_modules/hono/dist/middleware/context-storage/index.js:6:5) > at async dispatch (/app/node_modules/hono/dist/compose.js:30:17) > at async file:///app/node_modules/hono/dist/hono-base.js:195:25 > at async responseViaResponseObject (/app/node_modules/@hono/node-server/dist/index.mjs:370:13) > at async Server.<anonymous> (/app/node_modules/@hono/node-server/dist/index.mjs:446:14) { > name: 'Error' > } > [JOBS:task-5cf8e8c4afcbf1e962c0efd6d5fbedb388db34051291cb5429d917fc5be56381--cmi9ar6ze000ro42kvidkcndc] Task failed Error: Failed to get private key bags > at signWithLocalCert (file:///app/apps/remix/build/server/hono/packages/signing/transports/local-cert.js:52:21) > at async signPdf (file:///app/apps/remix/build/server/hono/packages/signing/index.js:10:10) > at async decorateAndSignPdf (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:357:21) > at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:146:22 > at async Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:204:26) > at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) > at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) > at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 { > code: 'GenericFailure' > } > [JOBS]: Job internal.seal-document failed BackgroundTaskFailedError: Task failed > at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:231:17) > at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) > at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) > at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > Submitting job to endpoint: http://localhost:3000/api/jobs/internal.seal-document/cmi9ar6ze000ro42kvidkcndc > [JOBS]: Triggering job internal.seal-document with payload { > documentId: 14, > requestMetadata: { > ipAddress: '23.88.0.221', > userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36' > } > } > [JOBS]: Job internal.seal-document failed BackgroundTaskExceededRetriesError: Task exceeded retries > at Object.runTask (file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:201:17) > at async Module.run (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.handler.js:47:7) > at async Object.handler (file:///app/apps/remix/build/server/hono/packages/lib/jobs/definitions/internal/seal-document.js:26:5) > at async file:///app/apps/remix/build/server/hono/packages/lib/jobs/client/local.js:101:9 > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > at async file:///app/apps/remix/build/server/hono/server/router.js:59:3 > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > at async requestId2 (file:///app/node_modules/hono/dist/middleware/request-id/request-id.js:16:5) > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > at async dispatch (file:///app/node_modules/hono/dist/compose.js:30:17) > [20:12:36.792] INFO (92): > ipAddress: "23.88.0.221" > userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" > requestId: "c2agvj204rbg3vazumbus" > nonBatchedRequestId: "07gwog2esdxiqdlo5g8rh" > path: "envelope.signingStatus" > auth: null > source: "app" > trpcMiddleware: "maybeAuthenticated" > apiTokenId: null > [20:12:36.792] INFO (92): > ``` I don't work for documenso, but I've been able to get it to work by adding the browserless container to the stack. ``` browserless: # for chromium based browsers container_name: browserless image: browserless/chrome:latest ports: - "3001:3000" environment: - MAX_CONCURRENT_SESSIONS=10 - MAX_QUEUE_LENGTH=20 ``` After I added this, it fixed this issue.
Author
Owner

@Aj7ay7 commented on GitHub (Nov 22, 2025):

npx playwright install

add this install or maybe update to your script will fix

<!-- gh-comment-id:3565602631 --> @Aj7ay7 commented on GitHub (Nov 22, 2025): npx playwright install add this install or maybe update to your script will fix
Author
Owner

@Novapixel1010 commented on GitHub (Dec 1, 2025):

Solution

Add these environment variables to your Docker Compose / deployment:

Why this works

  • NEXT_PRIVATE_JOBS_PROVIDER=local - Tells Documenso to process jobs locally instead of relying on an external service (like Inngest)
  • NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000 - Allows the app to call itself for internal job processing

Important Notes

  1. After adding these variables, you need to redeploy (not just restart)
  2. Old jobs created before the fix will remain stuck - they need to be deleted manually:
    DELETE FROM "BackgroundJob" WHERE status = 'PENDING';
  3. New documents will work correctly with jobs processed immediately

This doesn't fix the issue because this is mostly a Playwright issue. the container needs to be built right to fix the core issue. Check #2081

<!-- gh-comment-id:3599188672 --> @Novapixel1010 commented on GitHub (Dec 1, 2025): > ### Solution > Add these environment variables to your Docker Compose / deployment: > > - NEXT_PRIVATE_JOBS_PROVIDER=local > - NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000 > > Why this works > > - NEXT_PRIVATE_JOBS_PROVIDER=local - Tells Documenso to process jobs locally instead of relying on an external service (like Inngest) > - NEXT_PRIVATE_INTERNAL_WEBAPP_URL=http://localhost:3000 - Allows the app to call itself for internal job processing > > Important Notes > > 1. After adding these variables, you need to redeploy (not just restart) > 2. Old jobs created before the fix will remain stuck - they need to be deleted manually: > DELETE FROM "BackgroundJob" WHERE status = 'PENDING'; > 3. New documents will work correctly with jobs processed immediately This doesn't fix the issue because this is mostly a Playwright issue. the container needs to be built right to fix the core issue. Check #2081
Author
Owner

@khanakhun commented on GitHub (Dec 8, 2025):

facing same issue :(

<!-- gh-comment-id:3628735172 --> @khanakhun commented on GitHub (Dec 8, 2025): facing same issue :(
Author
Owner

@fredprince1 commented on GitHub (Dec 29, 2025):

  - SERVICE_URL_DOCUMENSO_3000

I have the same "pending forever after signature" problem, I'll try your compose, thanks for posting it.
But this ENV VAR caught my eye, is this correct ?

<!-- gh-comment-id:3697183064 --> @fredprince1 commented on GitHub (Dec 29, 2025): > - SERVICE_URL_DOCUMENSO_3000 I have the same "pending forever after signature" problem, I'll try your compose, thanks for posting it. But this ENV VAR caught my eye, is this correct ?
Author
Owner

@jabertech commented on GitHub (Feb 5, 2026):

This is my Docker Compose file - running it on Portainer in the cloud - with auto-certificate generation as well. Hope this helps.


version: '3.8'

services:
  # 0. Certificate Generator (Enhanced)
  cert-generator:
    image: alpine
    container_name: documenso_cert_generator
    volumes:
      - ./certs:/certs
    environment:
      - CERT_FILENAME=cert.p12
      - CERT_PASSWORD=${DOCUMENSO_P12_PASSWORD:?err_provide_DOCUMENSO_P12_PASSWORD}
      - CERT_CN=${DOCUMENSO_HOST:-documenso.local}
    restart: "no"
    command: >
      sh -c "
        set -e

        CERT_FILE_PATH=\"/certs/$${CERT_FILENAME}\"
        KEY_FILE_PATH=\"/certs/temp_private.key\"
        CRT_FILE_PATH=\"/certs/temp_certificate.crt\"
        BASE64_FILE_PATH=\"/certs/$${CERT_FILENAME}.base64\"

        if [ ! -f \"$${CERT_FILE_PATH}\" ]; then
          echo \"Certificate $${CERT_FILE_PATH} not found. Generating...\"
          apk add --no-cache openssl

          # 1. Generate Private Key
          openssl genrsa -out \"$${KEY_FILE_PATH}\" 2048
          
          # 2. Generate Self-Signed Certificate
          openssl req -new -x509 -nodes -batch -key \"$${KEY_FILE_PATH}\" -out \"$${CRT_FILE_PATH}\" -days 3650 -subj \"/CN=$${CERT_CN}\"

          # 3. Create p12 Certificate with -legacy flag (for compatibility)
          openssl pkcs12 -export -provider legacy -provider default -out \"$${CERT_FILE_PATH}\" -inkey \"$${KEY_FILE_PATH}\" -in \"$${CRT_FILE_PATH}\" -passout pass:$${CERT_PASSWORD} -legacy

          # Cleanup
          rm \"$${KEY_FILE_PATH}\" \"$${CRT_FILE_PATH}\"

          # 4. Fix Permissions (chmod 644 allows user 1001 to read)
          chmod 644 \"$${CERT_FILE_PATH}\"
          # Optional: Set owner to 1001 (The NextJS user inside the container) as per docs
          chown 1001:1001 \"$${CERT_FILE_PATH}\"

          # 5. Generate Base64 version for NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS
          echo \"Generating Base64 string for optional use...\"
          base64 \"$${CERT_FILE_PATH}\" > \"$${BASE64_FILE_PATH}\"
          chmod 644 \"$${BASE64_FILE_PATH}\"

          echo \"--------------------------------------------------\"
          echo \"Certificate generated successfully: $${CERT_FILE_PATH}\"
          echo \"Base64 file saved to: $${BASE64_FILE_PATH}\"
          echo \"--------------------------------------------------\"
          echo \"Testing generated legacy P12 file readability...\"
          openssl pkcs12 -info -provider legacy -provider default -in \"$${CERT_FILE_PATH}\" -noout -passin pass:$${CERT_PASSWORD}
          echo \"P12 read test successful.\"

        else
          echo \"Certificate $${CERT_FILE_PATH} already exists.\"
          # Ensure permissions are correct even if file exists
          chmod 644 \"$${CERT_FILE_PATH}\"
          chown 1001:1001 \"$${CERT_FILE_PATH}\" 2>/dev/null || true
          
          if [ ! -f \"$${BASE64_FILE_PATH}\" ]; then
             echo \"Base64 file missing, regenerating...\"
             base64 \"$${CERT_FILE_PATH}\" > \"$${BASE64_FILE_PATH}\"
          fi
        fi
      "

  # 1. The Database (Unchanged)
  db:
    image: postgres:15-alpine
    container_name: documenso_db
    restart: unless-stopped
    environment:
      POSTGRES_USER: documenso
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: documenso
    volumes:
      - ./data/db:/var/lib/postgresql/data
    networks:
      - documenso-network

  # 2. The Application (Unchanged)
  web:
    image: documenso/documenso:latest
    container_name: documenso_app
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      # --- SECURITY KEYS ---
      NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
      NEXT_PRIVATE_ENCRYPTION_KEY: ${NEXT_PRIVATE_ENCRYPTION_KEY}
      NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY: ${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY}

      # --- URLS ---
      NEXT_PUBLIC_WEBAPP_URL: ${NEXT_PUBLIC_WEBAPP_URL}
      NEXT_PRIVATE_JOBS_PROVIDER: "local"
      NEXT_PRIVATE_INTERNAL_WEBAPP_URL: "http://localhost:3000"

      # --- DATABASE ---
      NEXT_PRIVATE_DATABASE_URL: "postgresql://documenso:${POSTGRES_PASSWORD}@db:5432/documenso?schema=public"
      NEXT_PRIVATE_DIRECT_DATABASE_URL: "postgresql://documenso:${POSTGRES_PASSWORD}@db:5432/documenso?schema=public"

      # --- SMTP ---
      NEXT_PRIVATE_SMTP_TRANSPORT: "smtp-auth"
      NEXT_PRIVATE_SMTP_HOST: ${SMTP_HOST}
      NEXT_PRIVATE_SMTP_PORT: ${SMTP_PORT}
      NEXT_PRIVATE_SMTP_USERNAME: ${SMTP_USER}
      NEXT_PRIVATE_SMTP_PASSWORD: ${SMTP_PASSWORD}
      NEXT_PRIVATE_SMTP_FROM_NAME: ${SMTP_FROM_NAME}
      NEXT_PRIVATE_SMTP_FROM_ADDRESS: ${SMTP_FROM_ADDRESS}
      NEXT_PRIVATE_SMTP_SECURE: "false"

      # --- CERTIFICATE ---
      # ADD THIS LINE: Tell the app exactly where the file is mounted
      NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH: "/opt/documenso/cert.p12"
      NEXT_PRIVATE_SIGNING_PASSPHRASE: ${DOCUMENSO_P12_PASSWORD}
      
    volumes:
      - ./certs/cert.p12:/opt/documenso/cert.p12:ro

    depends_on:
      db:
        condition: service_started
      cert-generator:
        condition: service_completed_successfully
    networks:
      - documenso-network

networks:
  documenso-network:
    driver: bridge

ENV

DOCUMENSO_HOST=IP_ADDRESS_HERE_PORT  #-EXAMPLE: 100.100.100.100:3000
DOCUMENSO_P12_PASSWORD=GENERATE_RANDOM_PASSWORD
NEXT_PRIVATE_SIGNING_CERTIFICATE_PATH=/opt/documenso/cert.p12
POSTGRES_PASSWORD=GENERATE_RANDOM_DB_PASSWORD
NEXTAUTH_SECRET=GENERATE_USING openssl rand -hex 32
NEXT_PRIVATE_ENCRYPTION_KEY=GENERATE_USING openssl rand -hex 32
NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=GENERATE_USING openssl rand -hex 32
NEXT_PUBLIC_WEBAPP_URL=https://sign.mydomain.com
SMTP_HOST=smtp.yourmailserver.com
SMTP_PORT=MAILSERVER_PORT
SMTP_USER=USERNAME
SMTP_PASSWORD=PASSWORD
SMTP_FROM_NAME=Documenso
SMTP_FROM_ADDRESS=FROM_EMAIL
<!-- gh-comment-id:3853131927 --> @jabertech commented on GitHub (Feb 5, 2026): This is my Docker Compose file - running it on Portainer in the cloud - with auto-certificate generation as well. Hope this helps. ``` version: '3.8' services: # 0. Certificate Generator (Enhanced) cert-generator: image: alpine container_name: documenso_cert_generator volumes: - ./certs:/certs environment: - CERT_FILENAME=cert.p12 - CERT_PASSWORD=${DOCUMENSO_P12_PASSWORD:?err_provide_DOCUMENSO_P12_PASSWORD} - CERT_CN=${DOCUMENSO_HOST:-documenso.local} restart: "no" command: > sh -c " set -e CERT_FILE_PATH=\"/certs/$${CERT_FILENAME}\" KEY_FILE_PATH=\"/certs/temp_private.key\" CRT_FILE_PATH=\"/certs/temp_certificate.crt\" BASE64_FILE_PATH=\"/certs/$${CERT_FILENAME}.base64\" if [ ! -f \"$${CERT_FILE_PATH}\" ]; then echo \"Certificate $${CERT_FILE_PATH} not found. Generating...\" apk add --no-cache openssl # 1. Generate Private Key openssl genrsa -out \"$${KEY_FILE_PATH}\" 2048 # 2. Generate Self-Signed Certificate openssl req -new -x509 -nodes -batch -key \"$${KEY_FILE_PATH}\" -out \"$${CRT_FILE_PATH}\" -days 3650 -subj \"/CN=$${CERT_CN}\" # 3. Create p12 Certificate with -legacy flag (for compatibility) openssl pkcs12 -export -provider legacy -provider default -out \"$${CERT_FILE_PATH}\" -inkey \"$${KEY_FILE_PATH}\" -in \"$${CRT_FILE_PATH}\" -passout pass:$${CERT_PASSWORD} -legacy # Cleanup rm \"$${KEY_FILE_PATH}\" \"$${CRT_FILE_PATH}\" # 4. Fix Permissions (chmod 644 allows user 1001 to read) chmod 644 \"$${CERT_FILE_PATH}\" # Optional: Set owner to 1001 (The NextJS user inside the container) as per docs chown 1001:1001 \"$${CERT_FILE_PATH}\" # 5. Generate Base64 version for NEXT_PRIVATE_SIGNING_LOCAL_FILE_CONTENTS echo \"Generating Base64 string for optional use...\" base64 \"$${CERT_FILE_PATH}\" > \"$${BASE64_FILE_PATH}\" chmod 644 \"$${BASE64_FILE_PATH}\" echo \"--------------------------------------------------\" echo \"Certificate generated successfully: $${CERT_FILE_PATH}\" echo \"Base64 file saved to: $${BASE64_FILE_PATH}\" echo \"--------------------------------------------------\" echo \"Testing generated legacy P12 file readability...\" openssl pkcs12 -info -provider legacy -provider default -in \"$${CERT_FILE_PATH}\" -noout -passin pass:$${CERT_PASSWORD} echo \"P12 read test successful.\" else echo \"Certificate $${CERT_FILE_PATH} already exists.\" # Ensure permissions are correct even if file exists chmod 644 \"$${CERT_FILE_PATH}\" chown 1001:1001 \"$${CERT_FILE_PATH}\" 2>/dev/null || true if [ ! -f \"$${BASE64_FILE_PATH}\" ]; then echo \"Base64 file missing, regenerating...\" base64 \"$${CERT_FILE_PATH}\" > \"$${BASE64_FILE_PATH}\" fi fi " # 1. The Database (Unchanged) db: image: postgres:15-alpine container_name: documenso_db restart: unless-stopped environment: POSTGRES_USER: documenso POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: documenso volumes: - ./data/db:/var/lib/postgresql/data networks: - documenso-network # 2. The Application (Unchanged) web: image: documenso/documenso:latest container_name: documenso_app restart: unless-stopped ports: - "3000:3000" environment: # --- SECURITY KEYS --- NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} NEXT_PRIVATE_ENCRYPTION_KEY: ${NEXT_PRIVATE_ENCRYPTION_KEY} NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY: ${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY} # --- URLS --- NEXT_PUBLIC_WEBAPP_URL: ${NEXT_PUBLIC_WEBAPP_URL} NEXT_PRIVATE_JOBS_PROVIDER: "local" NEXT_PRIVATE_INTERNAL_WEBAPP_URL: "http://localhost:3000" # --- DATABASE --- NEXT_PRIVATE_DATABASE_URL: "postgresql://documenso:${POSTGRES_PASSWORD}@db:5432/documenso?schema=public" NEXT_PRIVATE_DIRECT_DATABASE_URL: "postgresql://documenso:${POSTGRES_PASSWORD}@db:5432/documenso?schema=public" # --- SMTP --- NEXT_PRIVATE_SMTP_TRANSPORT: "smtp-auth" NEXT_PRIVATE_SMTP_HOST: ${SMTP_HOST} NEXT_PRIVATE_SMTP_PORT: ${SMTP_PORT} NEXT_PRIVATE_SMTP_USERNAME: ${SMTP_USER} NEXT_PRIVATE_SMTP_PASSWORD: ${SMTP_PASSWORD} NEXT_PRIVATE_SMTP_FROM_NAME: ${SMTP_FROM_NAME} NEXT_PRIVATE_SMTP_FROM_ADDRESS: ${SMTP_FROM_ADDRESS} NEXT_PRIVATE_SMTP_SECURE: "false" # --- CERTIFICATE --- # ADD THIS LINE: Tell the app exactly where the file is mounted NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH: "/opt/documenso/cert.p12" NEXT_PRIVATE_SIGNING_PASSPHRASE: ${DOCUMENSO_P12_PASSWORD} volumes: - ./certs/cert.p12:/opt/documenso/cert.p12:ro depends_on: db: condition: service_started cert-generator: condition: service_completed_successfully networks: - documenso-network networks: documenso-network: driver: bridge ``` ENV ``` DOCUMENSO_HOST=IP_ADDRESS_HERE_PORT #-EXAMPLE: 100.100.100.100:3000 DOCUMENSO_P12_PASSWORD=GENERATE_RANDOM_PASSWORD NEXT_PRIVATE_SIGNING_CERTIFICATE_PATH=/opt/documenso/cert.p12 POSTGRES_PASSWORD=GENERATE_RANDOM_DB_PASSWORD NEXTAUTH_SECRET=GENERATE_USING openssl rand -hex 32 NEXT_PRIVATE_ENCRYPTION_KEY=GENERATE_USING openssl rand -hex 32 NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=GENERATE_USING openssl rand -hex 32 NEXT_PUBLIC_WEBAPP_URL=https://sign.mydomain.com SMTP_HOST=smtp.yourmailserver.com SMTP_PORT=MAILSERVER_PORT SMTP_USER=USERNAME SMTP_PASSWORD=PASSWORD SMTP_FROM_NAME=Documenso SMTP_FROM_ADDRESS=FROM_EMAIL ```
Author
Owner

@matheusbento commented on GitHub (Feb 19, 2026):

@jabertech, you are the man, works fine here.

<!-- gh-comment-id:3928723409 --> @matheusbento commented on GitHub (Feb 19, 2026): @jabertech, you are the man, works fine here.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/documenso#512
No description provided.