golab ← 작업공간으로

시작 가이드 · @leekb2000

터미널로 직접 작업

SSH 접속 · 파일 업로드 · nginx · 컨테이너 제어 — 기본기 가이드

안녕하세요 👋 여러분의 바이브코딩 작업공간 사용법입니다. 각자 독립된 환경(Docker/Podman nginx)에서 자유롭게 웹을 만들고, 바로 인터넷에 공개할 수 있습니다.


🗺️ 한눈에 보기

작업공간 하나에서 정적 사이트 · 파이썬 동적 앱 · 공용 DB 를 모두 쓸 수 있고, 전부 같은 주소 https://leekb2000.golab.acego.net 로 공개됩니다.

   인터넷
     │  https://leekb2000.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 leekb2000@golab.acego.net

💡 매번 -i 옵션 치기 번거로우면 ~/.ssh/config 에 등록하세요: Host golab HostName golab.acego.net User leekb2000 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 ./내프로젝트/* leekb2000@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 / 도메인


6. 공용 데이터베이스 (MariaDB)

모두가 함께 쓰는 중앙 MariaDB 서버에 당신 전용 DB와 계정이 준비돼 있습니다. 자기 DB(leekb2000_db)에만 접근할 수 있어요.

항목
DB 이름 leekb2000_db
사용자 leekb2000
비밀번호 leekb2000_pw
호스트 127.0.0.1 (서버에서 직접 실행하는 앱)
host.containers.internal (컨테이너 안 앱)
포트 3306

바로 접속

서버 셸에서는 ~/.my.cnf 가 자동 적용되어, 그냥 이렇게만 하면 내 DB로 들어갑니다:

mysql
mysql -e "SELECT DATABASE(), CURRENT_USER();"

앱에서 연결

mysql://leekb2000:leekb2000_pw@127.0.0.1:3306/leekb2000_db

컨테이너 안에서 도는 앱이라면 host 를 host.containers.internal 로 바꾸세요.

💡 접속 정보는 서버의 ~/golab-db.txt 에도 정리돼 있습니다. 내부 전용이라 TLS(SSL)는 사용하지 않습니다. 최신 드라이버/CLI가 SSL을 강제하면 끄세요 — mysql --skip-ssl, Node mysql2는 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://leekb2000.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 출력 일부를 함께 알려주세요.

golab workspace · @leekb2000 ← 작업공간으로 돌아가기