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 환경변수 수정 (필수)

cd /home/byun/ev-charger-as
nano .env

아래 두 가지 반드시 변경:

POSTGRES_PASSWORD=원하는_비밀번호
SECRET_KEY=아래_명령어로_생성한_값

SECRET_KEY 생성:

openssl rand -hex 32

DATABASE_URL 도 POSTGRES_PASSWORD 와 맞게 수정:

DATABASE_URL=postgresql://evuser:변경한_비밀번호@db:5432/evcharger

2. 빌드 및 실행

docker compose up -d --build

3. 동작 확인

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 변경사항을 반영하려면 볼륨을 삭제하고 다시 올려야 합니다.

# 컨테이너 + 볼륨 완전 삭제 (DB 데이터 초기화됨 — 주의)
docker compose down -v

# 다시 빌드 및 실행
docker compose up -d --build

# 확인
docker compose logs db
docker compose logs backend

🌐 5825u Nginx 설정

기존 nginx 설정에 아래 파일 추가:

sudo nano /etc/nginx/sites-available/ev-charger
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;
    }
}
sudo ln -s /etc/nginx/sites-available/ev-charger /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

🗄️ DB 백업 / 복원

# 백업
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/

자동 백업 크론:

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

🔄 코드 수정 후 재배포

# 백엔드 코드만 수정한 경우
docker compose build backend
docker compose up -d --no-deps backend

# 전체 재빌드
docker compose up -d --build

🛠 유용한 명령어

# 상태 확인
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 백업 크론 설정
Description
CS 관리페이지
Readme 120 KiB
Languages
HTML 62.6%
Python 28.4%
JavaScript 5.2%
CSS 3.7%
Dockerfile 0.1%