From 7cd32f62bd9fac95a2fc19eafcac0983c371dc87 Mon Sep 17 00:00:00 2001 From: zenn Date: Mon, 22 Jun 2026 15:27:49 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=ED=8F=AC?= =?UTF-8?q?=ED=8A=B8=20=EC=9E=AC=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 4 ++-- docker-compose.yml | 4 ++-- docs/deploy.md | 40 ++++++++++++++++++++-------------------- docs/spec.md | 14 +++++++------- docs/update.md | 5 +++++ package-lock.json | 4 ++-- package.json | 4 ++-- scripts/dev-server.js | 2 +- 8 files changed, 41 insertions(+), 36 deletions(-) diff --git a/.env.example b/.env.example index 267cc83..b601737 100644 --- a/.env.example +++ b/.env.example @@ -4,7 +4,7 @@ DATABASE_NAME=sori_studio POSTGRES_DB=sori_studio POSTGRES_USER=sori_studio POSTGRES_PASSWORD=replace-with-random-password -DB_PORT=43085 +DB_PORT=43081 # Auth ADMIN_EMAIL=admin@example.com @@ -35,5 +35,5 @@ NUXT_PUBLIC_SITE_TITLE=sori.studio # EMAIL_OTP_PEPPER= ← 선택. OTP를 DB에 해시해 저장할 때 섞는 서버 전용 비밀(긴 난문자열 권장, 예: openssl rand -hex 32). 비우면 MEMBER_SESSION_SECRET을 대신 사용. # Server -APP_PORT=43084 +APP_PORT=43080 DOCKER_SUBNET=10.250.50.0/24 diff --git a/docker-compose.yml b/docker-compose.yml index 1d8966c..7103169 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ services: env_file: - ${ENV_FILE:-.env.production} ports: - - "${APP_PORT:-43084}:3000" + - "${APP_PORT:-43080}:3000" volumes: - ./public/uploads:/app/public/uploads depends_on: @@ -26,7 +26,7 @@ services: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} ports: - - "${DB_PORT:-43085}:5432" + - "${DB_PORT:-43081}:5432" volumes: - sori-studio-postgres:/var/lib/postgresql/data # NAS 등: 호스트 db/migrations 가 다른 UID만 읽을 수 있으면 컨테이너에서 Permission denied → DB 재시작 루프. 프로젝트 루트에서 chmod -R a+rX db/migrations 및 상위 경로 통과 권한 확인. diff --git a/docs/deploy.md b/docs/deploy.md index 3ca1dff..37e2454 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -256,9 +256,9 @@ npm install # 새로 만들 때는 .env.example을 복사한 뒤 비밀번호를 랜덤 값으로 교체 cp .env.example .env.development openssl rand -hex 32 -# 로컬 DB 컨테이너를 호스트에서 접근할 때는 127.0.0.1:43085 사용 +# 로컬 DB 컨테이너를 호스트에서 접근할 때는 127.0.0.1:43081 사용 -# 개발 서버 실행 (127.0.0.1:43084) +# 개발 서버 실행 (127.0.0.1:43080) npm run dev ``` @@ -414,18 +414,18 @@ docker exec sori-studio-db psql -U sori_studio -d sori_studio -c 'SELECT count(* ### 확인 주소 -- 개발 서버: http://127.0.0.1:43084 -- 관리자: http://127.0.0.1:43084/admin -- Tailwind Viewer: http://127.0.0.1:43084/_tailwind/ +- 개발 서버: http://127.0.0.1:43080 +- 관리자: http://127.0.0.1:43080/admin +- Tailwind Viewer: http://127.0.0.1:43080/_tailwind/ ### 로컬 DB 확인 방법 -로컬 개발 DB는 PostgreSQL이며 호스트에서는 `127.0.0.1:43085`로 접근한다. 접속 정보는 Git에 포함하지 않는 `.env.development` 값을 사용한다. +로컬 개발 DB는 PostgreSQL이며 호스트에서는 `127.0.0.1:43081`로 접근한다. 접속 정보는 Git에 포함하지 않는 `.env.development` 값을 사용한다. | 항목 | 값 | |------|----| | Host | `127.0.0.1` | -| Port | `43085` | +| Port | `43081` | | Database | `.env.development`의 `POSTGRES_DB` | | User | `.env.development`의 `POSTGRES_USER` | | Password | `.env.development`의 `POSTGRES_PASSWORD` | @@ -472,7 +472,7 @@ cd sori.studio # 운영 환경 변수 설정 # .env.production은 Git에 올리지 않는 운영 전용 파일 cp .env.example .env.production -# .env.production 파일에 운영 DB 연결 정보, 운영 전용 랜덤 비밀번호, APP_PORT=43084, DB_PORT=43085 입력 +# .env.production 파일에 운영 DB 연결 정보, 운영 전용 랜덤 비밀번호, APP_PORT=43080, DB_PORT=43081 입력 # 운영 DB에 owner/admin이 없으면 /admin/login에서 ADMIN_EMAIL/ADMIN_PASSWORD로 최초 owner 계정이 생성됨 # MEMBER_SESSION_SECRET은 ADMIN_PASSWORD와 다른 긴 난수 문자열로 반드시 입력 # Docker 네트워크 대역이 NAS 기존 컨테이너와 겹치면 DOCKER_SUBNET을 다른 사설 대역으로 변경 @@ -541,10 +541,10 @@ docker compose --env-file .env.production up -d --build ### 포트 -- 로컬 개발: 43084 -- NAS Docker 외부: 43084 +- 로컬 개발: 43080 +- NAS Docker 외부: 43080 - 컨테이너 내부: 3000 -- PostgreSQL 외부: 43085 +- PostgreSQL 외부: 43081 - Docker 내부 네트워크 기본값: `10.250.50.0/24` - HTTPS: 3001 (SSL 설정 시) @@ -554,7 +554,7 @@ docker compose --env-file .env.production up -d --build - 로컬 개발: `.env.development`의 `DATABASE_URL` - NAS 운영: `.env.production`의 `DATABASE_URL` -- 로컬 개발 예시: `postgres://sori_studio:비밀번호@127.0.0.1:43085/sori_studio` +- 로컬 개발 예시: `postgres://sori_studio:비밀번호@127.0.0.1:43081/sori_studio` - NAS Docker 예시: `postgres://sori_studio:비밀번호@sori-studio-db:5432/sori_studio` - `.env.example`에는 실제 비밀번호나 개인 이메일을 기록하지 않음 - 개발/운영 DB 비밀번호와 관리자 비밀번호는 서로 다른 랜덤 값을 사용 @@ -612,7 +612,7 @@ docker compose --env-file .env.production up -d --build 1. `.env.development` 확인. ```bash -# 로컬 개발 DB는 호스트 기준 127.0.0.1:43085를 사용해야 한다. +# 로컬 개발 DB는 호스트 기준 127.0.0.1:43081을 사용해야 한다. # DATABASE_URL 전체 값은 공유하지 않는다. rg -n "^(DATABASE_URL|POSTGRES_DB|POSTGRES_USER|DB_PORT)=" .env.development ``` @@ -620,8 +620,8 @@ rg -n "^(DATABASE_URL|POSTGRES_DB|POSTGRES_USER|DB_PORT)=" .env.development 기준: - `DATABASE_URL` 호스트가 `127.0.0.1` -- `DATABASE_URL` 포트가 `43085` -- `DB_PORT=43085` +- `DATABASE_URL` 포트가 `43081` +- `DB_PORT=43081` - 운영 NAS 호스트명, 운영 IP, 운영 DB 이름이 포함되지 않음 2. `.env.production` 확인. @@ -635,9 +635,9 @@ test -f .env.production && rg -n "^(DATABASE_URL|POSTGRES_DB|POSTGRES_USER|APP_P 기준: - NAS Docker 내부 실행 기준이면 `DATABASE_URL` 호스트가 `sori-studio-db` -- NAS 외부 DB를 별도 인스턴스로 쓰는 경우에도 로컬 개발 DB(`127.0.0.1:43085`)를 가리키지 않음 -- `APP_PORT=43084` -- `DB_PORT=43085` +- NAS 외부 DB를 별도 인스턴스로 쓰는 경우에도 로컬 개발 DB(`127.0.0.1:43081`)를 가리키지 않음 +- `APP_PORT=43080` +- `DB_PORT=43081` - `MEMBER_SESSION_SECRET`이 비어 있지 않고 `ADMIN_PASSWORD`와 다름 - `.env.development`와 DB 비밀번호, 관리자 비밀번호가 서로 다름 @@ -662,8 +662,8 @@ npm run dev 기준: -- 출력 주소가 `http://127.0.0.1:43084` -- 관리자 API 요청에서 `127.0.0.1:43085` 연결 오류가 발생하지 않음 +- 출력 주소가 `http://127.0.0.1:43080` +- 관리자 API 요청에서 `127.0.0.1:43081` 연결 오류가 발생하지 않음 5. 커밋 전 민감 정보 확인. diff --git a/docs/spec.md b/docs/spec.md index 914526c..b6c542d 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -885,7 +885,7 @@ DATABASE_NAME=sori_studio POSTGRES_DB=sori_studio POSTGRES_USER=sori_studio POSTGRES_PASSWORD=replace-with-random-password -DB_PORT=43085 +DB_PORT=43081 # Auth ADMIN_EMAIL=admin@example.com @@ -910,7 +910,7 @@ NUXT_PUBLIC_SITE_URL=https://sori.studio NUXT_PUBLIC_SITE_TITLE=sori.studio # Server -APP_PORT=43084 +APP_PORT=43080 ``` ### 환경 파일 기준 @@ -923,18 +923,18 @@ APP_PORT=43084 - `.env.example`에는 실제 이메일, 비밀번호, 토큰, 운영 서버 주소를 기록하지 않음 - `.env.development`와 `.env.production`의 DB 비밀번호와 관리자 비밀번호는 서로 다른 랜덤 값을 사용 -- 로컬 개발 `DATABASE_URL`은 호스트 기준 `127.0.0.1:43085`를 사용 +- 로컬 개발 `DATABASE_URL`은 호스트 기준 `127.0.0.1:43081`을 사용 - NAS Docker 내부 `DATABASE_URL`은 서비스명 기준 `sori-studio-db:5432`를 사용 -- 로컬 DB 확인은 PostgreSQL 클라이언트에서 `127.0.0.1:43085`로 접속하거나 `docker exec sori-studio-db psql` 명령으로 확인한다. +- 로컬 DB 확인은 PostgreSQL 클라이언트에서 `127.0.0.1:43081`로 접속하거나 `docker exec sori-studio-db psql` 명령으로 확인한다. ### 포트 기준 | 용도 | 포트 | |------|------| -| 로컬 개발 서버 | 43084 | -| NAS Docker 외부 포트 | 43084 | +| 로컬 개발 서버 | 43080 | +| NAS Docker 외부 포트 | 43080 | | 컨테이너 내부 포트 | 3000 | -| PostgreSQL 외부 포트 | 43085 | +| PostgreSQL 외부 포트 | 43081 | --- diff --git a/docs/update.md b/docs/update.md index c589aa8..d1b5932 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,10 @@ # 업데이트 이력 +## v1.7.5 + +- 전체 포트 재정검 결과에 맞춰 앱 포트를 `43080`, PostgreSQL 외부 포트를 `43081`로 변경. +- 개발·운영 환경 파일, Compose 기본값, 개발 서버·미리보기 명령과 관련 문서의 포트 기준을 통일. + ## v1.7.4 - 다른 서비스와의 포트 충돌을 피하도록 앱 포트를 `43084`, PostgreSQL 외부 포트를 `43085`로 변경. diff --git a/package-lock.json b/package-lock.json index 328588c..b2ef95c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sori.studio", - "version": "1.7.4", + "version": "1.7.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sori.studio", - "version": "1.7.4", + "version": "1.7.5", "hasInstallScript": true, "dependencies": { "@nuxtjs/tailwindcss": "^6.14.0", diff --git a/package.json b/package.json index 01dfc4b..45fe810 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sori.studio", - "version": "1.7.4", + "version": "1.7.5", "private": true, "type": "module", "imports": { @@ -15,7 +15,7 @@ "lint": "node scripts/check-js-syntax.js", "test": "npm run build", "verify": "npm run lint && npm run test", - "preview": "nuxt preview --dotenv .env.development --host 127.0.0.1 --port 43084", + "preview": "nuxt preview --dotenv .env.development --host 127.0.0.1 --port 43080", "db:migrate": "node scripts/migrate-database.js migrate", "db:migrate:dev": "MIGRATION_ENV=development ENV_FILE=.env.development node scripts/migrate-database.js migrate", "db:migrate:dev:status": "MIGRATION_ENV=development ENV_FILE=.env.development node scripts/migrate-database.js status", diff --git a/scripts/dev-server.js b/scripts/dev-server.js index acc1e7f..1740a9c 100644 --- a/scripts/dev-server.js +++ b/scripts/dev-server.js @@ -1,7 +1,7 @@ import { spawn } from 'node:child_process' const host = '127.0.0.1' -const port = '43084' +const port = '43080' let printedLinks = false let nitroReady = false let collectedLines = []