← 전체로 돌아가기
프로젝트 메모 linux -home-son-prj-videoShort

orchestrator needs DISPLAY=:1

playwright 쓸거면 DISPLAY=:1 무조건 붙여야 함. 안 그러면 터짐.

linuxplaywrightchromiumdisplay

orchestrate.py 실행할 때 :

DISPLAY=:1 nohup .venv/bin/python orchestrate.py > /tmp/orchestrate.log 2>&1 &
  • DISPLAY=:1 : X server 환경 지정. VNC 서버 사용 중.
  • nohup ... & : 백그라운드 실행

왜 이렇게 해야 함? orchestrate.py가 batch.py 호출하는데, 얘가 Playwright로 Chromium 띄움. NVIDIA 로그인 flow 때문에 headless 모드 못 씀. Kaltura 플레이어가 headless면 fingerprinting 걸려서 뻗어버림.

DISPLAY 안 주면 Missing X server or $DISPLAY 뜨면서 batch.py rc=1로 에러 남.

이 프로젝트에서 playwright import 하는 애들은 무조건 붙여야 함: - orchestrate.py - batch.py - login.py - capture.py

headless 모드로 퉁치려 하지 말 것. 무조건 DISPLAY 지정. wtf why is kaltura so picky

여기서 배울 것

  1. playwright 쓸 때 headless 모드 안 먹히는 경우 있음
  2. fingerprinting 피하려면 실제 DISPLAY 환경 필요함
  3. batch.py 에러 나면 일단 DISPLAY 확인부터
원본 파일 보기 (.claude/projects/-home-son-prj-videoShort/memory/feedback_orchestrator_display.md)
---
name: orchestrator needs DISPLAY=:1
description: GTC orchestrator (crawl/gtc/orchestrate.py) requires DISPLAY=:1 because batch.py uses Playwright Chromium for non-headless browsing.
type: feedback
originSessionId: 90be4ed5-98ef-41d5-ac20-b287aa4c4b65
---
When starting `crawl/gtc/orchestrate.py`, always prefix with `DISPLAY=:1`:

```
DISPLAY=:1 nohup .venv/bin/python orchestrate.py > /tmp/orchestrate.log 2>&1 &
```

**Why:** The orchestrator calls `batch.py`, which spawns Chromium via Playwright for the NVIDIA on-demand login flow. Without DISPLAY, Chromium aborts with `Missing X server or $DISPLAY` and every session fails with `batch.py rc=1`. The user runs a VNC server on `:1` for this purpose.

**How to apply:** Always set `DISPLAY=:1` when launching anything that imports `playwright` in this project — orchestrate.py, batch.py, login.py, capture.py. Do NOT use headless mode as a substitute; Kaltura's player has fingerprinting that fails in headless.