materialcraft-web

materialcraft-web

Docker app from MikaPST's Repository

Overview

MaterialCraft Web is a community-maintained Docker image that serves MaterialCraft, a node-based procedural material designer, through a browser-based WebAssembly interface. Build procedural PBR materials using nodes and preview materials in the application. MaterialCraft is actively developed and some advanced 3D and workflow features remain in progress. The container only serves the static web application; it does not provide server-side material rendering or centralized project storage.

MaterialCraft application icon

MaterialCraft Web — Docker Image

A community-maintained Docker image for MaterialCraft, providing its browser-based procedural material designer through a self-hosted web interface.
Build automation and image publication to GitHub Container Registry (GHCR).

Build and publish MaterialCraft Web GHCR image tag Docker Compose configuration


Why this repository?

The official MaterialCraft project provides a WebAssembly-based version that can be hosted as a static website. This repository packages the web application into a Docker image to simplify self-hosting.

The goals are to:

  • Build the MaterialCraft Web application from the upstream source code.
  • 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 MaterialCraft project.

This is a packaging and distribution project, not a fork intended to develop a separate material-design application.

How it works

MaterialCraft Web runs directly in the user's browser using WebAssembly. The Docker container serves the static web application through NGINX; it does not provide a remote Linux desktop or a server-side material-processing service.

  • Browser-based interface: use MaterialCraft's node-based procedural material editor in a modern web browser.
  • WebAssembly application: the Rust application is compiled to WebAssembly and runs client-side.
  • Web graphics: the web runner uses WebGPU with a WebGL2 fallback, depending on browser support.
  • Browser file I/O: opening and saving project files, as well as exporting material maps, use the browser's file and download capabilities.
  • Self-hosted: run the static application on your own server and access it over your local network or through a properly configured reverse proxy.

Material creation and processing run in the browser. The container serves the application files rather than acting as a material-processing backend or persistent document-storage service. Project files and exported maps are handled through the browser's file and download capabilities.

WebGPU requires a secure browser context: use HTTPS when accessing the application remotely, or http://localhost for local testing. MaterialCraft can fall back to WebGL2 when WebGPU is unavailable; the upstream documentation also provides the ?webgl URL flag to force that renderer.

Docker image

The image is published to GitHub Container Registry:

ghcr.io/mikapst/materialcraft-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 MaterialCraft Web with Docker Compose.

services:
  materialcraft-web:
    image: ghcr.io/mikapst/materialcraft-web:latest
    container_name: materialcraft-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 this basic 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/materialcraft-web:latest

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

Open the application at:

http://YOUR_SERVER_IP:8080

Material generation and rendering are performed client-side. Browser performance and available memory therefore depend on the device running the browser, not only on the Docker host.

Network access and reverse proxies

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.

Automated builds

GitHub Actions builds and publishes the image automatically.

Trigger Behaviour
Weekly schedule Rebuilds from the upstream main branch
Manual workflow dispatch Allows a build to be triggered manually
Changes to this repository's workflow, README or Compose file on main Triggers a build

Each successful build publishes:

  • latest — the most recently published image.
  • upstream-<commit> — a build-specific tag identifying the upstream commit used.

The build targets linux/amd64 and linux/arm64. The web application itself runs in the browser; these architectures describe the platforms on which the static-file-serving container image can run.

[!IMPORTANT] MaterialCraft is under active development. Its upstream project describes the application as incomplete, with parts of the node library, the GPU 3D view, mesh-based nodes and other workflow areas still in progress. A successful image build does not guarantee that every feature is complete or stable. Test new images before relying on them for important work.

The latest tag is mutable and may point to a newer image after a successful build.

Unraid Community Applications

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

The Unraid template references the published GHCR image and provides configuration for the web port.

  • Unraid Community Applications repository: MikaPST/unraid-community-apps
  • MaterialCraft Web template: to be added when the template is published.

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

Upstream project

MaterialCraft is an open-source, node-based procedural material designer written in Rust by the ArtCraft Team and its contributors. It is designed to create tileable PBR materials from procedural nodes, inspect them in 2D and 3D views, and export material maps for use in other tools.

The upstream web application is built with Trunk from apps/materialcraft-web. This repository builds that browser application from upstream source and packages the generated static files in an NGINX image. It does not modify the MaterialCraft application itself.

License and attribution

MaterialCraft is dual-licensed under the MIT License or Apache License 2.0, at the user's option. Copyright belongs to the ArtCraft Team and MaterialCraft contributors.

The upstream project includes third-party components and bundled assets under their own licenses. The upstream NOTICE and ATTRIBUTION.md files identify these components and their applicable terms. These notices and license files must be preserved when redistributing the application.

The ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team and are not covered by the software license. Refer to the upstream docs/brand/LICENSE-brand.txt for their terms.

The Docker packaging files in this repository are maintained separately from the upstream application. This repository does not claim ownership of MaterialCraft or its bundled assets.

Disclaimer

This is an independent community packaging project and is not affiliated with, endorsed by, or sponsored by the ArtCraft Team.

MaterialCraft is provided by its upstream authors under its own license and development status. Use this Docker image at your own risk and consult the official repository for the latest information, limitations and notices.

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. Material editing and graphics rendering run in the browser and depend on browser/device graphics capabilities. WebGPU requires a secure context; use HTTPS through a reverse proxy for remote access.

Related apps

Explore more like this

Explore all

Details

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

Target
8080
Default
8088