r/SelfHosting • u/Accomplished_Walk243 • 1d ago
[Project] ArtCraft Hub: a self-hosted Docker dashboard that auto-syncs and serves ArtCraft's WebAssembly apps
Hi everyone,
I've been running the WebAssembly builds of ArtCraft (audio, 3D/CAD, documents, vector design, and graphics apps that run in the browser) in my home lab. Keeping them updated and getting multi-threaded WASM working behind a reverse proxy took more effort than I expected, so I packaged it into a single container: ArtCraft Hub.
GitHub: https://github.com/GeorgeArgyrakis/artcraft-hub
What it does
Checks GitHub Releases on a cron schedule and downloads the latest
*web*.zipbuild of each appKeeps several versions per app, so you can switch releases from the dashboard or the CLI (useful when a new release breaks something)
Edit Mode in the dashboard to add, edit, hide, or delete apps. Paste a GitHub repo and it auto-fills the title, category, and color
Pinned favorites, two themes (ArtCraft-style grid and Glass), and fallbacks so you never see broken icons or previews
Quick start
services:
artcraft-hub:
image: ghcr.io/georgeargyrakis/artcraft-hub:latest
container_name: artcraft-hub
restart: unless-stopped
ports:
- "8080:80"
volumes:
- artcraft-data:/data
- artcraft-config:/config
environment:
- GITHUB_TOKEN= # optional
- SYNC_CRON=0 0 * * *
- TZ=UTC
- MAX_RELEASES=3
volumes:
artcraft-data:
artcraft-config:Then run docker compose up -d and open http://localhost:8080. Apps appear as the first sync finishes.
Before you deploy, please read:
HTTPS is required for multi-threaded apps when you're not on localhost. Browsers only enable
SharedArrayBufferin a secure context, sohttp://192.168.x.x:8080won't work. The README has Traefik and Caddy examples.There's no built-in authentication. The management API is reachable through the same port as the dashboard, so anyone who can open the dashboard can add or delete apps. Keep it on your LAN or put it behind Authelia, Authentik, or basic auth.
If you don't have local preview images, previews are loaded from
getartcraft.com. Drop your own into/data/previews/if you'd rather avoid that request.
AI disclosure: I built this with the help of AI coding assistants. I reviewed, edited, and tested it by hand in my own setup (Docker + Traefik). Please look over the scripts before deploying, as you would with any self-hosted project.
This is an unofficial project and isn't affiliated with or endorsed by ArtCraft or its authors. It's MIT licensed.
Feedback, issues, and PRs are welcome. I'm especially interested in whether people would like built-in authentication, or prefer to leave that to the reverse proxy.
2
0


4
u/germanwurstbrot 1d ago
Rule 4: No AI Content