Files
OFApp/Dockerfile
Trey T 236f36aae6 Add app auth, dashboard, scheduler, video management, and new scrapers
- JWT-based app authentication with user roles, folder/route access control
- Dashboard with storage stats, health checks, and recent activity
- Auto-download/scrape scheduler (12h interval) with per-user and per-job configs
- Video upload, tagging, HLS transcoding, and detail pages
- New scrapers: LeakGallery, Mega (megajs), yt-dlp
- FlareSolverr integration for Cloudflare-protected sites
- Gallery: advanced filtering (date, size, search), sort modes, equal-mix shuffle
- Forum sites management with stored cookies/auth
- GridWall/GridCell components for responsive media grid
- Media API with folder-access permissions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 07:48:10 -05:00

29 lines
869 B
Docker

# Stage 1 — Build client
FROM node:20-alpine AS builder
WORKDIR /app
COPY client/package*.json ./client/
RUN cd client && npm install
COPY client/ ./client/
RUN cd client && npm run build
# Stage 2 — Production
FROM node:20-alpine
RUN apk add --no-cache ffmpeg openssl python3 py3-pip intel-media-driver \
chromium chromium-chromedriver nss freetype harfbuzz ca-certificates ttf-freefont \
xvfb-run xorg-server xf86-video-dummy \
&& pip3 install --break-system-packages pywidevine yt-dlp gallery-dl \
selenium undetected-chromedriver
WORKDIR /app
COPY server/package*.json ./server/
RUN cd server && npm install --production
COPY server/ ./server/
COPY --from=builder /app/client/dist ./client/dist
ENV PORT=3001
ENV DB_PATH=/data/db/ofapp.db
ENV MEDIA_PATH=/data/media
ENV DOWNLOAD_DELAY=1000
EXPOSE 3001 3443
CMD ["node", "server/index.js"]