mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-05-07 00:01:51 +00:00
58 lines
2.7 KiB
Docker
58 lines
2.7 KiB
Docker
# syntax=docker/dockerfile:1
|
|
#
|
|
# Self-hosted LiveSync WebPeer — Docker image
|
|
# Browser-based P2P peer daemon served by nginx.
|
|
#
|
|
# Build (from the repository root):
|
|
# docker build -f src/apps/webpeer/Dockerfile -t livesync-webpeer .
|
|
#
|
|
# Run:
|
|
# docker run --rm -p 8081:80 livesync-webpeer
|
|
# Then open http://localhost:8081/ in any modern browser.
|
|
#
|
|
# What is WebPeer?
|
|
# WebPeer acts as a pseudo P2P peer that runs entirely in the browser.
|
|
# It can replace a CouchDB remote server by replying to sync requests from
|
|
# other Self-hosted LiveSync instances over the WebRTC P2P channel.
|
|
#
|
|
# P2P (WebRTC) networking notes
|
|
# ─────────────────────────────
|
|
# WebRTC connections are initiated by the *browser* visiting this page, not by
|
|
# the nginx container itself. Therefore the Docker network mode of this
|
|
# container has NO effect on WebRTC connectivity.
|
|
# Simply publish port 80 (as above) and the browser handles all ICE/STUN/TURN
|
|
# negotiation on its own.
|
|
#
|
|
# If the browser is running inside another container or a restricted network,
|
|
# configuring a TURN server in the WebPeer settings is recommended.
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Stage 1 — builder
|
|
# Full Node.js environment to install dependencies and build the Vite bundle.
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
FROM node:22-slim AS builder
|
|
|
|
WORKDIR /build
|
|
|
|
# Install workspace dependencies (all apps share the root package.json)
|
|
COPY package.json ./
|
|
RUN npm install
|
|
|
|
# Copy the full source tree and build the WebPeer bundle
|
|
COPY . .
|
|
RUN cd src/apps/webpeer && npm run build
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Stage 2 — runtime
|
|
# Minimal nginx image that serves the static build output.
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
FROM nginx:stable-alpine
|
|
|
|
# Remove the default nginx welcome page
|
|
RUN rm -rf /usr/share/nginx/html/*
|
|
|
|
# Copy the built static assets
|
|
COPY --from=builder /build/src/apps/webpeer/dist /usr/share/nginx/html
|
|
|
|
EXPOSE 80
|