Positive-Influence-Data

[Streamlit] Colab에서 Streamlit 연결하기 본문

Library

[Streamlit] Colab에서 Streamlit 연결하기

DS쟁이 2025. 5. 29. 21:31

Streamlit을 쓰다 보면 AI모델을 올리려면 GPU를 써야 할 때가 있는데 GPU가 있는 로컬에서 작업하다가 다른 곳으로 옮겨 작업하면 GPU 성능차이 및 GPU가 없는 경우도 있어서 Colab을 기반으로 작업하는 게 더 나을 때가 있다.

이번에는 Streamlit을 Colab에서 실행해 보겠다.

🔍 왜 Colab에서 Streamlit을 실행하려고 할까?

Colab과 Streamlit은 각자 강력한 장점을 가지고 있다.

 

☁️ Colab의 장점

  • 무료로 GPU, TPU 제공
  • 따로 환경 설정 없이 즉시 실행 가능
  • 어디서나 접속 가능 (노트북, 태블릿, 모바일)
  • Gemini 등 최신 AI 도구 활용 가능

🧩 Streamlit의 장점

  • 몇 줄의 코드로 빠르게 웹앱 제작
  • 대시보드, 실험 결과 공유에 최적
  • 머신러닝/딥러닝 모델 데모 용도로 강력
위 두 장점을 결합하면 로컬에서 Streamlit 환경을 설치하거나 배포할 필요 없이 
Colab에서 직접 앱을 실행하고 외부에 공유할 수 있다.

📌 Colab에서 Streamlit을 연결하는 2가지 방법

필자가 직접 실험해 본 결과, Colab에서 Streamlit 앱을 외부에서 접속 가능하게 만드는 방법은 크게 두 가지가 있다.

  1. localtunnel을 이용한 방법 – 가장 간단하고 빠르게 앱을 열 수 있는 방식
  2. ngrok을 이용한 방법 – 보다 안정적인 연결과 다양한 기능 제공
항목 localtunnel ngrok
장점 - 설치/사용이 매우 간단
- 계정/인증 없이 바로 사용 가능
- npm만 있으면 바로 실행
- 빠른 테스트에 적합
- 안정적인 연결 제공
- 터널 속도 빠름
- 사용자 대시보드 제공
- 인증 토큰으로 관리 가능
- 무료 요금제에서도 괜찮은 퍼포먼스
⚠️ 단점 - 가끔 연결이 끊기거나 느려질 수 있음
- 지정된 서브도메인 사용 시 불안정
- 접속이 안 되는 경우 있음
- 계정 가입 및 인증 토큰 필요
- 무료 버전은 서브도메인 지정 불가
- 약간의 설정 필요
🔑 사용 조건 npm install localtunnel
명령어만 있으면 OK
pip install pyngrok + 인증 토큰 설정 필요
🌐 주소 형태 https://xxxx.loca.lt https://xxxx.ngrok.io
🎯 추천 상황 - 간단한 데모용
- 빠르게 앱을 외부에 공유할 때
- 신뢰성 있는 연결이 중요할 때
- 사용자에게 안정적으로 앱을 보여줘야 할 때

👉  위의 두 가지 방법을 각각 연결해 보겠다.

 

🔍 Colab에 localtunnel 연결

1. Colab에서 localtunnel을 설치한다.

!npm install -g localtunnel

 

2. Colab에 다음 셀에서 app.py파일을 생성한다.

%%writefile app.py
import streamlit as st

st.title("Hello World!")
st.write("코랩에서 실행중")

 

3. 그다음 셀에서 아래의 명령어를 쳐서 실행시킨다.

!streamlit run /content/app.py &>/content/logs.txt & npx localtunnel --port 8501 & curl ipv4.icanhazip.com

실행화면

👉  your url is 부분의 하이퍼링크 걸려있는 게 우리가 들어갈 링크이다.

패스워드 입력

👉  들어가면 패스워드를 입력하라고 하는데 입력창에 34.133.41.61 저 부분을 복사해서 붙여 넣으면 Streamlit에 들어가진다.

🔍 Colab에 ngrok 연결

1. Colab에서 ngrok를 설치한다.

!pip install pyngrok

 

2. ngrok 인증 토큰 설정

from pyngrok import ngrok

# 여기에 본인의 ngrok 토큰을 넣는다.
ngrok.set_auth_token("토큰")

👉 링크에서 가입을 하고 Token을 발급하고 토큰을 복사, ngrok.set_auth_token에 복사한 토큰을 넣어준다.

 

3. Colab에 다음 셀에서 app2.py파일을 생성한다.

%%writefile app2.py
import streamlit as st

st.title("Colab + ngrok + Streamlit")
st.write("ngrok으로 연결된 Colab에서 실행")

 

4. 그다음 셀에서 app2.py를 실행한다.

import os
import threading

def run():
    os.system('streamlit run app2.py')

threading.Thread(target=run).start()

📌 Colab에서는 Streamlit이 기본 셀을 점유하므로 threading을 통해 백그라운드에서 실행함.

 

5. ngrok에 연결하여 접속 url을 얻는다.

public_url = ngrok.connect(8501)
print(f"🌍 외부 접속 주소: {public_url}")

필자가 얻은 url

👉 url을 클릭하여 접속을 하게 되면 Streamlit이 실행된다.

💡 마무리

Colab의 GPU 환경은 머신러닝, 딥러닝, 또는 대용량 연산을 필요로 하는 AI 프로젝트에 매우 유용하다.

여기에 Streamlit을 결합하면 복잡한 설정 없이도 누구나 웹 기반 인터페이스를 통해 자신의 모델이나 데이터를 직관적으로 시각화하고 외부와 쉽게 공유할 수 있다.

이번 글에서 소개한 localtunnelngrok은 바로 그런 Streamlit 앱을 외부와 연결해 주는 브리지 역할을 한다.

  • 🔹 빠르게 데모하거나 테스트만 하고 싶다면 → localtunnel
    별도 가입 없이 npm install 한 줄이면 끝난다.
    간단한 테스트나 프로토타입 공개에 매우 적합하다.
  • 🔸 보다 안정적인 퍼포먼스와 보안을 원한다면 → ngrok
    사용자 대시보드 제공, 접속 관리 가능, 속도도 뛰어나다.
    특히 외부 사용자에게 데모를 공개하거나 프레젠테이션 시 안정성이 중요할 때 유리하다.

이제 Colab 환경만 있으면 웹 앱 개발, 모델 시각화, 데이터 데모를 누구보다 빠르게 공유할 수 있다.
개발 환경을 옮겨 다니면서도 일관된 GPU 성능을 유지하며 Streamlit을 쓰고 싶다면, Colab + localtunnel/ngrok 조합이 좋을 듯하다.

Comments