Feature Request: Support for self-hosted draw.io #665

Closed
opened 2026-02-04 21:44:18 +03:00 by OVERLORD · 12 comments
Owner

Originally created by @justinzyw on GitHub (May 5, 2018).

For Feature Requests

Desired Feature: #

It is awesome to see the draw.io online support implmented, is it possible to extend this feature by adding the support for self-hosted draw.io instance please?

Originally created by @justinzyw on GitHub (May 5, 2018). ### For Feature Requests Desired Feature: # It is awesome to see the draw.io online support implmented, is it possible to extend this feature by adding the support for **self-hosted** draw.io instance please?
OVERLORD added the 🛠️ Enhancement📖 Docs Update labels 2026-02-04 21:44:18 +03:00
Author
Owner

@justinzyw commented on GitHub (Jun 19, 2018):

I am not a programer but please let me know what I can do to have this implemented

@justinzyw commented on GitHub (Jun 19, 2018): I am not a programer but please let me know what I can do to have this implemented
Author
Owner

@derek-shnosh commented on GitHub (Aug 25, 2018):

This is a great suggestion if draw.io supports/allows it.

I just put it through its paces and I can see quite a few great use-cases for using the Draw.io integration.

Our documentation/diagrams contain too much sensitive/confidential information, so on-prem isn't just a nice-to-have for us, it's a contractual obligation.

Would love to see this, if its possible.

@derek-shnosh commented on GitHub (Aug 25, 2018): This is a great suggestion if draw.io supports/allows it. I just put it through its paces and I can see quite a few great use-cases for using the Draw.io integration. Our documentation/diagrams contain too much sensitive/confidential information, so on-prem isn't just a nice-to-have for us, it's a contractual obligation. Would love to see this, if its possible.
Author
Owner

@poVoq commented on GitHub (Aug 29, 2018):

Of course that is possible: https://github.com/jgraph/drawio
Probably just need a small code change to use a different URL.

@poVoq commented on GitHub (Aug 29, 2018): Of course that is possible: https://github.com/jgraph/drawio Probably just need a small code change to use a different URL.
Author
Owner

@justinzyw commented on GitHub (Aug 30, 2018):

by checking the code.. it seems to that there are two changes needed:

  1. Update BookStack/resources/assets/js/services/drawio.js line 2 by replacing the hard-coded "www.draw.io" with a parm X. currently it looks like this:
const drawIoUrl = 'https://www.draw.io/?embed=1&ui=atlas&spin=1&proto=json';
let iFrame = null;

let onInit, onSave;
  1. add a place in the Settings -> APP SETINGS of Bookstack to set this parm X, default as "www.draw.io"
@justinzyw commented on GitHub (Aug 30, 2018): by checking the code.. it seems to that there are two changes needed: 1. Update _BookStack/resources/assets/js/services/drawio.js_ line 2 by replacing the hard-coded "www.draw.io" with a parm X. currently it looks like this: ``` const drawIoUrl = 'https://www.draw.io/?embed=1&ui=atlas&spin=1&proto=json'; let iFrame = null; let onInit, onSave; ``` 2. add a place in the Settings -> APP SETINGS of Bookstack to set this parm X, default as "www.draw.io"
Author
Owner

@ssddanbrown commented on GitHub (Aug 30, 2018):

Yeah,
Would prefer if this was not an app setting though since would be fairly low traffic. There's already a DRAWIO env option at play, Maybe just pass this if it's a URL.

Has anyone actually got a self-hosted draw.io instance on the go?
Would need to actually confirm the required endpoints/functionality are 100% supported in open/self-hosted version. In addition, I'd have thought there'd be some authentication layer that would need to be considered.

@ssddanbrown commented on GitHub (Aug 30, 2018): Yeah, Would prefer if this was not an app setting though since would be fairly low traffic. There's already a `DRAWIO` env option at play, Maybe just pass this if it's a URL. Has anyone actually got a self-hosted draw.io instance on the go? Would need to actually confirm the required endpoints/functionality are 100% supported in open/self-hosted version. In addition, I'd have thought there'd be some authentication layer that would need to be considered.
Author
Owner

@poVoq commented on GitHub (Aug 30, 2018):

Yes I have it working selfhosted with the Nextcloud plugin for it: https://apps.nextcloud.com/apps/drawio
It still uses by default the external server for converting and exporting .pdf files though. A bit annoying if you really want it to be completly selfhosted or in an environment with no internet connection.
They recently also release those server components on github, but they do not run easily on a php hoster.
No authentification layer involved actually, which means anyone who knows the url can use it stand-alone. Not a big deal though as it is more or less purly client side JS.

