일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 데이터분석
- streamlit
- 농림수산식품교육문화정보원
- 대시보드
- group by
- 스마트팜코리아
- join
- Python
- Programmers
- 스마트팜
- 웹앱
- cron과 crontab 차이
- 리눅스 자동화 스크립트
- Algorithm
- 농촌진흥청
- 인터랙티브 차트
- 공유
- ML
- cron 스케줄 설정
- 유사도
- 데이터
- 농정원
- SQL
- 생육
- DTW
- 시계열 시각화
- 주기적 실행
- solvesql
- 자동화
- 리눅스 crontab 사용법
- Today
- Total
Positive-Influence-Data
[Streamlit] Colab에서 Streamlit 연결하기 본문
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 앱을 외부에서 접속 가능하게 만드는 방법은 크게 두 가지가 있다.
- localtunnel을 이용한 방법 – 가장 간단하고 빠르게 앱을 열 수 있는 방식
- 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을 클릭하여 접속을 하게 되면 Streamlit이 실행된다.
💡 마무리
Colab의 GPU 환경은 머신러닝, 딥러닝, 또는 대용량 연산을 필요로 하는 AI 프로젝트에 매우 유용하다.
여기에 Streamlit을 결합하면 복잡한 설정 없이도 누구나 웹 기반 인터페이스를 통해 자신의 모델이나 데이터를 직관적으로 시각화하고 외부와 쉽게 공유할 수 있다.
이번 글에서 소개한 localtunnel과 ngrok은 바로 그런 Streamlit 앱을 외부와 연결해 주는 브리지 역할을 한다.
- 🔹 빠르게 데모하거나 테스트만 하고 싶다면 → localtunnel
별도 가입 없이 npm install 한 줄이면 끝난다.
간단한 테스트나 프로토타입 공개에 매우 적합하다. - 🔸 보다 안정적인 퍼포먼스와 보안을 원한다면 → ngrok
사용자 대시보드 제공, 접속 관리 가능, 속도도 뛰어나다.
특히 외부 사용자에게 데모를 공개하거나 프레젠테이션 시 안정성이 중요할 때 유리하다.
이제 Colab 환경만 있으면 웹 앱 개발, 모델 시각화, 데이터 데모를 누구보다 빠르게 공유할 수 있다.
개발 환경을 옮겨 다니면서도 일관된 GPU 성능을 유지하며 Streamlit을 쓰고 싶다면, Colab + localtunnel/ngrok 조합이 좋을 듯하다.
'Library' 카테고리의 다른 글
[Streamlit] Streamlit 배포(feat.GitHub) (1) | 2025.06.05 |
---|---|
[Joblib] Python으로 대량 CSV 병렬 처리 자동화하기 (0) | 2025.05.22 |
[Psycopg2] Postgresql 파이썬으로 접근 (0) | 2025.03.26 |
[Report Lab] Python PDF 생성 (0) | 2025.02.20 |