materialcraft-web
Docker app from MikaPST's Repository
Overview
Readme
View on GitHub
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).
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.
- Source code: storytold/materialcraft
- Official website: getartcraft.com/apps/materialcraft
- Official web build instructions: MaterialCraft web packaging
- Official releases: MaterialCraft releases
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.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/mikapst/materialcraft-web:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]/- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Host port used to access the MaterialCraft Web interface. The container listens on port 8080.
- Target
- 8080
- Default
- 8088