This page provides detailed installation, setup, and deployment guides for Markdown Viewer across all supported platforms.
localhost origin for security enforcement.Deploy the application using the official Docker image hosted on the GitHub Container Registry (GHCR).
Execute the following command to start a detached container that redirects host port 8080 to container port 80:
docker pull ghcr.io/thisis-developer/markdown-viewer:sha-15eafb0
docker run -d \
--name markdown-viewer \
-p 8080:80 \
--restart unless-stopped \
ghcr.io/thisis-developer/markdown-viewer:sha-15eafb0
Open http://localhost:8080 in your browser.
To map the application to a different port (such as 9000), modify the left side of the -p parameter:
docker pull ghcr.io/thisis-developer/markdown-viewer:sha-15eafb0
docker run -d \
--name markdown-viewer \
-p 9000:80 \
--restart unless-stopped \
ghcr.io/thisis-developer/markdown-viewer:sha-15eafb0
| Tag Name | Production Ready | Target Source Branch | Target Architecture |
|---|---|---|---|
latest |
Yes (Stable Release) | main branch (Release tag) |
linux/amd64, linux/arm64 |
main |
No (Development) | main branch (Commit updates) |
linux/amd64, linux/arm64 |
<commit-sha> |
Pinned | Specific Git commit hash | linux/amd64, linux/arm64 |
For local deployments and multi-container environments, use Docker Compose.
git clone https://github.com/ThisIs-Developer/Markdown-Viewer.git
cd Markdown-Viewer
Start the container using Compose:
docker compose up -d
Confirm the container is running:
docker compose ps
docker compose down
docker-compose.yml Configurationservices:
markdown-viewer:
image: ghcr.io/thisis-developer/markdown-viewer:sha-15eafb0
container_name: markdown-viewer
ports:
- "8080:80"
restart: unless-stopped
To build a local image instead of pulling the published container, update the image field with a build directive:
services:
markdown-viewer:
build: .
container_name: markdown-viewer
ports:
- "8080:80"
restart: unless-stopped
Because Markdown Viewer is a fully client-side application, you can serve it from any static web server to serve index.html on localhost (127.0.0.1) by copying index.html, script.js, preview-worker.js, styles.css, sw.js, and the assets/ folder.
git clone https://github.com/ThisIs-Developer/Markdown-Viewer.git
cd Markdown-Viewer
Run the following command in the repository root to serve the project on localhost:
python3 -m http.server 8080
Run the following command in the repository root to serve the project on localhost:
npx serve . -p 8080
Once started, the application is accessible at http://localhost:8080 or http://127.0.0.1:8080.
Copy the project assets to Nginx's HTML folder:
cp -r . /usr/share/nginx/html/
[!WARNING] Opening the
index.htmlfile directly in a browser via thefile://protocol may fail due to browser security restrictions (CORS) that block Web Workers and Service Workers from running locally. Always serve the files using a local web server.
Markdown Viewer can also run as a native desktop application powered by Neutralinojs.
Download the binary for your platform from the GitHub Releases Page:
markdown-viewer-win_x64.exemarkdown-viewer-linux_x64markdown-viewer-linux_arm64markdown-viewer-mac_universalFollow these steps to build the binaries locally:
Navigate to the desktop application folder:
cd desktop-app
Install dependencies:
npm install
Download Neutralino framework binaries:
node setup-binaries.js
Copy files from the project root into the desktop resource folder:
node prepare.js
Compile the executable:
# Build single-file embedded Windows binary
npm run build
# Build portable distribution zip files for all platforms
npm run build:portable
By default, the application loads large rendering dependencies (like MathJax and Mermaid) from external CDNs. In secure, offline, or air-gapped environments, these remote scripts will fail to load.
js/libs/).<script> and <link> tags in index.html to reference your local asset paths.node prepare.js.