# KPAA UI Space — Open WebUI pointing to KPAA Backend Space. # # Open WebUI 공식 이미지를 그대로 쓰되 HF Spaces 정책(UID 1000 + writable /app)에 # 맞추기 위해 chown + 필수 env 추가. FROM ghcr.io/open-webui/open-webui:main # ─── Backend wiring ────────────────────────────────────────────────────── ENV OPENAI_API_BASE_URLS="https://scvcoder-kpaa.hf.space/v1" ENV OPENAI_API_KEYS="hf-spaces-internal" ENV ENABLE_OLLAMA_API=false ENV WEBUI_NAME="KPAA — 개인정보보호법 상담" # 백엔드의 default preset (`gemma-4-e2b-q4`) 과 동일해야 Open WebUI 자동 선택. # 사용자가 dropdown 에서 다른 프리셋을 고르면 백엔드의 ModelManager 가 자동 전환. ENV DEFAULT_MODELS="개인정보 상담 AI(gemma-4-e2b-q4)" ENV WEBUI_AUTH=false # ─── HF Spaces / UID 1000 권한 정리 ─────────────────────────────────────── USER root RUN chown -R 1000:1000 /app && \ mkdir -p /tmp/openwebui-data && \ chown -R 1000:1000 /tmp/openwebui-data ENV DATA_DIR=/tmp/openwebui-data # ─── Inject route-change postMessage script into Open WebUI HTML ───────── # Cross-origin iframe 정책상 부모 창은 자식의 URL 변경을 감지할 수 없다. # Open WebUI HTML 에 작은 polling 스크립트를 주입해서 location.pathname # 변경 시 부모 창에 postMessage 로 알린다. 백엔드 Space 의 split HTML 이 # 이 메시지를 받으면 우측 참고자료를 자동 초기화. RUN sh -c "for f in /app/build/index.html /app/backend/open_webui/static/index.html; do \ if [ -f \"\$f\" ]; then \ sed -i 's|||' \"\$f\"; \ echo \"injected into: \$f\"; \ fi; \ done" USER 1000 # Open WebUI listens on 8080 by default. ENV PORT=8080 EXPOSE 8080