@poVoq commented on GitHub (Aug 30, 2018): Yes I have it working selfhosted with the Nextcloud plugin for it: https://apps.nextcloud.com/apps/drawio It still uses by default the external server for converting and exporting .pdf files though. A bit annoying if you really want it to be completly selfhosted or in an environment with no internet connection. They recently also release those server components on github, but they do not run easily on a php hoster. No authentification layer involved actually, which means anyone who knows the url can use it stand-alone. Not a big deal though as it is more or less purly client side JS.
Author
Owner

@davidjgraph commented on GitHub (Oct 15, 2018):

draw.io is fully client-side, aside from the PDF export. It's written as a stand-alone single page app with integration to third-party storage, there's no auth/storage. If you're using draw in embed mode, that works the same way when you host it. Easiest way to test it is clone https://github.com/jgraph/drawio, publish to gh-pages and link to that.

The PDF export is open source, https://github.com/jgraph/draw-image-export2 (everything should be open source). That said, there's a stealth=1 URL parameter, see https://desk.draw.io/support/solutions/articles/16000042546-what-url-parameters-are-supported-, that switches off everything external.

Can I also suggest ui=min, it's less opinionated as a theme and generally works better for integrations.

@davidjgraph commented on GitHub (Oct 15, 2018): draw.io is fully client-side, aside from the PDF export. It's written as a stand-alone single page app with integration to third-party storage, there's no auth/storage. If you're using draw in embed mode, that works the same way when you host it. Easiest way to test it is clone https://github.com/jgraph/drawio, publish to gh-pages and link to that. The PDF export is open source, https://github.com/jgraph/draw-image-export2 (everything should be open source). That said, there's a stealth=1 URL parameter, see https://desk.draw.io/support/solutions/articles/16000042546-what-url-parameters-are-supported-, that switches off everything external. Can I also suggest ui=min, it's less opinionated as a theme and generally works better for integrations.
Author
Owner

@pleasegitgood commented on GitHub (Jul 12, 2019):

by checking the code.. it seems to that there are two changes needed:

  1. Update BookStack/resources/assets/js/services/drawio.js line 2 by replacing the hard-coded "www.draw.io" with a parm X. currently it looks like this:
const drawIoUrl = 'https://www.draw.io/?embed=1&ui=atlas&spin=1&proto=json';
let iFrame = null;

let onInit, onSave;
  1. add a place in the Settings -> APP SETINGS of Bookstack to set this parm X, default as "www.draw.io"

Hi! Thanks for the suggestion and edit location.

