Files
MyDoc/Baron SSO 개발환경 복구 Runbook.md

858 lines
26 KiB
Markdown

# Baron SSO 개발환경 복구 Runbook
## 1. 문서 목적
이 문서는 Windows 기준의 빈 PC에서 Baron SSO 개발환경을 새로 구성하고, 개발자가 업무에 복귀하기까지의 표준 절차를 정리한다.
목표는 다음과 같다.
- PC 교체, 장애, 초기 입사자 장비 지급 상황에서 개발환경 복구 시간을 줄인다.
- WSL, Ubuntu, Docker, Gitea, Baron SSO 실행 절차를 하나의 흐름으로 정리한다.
- "설치는 했는데 무엇이 정상 상태인지 모르는 문제"를 줄인다.
- 복구 완료 여부를 명령어와 접속 URL로 판정할 수 있게 한다.
이 문서는 현재 Baron SSO 저장소 구조와 실행 방식 기준으로 작성한다.
## 2. 단계별 진행 요약
아래 표는 빈 Windows PC에서 Baron SSO 개발환경을 복구할 때의 전체 진행 순서다. 각 단계의 명령어는 대표 예시이며, 실제 환경에 따라 관리자 권한, VPN, Gitea 인증, `.env` 값 준비가 먼저 필요할 수 있다.
| No | 단계 | 명령어 또는 작업 | 설명 |
| --- | --- | --- | --- |
| 1 | WSL 설치 | `wsl --install` | Windows 안에서 Linux를 실행할 수 있도록 WSL을 설치한다. 설치 후 재부팅이 필요할 수 있다. |
| 2 | Ubuntu 설치 확인 | `wsl --list --verbose` | Ubuntu 배포판이 설치되어 있고 실행 가능한지 확인한다. 없으면 `wsl --install -d Ubuntu`로 설치한다. |
| 3 | Ubuntu 패키지 갱신 | `sudo apt update` | Ubuntu 안의 패키지 목록을 최신 상태로 갱신한다. |
| 4 | 기본 도구 설치 | `sudo apt install -y git make curl ca-certificates` | Git clone, Makefile 실행, HTTP 확인에 필요한 기본 도구를 설치한다. |
| 5 | Docker 확인 | `docker --version` / `docker compose version` | Baron SSO는 Docker Compose로 실행되므로 Ubuntu 터미널에서 Docker 명령이 동작해야 한다. |
| 6 | 작업 폴더 생성 | `mkdir -p ~/workspace && cd ~/workspace` | WSL Ubuntu 안에 프로젝트 소스코드를 둘 작업 위치를 만든다. |
| 7 | Gitea 저장소 clone | `git clone https://gitea.hmac.kr/baron/baron-sso.git` | Gitea의 Baron SSO 원격 저장소를 로컬 WSL Ubuntu로 내려받는다. |
| 8 | 저장소 이동 | `cd baron-sso` | 내려받은 Baron SSO 프로젝트 루트로 이동한다. 이후 명령은 이 위치에서 실행한다. |
| 9 | 브랜치 전환 | `git checkout feature/local-dev-setup-clean` | 팀에서 지정한 작업 브랜치로 전환한다. 표준 브랜치가 바뀌면 이 값도 바꾼다. |
| 10 | 환경 파일 생성 | `cp .env.sample .env` | 샘플 환경 파일을 복사해 로컬 실행용 `.env` 파일을 만든다. |
| 11 | 환경값 작성 | `.env` 편집 | URL, callback, secret 등 로컬 실행에 필요한 값을 작성한다. 민감정보는 Git에 올리지 않는다. |
| 12 | 인증 설정 검증 | `make validate-auth-config` | `.env` 기반 인증 설정을 생성하고 callback/return URL 설정 오류를 사전에 확인한다. |
| 13 | 전체 스택 실행 | `make up-all` | 인프라, Ory Stack, Baron SSO 앱 컨테이너를 한 번에 실행한다. |
| 14 | 상태 확인 | `make ps` 또는 `docker ps` | 컨테이너가 정상적으로 실행 중인지 확인한다. 문제가 있으면 `logs-*` 명령으로 로그를 본다. |
| 15 | 접속 확인 | `http://localhost:5000` | 브라우저에서 UserFront/gateway에 접속해 Baron SSO 화면이 열리는지 확인한다. |
| 16 | 추가 화면 확인 | `http://localhost:5173`, `5174`, `5175` | AdminFront, DevFront, OrgFront 개발 화면이 필요한 경우 각 포트 접속을 확인한다. |
| 17 | Backend 확인 | `curl http://localhost:3000/health` | backend health check가 정상 응답하는지 확인한다. |
| 18 | 변경사항 저장 흐름 | `git add``git commit``git push` | VS Code 저장만으로는 Gitea에 올라가지 않는다. Gitea 반영은 반드시 `git push`까지 해야 한다. |
## 3. 전체 요약
Baron SSO 로컬 개발환경은 Windows 위에 WSL Ubuntu를 설치하고, 그 안에서 Gitea 저장소의 소스코드를 받아 Docker Compose로 여러 서비스를 실행하는 방식이다.
전체 구조는 다음과 같다.
```text
Windows PC
└─ WSL
└─ Ubuntu
├─ Baron SSO source
│ └─ /home/ubuntu/workspace/baron-sso
├─ Git
│ └─ Gitea 저장소 clone/pull/push
└─ Docker
├─ Infra stack
├─ Ory stack
└─ App stack
```
복구 절차의 핵심 순서는 다음과 같다.
1. Windows에서 WSL 설치
2. Ubuntu 설치 및 기본 패키지 준비
3. Docker 사용 가능 상태 확인
4. Gitea에서 Baron SSO 저장소 clone
5. `.env` 작성
6. 인증 설정 검증
7. Docker Compose 스택 실행
8. 브라우저 접속 및 상태 확인
## 4. 현재 Baron SSO 기준 정보
현재 로컬 작업 디렉터리는 다음 위치를 기준으로 한다.
```bash
/home/ubuntu/workspace/baron-sso
```
현재 확인된 주요 원격 저장소는 다음과 같다.
```bash
origin https://gitea.hmac.kr/baron/baron-sso.git
fork https://kevin@gitea.hmac.kr/kevin/baron-sso.git
```
현재 작업 브랜치 예시는 다음과 같다.
```bash
feature/local-dev-setup-clean
```
새 PC에서 복구할 때는 팀에서 지정한 브랜치를 기준으로 checkout한다. 운영 중인 표준 브랜치가 별도로 정해지면 이 문서의 브랜치 예시는 갱신해야 한다.
## 5. 구성 요소 역할
Baron SSO는 단일 서버 하나만 실행하는 프로젝트가 아니다. 여러 컨테이너가 함께 떠야 정상 동작한다.
| 영역 | 주요 구성 | 역할 |
| --- | --- | --- |
| Windows | Windows 10/11 | 사용자의 기본 PC 환경 |
| WSL | Windows Subsystem for Linux | Windows 안에서 Linux 개발환경 실행 |
| Ubuntu | WSL 배포판 | 실제 개발 명령어를 실행하는 Linux 환경 |
| Docker | Docker Engine/Desktop | Baron SSO 관련 서버들을 컨테이너로 실행 |
| Git | git CLI | 소스코드 변경 이력 관리 |
| Gitea | gitea.hmac.kr | Baron SSO 원격 저장소 |
| Ory Stack | Kratos, Hydra, Keto, Oathkeeper | 인증/인가 기반 서비스 |
| Baron App | backend, userfront, adminfront, devfront, orgfront | Baron SSO 자체 애플리케이션 |
## 6. 사전 준비 체크리스트
빈 PC에서 시작할 때 다음 항목이 준비되어야 한다.
- Windows 관리자 권한 계정
- 인터넷 또는 사내망 접속
- Gitea 계정
- Gitea 저장소 접근 권한
- Docker Desktop 설치 권한 또는 Docker Engine 설치 권한
- 필요한 경우 VPN 또는 사내 DNS 접근
- Baron SSO `.env` 작성에 필요한 민감 설정값
민감 설정값은 문서에 직접 기록하지 않는다. `.env` 파일, 사내 보안 저장소, 담당자 전달 절차 등 별도 관리 방식을 따른다.
## 7. Windows에서 WSL 설치
Windows Terminal 또는 PowerShell을 관리자 권한으로 실행한다.
WSL을 설치한다.
```powershell
wsl --install
```
설치 후 재부팅이 필요할 수 있다.
설치 상태를 확인한다.
```powershell
wsl --status
wsl --list --verbose
```
Ubuntu가 설치되어 있지 않으면 다음 명령으로 설치한다.
```powershell
wsl --install -d Ubuntu
```
설치 후 Ubuntu를 실행하고 Linux 사용자 계정과 비밀번호를 만든다.
## 8. Ubuntu 기본 패키지 설치
Ubuntu 터미널에서 패키지 목록을 갱신한다.
```bash
sudo apt update
sudo apt upgrade -y
```
기본 도구를 설치한다.
```bash
sudo apt install -y git make curl ca-certificates
```
설치 확인:
```bash
git --version
make --version
curl --version
```
## 9. Docker 준비
Baron SSO는 Docker Compose 기반으로 실행한다. Ubuntu 터미널에서 다음 명령이 동작해야 한다.
```bash
docker --version
docker compose version
```
Docker Desktop을 사용하는 경우 확인할 항목:
- Docker Desktop이 실행 중인지 확인한다.
- Docker Desktop 설정에서 WSL integration이 켜져 있는지 확인한다.
- 대상 Ubuntu 배포판에 integration이 활성화되어 있는지 확인한다.
Docker 권한 문제가 발생하면 대표적으로 다음 메시지가 나온다.
```text
permission denied while trying to connect to the docker API at unix:///var/run/docker.sock
```
이 경우 다음 순서로 확인한다.
1. Docker Desktop 실행 여부 확인
2. Docker Desktop WSL integration 확인
3. Windows Terminal과 Ubuntu 재시작
4. 필요 시 Windows 재부팅
5. Docker socket 권한 또는 사용자 그룹 확인
## 10. Baron SSO 소스코드 clone
작업 디렉터리를 만든다.
```bash
mkdir -p ~/workspace
cd ~/workspace
```
Gitea 저장소에서 Baron SSO 소스코드를 clone한다.
```bash
git clone https://gitea.hmac.kr/baron/baron-sso.git
cd baron-sso
```
원격 저장소 연결을 확인한다.
```bash
git remote -v
```
팀에서 지정한 브랜치로 전환한다.
```bash
git checkout feature/local-dev-setup-clean
```
현재 상태를 확인한다.
```bash
git status
```
정상적인 시작 상태에서는 작업 트리가 깨끗해야 한다.
```text
nothing to commit, working tree clean
```
단, 기존 작업이 있거나 문서/테스트 산출물이 있다면 변경 파일이 표시될 수 있다.
## 11. 저장소 주요 파일 이해
Baron SSO 로컬 실행에서 자주 보는 파일은 다음과 같다.
| 파일 | 설명 |
| --- | --- |
| `README.md` | 프로젝트 전체 설명과 기본 실행 가이드 |
| `Makefile` | 로컬 실행, 검증, 백업, 복구 명령 모음 |
| `.env.sample` | 환경 변수 샘플 |
| `.env` | 실제 로컬 환경 변수 파일 |
| `compose.infra.yaml` | 인프라 컨테이너 정의 |
| `compose.ory.yaml` | Ory Stack 컨테이너 정의 |
| `docker-compose.yaml` | Baron SSO 앱 컨테이너 정의 |
| `backend/` | Go backend |
| `userfront/` | Flutter 기반 UserFront |
| `adminfront/` | React 기반 AdminFront |
| `devfront/` | React 기반 DevFront |
| `orgfront/` | React 기반 OrgFront |
| `docs/` | 운영/개발 문서 |
## 12. `.env` 파일 준비
최초 clone 직후에는 `.env.sample`을 복사한다.
```bash
cp .env.sample .env
```
그 다음 `.env`를 로컬 개발 환경에 맞게 작성한다.
작성 규칙:
- `KEY=value` 형식으로 작성한다.
- 한 줄에는 하나의 값만 작성한다.
- 값 뒤에 같은 줄 주석을 붙이지 않는다.
- URL 뒤에 공백을 넣지 않는다.
- callback URL 끝에 불필요한 `/`를 붙이지 않는다.
- 민감정보는 Git에 commit하지 않는다.
잘못된 예:
```env
USERFRONT_URL=http://localhost:5000 # 로컬 주소
```
올바른 예:
```env
# 로컬 UserFront 주소
USERFRONT_URL=http://localhost:5000
```
로컬 개발에서 자주 보는 URL 예시는 다음과 같다.
```env
USERFRONT_URL=http://localhost:5000
ADMINFRONT_URL=http://localhost:5173
DEVFRONT_URL=http://localhost:5174
ORGFRONT_URL=http://localhost:5175
```
실제 필요한 값은 현재 `.env.sample`과 팀 표준 설정을 기준으로 작성한다.
## 13. 인증 설정 생성 및 검증
`.env` 작성 후 Baron SSO 인증 설정을 검증한다.
```bash
make validate-auth-config
```
이 명령은 인증 설정을 생성하고, callback URL과 return URL 설정이 올바른지 확인한다.
생성되는 주요 파일:
```bash
config/.generated/auth-config.env
```
검증에 실패하면 Docker Compose 스택을 올리기 전에 `.env`를 먼저 수정한다.
필요 시 아래 명령을 단계별로 사용할 수 있다.
```bash
make build-auth-config
make validate-auth-config
make verify-auth-config
```
## 14. Baron SSO 실행
### 14.1 전체 스택 한 번에 실행
가장 단순한 실행 명령은 다음이다.
```bash
make up-all
```
이 명령은 인프라, Ory Stack, 앱 스택을 함께 실행한다.
### 14.2 단계별 실행
문제 원인을 나누어 보기 위해 단계별로 실행할 수도 있다.
개발 기본 스택을 준비한다.
```bash
make up-dev
```
앱 스택을 실행한다.
```bash
make up-app
```
프론트 개발 중 파일 변경을 바로 반영하는 개발 모드로 실행하려면 다음 명령을 사용한다.
```bash
make dev
```
디버그 로그를 켜고 실행하려면 다음 명령을 사용한다.
```bash
make dev-debug
```
## 15. 정상 접속 URL
로컬 실행 후 확인할 기본 URL은 다음과 같다.
| 서비스 | URL |
| --- | --- |
| UserFront / gateway | `http://localhost:5000` |
| Backend API | `http://localhost:3000` |
| AdminFront | `http://localhost:5173` |
| DevFront | `http://localhost:5174` |
| OrgFront | `http://localhost:5175` |
| ClickHouse | `http://localhost:8123` |
| Kratos Public | `http://localhost:4433` |
| Hydra Public | `http://localhost:4444` |
브라우저에서 최소한 다음 주소를 확인한다.
```text
http://localhost:5000
http://localhost:5173
http://localhost:5174
http://localhost:5175
```
backend health check는 다음으로 확인한다.
```bash
curl http://localhost:3000/health
```
## 16. 컨테이너 상태 확인
실행 중인 컨테이너만 확인한다.
```bash
docker ps
```
Baron SSO 전체 Compose 기준으로 중지된 컨테이너까지 확인한다.
```bash
docker compose -f compose.infra.yaml -f compose.ory.yaml -f docker-compose.yaml ps -a
```
Makefile 타깃을 사용할 수도 있다.
```bash
make ps
```
로그 확인:
```bash
make logs-infra
make logs-ory
make logs-app
```
## 17. 정상 복구 완료 기준
빈 PC에서 복구가 완료되었다고 판단하려면 다음 기준을 만족해야 한다.
- Ubuntu 터미널에서 `docker --version``docker compose version`이 정상 출력된다.
- Baron SSO 저장소가 `/home/ubuntu/workspace/baron-sso`에 clone되어 있다.
- `git remote -v`에서 Gitea 저장소가 보인다.
- `.env`가 작성되어 있다.
- `make validate-auth-config`가 통과한다.
- `make up-all` 또는 `make up-dev` + `make up-app` 실행 후 주요 컨테이너가 올라온다.
- `http://localhost:5000`에 접속할 수 있다.
- 필요한 경우 AdminFront, DevFront, OrgFront 포트에 접속할 수 있다.
- backend health check가 정상 응답한다.
## 18. 현재 환경 복기
현재 설치된 Baron SSO 환경을 확인했을 때, 일부 인프라 컨테이너는 실행 중이고 앱/Ory 컨테이너 일부는 중지 상태였다.
실행 중으로 확인된 컨테이너 예시:
- `baron_postgres`
- `baron_redis`
- `baron_clickhouse`
- `baron_gateway`
- `baron_promtail`
- `baron_blackbox_exporter`
중지 상태로 확인된 컨테이너 예시:
- `baron_backend`
- `baron_userfront`
- `baron_adminfront`
- `baron_devfront`
- `baron_orgfront`
- `ory_kratos`
- `ory_hydra`
- `ory_keto`
- `ory_oathkeeper`
- `ory_postgres`
- `ory_clickhouse`
따라서 현재 상태는 "개발환경 구성과 일부 인프라 실행은 되어 있으나, 전체 Baron SSO 개발 스택이 완전히 실행 중인 상태는 아님"으로 판단할 수 있다.
전체를 다시 올리는 기본 명령은 다음이다.
```bash
make validate-auth-config
make up-dev
make up-app
```
또는 다음 명령을 사용한다.
```bash
make up-all
```
## 19. VS Code 저장과 Gitea 반영 흐름
VS Code에서 파일을 수정하고 저장해도 Gitea 서버에 바로 반영되지는 않는다.
흐름은 다음과 같다.
```text
VS Code에서 파일 수정
|
v
Ctrl+S 저장
|
v
WSL Ubuntu 로컬 파일 변경
|
v
git add
|
v
git commit
|
v
git push
|
v
Gitea 서버 반영
```
각 단계의 의미는 다음과 같다.
| 단계 | 의미 | Gitea 반영 여부 |
| --- | --- | --- |
| VS Code 수정 | 편집 화면에서 내용 변경 | 반영 안 됨 |
| 저장 | WSL 로컬 파일 변경 | 반영 안 됨 |
| `git add` | commit 대상에 포함 | 반영 안 됨 |
| `git commit` | 로컬 Git 이력 생성 | 반영 안 됨 |
| `git push` | 원격 Gitea 저장소로 업로드 | 반영됨 |
따라서 팀원이 Gitea 웹에서 변경사항을 보려면 반드시 `git push`까지 완료해야 한다.
## 20. 자주 발생하는 문제와 대응
### 20.1 Docker socket 권한 오류
증상:
```text
permission denied while trying to connect to the docker API at unix:///var/run/docker.sock
```
확인:
- Docker Desktop 실행 여부
- WSL integration 활성화 여부
- Ubuntu 재시작 여부
- Docker socket 접근 권한
### 20.2 `.env` 작성 오류
증상:
- `make validate-auth-config` 실패
- Hydra/Kratos 기동 실패
- callback URL 관련 오류
- 로그인 후 redirect 실패
대응:
```bash
make validate-auth-config
```
실패 메시지를 보고 `.env`의 URL, callback, return URL 값을 수정한다.
### 20.3 일부 컨테이너만 실행됨
증상:
- `docker ps`에는 일부 컨테이너만 보인다.
- 로그인 화면이 열리지 않는다.
- backend 또는 Ory 관련 오류가 발생한다.
확인:
```bash
docker compose -f compose.infra.yaml -f compose.ory.yaml -f docker-compose.yaml ps -a
```
복구:
```bash
make up-dev
make up-app
```
### 20.4 포트 충돌
증상:
- 특정 포트를 bind할 수 없다는 오류 발생
- `localhost:5000`, `5173`, `5174`, `5175` 중 일부 접속 실패
확인:
```bash
docker ps
```
필요 시 이미 떠 있는 컨테이너나 다른 프로세스가 같은 포트를 사용하는지 확인한다.
## 21. 업무 복귀 시간 단축 방안
복구 시간을 줄이기 위해 다음 항목을 팀 표준으로 관리하는 것이 좋다.
1. Windows/WSL/Ubuntu/Docker 설치 체크리스트를 별도 관리한다.
2. Docker Desktop WSL integration 설정 화면을 캡처해 둔다.
3. Baron SSO 로컬 개발용 `.env` 작성 가이드를 별도 관리한다.
4. `make validate-auth-config`, `make up-all`, `make ps`를 표준 복구 명령으로 정한다.
5. 정상 접속 URL과 정상 컨테이너 목록을 문서화한다.
6. 신규 PC 지급 시 이 문서 기준으로 실제 복구 시간을 측정한다.
7. 반복적으로 막히는 지점은 스크립트화하거나 Makefile 타깃으로 추가한다.
## 22. 자동화 파일 분리 방향
빈 PC 자동화 파일은 Baron SSO에만 묶지 않고, 다른 프로젝트에도 재사용할 수 있도록 공통 설치 영역과 프로젝트별 설정 영역을 분리하는 것이 좋다.
핵심 원칙은 다음과 같다.
```text
Windows/WSL 공통 준비
|
v
Ubuntu 공통 개발환경 준비
|
v
프로젝트별 소스 clone 및 실행
```
### 22.1 권장 파일 구조
자동화 파일은 다음처럼 나누는 것을 권장한다.
```text
bootstrap/
├─ windows-wsl-bootstrap.ps1
├─ ubuntu-common-dev-setup.sh
├─ project-baron-sso-setup.sh
└─ projects/
└─ baron-sso.env.example
```
각 파일의 책임은 다음과 같다.
| 파일 | 실행 위치 | 성격 | 역할 |
| --- | --- | --- | --- |
| `windows-wsl-bootstrap.ps1` | Windows PowerShell | 공통 | WSL/Ubuntu 설치 여부 확인, WSL 2 확인, Ubuntu 내부 스크립트 실행 |
| `ubuntu-common-dev-setup.sh` | Ubuntu | 공통 | apt 갱신, git/make/curl 설치, Docker Engine 설치, Docker 권한 설정 |
| `project-baron-sso-setup.sh` | Ubuntu | Baron SSO 전용 | Baron SSO clone, 브랜치 checkout, `.env` 준비, `make validate-auth-config`, `make up-all` |
| `projects/baron-sso.env.example` | 설정 파일 | Baron SSO 전용 | 저장소 URL, 브랜치명, 프로젝트 경로, 실행 명령 등 프로젝트별 값 |
이렇게 나누면 다른 프로젝트를 추가할 때 공통 설치 파일은 그대로 두고, `project-프로젝트명-setup.sh`와 설정 파일만 추가하면 된다.
### 22.2 공통 영역과 프로젝트 전용 영역 구분
자동화 범위를 다음처럼 구분한다.
| 영역 | 자동화 항목 | 공통/전용 |
| --- | --- | --- |
| Windows | WSL 설치 여부 확인 | 공통 |
| Windows | Ubuntu 설치 여부 확인 | 공통 |
| Windows | WSL 2 여부 확인 | 공통 |
| Windows | Ubuntu 내부 setup script 실행 | 공통 |
| Ubuntu | `apt update` | 공통 |
| Ubuntu | `git`, `make`, `curl`, `ca-certificates` 설치 | 공통 |
| Ubuntu | Docker Engine 설치 | 공통 |
| Ubuntu | Docker 권한 설정 | 공통 |
| Ubuntu | workspace 폴더 생성 | 공통 |
| Git | 저장소 clone | 프로젝트 전용 |
| Git | 브랜치 checkout | 프로젝트 전용 |
| 프로젝트 | `.env` 생성 또는 템플릿 복사 | 프로젝트 전용 |
| 프로젝트 | 설정 검증 명령 실행 | 프로젝트 전용 |
| 프로젝트 | 실행 명령 실행 | 프로젝트 전용 |
캡처 기준으로 보면 빨간 영역은 `windows-wsl-bootstrap.ps1`에 해당하고, 노란 영역 중 `Docker 권한 설정`까지는 `ubuntu-common-dev-setup.sh`에 해당한다. 그 이후의 `Baron SSO git clone`, 브랜치 checkout, `.env`, `make` 실행은 Baron SSO 전용 파일로 분리한다.
### 22.3 공통 Windows 부트스트랩 예시
Windows 쪽 공통 파일은 다음 역할만 맡는다.
```text
windows-wsl-bootstrap.ps1
├─ WSL 설치 여부 확인
├─ Ubuntu 설치 여부 확인
├─ WSL 2 여부 확인
└─ Ubuntu 내부 common setup script 실행
```
예시 흐름:
```powershell
wsl --status
wsl --list --verbose
wsl -d Ubuntu -- bash -lc "./bootstrap/ubuntu-common-dev-setup.sh"
```
주의할 점:
- Windows 관리자 권한이 필요할 수 있다.
- WSL 또는 Ubuntu 최초 설치 후 재부팅이 필요할 수 있다.
- Ubuntu 최초 실행 시 Linux 사용자명/비밀번호 생성은 수동 단계로 남을 수 있다.
### 22.4 공통 Ubuntu 개발환경 setup 예시
Ubuntu 공통 파일은 특정 프로젝트를 모르는 상태로 개발 기본 환경만 준비한다.
```text
ubuntu-common-dev-setup.sh
├─ apt update
├─ git/make/curl 설치
├─ Docker Engine 설치
├─ Docker compose 확인
├─ Docker 권한 설정
└─ ~/workspace 생성
```
대표 명령은 다음과 같다.
```bash
sudo apt update
sudo apt install -y git make curl ca-certificates
docker --version
docker compose version
mkdir -p ~/workspace
```
Docker 권한 설정은 팀 표준 Docker 설치 방식에 맞춰 작성한다. Docker Desktop WSL integration을 쓸지, Ubuntu 내부 Docker Engine을 쓸지 먼저 정해야 한다.
### 22.5 프로젝트별 setup 예시
Baron SSO 전용 파일은 공통 개발환경이 준비된 뒤 실행한다.
```text
project-baron-sso-setup.sh
├─ ~/workspace 이동
├─ Baron SSO 저장소 clone
├─ 브랜치 checkout
├─ .env.sample -> .env 복사
├─ 사용자에게 .env 작성 안내
├─ make validate-auth-config
└─ make up-all
```
대표 명령은 다음과 같다.
```bash
cd ~/workspace
git clone https://gitea.hmac.kr/baron/baron-sso.git
cd baron-sso
git checkout feature/local-dev-setup-clean
cp .env.sample .env
make validate-auth-config
make up-all
```
다른 프로젝트는 이 파일만 교체하면 된다.
예를 들어 다른 프로젝트는 다음처럼 별도 파일을 둔다.
```text
project-sample-api-setup.sh
project-sample-web-setup.sh
project-internal-admin-setup.sh
```
각 프로젝트 파일에는 해당 프로젝트의 저장소 URL, 브랜치명, 환경 파일 생성 방식, 실행 명령만 넣는다.
### 22.6 자동화 시 입력받아야 하는 값
공통 자동화에서 필요한 값은 다음과 같다.
| 값 | 필요한 이유 | 공통/전용 | 보관 방식 |
| --- | --- | --- | --- |
| Ubuntu 배포판 이름 | `wsl -d Ubuntu` 실행에 필요 | 공통 | 기본값 가능 |
| Ubuntu Linux 사용자명 | 경로와 권한 확인에 필요 | 공통 | 사용자 입력 또는 자동 감지 |
| workspace 경로 | 소스코드 clone 위치 | 공통 | 기본값 `~/workspace` |
| Docker 설치 방식 | Docker Desktop 연동 또는 Ubuntu Engine 선택 | 공통 | 팀 표준값 |
| Gitea 저장소 URL | clone 대상 | 프로젝트 전용 | 프로젝트 설정 파일 |
| Git 브랜치명 | checkout 대상 | 프로젝트 전용 | 프로젝트 설정 파일 |
| Gitea 인증 방식 | HTTPS token 또는 SSH key | 프로젝트 전용 | 사용자 입력 |
| Gitea Personal Access Token | HTTPS clone/push 인증 | 프로젝트 전용 | 스크립트 저장 금지 |
| SSH private key 경로 | SSH clone/push 인증 | 프로젝트 전용 | 사용자 PC 또는 보안 저장소 |
| `.env` 값 | 프로젝트 실행 설정 | 프로젝트 전용 | `.env` 또는 보안 저장소 |
| 관리자 계정 초기값 | Baron SSO 초기 admin seed | Baron SSO 전용 | 보안 저장소 |
사이트 비밀번호나 Gitea 계정 비밀번호를 스크립트에 직접 저장하지 않는다. HTTPS 방식이면 Personal Access Token을 사용하고, SSH 방식이면 SSH key를 사용한다.
### 22.7 최종 권장 실행 흐름
사용자 입장에서의 목표 흐름은 다음과 같다.
```text
1. WSL은 사용자가 수동 설치
2. PowerShell에서 공통 bootstrap 실행
3. Ubuntu 공통 개발환경 자동 설치
4. 프로젝트 선택
5. 선택한 프로젝트 setup 실행
6. 필요한 민감값만 사용자 입력
7. 프로젝트 실행 및 접속 확인
```
Baron SSO를 선택한 경우의 흐름은 다음과 같다.
```text
windows-wsl-bootstrap.ps1
|
v
ubuntu-common-dev-setup.sh
|
v
project-baron-sso-setup.sh
|
v
make validate-auth-config
|
v
make up-all
```
이 방식은 Baron SSO뿐 아니라 Docker Compose 기반의 다른 사내 프로젝트에도 확장할 수 있다.
## 23. 빠른 복구 명령 모음
새 PC에서 기본 도구와 Docker가 준비된 뒤 Baron SSO만 복구하는 핵심 명령은 다음과 같다.
```bash
mkdir -p ~/workspace
cd ~/workspace
git clone https://gitea.hmac.kr/baron/baron-sso.git
cd baron-sso
git checkout feature/local-dev-setup-clean
cp .env.sample .env
```
`.env`를 작성한 뒤 다음 명령을 실행한다.
```bash
make validate-auth-config
make up-all
make ps
```
브라우저에서 다음 주소를 확인한다.
```text
http://localhost:5000
http://localhost:5173
http://localhost:5174
http://localhost:5175
```
## 24. 관련 문서
- `README.md`
- `Makefile`
- `docs/local-run-notes/windows-empty-pc-baron-sso-recovery-runbook.md`
- `docs/local-run-notes/wsl-docker-gitea-mcp-guide.md`
- `docs/local-run-notes/wsl-local-run-2026-06-18.md`
- `docs/local-run-notes/wsl-setup-issues-2026-06-18.md`
- `docs/make-dev-vite-hmr-policy.md`