openvibers/openvibe.actor Dockerfile
Dockerfile
| 1 | # A self-hosted OpenVibe.Actor (docs/self-host.md): one process, PGlite in /data unless DATABASE_URL is set. |
| 2 | # npm run selfhost:init -- --name you --url http://localhost:4950 (writes .env.selfhost) |
| 3 | # docker compose -f docker-compose.selfhost.yml up -d |
| 4 | FROM node:22-bookworm-slim |
| 5 | WORKDIR /app |
| 6 | # pdftotext reads the text of PDFs attached in the chat (server/tasks/inputs.js). |
| 7 | RUN apt-get update && apt-get install -y --no-install-recommends poppler-utils && rm -rf /var/lib/apt/lists/* |
| 8 | COPY package.json package-lock.json ./ |
| 9 | RUN npm ci --omit=dev --ignore-scripts && npm cache clean --force |
| 10 | COPY server ./server |
| 11 | COPY public ./public |
| 12 | COPY migrations ./migrations |
| 13 | COPY scripts ./scripts |
| 14 | COPY STATUS.json ./ |
| 15 | RUN mkdir -p /data && chown node:node /data |
| 16 | ENV NODE_ENV=production HOST=0.0.0.0 PORT=4950 DATA_DIR=/data ACTOR_SELF_HOSTED=1 |
| 17 | VOLUME /data |
| 18 | EXPOSE 4950 |
| 19 | USER node |
| 20 | HEALTHCHECK --interval=30s --timeout=5s --start-period=20s CMD node -e "fetch('http://127.0.0.1:4950/api/health').then((r)=>process.exit(r.ok?0:1),()=>process.exit(1))" |
| 21 | CMD ["node", "server/index.js"] |
| 22 |