docs(slicer-api): switch sidecar to pre-built images on GHCR + Docker Hub (#1657)

Local build via Docker git context required `git` in the BuildKit worker,
  which QNAP Container Station and Synology DSM don't provide. Both sidecar
  images are now published to ghcr.io/maziggy/{orca-slicer-api,bambu-studio-api}
  and docker.io/maziggy/{orca-slicer-api,bambu-studio-api}; compose pulls
  :latest by default, SIDECAR_TAG=bambuddy-X.Y.Z pins per release.

  Wiki, slicer-api README, .env.example, and CHANGELOG aligned. Build-from-source
  path kept under "Building from source (advanced)" for forks / dev work.

  Both images are linux/amd64 only — OrcaSlicer ARM64 on hold pending upstream
  fix; BambuStudio doesn't publish ARM64.
This commit is contained in:
maziggy
2026-06-06 13:06:45 +02:00
parent f243e4e598
commit b362f159ac
7 changed files with 138 additions and 46 deletions
+6 -4
View File
@@ -6,7 +6,9 @@
ORCA_API_PORT=3003
BAMBU_API_PORT=3001
# Slicer versions. Pinned for reproducibility — bump these when you want
# a newer slicer and accept a fresh ~220 MB BambuStudio download.
ORCA_VERSION=2.3.2
BAMBU_VERSION=02.07.01.57
# Sidecar image tag. Default is `latest` (current stable release).
# Pinning options:
# bambuddy-X.Y.Z pin to the sidecar image that shipped with Bambuddy X.Y.Z
# (e.g. SIDECAR_TAG=bambuddy-0.2.5)
# daily track the bambuddy:daily channel
SIDECAR_TAG=latest
+35 -21
View File
@@ -16,7 +16,7 @@ Enable the API path by:
```bash
cd slicer-api/
cp .env.example .env # edit ports / versions if you like
cp .env.example .env # edit ports if you like
# OrcaSlicer only (default profile):
docker compose up -d
@@ -28,9 +28,15 @@ curl http://localhost:3001/health # bambu-studio-api
curl http://localhost:3003/health # orca-slicer-api
```
First build downloads the slicer's AppImage (~110 MB OrcaSlicer, ~220 MB
BambuStudio) and compiles the Node wrapper. Takes 3–8 minutes per service.
Subsequent runs reuse the local image — instant start.
First start pulls pre-built images from GHCR (~110 MB OrcaSlicer,
~220 MB BambuStudio). No local build, no git in the BuildKit worker,
works on QNAP / Synology / Container Station out of the box.
Both images are `linux/amd64` only. OrcaSlicer's ARM64 build is on hold
pending an upstream extraction fix; BambuStudio doesn't publish ARM64
at all. For ARM64 hosts (Raspberry Pi 4/5, Apple Silicon Linux), run
the sidecar on a separate x86_64 box and point Bambuddy at it via the
**Sidecar URL** field — the sidecar doesn't need to live next to Bambuddy.
## Ports
@@ -55,32 +61,40 @@ In the Bambuddy UI: **Settings → Slicer**:
Leaving the URL field blank uses the `SLICER_API_URL` /
`BAMBU_STUDIO_API_URL` environment defaults from Bambuddy's config.
## Where the source lives
## Where the images live
Both images build from the
Pre-built images are published to two registries on every Bambuddy
stable release:
- `ghcr.io/maziggy/orca-slicer-api:latest` / `docker.io/maziggy/orca-slicer-api:latest`
- `ghcr.io/maziggy/bambu-studio-api:latest` / `docker.io/maziggy/bambu-studio-api:latest`
Each release also publishes a versioned tag (`:bambuddy-X.Y.Z`) so you
can pin to the sidecar that shipped alongside a specific Bambuddy
release — set `SIDECAR_TAG=bambuddy-0.2.5` in `.env`.
Both images are built from the
[`maziggy/orca-slicer-api`](https://github.com/maziggy/orca-slicer-api)
fork (`bambuddy/profile-resolver` branch). The Compose file uses
Docker's git build context, so you don't need to clone it manually —
Docker pulls the repo at build time.
The fork patches AFKFelix's upstream wrapper with the `inherits:`
chain resolver, `from: "User"` → `"system"` rewrite, `# ` clone-prefix
strip, and sentinel-value strip — all empirically required to slice
real GUI exports without segfaulting the CLI. Once those land
upstream, this Compose file can be flipped to pull from
`ghcr.io/afkfelix/orca-slicer-api` directly.
fork (`bambuddy/profile-resolver` branch). The fork patches AFKFelix's
upstream wrapper with the `inherits:` chain resolver, `from: "User"`
→ `"system"` rewrite, `# ` clone-prefix strip, and sentinel-value
strip — all empirically required to slice real GUI exports without
segfaulting the CLI. Once those land upstream, the compose file can be
flipped back to `ghcr.io/afkfelix/orca-slicer-api`.
## Updating
Bump the versions in `.env`, then:
```bash
docker compose --profile bambu build --no-cache
docker compose pull
docker compose --profile bambu up -d
```
`--no-cache` is needed because the Dockerfile downloads the AppImage
inline; Docker won't re-fetch it on a version change otherwise.
That's it — Compose pulls the current `:latest` (or whatever
`SIDECAR_TAG` you've pinned to) and recreates the containers.
To roll back to the sidecar that shipped with a previous Bambuddy
release, set `SIDECAR_TAG=bambuddy-X.Y.Z` in `.env` and re-run the two
commands above.
## Troubleshooting
+9 -15
View File
@@ -17,18 +17,17 @@
# docker compose up -d # starts OrcaSlicer only
# docker compose --profile bambu up -d # starts both
#
# First build pulls the source from the fork over git (~5 min — downloads
# the BambuStudio AppImage, ~220 MB) and caches the image locally.
# Subsequent runs reuse the cache. Pin the slicer versions via .env.
# First start pulls pre-built images from GHCR (~110 MB OrcaSlicer,
# ~220 MB BambuStudio). No local build, no git in the BuildKit worker,
# works on QNAP / Synology / Container Station out of the box.
#
# Both images are linux/amd64 only. OrcaSlicer's ARM64 path is on hold
# pending an upstream extraction fix; BambuStudio doesn't publish ARM64
# at all.
services:
orca-slicer-api:
build:
context: https://github.com/maziggy/orca-slicer-api.git#bambuddy/profile-resolver
dockerfile: Dockerfile
args:
ORCA_VERSION: "${ORCA_VERSION:-2.3.2}"
image: bambuddy-orca-slicer-api:orca${ORCA_VERSION:-2.3.2}
image: ghcr.io/maziggy/orca-slicer-api:${SIDECAR_TAG:-latest}
container_name: orca-slicer-api
restart: unless-stopped
ports:
@@ -46,12 +45,7 @@ services:
retries: 3
bambu-studio-api:
build:
context: https://github.com/maziggy/orca-slicer-api.git#bambuddy/profile-resolver
dockerfile: Dockerfile.bambu-studio
args:
BAMBU_VERSION: "${BAMBU_VERSION:-02.07.01.57}"
image: bambuddy-bambu-studio-api:bambu${BAMBU_VERSION:-02.07.01.57}
image: ghcr.io/maziggy/bambu-studio-api:${SIDECAR_TAG:-latest}
container_name: bambu-studio-api
restart: unless-stopped
ports: