Files
debian a80fdd9053
Deploy PROD / deploy (push) Successful in 4m32s
Rozmycie tla wlasnej kamery
Przycisk w sali, ktory kazdy z wlasna kamera wlacza i wylacza sam,
w trakcie spotkania. Pokazuje sie wylacznie osobie z wlaczona kamera,
wiec uczestnik bez prawa publikacji obrazu nigdy go nie zobaczy.

`@livekit/track-processors` wchodzi jako nowa zaleznosc, poza lista
z CLAUDE.md: uzgodnione. Ladowany leniwie, bo ciagnie za soba MediaPipe:
import statyczny doliczalby kilka MB do pakietu KAZDEGO wejscia na sale,
takze uczestnikom bez kamery. Sprawdzone na zbudowanym pakiecie: MediaPipe
siedzi w osobnym chunku, glowny pakiet nie urosl.

Pliki modelu ida z WLASNEJ domeny, nie z CDN: instancja w sieci zamknietej
ma miec rozmycie tak samo, a CSP nie musi dopuszczac obcych hostow.
Model (244 kB) lezy w repozytorium, a zestaw WASM kopiuje sie przy budowaniu
obrazu z `node_modules`: wazy kilkanascie MB i musi odpowiadac wersji
pakietu, wiec w repozytorium puchlby w historii i po cichu rozjezdzal sie
przy kazdej aktualizacji.

Podmiany tla na obraz swiadomie NIE ma. Segmentacja obcina wlosy i dlonie
przy slabym swietle, a kafelek wideo jest za maly, zeby cokolwiek na tle
bylo czytelne. Reklama ma wlasne miejsce w banerach, ktore sa przy tym
mierzone.

`VideoConference` zostaje nietkniety: przycisk jest obok, wiec aktualizacja
biblioteki nie wymaga odtwarzania niczego u nas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 09:45:07 +02:00

43 lines
1.5 KiB
Docker

# --- etap 1: build ---
FROM node:22-alpine AS build
WORKDIR /build
# najpierw manifesty, zeby warstwa z node_modules byla cache'owana
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
# frontend odpytuje backend przez wzgledny /api, ktory nginx proxuje dalej
ARG VITE_API_URL=/api
ENV VITE_API_URL=$VITE_API_URL
RUN npm run build
# Pliki MediaPipe do rozmycia tla, kopiowane Z ZAINSTALOWANEGO PAKIETU.
#
# DLACZEGO NIE Z REPOZYTORIUM
# ---------------------------------------------------------------------------
# Zestaw WASM wazy kilkanascie MB i musi odpowiadac wersji
# `@mediapipe/tasks-vision` wciagnietej przez `@livekit/track-processors`.
# Wrzucony do repozytorium puchlby w historii na zawsze, a przy aktualizacji
# pakietu rozjezdzalby sie po cichu: rozmycie przestaje dzialac, a nic tego
# nie sygnalizuje. Kopiowanie przy budowaniu wiaze pliki z wersja pakietu.
#
# DLACZEGO NIE Z CDN
# ---------------------------------------------------------------------------
# Domyslnie biblioteka pobiera je z jsdelivr i storage.googleapis.com.
# Instancja w sieci zamknietej nie miałaby wtedy rozmycia wcale, a CSP
# musialoby dopuszczac dwa obce hosty. Serwowanie z wlasnej domeny miesci sie
# w istniejacym `connect-src 'self'`.
RUN mkdir -p /build/dist/mediapipe && cp -r node_modules/@mediapipe/tasks-vision/wasm /build/dist/mediapipe/wasm
# --- etap 2: runtime ---
FROM nginx:1.27-alpine
COPY --from=build /build/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]