Gå til hovedinnhold

Docker-oppsett

3DPrintForge inkluderer en Dockerfile og docker-compose.yml for enkel containerisering.

Hurtigstart​

Krav: Docker Engine 20.10+ og Docker Compose v2 (docker compose version).

git clone https://github.com/skynett81/3dprintforge.git
cd 3dprintforge
cp config.example.json config.json # rediger med printeren din
docker compose up -d --build

Første bygg tar noen minutter (Node-image + npm ci). Deretter:

docker compose logs -f # følg oppstarten
docker compose ps # status og helsesjekk
docker compose down # stopp stacken

Åpne https://localhost:3443 i nettleseren (HTTP på port 3000 videresender dit). Sertifikatet er selvsignert første gang, så nettleseren advarer — det er forventet.

:::tip Prøv uten printer Sett BAMBU_DEMO=true under environment: i docker-compose.yml for å starte med tre simulerte printere. Da kan du klikke gjennom hele grensesnittet uten maskinvare. :::

:::warning config.json må finnes før første start docker-compose.yml monterer ./config.json som en fil. Finnes den ikke, lager Docker en mappe med det navnet og serveren nekter å starte. Kopier config.example.json først. :::

docker-compose.yml​

services:
3dprintforge:
build: .
container_name: 3dprintforge
network_mode: host
restart: unless-stopped
volumes:
- ./config.json:/app/config.json
- ./data:/app/data
- ./certs:/app/certs
environment:
- NODE_ENV=production

:::warning network_mode: host network_mode: host er anbefalt for at containeren skal nå printeren på lokalt nettverk via MQTT. Uten dette kan MQTT-tilkoblingen feile avhengig av nettverkskonfigurasjonen. :::

Dockerfile​

FROM node:22-slim

RUN apt-get update && \
apt-get install -y --no-install-recommends ffmpeg openssl && \
rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY package*.json ./
RUN npm ci --omit=dev

COPY . .

RUN mkdir -p data data/uploads data/library data/model-cache data/history-models data/toolpath-cache certs

EXPOSE 3000 3443 9001-9010

HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
CMD node -e "fetch('http://localhost:3000/api/health').then(r=>{if(!r.ok&&r.status!==301)throw new Error();process.exit(0)}).catch(()=>process.exit(1))"

CMD ["node", "server/index.js"]

Volumer​

Verts-stiContainer-stiInnhold
./config.json/app/config.jsonPrintere, porter og serverinnstillinger
./data/app/dataSQLite-database (dashboard.db), opplastinger, bibliotek, sikkerhetskopier
./certs/app/certsSSL-sertifikater (genereres automatisk hvis mappen er tom)

:::tip Persistent data Monter alltid ./data-volumet. Uten dette vil all data gå tapt når containeren restarter. :::

Miljøvariabler​

VariabelStandardBeskrivelse
NODE_ENVproductionMiljø
PORT / SERVER_PORT3000HTTP-port (overstyrer server.port i config.json)
LOG_LEVELinfoLoggnivå (debug, info, warn, error)
REQUIRE_AUTHfalseSett true for å kreve innlogging
BAMBU_AUTH_USERNAME—Brukernavn når innlogging er på
BAMBU_AUTH_PASSWORD—Passord når innlogging er på
BAMBU_DEMOfalseStart med simulerte printere

HTTPS-porten settes med server.httpsPort i config.json (standard 3443).

SSL-sertifikater i Docker​

Selvgenerert (standard)​

Ingen konfigurasjon nødvendig. Sertifikatet genereres automatisk ved første oppstart og lagres i det monterte ./certs-volumet.

Eget sertifikat​

volumes:
- ./mitt-cert.pem:/app/certs/cert.pem:ro
- ./min-nøkkel.pem:/app/certs/key.pem:ro

Administrasjon​

# Start
docker compose up -d

# Stopp
docker compose down

# Logg
docker compose logs -f

# Oppdater til ny versjon (imaget bygges lokalt, så det er `git pull` som henter koden)
git pull
docker compose up -d --build

# Sikkerhetskopi av databasen
cp data/dashboard.db backup-$(date +%Y%m%d).db

:::note docker compose pull gjør ingenting her docker-compose.yml bruker build: . — det finnes ikke noe ferdigbygd image å hente. Oppdater med git pull etterfulgt av docker compose up -d --build. :::

Helsestatus​

docker inspect --format='{{.State.Health.Status}}' 3dprintforge

Containeren rapporterer healthy når serveren er oppe og svarer på /api/health.