> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# VNC를 사용한 네이티브 그래픽 스트리밍

> Replit은 가상 네트워크 컴퓨팅(VNC) 기능을 제공합니다. VNC는 Replit 앱이 네이티브 데스크톱을 웹 브라우저로 스트리밍할 수 있게 해주는 성숙한 가상 데스크톱 프로토콜입니다. 이 프로토콜을 통해 (Python, Java, C++ 등으로 개발된) 네이티브 애플리케이션이 실제 컴퓨터에서처럼 데스크톱 창을 열 수 있습니다.

이 스트리밍 기술을 사용하면 모든 기기의 브라우저에서 레거시 애플리케이션을 사용할 수 있습니다! 예를 들어, 기존 코드를 수정하지 않고도 데스크톱용으로 설계된 Python 게임을 모바일 폰이나 태블릿에서 바로 실행할 수 있습니다.

<a href="https://replit.com/@demcrepl/Tetris-in-Pygame" target="_blank">Tetris (PyGame 기반)</a>

<img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/tetris.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=ddf138f52d698a6baa7532ad74e88492" alt="Replit 앱에서 Tetris 이미지" width="2055" height="1057" data-path="images/vnc/tetris.png" />

## VNC 사용 방법

모든 Replit 앱은 어떤 언어에서든 가상 데스크톱을 사용할 수 있습니다. Replit에서 네이티브 그래픽 프로그램을 실행하는 데 별도의 변경이 필요하지 않습니다. 애플리케이션이 네이티브 데스크톱 창을 열려고 시도하면 VNC 패널이 자동으로 나타납니다.

## Replit 앱 보안 설정

기본적으로 VNC 연결에는 비밀번호가 없으며, WebSocket 인증에 의존하기 때문에 [https://replit.com에서만](https://replit.com에서만) 접근할 수 있습니다. 외부 [noVNC](https://novnc.com) 클라이언트를 통해 Replit 앱에 접근해야 하는 경우 VNC 비밀번호를 설정할 수 있습니다.

Replit 앱 [시크릿](/ko/core-concepts/project-editor/app-setup/secrets) 설정에서 비밀번호를 설정하세요. `Secrets`는 다른 사용자가 비밀번호에 접근할 걱정 없이 안전하게 저장하는 공간입니다. `VNC_PASSWORD`를 설정하면 원격으로 연결할 때 보안이 강화됩니다.

## 전체 화면 VNC 사용 방법

다음 단계를 진행하려면 위의 지침에 따라 Replit 앱을 보안 설정해야 합니다.

1. "Shell" 탭에서 다음 명령어를 실행합니다:
   ```sh theme={null}
   echo $REPL_ID
   ```

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/replid.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=45fcde093041183e77ba334b780e69ed" alt="echo 명령어를 보여주는 이미지" width="628" height="174" data-path="images/vnc/replid.png" />
</Frame>

2. 위 출력 결과에서 `REPL_ID`를 교체하여 연결 URL을 구성합니다: `<\REPL_ID\>.id.repl.co`
3. 별도의 브라우저 탭에서 [noVNC 클라이언트](https://novnc.com/noVNC/vnc.html)를 엽니다.
4. 연결 설정을 엽니다.

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/settings.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=1f46fa987102bf1bb95ea027d6b3f43d" alt="연결 설정 열기" width="126" height="302" data-path="images/vnc/settings.png" />
</Frame>

5. WebSockets 필드를 확장합니다. `host` 필드에 연결 URL(`\<REPL_ID\>.id.repl.co`)을 입력하고 `path` 필드는 비워둡니다.

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/host.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=e1a6420a7573bb6f0e7a327ecd89b60d" alt="host" width="214" height="230" data-path="images/vnc/host.png" />
</Frame>

6. `Scaling Mode`를 `Remote Resizing`으로 변경합니다:

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/scaling.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=cc7bcd3ec3d8c5cf801d537eef6a2b16" alt="scaling" width="147" height="74" data-path="images/vnc/scaling.png" />
</Frame>

7. 자격 증명을 묻는 경우 `runner` 사용자 이름과 위에서 설정한 비밀번호를 사용합니다.

## 예시

* <a href="https://replit.com/@demcrepl/Tetris-in-Pygame" target="_blank">PyGame</a>
* <a href="https://replit.com/@amasad-matplotlib" target="_blank">Python matplotlib</a>
* <a href="https://replit.com/@sigcse2021/Game-of-Life-demcrepl" target="_blank">Java Processing</a>
