배포
만든 서비스를 올리면 바로 인터넷 주소가 생깁니다
배포 안내
AI와 만든 프로젝트를 https://앱이름.wenivops.co.kr 같은 인터넷 주소로 공개해 주는 학습 도구입니다. 휴대폰 인증을 마친 만 14세 이상 위니버시티 회원이면 누구나 무료로 쓸 수 있습니다.
처음 만들 때 주는 프롬프트새 프로젝트를 만들 때 AI(Claude·ChatGPT 등)에 맨 처음 붙여넣으세요. 만들고 싶은 것을 물어본 뒤, 바로 배포할 수 있는 모양으로 같이 만들어 줍니다.
프롬프트 내용 보기
이 프로젝트는 위니버시티 배포(교육용 호스팅)에 배포할 거야. 처음부터 아래 규칙을 지켜서 만들어 줘. [만들 수 있는 형태 - 셋 중 하나만] 1. 웹페이지: HTML/CSS/JS(가장 권장), 또는 Vite(React·Vue). Vite면 `npm run build` 결과가 dist/ 에 나오게. 2. Node.js 서버: Express 또는 Fastify. package.json에 "start" 명령(예: "start": "node server.js"). 3. Python 서버: FastAPI(서버가 필요하면 가장 권장), Flask, Django, Streamlit 중 하나. 필요한 패키지는 requirements.txt에. - 화면만 있으면 되면 웹페이지로, 서버가 꼭 필요하면 FastAPI로 만들어 줘. 배포 서버에서 가장 가볍게 돌아가. [폴더 구조] - 프로젝트 폴더 하나에 앱 하나만. 맨 위 폴더에 index.html, package.json, requirements.txt 중 하나가 있게. - 프론트엔드와 백엔드를 따로 띄우지 말고, 서버가 필요하면 서버 하나가 화면(정적 파일)까지 같이 내보내게. - Dockerfile, docker-compose 파일은 만들지 마 (배포 서버가 자동으로 빌드·실행함). [서버 규칙] - 서버는 반드시 환경변수 PORT의 포트로, 모든 주소(0.0.0.0)에서 열어. 예) Node: app.listen(process.env.PORT || 3000, "0.0.0.0") 예) Python: uvicorn main:app --host 0.0.0.0 --port $PORT - 파일 저장(SQLite DB, 업로드 파일 등)은 /data 폴더에만 해. 다른 곳은 재배포하면 지워져. 예) DB 경로를 환경변수 DATA_DIR(기본값 ./data)로 받게 만들기. - 별도 DB 서버(MySQL, PostgreSQL, MongoDB, Redis)는 쓸 수 없어. 필요하면 SQLite를 써. - 메모리는 256MB 정도라 가볍게. 백그라운드 예약 작업(크론)은 앱이 잠들면 멈춰. [비밀 값] - API 키는 코드나 .env 파일에 직접 넣지 말고 process.env.이름 / os.environ["이름"] 으로 읽게 만들어. 값은 내가 배포 화면의 '환경변수'에 넣을게. - 브라우저에서 돌아가는 프론트엔드 코드에는 API 키를 절대 넣지 마 (누구나 볼 수 있음). 키가 필요한 호출은 서버를 거치게. 규칙을 이해했으면 먼저 내가 무엇을 만들고 싶은지 물어봐 줘. 내 설명을 듣고 위 세 가지 형태 중 무엇으로 만들지 정해서, 처음 하는 사람도 따라올 수 있게 한 단계씩 같이 만들어 줘.
어떤 걸 올릴 수 있나요?
| 종류 | 예 | 올리면 알아서 해 주는 일 |
|---|---|---|
| 웹페이지 | HTML·CSS·JS, Vite로 만든 React·Vue | 필요하면 빌드해서 그대로 공개 |
| 서버가 있는 앱 | Python(FastAPI 권장·Flask·Django·Streamlit), Node.js(Express·Next.js 등) | 필요한 것을 설치하고 서버를 실행 |
- 화면만 있으면 되는 서비스는 웹페이지로 만드는 것이 가장 빠르고 안정적입니다.
- 서버가 꼭 필요하면 FastAPI를 권합니다. 배포 서버에서 가장 가볍게 돌아갑니다.
- 폴더 하나에 앱 하나입니다.
frontend/·backend/로 나뉘어 있다면 배포할 폴더 하나만 올리세요. - Dockerfile은 쓰지 않습니다. Go·Java 같은 다른 언어는 아직 올릴 수 없습니다.
서버가 있는 앱이라면 꼭 지켜 주세요
위의 '처음 만들 때 주는 프롬프트'를 썼다면 AI가 알아서 지켜 줍니다.
- 정해진 포트로 열기: 서버는
PORT환경변수의 포트로 열어야 접속됩니다. 예)uvicorn main:app --host 0.0.0.0 --port $PORT - 파일은
/data폴더에만 저장: 다시 배포하면 다른 곳의 파일은 지워집니다. SQLite DB 파일도 여기에 두세요. - API 키는 코드에 넣지 않기: 앱 화면의 환경변수에 저장하고 코드에서는 이름으로 불러 쓰세요.
- 한동안 아무도 접속하지 않으면 잠듭니다: 다음 접속 때 몇 초 만에 깨어납니다. 잠든 동안에는 예약 작업이 돌지 않습니다.
얼마나 쓸 수 있나요?
| 앱 개수 (한 사람당) | 웹페이지 3개 · 서버가 있는 앱 1개 (참여한 프로그램 수와 상관없이) |
|---|---|
| 한 번에 올릴 수 있는 크기 | 100MB (압축 기준) |
| 웹페이지 하나의 크기 | 100MB |
| 서버가 있는 앱 | 메모리 256MB, 저장 공간(/data) 200MB |
이용 기간
| 웹페이지 | 마지막으로 배포한 날부터 1년. 만료 30일 전부터 앱 화면의 '연장 신청'을 누르면 1년 늘어나고, 다시 배포해도 그날부터 1년이 된다 |
|---|---|
| 서버가 있는 앱 | 처음 배포한 날부터 30일. 끝나면 앱이 멈추고 30일 쉰다. 쉬는 동안에는 서버가 있는 앱을 배포할 수 없고, 쉬는 기간이 끝나면 앱 화면의 '다시 시작'으로 코드와 데이터를 그대로 다시 열어 30일을 더 쓴다. 30일 안에 앱을 지우고 새로 만들어도 끝나는 날은 같다 |
| 초대 코드로 참여한 프로그램의 앱 | 프로그램이 끝나고 90일 뒤까지 |
- 부트캠프·해커톤·수업에서 받은 초대 코드를 넣으면 서버가 있는 앱을 더 오래 쓸 수 있습니다.
- 부트캠프·해커톤·수업용 초대 코드를 발급받고 싶은 기업·기관은 paul-lab@naver.com로 메일을 보내거나 화면 오른쪽 아래 '문의하기' 채팅으로 신청하면 됩니다.
- 기간이 끝나기 전에 메일로 알려 드립니다.
- 기간이 끝나면 앱이 멈추고, 90일 안에는 코드와 데이터를 내려받을 수 있습니다.
쓰기 전에 알아 두세요
- 배우고 실습하는 용도입니다. 늘 켜져 있어야 하는 서비스나 중요한 데이터는 두지 마세요.
- 돈을 버는 상업 서비스는 운영할 수 없습니다.
- 배포에 성공하면 앱 화면이 갤러리에 자동으로 올라갑니다. 화면·앱 이름·주소·제목·소개가 공개되고 끌 수 없습니다.
- 앱을 지우면 갤러리에는 '서비스 종료'로 표시됩니다. 만든 사람 이름 표시는 고를 수 있습니다.
- 서버 점검은 미리 알리지 않고 할 수 있습니다. 점검 중에는 앱이 열리지 않거나 배포가 늦어질 수 있습니다.
- 신고가 들어온 앱은 확인하기 전이라도 바로 멈출 수 있습니다. 문제가 없으면 다시 열어 드립니다.
막히면
- 배포가 실패하면 배포 화면의 AI에게 원인 물어보기에서 프롬프트를 복사해 AI에 붙여넣으세요. 오류 기록과 배포 규칙이 함께 들어 있습니다.
- 그래도 안 되면 담당 강사에게 물어보세요.
- 피싱·불법 콘텐츠처럼 문제가 있는 앱이나 갤러리 소개·댓글은 신고하기로 알려 주세요.