diff --git a/.env.example b/.env.example index ca4503e..2601333 100644 --- a/.env.example +++ b/.env.example @@ -1,14 +1,14 @@ # Database -DATABASE_URL=postgres://sori_studio:change-this-password@sori-studio-db:5432/sori_studio +DATABASE_URL=postgres://sori_studio:replace-with-random-password@sori-studio-db:5432/sori_studio DATABASE_NAME=sori_studio POSTGRES_DB=sori_studio POSTGRES_USER=sori_studio -POSTGRES_PASSWORD=change-this-password +POSTGRES_PASSWORD=replace-with-random-password DB_PORT=43119 # Auth -ADMIN_EMAIL= -ADMIN_PASSWORD= +ADMIN_EMAIL=admin@example.com +ADMIN_PASSWORD=replace-with-random-password # Upload UPLOAD_DIR=/uploads diff --git a/docs/changelog.md b/docs/changelog.md index 1f846da..6beedce 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,12 @@ # 업데이트 요약 +## v0.0.6 + +- `.env.example`을 실제 비밀값이 없는 공유 템플릿으로 정리. +- 로컬 개발 전용 `.env.development`를 생성하고 개발 DB/관리자 비밀번호를 랜덤 값으로 분리. +- 개발/운영 환경 변수 파일 관리 기준을 문서화. +- 패키지 버전을 0.0.6으로 갱신. + ## v0.0.5 - PostgreSQL 초기 스키마와 개발용 시드 데이터를 추가. diff --git a/docs/deploy.md b/docs/deploy.md index 5695eb4..1ea954e 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -32,8 +32,10 @@ cd sori.studio npm install # 개발 환경 변수 설정 +# .env.development는 Git에 올리지 않는 로컬 전용 파일 +# 새로 만들 때는 .env.example을 복사한 뒤 비밀번호를 랜덤 값으로 교체 cp .env.example .env.development -# .env.development 파일에 개발 DB 연결 정보 입력 +openssl rand -hex 32 # 로컬 DB 컨테이너를 호스트에서 접근할 때는 127.0.0.1:43119 사용 # 개발 서버 실행 (127.0.0.1:43117) @@ -70,8 +72,9 @@ git clone https://git.sori.studio/zenn/sori.studio.git cd sori.studio # 운영 환경 변수 설정 +# .env.production은 Git에 올리지 않는 운영 전용 파일 cp .env.example .env.production -# .env.production 파일에 운영 DB 연결 정보와 APP_PORT=43118 입력 +# .env.production 파일에 운영 DB 연결 정보, 운영 전용 랜덤 비밀번호, APP_PORT=43118 입력 # Docker 내부 앱에서 PostgreSQL에 접근할 때는 sori-studio-db:5432 사용 # Docker 빌드 및 실행 @@ -105,6 +108,8 @@ docker run -d -p 3000:3000 sori.studio:latest - NAS 운영: `.env.production`의 `DATABASE_URL` - 로컬 개발 예시: `postgres://sori_studio:비밀번호@127.0.0.1:43119/sori_studio` - NAS Docker 예시: `postgres://sori_studio:비밀번호@sori-studio-db:5432/sori_studio` +- `.env.example`에는 실제 비밀번호나 개인 이메일을 기록하지 않음 +- 개발/운영 DB 비밀번호와 관리자 비밀번호는 서로 다른 랜덤 값을 사용 - 개발 DB와 운영 DB는 반드시 별도 인스턴스 또는 별도 데이터베이스로 분리 - 운영 DB는 로컬 개발 서버에서 직접 연결하지 않음 - 관리 도구: CloudBeaver 등으로 추후 연결 가능하게 설계 diff --git a/docs/history.md b/docs/history.md index 0a4d48b..49e8200 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,5 +1,15 @@ # 의사결정 이력 +## 2026-04-29 v0.0.6 + +### 환경 변수 파일 보안 기준 정리 + +`.env.example`은 Git에 포함되는 공유 템플릿이므로 실제 개인 이메일, 관리자 비밀번호, DB 비밀번호를 기록하지 않는다. 공유 파일에는 placeholder만 두고, 실제 값은 Git에서 제외되는 `.env.development`와 `.env.production`에서만 관리한다. + +로컬 개발 환경은 `127.0.0.1:43119`로 개발 DB에 연결하고, NAS Docker 운영 환경은 `sori-studio-db:5432`로 운영 DB에 연결한다. 개발 DB와 운영 DB는 비밀번호도 분리해 한쪽 값이 노출되더라도 다른 환경으로 전파되지 않게 한다. + +이미 원격 저장소에 올라간 비밀번호가 실제 사용 값이었다면 Git 이력에서 지워도 안전하다고 볼 수 없으므로, 해당 값은 폐기하고 새 랜덤 값으로 교체하는 것을 전제로 한다. + ## 2026-04-29 v0.0.5 ### PostgreSQL 기반 데이터 계층 결정 diff --git a/docs/spec.md b/docs/spec.md index 0608d67..b3cea63 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -6,7 +6,7 @@ - **유형**: 커스텀 블로그/CMS - **목표**: 개인 블로그 중심 운영, 기존 포털성 링크와 서비스 진입점은 블로그 내부 구조에 통합 - **참조**: Ghost(관리자 UX/글쓰기), Thred 테마(사용자 화면) -- **현재 상태**: Nuxt 3 초기 스캐폴딩 완료 +- **현재 상태**: Nuxt 3 초기 스캐폴딩과 PostgreSQL 저장소 계층 구성 완료 - **원격 저장소**: https://git.sori.studio/zenn/sori.studio.git --- @@ -209,16 +209,16 @@ components/content/ ```env # Database -DATABASE_URL=postgres://sori_studio:change-this-password@sori-studio-db:5432/sori_studio +DATABASE_URL=postgres://sori_studio:replace-with-random-password@sori-studio-db:5432/sori_studio DATABASE_NAME=sori_studio POSTGRES_DB=sori_studio POSTGRES_USER=sori_studio -POSTGRES_PASSWORD=change-this-password +POSTGRES_PASSWORD=replace-with-random-password DB_PORT=43119 # Auth -ADMIN_EMAIL= -ADMIN_PASSWORD= +ADMIN_EMAIL=admin@example.com +ADMIN_PASSWORD=replace-with-random-password # Upload UPLOAD_DIR=/uploads @@ -236,9 +236,14 @@ APP_PORT=43118 | 파일 | 용도 | DB | |------|------|----| -| `.env.development` | 로컬 개발 | 개발 DB | -| `.env.production` | NAS 운영 | 운영 DB | -| `.env.example` | 공유 예시 | 실제 접속 정보 없음 | +| `.env.development` | 로컬 개발, Git 제외 | 개발 DB | +| `.env.production` | NAS 운영, Git 제외 | 운영 DB | +| `.env.example` | 공유 예시, Git 포함 | 실제 접속 정보 없음 | + +- `.env.example`에는 실제 이메일, 비밀번호, 토큰, 운영 서버 주소를 기록하지 않음 +- `.env.development`와 `.env.production`의 DB 비밀번호와 관리자 비밀번호는 서로 다른 랜덤 값을 사용 +- 로컬 개발 `DATABASE_URL`은 호스트 기준 `127.0.0.1:43119`를 사용 +- NAS Docker 내부 `DATABASE_URL`은 서비스명 기준 `sori-studio-db:5432`를 사용 ### 포트 기준 @@ -253,6 +258,6 @@ APP_PORT=43118 ## 버전 관리 -- 현재 버전: v0.0.5 +- 현재 버전: v0.0.6 - 첫 커밋 이후 변경사항을 커밋할 때마다 패치 버전 증가 - 메이저/마이너 버전은 구조 변경 또는 기능 묶음 단위로 결정 diff --git a/docs/todo.md b/docs/todo.md index 1859b2a..78261b9 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -56,6 +56,7 @@ - [ ] NAS 운영 DB 연결 설정 실제 값 작성 - [ ] 개발 DB와 운영 DB 분리 검증 절차 작성 - [ ] CloudBeaver PostgreSQL 연결 방식 확정 +- [ ] 이전에 원격에 올라간 관리자 비밀번호가 실제 사용 값이면 즉시 폐기 및 변경 ## 배포 diff --git a/docs/update.md b/docs/update.md index f6d9604..26bf11d 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,14 @@ # 업데이트 이력 +## v0.0.6 + +- `.env.example`의 실제 계정/비밀번호 값을 예시 전용 placeholder로 교체. +- 로컬 개발 전용 `.env.development` 파일 생성. +- 개발 DB 비밀번호와 관리자 비밀번호를 랜덤 값으로 분리. +- 환경 변수 파일 관리 기준 문서 정리. +- 패키지 버전을 0.0.6으로 갱신. +- 이미 원격에 올라간 비밀번호 사용 여부 점검 항목 추가. + ## v0.0.5 - PostgreSQL 초기 스키마 마이그레이션 추가. diff --git a/package-lock.json b/package-lock.json index e2d4ff7..7035043 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sori.studio", - "version": "0.0.5", + "version": "0.0.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sori.studio", - "version": "0.0.5", + "version": "0.0.6", "hasInstallScript": true, "dependencies": { "@nuxtjs/tailwindcss": "^6.14.0", diff --git a/package.json b/package.json index bb64eea..0215904 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sori.studio", - "version": "0.0.5", + "version": "0.0.6", "private": true, "type": "module", "scripts": {