feat: 완전한 Tapo 스마트 플러그 백엔드 시스템 구현
✨ 새로운 기능: - Tapo P110/P100 스마트 플러그 완전 연동 - 동적 기기 관리 (추가/제거/수정) - 실시간 전력 데이터 수집 API - 설정 파일 기반 확장 가능한 아키텍처 🔧 기술 개선: - Docker Compose 파일 통합 (mac-mini 전용 제거) - MariaDB 설정 최적화 (호환성 문제 해결) - 포트 구조 개선 (9304-9307 대역 사용) - Express.js 기반 RESTful API 완성 📚 문서화: - README 전면 업데이트 (구현된 API 반영) - Tapo API 엔드포인트 상세 문서화 - 실제 사용 가능한 curl 예제 추가 🗄️ 데이터베이스: - MariaDB 11 안정화 - Redis 캐시 시스템 구축 - 사용자 권한 모델 준비 🚀 Docker 환경: - 단일 docker-compose.yml로 통합 - 포트 충돌 해결 - 헬스체크 및 자동 재시작 설정
This commit is contained in:
@@ -1,16 +1,14 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:11-jammy
|
||||
container_name: home_mariadb
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root_password
|
||||
MYSQL_ROOT_PASSWORD: mac_mini_root_password
|
||||
MYSQL_DATABASE: home_management
|
||||
MYSQL_USER: homeuser
|
||||
MYSQL_PASSWORD: home_password
|
||||
MYSQL_PASSWORD: mac_mini_home_password
|
||||
ports:
|
||||
- "3306:3306"
|
||||
- "9305:3306"
|
||||
volumes:
|
||||
- mariadb_data:/var/lib/mysql
|
||||
- ./scripts/setup-db.sql:/docker-entrypoint-initdb.d/setup.sql
|
||||
@@ -18,8 +16,8 @@ services:
|
||||
command: >
|
||||
--character-set-server=utf8mb4
|
||||
--collation-server=utf8mb4_unicode_ci
|
||||
--innodb-buffer-pool-size=2G
|
||||
--innodb-log-file-size=256M
|
||||
--innodb-buffer-pool-size=4G
|
||||
--innodb-log-file-size=512M
|
||||
--max-connections=200
|
||||
--query-cache-size=256M
|
||||
restart: unless-stopped
|
||||
@@ -33,11 +31,11 @@ services:
|
||||
PMA_HOST: mariadb
|
||||
PMA_PORT: 3306
|
||||
PMA_USER: homeuser
|
||||
PMA_PASSWORD: home_password
|
||||
PMA_PASSWORD: mac_mini_home_password
|
||||
UPLOAD_LIMIT: 2G
|
||||
MEMORY_LIMIT: 512M
|
||||
ports:
|
||||
- "8080:80"
|
||||
- "9304:80"
|
||||
depends_on:
|
||||
- mariadb
|
||||
restart: unless-stopped
|
||||
@@ -48,7 +46,7 @@ services:
|
||||
image: redis:7-alpine
|
||||
container_name: home_redis
|
||||
ports:
|
||||
- "6379:6379"
|
||||
- "9307:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
- ./config/redis.conf:/usr/local/etc/redis/redis.conf
|
||||
@@ -66,29 +64,51 @@ services:
|
||||
DB_PORT: 3306
|
||||
DB_NAME: home_management
|
||||
DB_USER: homeuser
|
||||
DB_PASSWORD: home_password
|
||||
DB_PASSWORD: mac_mini_home_password
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
JWT_SECRET: mac-mini-jwt-secret-key
|
||||
JWT_SECRET: mac-mini-production-jwt-secret-key-2025
|
||||
API_PORT: 3000
|
||||
API_HOST: 0.0.0.0
|
||||
CORS_ORIGIN: http://mac-mini-m4:3001,http://localhost:3001
|
||||
CORS_ORIGIN: http://mac-mini-m4.local:3001,http://localhost:3001,http://192.168.1.100:3001
|
||||
LOG_LEVEL: info
|
||||
BCRYPT_ROUNDS: 12
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "9306:3000"
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./uploads:/app/uploads
|
||||
- /Users/hyungiahn/home-management-data:/app/data
|
||||
depends_on:
|
||||
- mariadb
|
||||
- redis
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- home_network
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
|
||||
volumes:
|
||||
mariadb_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /Users/hyungiahn/home-management-db
|
||||
redis_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /Users/hyungiahn/home-management-redis
|
||||
|
||||
networks:
|
||||
home_network:
|
||||
driver: bridge
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.20.0.0/16
|
||||
Reference in New Issue
Block a user