vectorcraft-web

vectorcraft-web

Docker app from MikaPST's Repository

Overview

VectorCraft Web is a community-maintained Docker image that serves the VectorCraft vector graphics editor through a browser-based WebAssembly application. Create and edit vector artwork directly in a modern browser. The application is rendered on the user's device using WebGPU where available, with WebGL2 as a fallback. The container only serves the static web application through NGINX; it does not provide a remote desktop, server-side graphics processing, or centralized artwork storage.

VectorCraft application icon

VectorCraft Web — Docker Image

A community-maintained Docker image for VectorCraft, bringing its Rust and WebAssembly-based vector illustration editor to a self-hosted web interface.
Automated builds and image publication to GitHub Container Registry (GHCR).

Build and publish VectorCraft Web GHCR image tag Docker Compose configuration


Why this repository?

The official VectorCraft project provides a WebAssembly-based version of its vector illustration editor that can be hosted as a static website. This repository automates building that web application from the upstream source code and packages the generated files into a Docker image served by NGINX.

The goals are to:

  • Build VectorCraft Web from the upstream source code.
  • Include the shared web font resources from storytold/craft-fonts.
  • Publish a ready-to-run Docker image to GHCR.
  • Automatically rebuild the image every week to incorporate upstream changes.
  • Provide a convenient deployment option for Unraid Community Applications.
  • Offer a simple Docker Compose configuration for users who prefer managing containers with Compose.
  • Keep the packaging and deployment configuration separate from the upstream VectorCraft project.

This is a packaging and distribution project, not a fork intended to develop a separate vector editor.

How it works

VectorCraft Web runs directly in the user's browser using WebAssembly. The Docker container serves the compiled static web application through NGINX; it does not provide a remote Linux desktop or perform document processing on the server.

  • Browser-based editor: access the vector illustration editor through a modern web browser.
  • Local file selection: opening files uses the browser's file picker.
  • Browser downloads: Save, Save As and Export generate browser downloads.
  • Drag and drop: supported files can be dropped into the browser application.
  • No remote desktop: no VNC, remote desktop session or Linux graphical environment is required.
  • Self-hosted: run the application on your own server and access it over your local network or through a properly configured reverse proxy.

The container serves the application files and web fonts. Document opening, editing and exporting take place in the browser; the container is not a document-storage service.

Docker image

The image is published to GitHub Container Registry:

ghcr.io/mikapst/vectorcraft-web:latest

Option 1 — Docker Compose (recommended)

A docker-compose.yml file is provided at the root of this repository. It is the simplest way to start and maintain VectorCraft Web with Docker Compose.

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

From the repository root, start the application with:

docker compose up -d

Open the application in your browser:

http://YOUR_SERVER_IP:8080

Replace YOUR_SERVER_IP with the IP address or hostname of your server. If Docker is running on your own computer, you can use http://localhost:8080.

Useful Compose commands

# View container 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 volume is required for the default setup. The host port is configured in docker-compose.yml; by default, port 8080 on the host is mapped to port 8080 in the container. To use a different host port, change the left-hand side of the mapping. For example, 8081:8080 exposes the application on host port 8081.

Option 2 — Run directly with Docker

If you prefer not to use Docker Compose, you can run the container directly:

docker pull ghcr.io/mikapst/vectorcraft-web:latest

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

Open the application at:

http://YOUR_SERVER_IP:8080

Network access and browser requirements

The container listens for HTTP traffic on port 8080. For external access, use a reverse proxy such as Traefik to terminate HTTPS and forward requests to the container over HTTP.

Do not expose an unencrypted HTTP port directly to the public Internet. Restrict access to your intended network or protect external access with HTTPS and appropriate access controls.

VectorCraft uses WebGPU where available and falls back to WebGL2. The application also provides a CPU rendering path for more compatible, but slower, operation:

  • No query flag: use WebGPU where available, otherwise WebGL2.
  • ?webgl: force the WebGL2 backend.
  • ?cpu: force the CPU canvas path.

WebGPU requires a secure browser context (HTTPS, or localhost). Browser and graphics-driver support can affect performance and compatibility.

