# ⚡ 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 백업 크론 설정