Add MrTerm Web: self-hosted browser version (Docker Compose) with user accounts, per-user vaults encrypted by the login password, the desktop UI over WebSocket, SFTP upload/download over HTTP; share backend channels between Android and web (src/core/backend.js)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+29
@@ -0,0 +1,29 @@
|
||||
# MrTerm Web – die MrTerm-Oberfläche im Browser, selbst gehostet.
|
||||
# docker compose up -d → http://<server>:8080 (beim ersten Aufruf Admin-Konto anlegen)
|
||||
|
||||
# ---- Build: Server samt ssh2/ws in eine Datei bündeln
|
||||
FROM node:22-alpine AS build
|
||||
WORKDIR /src
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci --ignore-scripts --no-audit --no-fund
|
||||
COPY src ./src
|
||||
RUN npx esbuild src/web/server.js --bundle --platform=node --target=node22 --minify --legal-comments=none \
|
||||
--external:electron --external:cpu-features --external:bufferutil --external:utf-8-validate \
|
||||
--outfile=dist/server.js
|
||||
|
||||
# ---- Laufzeit: nur Node, gebündelter Server und die Dateien der Oberfläche
|
||||
FROM node:22-alpine
|
||||
ENV NODE_ENV=production PORT=8080 DATA_DIR=/data MRTERM_ROOT=/app
|
||||
WORKDIR /app
|
||||
COPY package.json ./
|
||||
COPY --from=build /src/dist/server.js dist/server.js
|
||||
COPY src/i18n.js src/i18n.js
|
||||
COPY src/renderer src/renderer
|
||||
COPY src/web/public src/web/public
|
||||
COPY --from=build /src/node_modules/@xterm node_modules/@xterm
|
||||
RUN mkdir -p /data && chown node:node /data
|
||||
USER node
|
||||
VOLUME /data
|
||||
EXPOSE 8080
|
||||
HEALTHCHECK --interval=30s --timeout=5s CMD wget -qO- http://127.0.0.1:8080/healthz >/dev/null || exit 1
|
||||
CMD ["node", "dist/server.js"]
|
||||
Reference in New Issue
Block a user