Skip to content

[BUG] Markdown adding <divs> in the Markdown viewer #298

Description

@XaratosS

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Hello,

we are currently debugging an issue with the Markdown editor in Bookstack.
On a regular installation, the Markdown will show correctly. When using this docker image, we are running into the issue, that divs are added in the browser.

When using the standalone version this issue dosnt exist.

Image

Expected Behavior

Markdown should be rendered correctly

Image

Steps To Reproduce

  1. Create a markdown file and upload it as a page to the page

Environment

- OS: Debian 12
- How docker service was installed: Docker swarm with NFS Storage. There is a snapshot folder, that wont allow permission changes which should not cause any issues with the docker container.

CPU architecture

x86-64

Docker creation

services:
    wiki:
        image: <ghcr registry>/bookstack-wiki:test-latest
        env_file:
            - .env
        networks:
            - bookstack-net
        deploy:
            replicas: 1
            update_config:
                order: stop-first
                failure_action: rollback
            restart_policy:
                condition: on-failure
        volumes:
            - bookstack-config:/config
        ports:
            - 50038:80

networks:
    bookstack-net:
        driver: overlay

volumes:
    bookstack-config:
        driver_opts:
            type: "nfs"
            o: "addr=10.60.30.13,nolock,hard,rw"
            device: ":/docker_dev/bookstack_wiki/config/"

Container logs

dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | [migrations] started
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | [migrations] 01-nginx-site-confs-default: skipped
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | [migrations] 02-default-location: skipped
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | [migrations] done
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | usermod: no changes
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | ───────────────────────────────────────
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |       ██╗     ███████╗██╗ ██████╗
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |       ██║     ██╔════╝██║██╔═══██╗
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |       ██║     ███████╗██║██║   ██║
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |       ██║     ╚════██║██║██║   ██║
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |       ███████╗███████║██║╚██████╔╝
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |       ╚══════╝╚══════╝╚═╝ ╚═════╝
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |    Brought to you by linuxserver.io
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | ───────────────────────────────────────
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | To support the app dev(s) visit:
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | Bookstack: https://www.bookstackapp.com/donate/
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | To support LSIO projects visit:
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | https://www.linuxserver.io/donate/
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | ───────────────────────────────────────
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | GID/UID
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | ───────────────────────────────────────
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | User UID:    911
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | User GID:    911
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | ───────────────────────────────────────
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | Linuxserver.io version: v26.05.5-ls284
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | Build-date: 2026-09-14T14:18:17+00:00
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | ───────────────────────────────────────
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | using keys found in /config/keys
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | Waiting for DB to be available
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |    INFO  Nothing to migrate.
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    |
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1105': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-11_0505/log/logrotate.status': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-11_0605/log/logrotate.status': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1005': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1205': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1205/logs': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1205/backups': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1205/www': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1205/www/files': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1205/www/images': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1205/www/themes': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-10_1205/www/uploads': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-11_0405/log/logrotate.status': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-11_0705/log/logrotate.status': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-11_0805/log/logrotate.status': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-11_0905/log/logrotate.status': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-11_1005/log/logrotate.status': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | chown: changing ownership of '/config/.snapshot/hourly.2026-09-11_1105/log/logrotate.status': Read-only file system
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | **** Permissions could not be set. This is probably because your volume mounts are remote or read-only. ****
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | **** The app may not work properly and we will not provide support for it. ****
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | [custom-init] No custom files found, skipping...
dev_wiki_ito_bvb_ch_wiki.1.muv65gq5nf3w@BVBDOCKERWT02    | [ls.io-init] done.

Activity

  1. thespad commented on Sep 16, 2026

    @thespad
    Member

    To be clear we don't support NFS for /config mounts, but I don't think that's going to be a causal factor with this issue so we'll put it aside for the moment.

    @ssddanbrown any thoughts? I don't think we're missing any deps or config unless you've changed something upstream recently that we've overlooked.

  2. XaratosS commented on Sep 16, 2026

    @XaratosS
    Author

    @thespad yeah I dont expect support for NFS or anything like that. I was more or less wondering if you are missing anything.

    edit: fyi we make a copy of the upstream container into our registry. Thats why we have our own container image.

  3. ssddanbrown commented on Sep 16, 2026

    @ssddanbrown
    SponsorContributor

    Yeah, this feels unrelated to anything that would be under the control of the LSIO container setup itself.

    I feel that something else is going on (differences between BookStack instance versions, config or customizations etc...).
    @XaratosS Feel free to describe the issue scenario in more detail, with specific reproduction steps, and raise it as a support request on the BookStack project: https://codeberg.org/bookstack/bookstack/issues

  4. facerollSM commented on Sep 17, 2026

    @facerollSM

    hey @thespad and @ssddanbrown, we found the cause and it is on our side - nothing to do with this iamge or with NFS.

    our env-file contained a example line ALLOWED_STYLE_SOURCES="https://fonts.googleapis.com", copied from the example-env-file. this option replaces bookstack permissive default with a strict one.

    style-src 'self' https://fonts.googleapis.com
    

    that injection gets blocked by the policy, so every line renders as an unstyled <div>, the gutter collapses into a column of line numbers, and identation is lost. the markdown editor preview is not affected, which is why it looked like a bug.

    removing the option restored the default (null) and fixed the rendering. verified on both linuxserver/bookstack:26.05.4 and 26.05.5. our image is just a copy without any modifications.

    thanks for your support! the issue can be closed

  5. moved this from Issues to Done in Issue & PR Trackeron Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions