초기 커밋 - EV AS 관리 시스템

This commit is contained in:
root
2026-04-18 06:18:58 +09:00
commit 7a5c397983
52 changed files with 6044 additions and 0 deletions

196
README.md Normal file
View File

@@ -0,0 +1,196 @@
# ⚡ EV 충전기 AS 관리 시스템
## 아키텍처 구성
```
인터넷
cs.byunc.com (DNS)
5825u 서버 ── Nginx 리버스 프록시 + Certbot SSL (HTTPS 443)
↓ 내부 포워딩 (127.0.0.1:5700)
Docker Compose (HTTP :5700)
├── ev_nginx :5700 → 컨테이너 내부 :80
├── ev_backend :8000 (내부)
└── ev_db :5432 (내부)
```
---
## 🚀 최초 설치 및 실행
### 1. .env 환경변수 수정 (필수)
```bash
cd /home/byun/ev-charger-as
nano .env
```
아래 두 가지 반드시 변경:
```
POSTGRES_PASSWORD=원하는_비밀번호
SECRET_KEY=아래_명령어로_생성한_값
```
SECRET_KEY 생성:
```bash
openssl rand -hex 32
```
DATABASE_URL 도 POSTGRES_PASSWORD 와 맞게 수정:
```
DATABASE_URL=postgresql://evuser:변경한_비밀번호@db:5432/evcharger
```
### 2. 빌드 및 실행
```bash
docker compose up -d --build
```
### 3. 동작 확인
```bash
docker compose ps
curl http://localhost:5700/api/health
# {"status":"ok"} 확인
```
---
## 🔑 초기 로그인
| 항목 | 값 |
|------|----|
| URL | https://cs.byunc.com/pages/login.html |
| 아이디 | admin |
| 비밀번호 | admin1234 |
> ⚠️ 로그인 후 즉시 비밀번호 변경 (설정 → 비밀번호 변경)
---
## ♻️ DB 초기화가 필요할 때 (재설치 시)
이미 한 번 실행했던 서버에서 init_db.sql 변경사항을 반영하려면
볼륨을 삭제하고 다시 올려야 합니다.
```bash
# 컨테이너 + 볼륨 완전 삭제 (DB 데이터 초기화됨 — 주의)
docker compose down -v
# 다시 빌드 및 실행
docker compose up -d --build
# 확인
docker compose logs db
docker compose logs backend
```
---
## 🌐 5825u Nginx 설정
기존 nginx 설정에 아래 파일 추가:
```bash
sudo nano /etc/nginx/sites-available/ev-charger
```
```nginx
server {
listen 80;
server_name cs.byunc.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cs.byunc.com;
ssl_certificate /etc/letsencrypt/live/cs.byunc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cs.byunc.com/privkey.pem;
client_max_body_size 20M;
location / {
proxy_pass http://127.0.0.1:5700;
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 https;
proxy_read_timeout 60s;
}
}
```
```bash
sudo ln -s /etc/nginx/sites-available/ev-charger /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
```
---
## 🗄️ DB 백업 / 복원
```bash
# 백업
docker exec ev_db pg_dump -U evuser evcharger > backup_$(date +%Y%m%d).sql
# 복원
docker exec -i ev_db psql -U evuser evcharger < backup_20240101.sql
# 업로드 파일 백업
tar -czf uploads_$(date +%Y%m%d).tar.gz uploads/
```
자동 백업 크론:
```bash
crontab -e
# 매일 새벽 3시
0 3 * * * cd ~/ev-charger-as && docker exec ev_db pg_dump -U evuser evcharger > ~/backups/db_$(date +\%Y\%m\%d).sql
```
---
## 🔄 코드 수정 후 재배포
```bash
# 백엔드 코드만 수정한 경우
docker compose build backend
docker compose up -d --no-deps backend
# 전체 재빌드
docker compose up -d --build
```
---
## 🛠 유용한 명령어
```bash
# 상태 확인
docker compose ps
# 로그 확인
docker compose logs -f backend
docker compose logs -f nginx
# DB 직접 접속
docker exec -it ev_db psql -U evuser evcharger
# 전체 재시작
docker compose restart
# 전체 중지 (데이터 보존)
docker compose down
```
---
## 🔒 보안 체크리스트
- [ ] .env POSTGRES_PASSWORD, SECRET_KEY 변경
- [ ] 초기 admin 비밀번호 변경
- [ ] 방화벽: 5432(DB) 포트 외부 노출 차단
- [ ] 정기 DB 백업 크론 설정