← 배포 안내
졸업(이전) 가이드
앱 화면의 코드·데이터 ZIP 내려받기를 누르면 이 안내가 함께 들어 있습니다.
# wecloud 졸업 가이드 — '내-앱' 앱 옮기기
wecloud는 교육 프로그램 기간에만 쓰는 호스팅입니다. 계속 운영하고 싶다면 아래 방법으로 다른 서비스에 옮기세요.
(원래 주소: https://내-앱.wenivops.co.kr)
이 ZIP 안에는 다음이 들어 있습니다.
- `source/` : 마지막으로 배포한 소스 코드 (.env 파일은 빠져 있습니다)
- `data/` : 서버 앱의 `/data` 폴더 (SQLite 파일 등). 정적 사이트에는 없습니다.
---
## 1. 정적 사이트 (HTML/CSS/JS, React·Vite)
### Netlify (가장 쉬움)
1. https://app.netlify.com/drop 에 접속해 로그인합니다.
2. `source/` 폴더를 끌어다 놓습니다. Vite·React 프로젝트라면 먼저 컴퓨터에서
`npm install` → `npm run build` 를 실행하고 생긴 `dist/` 폴더를 끌어다 놓으세요.
3. 바로 `https://<임의이름>.netlify.app` 주소가 생깁니다. 사이트 설정에서 이름을 바꿀 수 있습니다.
### Vercel
1. `source/` 폴더를 GitHub 저장소에 올립니다.
2. https://vercel.com/new 에서 그 저장소를 고르고 Deploy를 누릅니다. Vite·React는 자동으로 인식합니다.
3. React Router를 쓰는 SPA라면 `vercel.json`에 다음을 넣어야 새로고침해도 404가 나지 않습니다.
```json
{ "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }] }
```
### GitHub Pages
1. 저장소 Settings → Pages에서 배포할 브랜치를 고릅니다.
2. Vite 프로젝트는 `vite.config.js`의 `base`를 `'/<저장소이름>/'`으로 바꿔야 합니다.
---
## 2. 서버 앱 (Node.js, Python)
### Render (무료 플랜 있음)
1. `source/` 폴더를 GitHub 저장소에 올립니다.
2. https://dashboard.render.com 에서 New → Web Service → 저장소를 고릅니다.
3. 명령을 넣습니다.
- Node.js: Build `npm install` / Start `npm start`
- Python(FastAPI): Build `pip install -r requirements.txt` / Start `uvicorn main:app --host 0.0.0.0 --port $PORT`
4. wecloud에서 쓰던 **환경변수**(API 키 등)를 Environment 메뉴에 다시 넣습니다.
(보안을 위해 wecloud는 환경변수 값을 내보내지 않습니다. 원래 키를 직접 다시 입력하세요.)
### Railway, Fly.io
- 저장소에 `Dockerfile`이 있으면 그대로 쓸 수 있습니다.
- 앱은 지금처럼 `PORT` 환경변수의 포트로 열면 됩니다.
### `/data` 폴더(SQLite 등) 옮기기
- wecloud에서는 `/data` 폴더만 영구 저장되었습니다. 이 ZIP의 `data/` 안 파일이 그 내용입니다.
- Render는 무료 플랜에 영구 디스크가 없습니다. 데이터를 계속 쓰려면
1) 유료 디스크(Persistent Disk)를 붙여 `/data`에 마운트하거나,
2) Supabase·Neon 같은 무료 데이터베이스로 옮기는 것을 권합니다.
---
## 3. 내 컴퓨터에서 실행해 보기
```bash
cd source
npm install && npm start # Node.js
pip install -r requirements.txt # Python
```
`/data` 경로를 쓰는 코드는 `DATA_DIR` 환경변수로 바꿀 수 있게 해 두면 어디서나 실행하기 쉽습니다.
예) `const dataDir = process.env.DATA_DIR || './data'`
---
궁금한 점은 담당 강사나 위니브 운영자에게 물어보세요. 수고 많으셨습니다!