Bookstack behind 2 different domains: wiki.local.domain.com and wiki.domain.com #1627

Closed
opened 2026-02-05 01:27:47 +03:00 by OVERLORD · 3 comments
Owner

Originally created by @ptts on GitHub (Apr 6, 2020).

I have been trying to find a solution for this for a long time but today I finally gave up...

I have two domains: wiki.local.domain.com and wiki.domain.com.

The first one has an A record that resolves to the local IP of my home server (192.168.1.10), the second one is protected by Cloudflare and resolves to my home external IP with port forwarding of port 443 to 192.168.1.10. wiki.domain.com is protected by authelia and sitting behind nginx.

Authelia asks me to log in when accessing wiki.domain.com (as wanted for external access) but ideally I want to be able to access wiki.local.domain.com from my local network without authentication. (As is configured in Authelia)

The problem is, when I open wiki.local.domain.com Bookstack still tries to fetch resources from wiki.domain.com which it can't access without logging in first. Thus, the page breaks.

Bookstack is run in docker with the environment variable APP_URL=https://wiki.domain.com.
I am aware that it is a general limitation that Bookstack can only serve one domain...

Do you have any suggestions how I can achieve my general goal i.e. have a version of Bookstack that can both be accessed externally, securely protected through Cloudflare and Authelia, and a local version that can be accessed without authentication?

I thought about somehow setting up a local DNS server that resolves wiki.domain.com to my local IP but that would require me to have an always on DNS server which I do not want to maintain.

Thanks!

Originally created by @ptts on GitHub (Apr 6, 2020). I have been trying to find a solution for this for a long time but today I finally gave up... I have two domains: `wiki.local.domain.com` and `wiki.domain.com`. The first one has an A record that resolves to the local IP of my home server (`192.168.1.10`), the second one is protected by Cloudflare and resolves to my home external IP with port forwarding of port `443` to `192.168.1.10`. `wiki.domain.com` is protected by [authelia](https://github.com/authelia/authelia) and sitting behind *nginx*. Authelia asks me to log in when accessing `wiki.domain.com` (as wanted for external access) but ideally I want to be able to access `wiki.local.domain.com` from my local network without authentication. (As is configured in Authelia) The problem is, when I open `wiki.local.domain.com` Bookstack still tries to fetch resources from `wiki.domain.com` which it can't access without logging in first. Thus, the page breaks. Bookstack is run in docker with the environment variable `APP_URL=https://wiki.domain.com`. I am aware that it is a general limitation that Bookstack can only serve *one* domain... Do you have any suggestions how I can achieve my general goal i.e. have a version of Bookstack that can both be accessed externally, securely protected through Cloudflare and Authelia, and a local version that can be accessed without authentication? I thought about somehow setting up a local DNS server that resolves wiki.domain.com to my local IP but that would require me to have an always on DNS server which I do not want to maintain. Thanks!
Author
Owner

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

Hi @ptts,

Been having a think but can't envision a solution for this. Never come across Authelia before though, Seems like a neat project.

I did have a play recently with using nginx rules to convert domains as the request pass in and as the response comes out, as a way of potentially supporting these situations. Got it mostly working (Pretty much worked in view-only mode) but it got complicated when different formats and encoding get involved.

Good to know of another legitimate use-case for supporting multiple domains though.

@ssddanbrown commented on GitHub (Apr 7, 2020): Hi @ptts, Been having a think but can't envision a solution for this. Never come across Authelia before though, Seems like a neat project. I did have a play recently with using nginx rules to convert domains as the request pass in and as the response comes out, as a way of potentially supporting these situations. Got it mostly working (Pretty much worked in view-only mode) but it got complicated when different formats and encoding get involved. Good to know of another legitimate use-case for supporting multiple domains though.
Author
Owner

@ssddanbrown commented on GitHub (May 2, 2021):

Since no one has been able to assist further here, as since the core request of mulitple domains usage overlaps with issue #1342 I'm going to close this off.

@ssddanbrown commented on GitHub (May 2, 2021): Since no one has been able to assist further here, as since the core request of mulitple domains usage overlaps with issue #1342 I'm going to close this off.
Author
Owner

@jorfigfl commented on GitHub (Dec 23, 2024):

Yes it's a shame we don't have an update on this. But I solved it in an inelegant way a fewer years ago. Whatever is in the "Public Documentation" shelves , there is a script that converts it into a pdf every 30 minutes and I create an html page with a design, logo like bookstack where I publish the pdf outside my internal network. So I have two bookstack: internal bookstack where users create documentation. And the external bookstack where the internet (with a different domain) can see the public documentation, and I don't have image problems because when it is converted to PDF, they are added. At this moment they are for two domains, but several domains would be possible If you order them by shelves.

What I recommend is to create pdf from a script and copy them to another site. so you tell your users, create the documents and when they want to make one public, copy it to "Public Documentation" shelve or other shelve (maybe for other domain).

As I tell you, it is not pretty or elegant but I have been using this solution for years.

@jorfigfl commented on GitHub (Dec 23, 2024): Yes it's a shame we don't have an update on this. But I solved it in an inelegant way a fewer years ago. Whatever is in the "Public Documentation" shelves , there is a script that converts it into a pdf every 30 minutes and I create an html page with a design, logo like bookstack where I publish the pdf outside my internal network. So I have two bookstack: internal bookstack where users create documentation. And the external bookstack where the internet (with a different domain) can see the public documentation, and I don't have image problems because when it is converted to PDF, they are added. At this moment they are for two domains, but several domains would be possible If you order them by shelves. What I recommend is to create pdf from a script and copy them to another site. so you tell your users, create the documents and when they want to make one public, copy it to "Public Documentation" shelve or other shelve (maybe for other domain). As I tell you, it is not pretty or elegant but I have been using this solution for years.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/BookStack#1627