# Ubuntu 22.04 + Docker로 운영 배포 (prompt.ncue.net) 목표: `https://prompt.ncue.net` → Caddy(자동 HTTPS) → `web`(Next.js) → PostgreSQL(`ncue.net/all_prompt`) ## 1) 서버 사전 준비 ### 1.1 DNS - `prompt.ncue.net` A 레코드가 서버 공인 IP를 가리키도록 설정 ### 1.2 방화벽 - TCP 80, 443 오픈 ### 1.3 Docker 설치 ```bash sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl enable --now docker ``` ## 2) 배포 ```bash sudo mkdir -p /opt/all-prompt sudo chown -R $USER:$USER /opt/all-prompt cd /opt/all-prompt git clone . cp .env.example .env nano .env ``` `.env` 필수: - `DATABASE_URL`: `postgresql://ncue:@ncue.net:5432/all_prompt?schema=public` - `CADDY_EMAIL`: 인증서 발급용 이메일 실행: ```bash docker compose up -d --build docker compose ps ``` 확인: - `https://prompt.ncue.net/api/health` - `https://prompt.ncue.net/entities` - `https://prompt.ncue.net/prompts` ## 3) 초기 스키마/시드(필요할 때만 1회) > 원격 DB에 테이블이 없다면 실행. ```bash docker compose --profile init run --rm db_init docker compose --profile init run --rm db_seed ``` ## 4) 운영 팁 ### 로그 ```bash docker compose logs -f --tail=200 web docker compose logs -f --tail=200 caddy ``` ### 업데이트 ```bash git pull docker compose up -d --build ``` ### 인증서/설정 데이터 - Caddy 데이터는 도커 볼륨(`caddy_data`, `caddy_config`)에 유지됨