안녕하세요 👋 여러분의 바이브코딩 작업공간 사용법입니다. 각자 독립된 환경(Docker/Podman nginx)에서 자유롭게 웹을 만들고, 바로 인터넷에 공개할 수 있습니다.
- 내 사이트 주소:
https://ppcube.golab.acego.net(예: 아이디가isu면 → https://isu.golab.acego.net ) - 작업 폴더:
~/webapp/← 여기에 올리면 즉시 웹에 반영 - 서버 접속: SSH 키로 로그인 (비밀번호 없음)
🗺️ 한눈에 보기
작업공간 하나에서 정적 사이트 · 파이썬 동적 앱 · 공용 DB 를 모두 쓸 수 있고,
전부 같은 주소 https://ppcube.golab.acego.net 로 공개됩니다.
인터넷
│ https://ppcube.golab.acego.net (HTTPS 자동 발급)
▼
┌──────────────┐
│ Caddy (공용) │ 요청을 내 작업공간으로 전달
└──────┬───────┘
▼
┌────────────────────┐ 아래 둘 중 하나로 동작 (~/nginx 설정으로 전환)
│ 내 nginx 컨테이너 │──(A) ~/webapp 정적 파일을 그대로 서빙
│ (자동 실행) │──(B) 내 백엔드 앱으로 프록시
└────────────────────┘ │
▼
파이썬 앱(uv, ~/run-app.sh) ──▶ 공용 MariaDB
127.0.0.1:포트($PORT) 127.0.0.1:3306
| 하고 싶은 것 | 이렇게 |
|---|---|
| 정적 사이트(HTML/CSS/JS) | ~/webapp/ 에 파일 올리기 |
| 파이썬 동적 앱(FastAPI 등) | uv + ~/run-app.sh + ~/golab app start + nginx 프록시 |
| 공용 데이터베이스 | ~/golab-db.txt 의 접속정보로 연결 |
| 웹/앱 켜고 끄기 | ~/golab … (웹) · ~/golab app … (백엔드) |
아래에서 각각을 단계별로 설명합니다.
1. 서버 접속 (SSH)
전달받은 개인키 파일(id_ed25519)로 접속합니다.
# 키 파일 권한 설정 (최초 1회, 본인 PC에서)
chmod 600 id_ed25519
# 접속
ssh -i id_ed25519 ppcube@golab.acego.net
💡 매번
-i옵션 치기 번거로우면~/.ssh/config에 등록하세요:Host golab HostName golab.acego.net User ppcube IdentityFile ~/경로/id_ed25519이후ssh golab한 줄로 접속됩니다.
VS Code 로 원격 작업하려면 Remote - SSH 확장에서 위 golab 호스트로
접속하면 됩니다.
2. 작업물 올리기
~/webapp/ 폴더가 곧 웹사이트 루트입니다. 여기에 index.html 부터
시작해서 원하는 파일을 올리면 됩니다.
cd ~/webapp
# 예: 간단한 페이지
echo '<h1>Hello!</h1>' > index.html
본인 PC에서 파일을 올리려면 (예시):
scp -i id_ed25519 -r ./내프로젝트/* ppcube@golab.acego.net:~/webapp/
파일을 수정/추가하면 새로고침만 하면 바로 반영됩니다. (정적 파일은 컨테이너 재시작 불필요)
3. 컨테이너 제어 — ~/golab
작업공간(nginx 컨테이너)은 ~/golab 명령으로 다룹니다.
~/golab start # 시작
~/golab stop # 중지
~/golab restart # 재시작 (nginx 설정을 바꿨을 때)
~/golab status # 상태 확인
~/golab logs # 실시간 로그 보기 (Ctrl+C 로 빠져나옴)
~/golab url # 내 사이트 주소 출력
~/golab rebuild # nginx 이미지 갱신 후 재시작
기본적으로 켜져 있고, 로그아웃하거나 서버가 재부팅돼도 자동으로 계속 돌아갑니다. 직접 끄지 않는 한 항상 떠 있습니다.
4. nginx 설정 바꾸기
기본값은 ~/webapp 의 정적 파일을 서빙하고, 없는 경로는 index.html
로 보내줍니다(React/Vue 같은 SPA 라우팅 지원).
설정 파일은 ~/nginx/default.conf 입니다. 수정 후:
~/golab restart
내가 띄운 백엔드(API/dev 서버)로 연결하고 싶다면
예를 들어 서버에서 직접 Node/Flask 앱을 3000 포트로 띄웠다면,
~/nginx/default.conf 에 아래처럼 프록시를 추가하세요.
컨테이너 안에서 호스트의 앱에 닿을 때는 host.containers.internal 을 씁니다.
location /api/ {
proxy_pass http://host.containers.internal:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
WebSocket(실시간/HMR)을 쓴다면:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
수정 후 ~/golab restart.
5. HTTPS / 도메인
- 주소는
https://ppcube.golab.acego.net로 고정입니다. - HTTPS 인증서는 자동으로 발급/갱신됩니다. 따로 할 일 없습니다.
- 별도 포트를 외부에 직접 열 수는 없습니다. 외부 공개는 위 주소(https) 를 통해서만 이뤄지며, nginx 설정으로 라우팅하세요.
6. 공용 데이터베이스 (MariaDB)
모두가 함께 쓰는 중앙 MariaDB 서버에 당신 전용 DB와 계정이 준비돼 있습니다.
자기 DB(ppcube_db)에만 접근할 수 있어요.
| 항목 | 값 |
|---|---|
| DB 이름 | ppcube_db |
| 사용자 | ppcube |
| 비밀번호 | ppcube_pw |
| 호스트 | 127.0.0.1 (서버에서 직접 실행하는 앱)host.containers.internal (컨테이너 안 앱) |
| 포트 | 3306 |
바로 접속
서버 셸에서는 ~/.my.cnf 가 자동 적용되어, 그냥 이렇게만 하면 내 DB로 들어갑니다:
mysql
mysql -e "SELECT DATABASE(), CURRENT_USER();"
앱에서 연결
mysql://ppcube:ppcube_pw@127.0.0.1:3306/ppcube_db
컨테이너 안에서 도는 앱이라면 host 를 host.containers.internal 로 바꾸세요.
💡 접속 정보는 서버의
~/golab-db.txt에도 정리돼 있습니다. 내부 전용이라 TLS(SSL)는 사용하지 않습니다. 최신 드라이버/CLI가 SSL을 강제하면 끄세요 —mysql --skip-ssl, Nodemysql2는 ssl 옵션 생략, JDBC는useSSL=false.
7. 파이썬 앱 (FastAPI / Flask / Django)
정적 파일이 아니라 파이썬 웹앱을 돌리려면: 앱을 백엔드 포트에서 실행 →
nginx 가 프록시하는 구조입니다. 파이썬·패키지는 uv 로 관리합니다.
1) 프로젝트 준비 (uv)
cd ~/webapp
uv init # 새 프로젝트 (기존이면 생략)
uv add fastapi uvicorn # 패키지 추가 (venv 자동 생성, 파이썬도 자동 준비)
2) 앱을 내 포트에 바인딩
백엔드 전용 포트가 환경변수 $PORT 로 주어집니다. 앱은 반드시
127.0.0.1:$PORT 에서 listen 해야 합니다. 예) main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"hello": "golab"}
3) 실행 명령 등록 + 시작
~/run-app.sh 를 열어 해당 줄의 주석을 풀고 저장한 뒤 시작합니다:
# ~/run-app.sh 안:
exec uv run uvicorn main:app --host 127.0.0.1 --port "$PORT"
~/golab app start # 시작 (로그아웃해도 계속 동작)
~/golab app logs # 로그 실시간
~/golab app enable # 재부팅 후 자동 시작(선택)
4) nginx 가 앱으로 넘기게
~/nginx/default.conf 에서 기본 정적 location / 를 주석 처리하고,
"파이썬 백엔드 프록시" 블록의 주석을 푼 다음:
~/golab restart
이제 https://ppcube.golab.acego.net 가 파이썬 앱으로 연결됩니다.
💡 코드·패키지를 바꾸면
~/golab app restart. DB는 파이썬에서 곧장127.0.0.1:3306으로 붙으면 됩니다(6번 참고).
8. 자주 묻는 것 / 문제 해결
Q. 사이트가 안 떠요 (502/연결 안 됨)
~/golab status # 컨테이너가 떠 있는지
~/golab logs # 에러 로그 확인 (nginx 설정 오타가 흔함)
~/golab restart
Q. nginx 설정을 바꿨는데 반영이 안 돼요
→ ~/golab restart 했는지 확인. 설정 문법 오류면 ~/golab logs 에 나옵니다.
Q. 페이지 수정이 반영이 안 돼요 → 브라우저 캐시일 수 있습니다. 강력 새로고침(Ctrl+Shift+R).
Q. 다른 사람 작업공간이 보이나요? → 아니요. 각자 완전히 격리된 컨테이너이고 홈 디렉토리도 분리돼 있습니다.
Q. 리소스 제한이 있나요? → 공용 서버라 컨테이너당 메모리·CPU에 적당한 상한이 있습니다. 무거운 빌드는 천천히 될 수 있습니다.
문제가 계속되면 관리자에게 아이디와 ~/golab logs 출력 일부를 함께
알려주세요.