designcraft-web

designcraft-web

Docker app from MikaPST's Repository

Overview

DesignCraft Web is a community-maintained Docker image that serves DesignCraft, a page layout and publishing design application, through a browser-based WebAssembly interface. It provides a self-hosted way to access the upstream design editor from a modern browser. The container only serves the static web application through NGINX; it does not provide a remote Linux desktop or a server-side design backend.

DesignCraft application icon

DesignCraft Web — Docker Image

A community-maintained Docker image for DesignCraft, bringing its WebAssembly-based page layout and publishing studio to a self-hosted web interface.
Automated weekly builds and image publication to GitHub Container Registry (GHCR).

Build and publish DesignCraft Web GHCR image tag


Why this repository?

The upstream DesignCraft project provides a WebAssembly build that can be served as a static website. This repository automates building that web application from upstream source and packages the generated files into a lightweight NGINX-based Docker image.

The goals are to:

  • Build the web app from the current main branch of storytold/designcraft.
  • Include the shared font assets from storytold/craft-fonts, as required for complete release builds and Japanese text support.
  • Rebuild the image automatically each week and publish it to GHCR.
  • Provide a simple image that can later be offered through Unraid Community Applications.
  • Keep this packaging project separate from the upstream DesignCraft source code.

This is an independent community packaging project. It is not an official DesignCraft release and is not affiliated with or endorsed by the DesignCraft or ArtCraft maintainers.

How it works

DesignCraft is a page layout and publishing application written in Rust. Its web application runs in the browser using WebAssembly and eframe. The container serves the compiled static web files through NGINX; it does not run a remote desktop or a server-side document-editing service.

  • Browser-based publishing studio: create multi-page layouts using pages and spreads, parent pages, text frames, threaded stories, paragraph and character styles, tables, text wrap and more.
  • Typography and layout: use the upstream text composition engine, columns, baseline grids, tabs, rules, shading and print-oriented layout tools.
  • Local file handling: Open and Place use the browser's file picker; files can also be dropped into the application. Save and Export download files through the browser.
  • No remote desktop: no VNC session or Linux graphical desktop is required.
  • Self-hosted delivery: the container hosts the application files. It does not provide a shared document repository or server-side control channel.

The web build has no control channel. The JSON control protocol and MCP functionality described by the upstream project are not available through this browser build.

DesignCraft is at the pre-alpha stage and is under active development. Features, compatibility and behaviour may change between upstream builds. Test updates and verify exported documents before relying on it for important publishing work.

Docker image

The published image is:

ghcr.io/mikapst/designcraft-web:latest

Quick start with Docker Compose

A docker-compose.yml file is provided at the repository root:

services:
  designcraft-web:
    image: ghcr.io/mikapst/designcraft-web:latest
    container_name: designcraft-web
    restart: unless-stopped
    ports:
      - "8080:8080"

Start DesignCraft Web from the repository directory:

docker compose up -d

Then open:

http://YOUR_SERVER_IP:8080

Replace YOUR_SERVER_IP with the IP address or hostname of your server. On the same computer, use http://localhost:8080.

Run directly with Docker

docker run -d \
  --name designcraft-web \
  --restart unless-stopped \
  -p 8080:8080 \
  ghcr.io/mikapst/designcraft-web:latest

Useful commands

# View logs
docker compose logs -f

# Pull the latest image and recreate the container
docker compose pull
docker compose up -d

# Stop and remove the container
docker compose down

No .env file or persistent Docker volume is required for the default configuration. The host port is 8080; to use a different host port, change the left-hand side of the port mapping, for example 8081:8080.

Reverse proxy and browser requirements

The NGINX configuration:

  • serves .wasm files with the application/wasm MIME type;
  • uses the MIME types provided by NGINX for JavaScript, CSS, fonts and images;
  • enables gzip compression for WebAssembly, JavaScript, CSS and HTML;
  • applies Cache-Control: no-cache to index.html;
  • applies long-lived immutable caching to content-hashed static assets generated by Trunk.

DesignCraft uses WebGPU when available and falls back to WebGL2. The ?webgl query parameter forces WebGL2. WebGPU generally requires a secure browser context (HTTPS, or localhost). If you expose the application outside your local network, use HTTPS through a reverse proxy such as Traefik and avoid exposing plain HTTP directly to the public Internet.

The web build uses relative asset paths and can be served by a static web server. If you publish it below a URL prefix, configure your reverse proxy to preserve the requested path.

Web application options

