2026-05-23 21:56:44 +00:00
|
|
|
# BetterFrame server — BSB container with built plugins.
|
|
|
|
|
#
|
|
|
|
|
# sec-config.yaml is NOT baked in — mount it at runtime:
|
|
|
|
|
# volumes:
|
|
|
|
|
# - ./sec-config.yaml:/app/sec-config.yaml:ro
|
|
|
|
|
#
|
|
|
|
|
# Builder stage compiles TS + native deps (argon2).
|
|
|
|
|
# Runtime stage uses the official BSB container.
|
|
|
|
|
|
2026-05-21 06:51:41 +00:00
|
|
|
FROM node:24-trixie-slim AS builder
|
2026-05-10 20:45:56 +00:00
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
2026-05-22 17:30:18 +00:00
|
|
|
build-essential python3 \
|
2026-05-10 20:45:56 +00:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
|
|
|
|
COPY package.json package-lock.json ./
|
|
|
|
|
COPY server/package.json ./server/
|
|
|
|
|
COPY tsconfig.base.json ./
|
2026-05-12 23:32:25 +00:00
|
|
|
RUN npm ci && npm rebuild argon2
|
2026-05-10 20:45:56 +00:00
|
|
|
|
|
|
|
|
COPY server ./server
|
|
|
|
|
|
2026-05-12 23:32:25 +00:00
|
|
|
WORKDIR /app/server
|
|
|
|
|
RUN npm run build
|
|
|
|
|
|
2026-05-23 21:56:44 +00:00
|
|
|
# ---- Runtime ----
|
|
|
|
|
FROM betterweb/service-base:node
|
2026-05-21 06:51:41 +00:00
|
|
|
|
2026-05-22 17:30:18 +00:00
|
|
|
ARG BF_SERVER_VERSION=dev
|
|
|
|
|
|
2026-05-23 21:56:44 +00:00
|
|
|
USER root
|
|
|
|
|
|
|
|
|
|
# ffmpeg for camera snapshot capture
|
2026-05-10 20:45:56 +00:00
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
2026-05-23 21:56:44 +00:00
|
|
|
ffmpeg \
|
2026-05-10 20:45:56 +00:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
2026-05-23 21:56:44 +00:00
|
|
|
RUN mkdir -p /var/lib/betterframe && chown node:node /var/lib/betterframe
|
2026-05-10 20:45:56 +00:00
|
|
|
|
2026-05-23 21:58:36 +00:00
|
|
|
WORKDIR /home/bsb
|
2026-05-10 20:45:56 +00:00
|
|
|
|
2026-05-23 21:56:44 +00:00
|
|
|
# Copy built plugin + deps
|
2026-05-10 20:45:56 +00:00
|
|
|
COPY --from=builder /app/node_modules ./node_modules
|
2026-05-23 21:56:44 +00:00
|
|
|
COPY --from=builder /app/server/lib ./lib
|
|
|
|
|
COPY --from=builder /app/server/bsb-plugin.json ./bsb-plugin.json
|
|
|
|
|
COPY --from=builder /app/server/package.json ./package.json
|
|
|
|
|
COPY --from=builder /app/tsconfig.base.json ./tsconfig.base.json
|
2026-05-10 20:45:56 +00:00
|
|
|
|
2026-05-23 21:56:44 +00:00
|
|
|
# Static web assets served by admin-http
|
|
|
|
|
COPY --from=builder /app/server/lib/web-static ./lib/web-static
|
2026-05-18 10:18:46 +00:00
|
|
|
|
2026-05-23 21:56:44 +00:00
|
|
|
# Bake version
|
2026-05-23 21:58:36 +00:00
|
|
|
RUN echo "$BF_SERVER_VERSION" > /home/bsb/.bf-version
|
2026-05-22 17:30:18 +00:00
|
|
|
|
2026-05-10 20:45:56 +00:00
|
|
|
VOLUME /var/lib/betterframe
|
|
|
|
|
|
|
|
|
|
EXPOSE 18080 18081 18082
|
|
|
|
|
|
2026-05-23 21:56:44 +00:00
|
|
|
USER node
|