본문 바로가기
cloud

배포 안내

wecloud는 만든 서비스를 https://앱이름.wenivops.co.kr 주소로 공개해 줍니다. 폴더를 끌어다 놓거나, AI 도구에게 "배포해줘"라고 말하면 됩니다.

  1. 1프롬프트로 시작개발 전에 AI 도구에 지원 스택 프롬프트를 붙여넣어요.
  2. 2폴더 올리기새로 배포에서 폴더를 끌어다 놓거나 AI에게 "배포해줘".
  3. 3주소 공유빌드가 끝나면 바로 인터넷 주소가 생겨요.

개발을 시작할 때: AI 도구에 붙여넣을 프롬프트

Claude Code·Cursor로 새 프로젝트를 만들 때 맨 처음 아래 글을 붙여넣으세요 (또는 프로젝트의 CLAUDE.md·.cursorrules 파일에 넣으세요). 처음부터 wecloud에 올릴 수 있는 모양으로 만들어져 배포에서 막히지 않습니다.

이 프로젝트는 wecloud(위니브 교육용 호스팅)에 배포할 거야. 처음부터 아래 규칙을 지켜서 만들어 줘.

[만들 수 있는 형태 - 셋 중 하나만]
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에.

[폴더 구조]
- 프로젝트 폴더 하나에 앱 하나만. 맨 위 폴더에 index.html, package.json, requirements.txt 중 하나가 있게.
- 프론트엔드와 백엔드를 따로 띄우지 말고, 서버가 필요하면 서버 하나가 화면(정적 파일)까지 같이 내보내게.
- Dockerfile, docker-compose 파일은 만들지 마 (wecloud가 자동으로 빌드·실행함).

[서버 규칙]
- 서버는 반드시 환경변수 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["이름"] 으로 읽게 만들어.
  값은 내가 wecloud 화면의 '환경변수'에 넣을게.
- 브라우저에서 돌아가는 프론트엔드 코드에는 API 키를 절대 넣지 마 (누구나 볼 수 있음). 키가 필요한 호출은 서버를 거치게.

어떤 형태를 올릴 수 있나요?

올린 것wecloud가 하는 일
맨 위에 index.html이 있는 폴더그대로 정적 사이트로 공개
Vite·React(CRA)·Vue·Astro 등 package.json에 build가 있는 프로젝트서버에서 npm install → npm run build 후 결과물(dist·build·out)을 공개
Express·Fastify·NestJS·Next.js 등 Node.js 서버npm install (+ build) 후 npm start 실행
FastAPI·Flask·Django·Streamlit (Python)requirements.txt(또는 pyproject.toml)로 설치 후 실행

판별이 애매하면 "정적 사이트로 올릴까요, 서버 앱으로 올릴까요?"라고 물어봅니다. Procfile의 web: 줄이 있으면 그 명령으로 실행합니다.

  • Dockerfile·docker-compose는 쓰지 않습니다. 들어 있어도 무시하고 위 표대로 자동으로 빌드·실행합니다. Go·Java 같은 다른 언어는 배포할 수 없습니다.
  • 폴더 하나에 앱 하나. 맨 위 폴더에 index.html·package.json·requirements.txt 중 하나가 있어야 합니다. 프로젝트를 감싼 폴더가 한두 겹 있거나 옆에 README·LICENSE가 있는 것은 괜찮습니다. frontend/·backend/로 나뉜 저장소는 배포할 폴더 하나만 올리세요.

서버 앱 규칙 (꼭 지켜 주세요)

  1. PORT 환경변수의 포트로 열기 — wecloud가 알려 주는 포트(8080)로 열어야 접속됩니다.
    // Node.js (Express)
    app.listen(process.env.PORT || 3000, "0.0.0.0")
    
    # Python (FastAPI)
    uvicorn main:app --host 0.0.0.0 --port $PORT
  2. 파일 저장은 /data 폴더에만 — 재배포·재시작해도 남는 곳은 /data 하나입니다 (최대 200MB). SQLite 파일도 여기에 두세요. 예: sqlite:////data/app.db
  3. 비밀 값은 환경변수로 — API 키는 코드나 .env 파일에 넣지 말고 앱 화면의 환경변수에 저장하세요.
  4. 15분 동안 접속이 없으면 잠듭니다 — 다음 접속 때 자동으로 깨어납니다 (몇 초 걸림). 잠든 동안에는 예약 작업(크론)이 돌지 않습니다.

한도

항목한도
업로드ZIP 기준 50MB (node_modules, .git, .venv 등은 자동 제외)
정적 사이트 용량100MB
서버 앱메모리 256MB, CPU 0.25코어 (프로그램마다 다를 수 있음)
빌드최대 10분, 메모리 1.5GB. 동시에 2개까지 빌드하고 나머지는 순서를 기다립니다.
개수한 사람당 정적 사이트 5개, 서버 앱 1개 (프로그램마다 다를 수 있음)

보안 주의

  • 프론트엔드(브라우저에서 실행되는 JS)에 API 키를 넣으면 누구나 볼 수 있습니다. wecloud가 키처럼 보이는 값을 찾으면 경고합니다.
  • 서버 앱은 사내망·다른 학생 앱에 접속할 수 없고, 인터넷으로 나가는 요청만 할 수 있습니다. 메일 발송(25번 포트)은 막혀 있습니다.

기간이 끝나면?

앱은 프로그램 종료일 + 90일에 만료됩니다. 만료 30일·7일·1일 전에 메일로 알려 드립니다.

시점앱 상태할 수 있는 일
만료 ~ 30일정지 보관연장하면 바로 되살아남, 코드·데이터 내려받기
30일 ~ 90일압축 보관코드·데이터 내려받기, 연장하면 재배포로 복구
90일 이후완전 삭제복구할 수 없음

계속 쓰려면 졸업(이전) 가이드를 보세요. 자세한 기준은 이용 약관 제14조에 있습니다.

AI 도구로 배포하기

AI 도구 연결에서 설정 한 줄을 복사해 Claude Code나 Cursor에 붙여넣으면, "이 프로젝트 wecloud에 배포해줘"라고 말해서 배포할 수 있습니다. 실패하면 AI가 로그를 보고 고쳐서 다시 배포할 수도 있습니다.

문의·신고

배포가 막히면 먼저 담당 강사에게 물어보세요. 피싱·불법 콘텐츠 등 문제가 있는 앱은 신고하기로 알려 주세요.