Automated builds

GitHub Actions builds the VectorCraft Web application and publishes the Docker image automatically.

Trigger Behaviour
Weekly schedule Checks out the current upstream main branches, builds the WebAssembly application 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 on main Runs the workflow when the workflow, Compose file or README changes

Published tags

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

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

A scheduled rebuild does not guarantee that upstream changes are compatible or stable. If a build fails, the previously published image remains available. The latest tag is mutable and may point to a newer image after a successful build.

Build pipeline

The workflow:

  1. Checks out this packaging repository.
  2. Checks out the current upstream storytold/vectorcraft source.
  3. Checks out the shared storytold/craft-fonts repository.
  4. Installs the stable Rust toolchain, the wasm32-unknown-unknown target and Trunk.
  5. Runs trunk build --release from apps/vectorcraft-web, with CRAFT_FONTS_DIR set to the fonts checkout and CRAFT_FONTS_REQUIRED=1.
  6. Verifies that the generated static site contains its HTML entry point and WebAssembly module.
  7. Packages the generated site into an NGINX image and publishes it to GHCR.

The web build writes its static site to dist/web. The upstream Trunk post-build hook also copies the web font files listed by VectorCraft into the generated fonts/ directory when craft-fonts is supplied. The build is configured to fail rather than publish if the required fonts checkout is unavailable.

The Docker image is built directly inside the GitHub Actions workflow using an inline Dockerfile. The repository therefore does not need a separate Dockerfile, nginx.conf or .dockerignore.

The workflow records the exact VectorCraft and craft-fonts commits used for each image in the GitHub Actions summary and image labels.

Fonts and static hosting

VectorCraft's web build uses the shared craft-fonts repository for additional font resources. The generated fonts/ directory must be served alongside the WebAssembly files.

The NGINX configuration used for the image:

  • serves .wasm files with the application/wasm MIME type;
  • serves .ttf files with the font/ttf MIME type;
  • enables gzip compression for WebAssembly, JavaScript, CSS, HTML and other supported text resources;
  • revalidates index.html so clients can discover the latest application build;
  • applies long-lived caching to hash-addressed JavaScript, WebAssembly and font assets.

The application checks the integrity of downloaded web fonts. Font files must therefore be served unchanged; a rewritten or incorrectly served font may be rejected by the browser application.

Unraid Community Applications

This image is intended to be distributed through the maintainer's Unraid Community Applications repository.

The Unraid template will reference the published GHCR image and provide configuration for the web port and other container settings.

  • Unraid Community Applications repository: MikaPST/unraid-community-apps
  • VectorCraft Web template: to be added after the image has been tested and validated.

This repository contains the image build, publication workflow and Docker Compose configuration. The Unraid Community Applications template is maintained separately.

Upstream project and attribution

VectorCraft is an open-source vector illustration application developed by the ArtCraft Team and its contributors.

VectorCraft is dual-licensed under the MIT License or Apache License 2.0, at the user's option. The upstream project includes notices and attribution information for bundled third-party assets. Fonts supplied by craft-fonts retain their own licences, including SIL Open Font License notices where applicable.

The licences for the upstream application do not automatically determine the licence of the packaging files maintained in this repository. Refer to the repository's own LICENSE file for the terms applicable to those files.

The VectorCraft name, ArtCraft branding and logos remain subject to their respective trademark and usage terms. This repository is an independent community-maintained packaging project and is not an official VectorCraft release, nor is it affiliated with or endorsed by the VectorCraft or ArtCraft maintainers.

Disclaimer

VectorCraft is actively developed. Features, compatibility and behaviour may change between upstream builds. Test new images before relying on the application for important work. Use the application and its generated artwork at your own discretion.

Requirements


    No special privileges, database, or persistent data volumes are required for the standard deployment. The web interface is served over HTTP on container port 8080. WebGPU requires a secure browser context; use HTTPS through a reverse proxy such as Traefik for remote access. Browser and device support determine whether WebGPU or the WebGL2 fallback is used.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/mikapst/vectorcraft-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 VectorCraft Web interface. The container listens on port 8080.

Target
8080
Default
8081