URL option Behaviour
No option Open the normal DesignCraft web application
?webgl Force the WebGL2 renderer instead of WebGPU
?sample Open the sample magazine

For example:

https://YOUR_DOMAIN/?sample

The web application uses the browser's file picker for Open and Place, and supports drag and drop. Save and Export download the resulting files. Documents are not automatically stored in the Docker container.

Automated builds

GitHub Actions builds the DesignCraft web application and publishes the container image automatically.

Trigger Behaviour
Weekly schedule Checks out the current upstream main branch, builds the WebAssembly app and publishes a new image when the build succeeds
Manual workflow dispatch Allows a build to be started manually from the Actions tab
Changes to packaging files Runs the workflow when docker-compose.yml, README.md or the workflow file changes on main

Published tags

  • latest — the latest successful build.
  • upstream-<commit> — identifies the exact DesignCraft source commit used for the build.

The image is published for linux/amd64 and linux/arm64. The container serves static web assets through NGINX; the generated web files are architecture-independent.

A scheduled rebuild does not guarantee that upstream changes are compatible or stable. If a build fails, the previous published image remains available.

First-time GHCR setup: after the first successful publication, check the package's visibility in GitHub Packages. Set designcraft-web to Public if you want users to pull the image without authenticating to GHCR.

Build pipeline

The workflow:

  1. Checks out this repository.
  2. Checks out DesignCraft and the shared craft-fonts repository.
  3. Installs the Rust WebAssembly target and Trunk.
  4. Sets CRAFT_FONTS_DIR to the checked-out font repository.
  5. Runs trunk build --release from upstream/apps/designcraft-web.
  6. Uses the upstream Trunk configuration to generate the static site in upstream/dist/web.
  7. Checks that the generated index.html, WebAssembly and JavaScript assets exist.
  8. Generates the Dockerfile and NGINX configuration in a temporary build context.
  9. Packages the static site into an NGINX image and publishes it to GHCR.

The upstream project states that release builds include craft-fonts; without those fonts, Japanese text falls back to system fonts, which are not available in the browser environment. This packaging workflow checks out the shared font repository and makes it available during compilation.

The workflow generates the Dockerfile and NGINX configuration during the GitHub Actions run. Separate Dockerfile, nginx.conf and .dockerignore files are therefore not required in this packaging repository.

The repository is primarily intended as an automated image-build and publication pipeline; the normal way to consume it is to pull the published image.

Unraid Community Applications

This image is intended to be usable on Unraid.

An Unraid Community Applications template will be added after the image build and runtime configuration have been tested and validated.

In the meantime, DesignCraft Web can be deployed on Unraid using the Docker Compose configuration above or by configuring the container manually with:

  • Repository: ghcr.io/mikapst/designcraft-web:latest
  • Container port: 8080
  • Host port: 8080 by default

Documents opened in the browser are not stored in the Unraid appdata directory. Save or export your work and keep independent copies of important source files and documents.

Upstream project and attribution

DesignCraft is dual-licensed under the MIT License or Apache License 2.0, at the user's option. Required notices are provided in the upstream NOTICE file. Bundled fonts, icons, images and other assets retain their own licenses and attribution requirements; consult upstream ASSETS.md and the craft-fonts repository.

The ArtCraft name, wordmark and logos in the upstream docs/brand/ directory are trademarks and are not covered by the software license. Their use is subject to the upstream docs/brand/LICENSE-brand.txt. The license of the upstream application and its assets does not automatically determine the license of the packaging files maintained in this repository. If you want to grant reuse rights for your own workflow, Compose file and documentation, select and include a separate LICENSE for this repository.

Disclaimer

This repository is maintained independently and is not affiliated with, sponsored by or endorsed by the DesignCraft project or its maintainers.

DesignCraft is pre-alpha software. Keep independent copies of important documents and test updates before relying on the application for important publishing work.

Requirements


    No special privileges, database, or persistent data volumes are required for the standard deployment. The application runs in the browser and uses browser capabilities for graphics and local file handling. The container serves HTTP on port 8080. Use HTTPS through a reverse proxy such as Traefik for remote access; browser graphics features may require a secure context.

Categories

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/mikapst/designcraft-web:latest
Last Updated2026-11-04
First Seen2026-11-04

Runtime arguments

Web UI
http://[IP]:[PORT:8080]/
Network
bridge
Shell
sh
Privileged
false

Template configuration

HTTP PortPorttcp

Host port used to access the DesignCraft Web interface. The container listens on port 8080.

Target
8080
Default
8085