목차
요약
이 문서는 Ubuntu에서 T2Editor 9.1.0의 NSFWJS 브라우저 필터를 self-hosted 방식으로 배포할 때 필요한 운영 절차를 정리합니다. 기본 전제는 vendor/ 아래에 TensorFlow.js, backend 스크립트, NSFWJS, MobileNetV2Mid 모델을 직접 배치하는 것입니다.
설치 대상 예시
이 문서는 아래 설치 위치를 예시로 사용합니다.
text/var/www/html/plugin/editor/t2editor/
웹 경로는 보통 아래처럼 맞춰야 합니다.
phpdefine('T2EDITOR_URL', '/plugin/editor/t2editor');
준비
필요 패키지 예시:
bashsudo 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/
수동 설치 예시
bashsudo 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
모델 폴더는 배포 방식에 따라 수동 복사 또는 저장소에서 별도 수집해 배치합니다.
퍼미션 예시
bashsudo 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에서 아래 값이 실제 설치 위치와 맞는지 확인합니다.
phpdefine('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 폴백
- 모델 파일까지 포함한 정적 경로 검증