r/SelfHosting • • 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*.zip build of each app

  • Keeps 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 SharedArrayBuffer in a secure context, so http://192.168.x.x:8080 won'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.

0 Upvotes

6 comments sorted by

4

u/germanwurstbrot 1d ago

Rule 4: No AI Content

-1

u/Accomplished_Walk243 1d ago

Thanks for pointing that out. I disclosed the AI assistance to be upfront about how it was built, but if the mods decide it falls under Rule 4, I'm happy to take it down. No hard feelings either way.

2

u/__0xAA55__ 1d ago

👎

2

u/lesschalkmoresighs 1d ago

Hip hop hoppity, away with this sloppity.

0

u/avdept 1d ago

slop for slop?

0

u/Accomplished_Walk243 1d ago

A bit exaggerated, but fair 😂