🔐로그인하면 문서 작성, 프로젝트 게시, ZIP 기반 버전 업로드, 브랜치 생성 기능을 사용할 수 있습니다. 로그인하러 가기

운영: Ubuntu에서 NSFWJS self-hosted + WebGPU 설치

Answer Summary

--- title: 운영: Ubuntu에서 NSFWJS self-hosted + WebGPU 설치 document_id: ops-nsfwjs-selfhost-webgpu-ubuntu slug: ops-nsfwjs-selfhost-webgpu-ubuntu target_editor_version: 9.1.0 document_…

브랜치 ⎇ main
리비전 r2
작성자 T2Editor
수정 2026.04.17
요약 고아링크삭제
md

#운영 #NSFW

요약

이 문서는 Ubuntu에서 T2Editor 9.1.0의 NSFWJS 브라우저 필터를 self-hosted 방식으로 배포할 때 필요한 운영 절차를 정리합니다. 기본 전제는 vendor/ 아래에 TensorFlow.js, backend 스크립트, NSFWJS, MobileNetV2Mid 모델을 직접 배치하는 것입니다.

설치 대상 예시

이 문서는 아래 설치 위치를 예시로 사용합니다.

text
/var/www/html/plugin/editor/t2editor/

웹 경로는 보통 아래처럼 맞춰야 합니다.

php
define('T2EDITOR_URL', '/plugin/editor/t2editor');

준비

필요 패키지 예시:

bash
sudo apt update sudo apt install -y curl git

권장 디렉터리 구조

text
/plugin/editor/t2editor/vendor/ tfjs/ tfjs-backend-webgl/ tfjs-backend-webgpu/ tfjs-backend-wasm/ nsfwjs/ nsfwjs/models/mobilenet_v2_mid/

수동 설치 예시

bash
sudo mkdir -p /var/www/html/plugin/editor/t2editor/vendor/{tfjs,tfjs-backend-webgl,tfjs-backend-webgpu,tfjs-backend-wasm,nsfwjs,nsfwjs/models} cd /var/www/html/plugin/editor/t2editor/vendor sudo curl -L https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@4.22.0/dist/tf.min.js \ -o tfjs/tf.min.js sudo curl -L https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-webgl@4.22.0/dist/tf-backend-webgl.min.js \ -o tfjs-backend-webgl/tf-backend-webgl.min.js sudo curl -L https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-webgpu@4.22.0/dist/tf-backend-webgpu.min.js \ -o tfjs-backend-webgpu/tf-backend-webgpu.min.js sudo curl -L https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@4.22.0/dist/tf-backend-wasm.min.js \ -o tfjs-backend-wasm/tf-backend-wasm.min.js sudo curl -L https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@4.22.0/dist/tfjs-backend-wasm.wasm \ -o tfjs-backend-wasm/tfjs-backend-wasm.wasm sudo curl -L https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@4.22.0/dist/tfjs-backend-wasm-simd.wasm \ -o tfjs-backend-wasm/tfjs-backend-wasm-simd.wasm sudo curl -L https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@4.22.0/dist/tfjs-backend-wasm-threaded-simd.wasm \ -o tfjs-backend-wasm/tfjs-backend-wasm-threaded-simd.wasm sudo curl -L https://cdn.jsdelivr.net/npm/nsfwjs@2.4.2/dist/nsfwjs.min.js \ -o nsfwjs/nsfwjs.min.js

모델 폴더는 배포 방식에 따라 수동 복사 또는 저장소에서 별도 수집해 배치합니다.

퍼미션 예시

bash
sudo chown -R www-data:www-data /var/www/html/plugin/editor/t2editor/vendor sudo find /var/www/html/plugin/editor/t2editor/vendor -type d -exec chmod 755 {} \; sudo find /var/www/html/plugin/editor/t2editor/vendor -type f -exec chmod 644 {} \;

설정 점검

editor.lib.php에서 아래 값이 실제 설치 위치와 맞는지 확인합니다.

php
define('T2EDITOR_URL', '/plugin/editor/t2editor'); define('T2_NSFW_RUNTIME_ASSET_BASE', T2EDITOR_URL . '/vendor'); define('T2_NSFW_BROWSER_MODEL', 'MobileNetV2Mid'); define('T2_NSFW_BROWSER_MODEL_TYPE', 'graph'); define('T2_NSFW_BROWSER_MODEL_URL', T2_NSFW_RUNTIME_ASSET_BASE . '/nsfwjs/models/mobilenet_v2_mid/model.json'); define('T2_NSFW_BROWSER_BACKEND_PRIORITY', 'webgpu,webgl,wasm,cpu');

동작 확인

아래 URL이 브라우저 또는 curl -I에서 200 응답이어야 합니다.

text
/plugin/editor/t2editor/vendor/tfjs/tf.min.js /plugin/editor/t2editor/vendor/tfjs-backend-webgpu/tf-backend-webgpu.min.js /plugin/editor/t2editor/vendor/tfjs-backend-wasm/tfjs-backend-wasm.wasm /plugin/editor/t2editor/vendor/nsfwjs/nsfwjs.min.js /plugin/editor/t2editor/vendor/nsfwjs/models/mobilenet_v2_mid/model.json

문제 해결

증상: 계속 loading만 보임

  • 모델 파일 또는 backend 스크립트가 404인지 확인
  • window.T2EDITOR_NSFW_RUNTIME_ASSETS가 올바른지 확인
  • 콘솔에서 import 오류가 없는지 확인

증상: WebGPU가 선택되지 않음

  • 브라우저가 WebGPU를 지원하는지 확인
  • WebGPU backend 스크립트가 실제로 로드되는지 확인
  • 너무 오래된 브라우저나 보안 정책 이슈가 없는지 확인

증상: WebGPU는 실패하고 CPU로만 감

  • webgl 또는 wasm 스크립트 누락 여부 확인
  • WASM 바이너리 3종이 모두 배치되었는지 확인
  • 폴백 순서 설정이 잘못되지 않았는지 확인
주의

운영에서 가장 흔한 실수는 “파일은 복사했는데 T2EDITOR_URL을 기존 기본값으로 둔 상태”입니다. 이 경우 파일이 서버에 있어도 브라우저는 전혀 다른 URL을 요청합니다.

수정 요약

이 문서가 다루는 9.1.0 운영 포인트는 아래와 같습니다.

  • CDN 의존이 아닌 self-hosted 구조
  • vendor 중심 정적 자산 배치
  • WebGPU 우선, WebGL/WASM/CPU 폴백
  • 모델 파일까지 포함한 정적 경로 검증
이 문서가 링크하는 문서 · 0
아직 내부 링크가 없습니다. 본문에 [[다른-문서]]를 넣으면 연결이 생깁니다.
백링크 · 0
아직 이 문서를 가리키는 다른 문서가 없습니다.
관련 문서
직접 연결된 관련 문서가 아직 없습니다.
문서 연결 지도

이 문서를 중심으로 들어오는 링크와 나가는 링크를 한 번에 볼 수 있습니다.

전체 보기
현재 문서 백링크 나가는 링크 양방향 연결
이 브랜치의 리비전
T2WIKI · 기술 통합 위키 & 프로젝트 허브 · 나무위키 + Markdown 완벽 지원 · SQLite · PHP 8.2 · 소개 · 문법 안내