mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 17:56:34 +00:00
Deployment (deploy/): - systemd units for server (system) and kiosk (user session) - Angie/nginx proxy config — routes admin, api, ws, node-red - Dockerfile + docker-compose for containerized deployment - deploy/README.md with install instructions Auth: - /api/admin/_check endpoint for proxy auth_request subrequest - Returns 200 if admin session valid, 401/403 otherwise - Sets X-BetterFrame-User header for upstream CEC (Pi5 HDMI control): - kiosk/src/cec.rs wraps cec-ctl subprocess - Standby/wake/active-source commands - WS message types "standby" / "wake" dispatched to CEC - Admin UI: Wake/Standby buttons on kiosk edit page - Server sendToKiosk via coordinator
45 lines
1.2 KiB
Docker
45 lines
1.2 KiB
Docker
# BetterFrame server image — Node 23 + native deps for argon2/sqlite
|
|
FROM node:23-bookworm-slim AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Install build deps for argon2
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
build-essential python3 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY package.json package-lock.json ./
|
|
COPY server/package.json ./server/
|
|
COPY tsconfig.base.json ./
|
|
RUN npm ci --ignore-scripts && npm rebuild argon2
|
|
|
|
COPY server ./server
|
|
|
|
# ---- Runtime image ----
|
|
FROM node:23-bookworm-slim
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN useradd -m -d /var/lib/betterframe -s /bin/false betterframe
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /app/node_modules ./node_modules
|
|
COPY --from=builder /app/server ./server
|
|
COPY --from=builder /app/tsconfig.base.json ./
|
|
COPY --from=builder /app/package.json ./
|
|
|
|
# Default data dir
|
|
RUN mkdir -p /var/lib/betterframe && chown betterframe:betterframe /var/lib/betterframe
|
|
VOLUME /var/lib/betterframe
|
|
|
|
EXPOSE 18080 18081 18082
|
|
|
|
USER betterframe
|
|
WORKDIR /app/server
|
|
|
|
ENV NODE_OPTIONS=--import=tsx
|
|
|
|
CMD ["node", "--import", "tsx", "/app/node_modules/@bsb/base/lib/scripts/bsb-plugin-cli.js", "start"]
|