First, I'm working off linuxserver's docker image (https://hub.docker.com/r/linuxserver/bookstack)
Second, I was able to set up my local instance of draw.io, but any changes i made to /resources/assets/js/services/drawio.js were not taking any effect in the docker container. Bookstacks still tries to contact draw.io when I edit a drawing. Tried restarting the container (even committing changes to a new docker image) and clearing my browser cache as well.

Any advice i could get to get this working? Thanks!

@pleasegitgood commented on GitHub (Jul 12, 2019): > by checking the code.. it seems to that there are two changes needed: > > 1. Update _BookStack/resources/assets/js/services/drawio.js_ line 2 by replacing the hard-coded "www.draw.io" with a parm X. currently it looks like this: > > ``` > const drawIoUrl = 'https://www.draw.io/?embed=1&ui=atlas&spin=1&proto=json'; > let iFrame = null; > > let onInit, onSave; > ``` > > 1. add a place in the Settings -> APP SETINGS of Bookstack to set this parm X, default as "www.draw.io" Hi! Thanks for the suggestion and edit location. First, I'm working off linuxserver's docker image (https://hub.docker.com/r/linuxserver/bookstack) Second, I was able to set up my local instance of draw.io, but any changes i made to /resources/assets/js/services/drawio.js were not taking any effect in the docker container. Bookstacks still tries to contact draw.io when I edit a drawing. Tried restarting the container (even committing changes to a new docker image) and clearing my browser cache as well. Any advice i could get to get this working? Thanks!
Author
Owner

@pleasegitgood commented on GitHub (Jul 12, 2019):

Yes I have it working selfhosted with the Nextcloud plugin for it: https://apps.nextcloud.com/apps/drawio
It still uses by default the external server for converting and exporting .pdf files though. A bit annoying if you really want it to be completly selfhosted or in an environment with no internet connection.
They recently also release those server components on github, but they do not run easily on a php hoster.
No authentification layer involved actually, which means anyone who knows the url can use it stand-alone. Not a big deal though as it is more or less purly client side JS.

Hi! May I know the exact code changes you made to redirect www.draw.io to your local instance?
Updating drawio.js alone (const drawIoUrl) does not seem to have much effect, even on a manual installed instance.
Much appreciated. Thanks!

@pleasegitgood commented on GitHub (Jul 12, 2019): > Yes I have it working selfhosted with the Nextcloud plugin for it: https://apps.nextcloud.com/apps/drawio > It still uses by default the external server for converting and exporting .pdf files though. A bit annoying if you really want it to be completly selfhosted or in an environment with no internet connection. > They recently also release those server components on github, but they do not run easily on a php hoster. > No authentification layer involved actually, which means anyone who knows the url can use it stand-alone. Not a big deal though as it is more or less purly client side JS. Hi! May I know the exact code changes you made to redirect www.draw.io to your local instance? Updating drawio.js alone (const drawIoUrl) does not seem to have much effect, even on a manual installed instance. Much appreciated. Thanks!
Author
Owner

@ssddanbrown commented on GitHub (Jul 15, 2019):

@pleasegitgood All the files in /resources/assets/js are not directly used in releases, These files are built into a single bundle found at public/dist/app.js. You could search that file for www.draw.io and replace that single URL to test using your own instance. Note this may cause issues when it comes to updates as BookStack will have a new version of this file.

@ssddanbrown commented on GitHub (Jul 15, 2019): @pleasegitgood All the files in `/resources/assets/js` are not directly used in releases, These files are built into a single bundle found at `public/dist/app.js`. You could search that file for `www.draw.io` and replace that single URL to test using your own instance. Note this may cause issues when it comes to updates as BookStack will have a new version of this file.
Author
Owner

@ssddanbrown commented on GitHub (Apr 5, 2020):

Time moves way too fast. I could swear that this was opened only a couple of months ago. Came across this again a few days ago and thought i'd be a nice quick one to include. This has now been included in the master branch, to be part of v0.29.

This will be configurable through the .env file like so:

DRAWIO=https://drawing.example.com/?embed=1&proto=json&spin=1

Will update the docs before release.


Thanks @davidjgraph for the confirmation on functionality above and URL param documentation. Will link to that and highlight the use of the stealth param when updating the BookStack docs on release.

Can I also suggest ui=min, it's less opinionated as a theme and generally works better for integrations.

I gave that a test and tbh I preferred the default full-featured UI, since there's more on the screen to get started with. Just seems more accessible having the sidebars immediately available. That said, If we ever want draw.io loaded inline or in a modal that theme will be ideal.

@ssddanbrown commented on GitHub (Apr 5, 2020): Time moves way too fast. I could swear that this was opened only a couple of months ago. Came across this again a few days ago and thought i'd be a nice quick one to include. This has now been included in the master branch, to be part of v0.29. This will be configurable through the `.env` file like so: ```bash DRAWIO=https://drawing.example.com/?embed=1&proto=json&spin=1 ``` Will update the docs before release. --- Thanks @davidjgraph for the confirmation on functionality above and URL param documentation. Will link to that and highlight the use of the `stealth` param when updating the BookStack docs on release. > Can I also suggest ui=min, it's less opinionated as a theme and generally works better for integrations. I gave that a test and tbh I preferred the default full-featured UI, since there's more on the screen to get started with. Just seems more accessible having the sidebars immediately available. That said, If we ever want draw.io loaded inline or in a modal that theme will be ideal.
Author
Owner

@chary1112004 commented on GitHub (Mar 19, 2025):

This will be configurable through the .env file like so:

DRAWIO=https://drawing.example.com/?embed=1&proto=json&spin=1
Will update the docs before release.

@ssddanbrown is this one still working for you while using self-host drawio docker?
We face the issue when connecting from application to self-host drawio. It keeps loading as below capture.

image

And we checked in document https://www.drawio.com/doc/faq/embed-mode it mentioned that embed=1 is only supported on https://embed.diagrams.net/.

If the embed=1 URL parameter is used, the client runs in embed mode and the page will send a “ready” message to the opener or parent when the page is loaded. This mode is only supported on https://embed.diagrams.net/.

@chary1112004 commented on GitHub (Mar 19, 2025): > This will be configurable through the `.env` file like so: > > DRAWIO=https://drawing.example.com/?embed=1&proto=json&spin=1 > Will update the docs before release. @ssddanbrown is this one still working for you while using self-host drawio docker? We face the issue when connecting from application to self-host drawio. It keeps loading as below capture. ![image](https://github.com/user-attachments/assets/f7249871-e0f7-4c8f-b11d-16150986bee7) And we checked in document https://www.drawio.com/doc/faq/embed-mode it mentioned that embed=1 is only supported on https://embed.diagrams.net/. `If the embed=1 URL parameter is used, the client runs in embed mode and the page will send a “ready” message to the opener or parent when the page is loaded. This mode is only supported on https://embed.diagrams.net/.`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/BookStack#665