AssetPilot OrangePi 5 Pluse Server-First Commit
This commit is contained in:
227
.TemporaryDocument/DOCKER_QUICKSTART.md
Normal file
227
.TemporaryDocument/DOCKER_QUICKSTART.md
Normal file
@@ -0,0 +1,227 @@
|
||||
# 🐳 Asset Pilot Docker 빠른 시작
|
||||
|
||||
## 1️⃣ 파일 전송 (Orange Pi로)
|
||||
|
||||
```bash
|
||||
# Windows PowerShell 또는 Linux/Mac 터미널에서
|
||||
scp asset_pilot_docker.tar.gz orangepi@192.168.1.100:~/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ Orange Pi에서 설치
|
||||
|
||||
```bash
|
||||
# SSH 접속
|
||||
ssh orangepi@192.168.1.100
|
||||
|
||||
# 압축 해제
|
||||
tar -xzf asset_pilot_docker.tar.gz
|
||||
cd asset_pilot_docker
|
||||
|
||||
# 자동 설치 (Docker가 없으면 자동으로 설치함)
|
||||
bash start.sh
|
||||
```
|
||||
|
||||
**설치 스크립트가 자동으로 처리:**
|
||||
- ✅ Docker 설치 확인 및 설치
|
||||
- ✅ 비밀번호 설정
|
||||
- ✅ 컨테이너 빌드 및 실행
|
||||
- ✅ 데이터베이스 초기화
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 접속
|
||||
|
||||
```
|
||||
http://[Orange_Pi_IP]:8000
|
||||
```
|
||||
|
||||
예: `http://192.168.1.100:8000`
|
||||
|
||||
---
|
||||
|
||||
## 📦 Docker 컨테이너 구조
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ Orange Pi 5 Plus (Ubuntu) │
|
||||
│ │
|
||||
│ ┌──────────────────────────────────┐ │
|
||||
│ │ Docker Network │ │
|
||||
│ │ │ │
|
||||
│ │ ┌────────────┐ ┌────────────┐ │ │
|
||||
│ │ │ PostgreSQL │ │ App │ │ │
|
||||
│ │ │ Container │ │ Container │ │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ │ Port 5432 │←→│ FastAPI │ │ │
|
||||
│ │ │ │ │ Port 8000 │ │ │
|
||||
│ │ └────────────┘ └────────────┘ │ │
|
||||
│ │ ↓ ↓ │ │
|
||||
│ │ [Volume] [Volume] │ │
|
||||
│ │ postgres_data app_logs │ │
|
||||
│ └──────────────────────────────────┘ │
|
||||
│ ↑ │
|
||||
│ Port 8000 (외부 접근) │
|
||||
└─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 주요 명령어
|
||||
|
||||
### 컨테이너 관리
|
||||
```bash
|
||||
# 전체 시작
|
||||
docker compose up -d
|
||||
|
||||
# 전체 중지
|
||||
docker compose down
|
||||
|
||||
# 상태 확인
|
||||
docker compose ps
|
||||
|
||||
# 로그 보기 (실시간)
|
||||
docker compose logs -f
|
||||
```
|
||||
|
||||
### 특정 컨테이너만 제어
|
||||
```bash
|
||||
# 앱만 재시작
|
||||
docker compose restart app
|
||||
|
||||
# DB만 재시작
|
||||
docker compose restart postgres
|
||||
|
||||
# 앱 로그만 보기
|
||||
docker compose logs -f app
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💾 Windows 데이터 가져오기
|
||||
|
||||
기존 `user_assets.csv` 파일이 있다면:
|
||||
|
||||
```bash
|
||||
# 1. CSV 파일을 컨테이너로 복사
|
||||
docker cp user_assets.csv asset_pilot_app:/app/
|
||||
|
||||
# 2. 가져오기 실행
|
||||
docker compose exec app python import_csv.py user_assets.csv
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 백업 및 복원
|
||||
|
||||
### 백업 생성
|
||||
```bash
|
||||
# 데이터베이스 백업
|
||||
docker compose exec postgres pg_dump -U asset_user asset_pilot > backup_$(date +%Y%m%d).sql
|
||||
```
|
||||
|
||||
### 백업 복원
|
||||
```bash
|
||||
# 백업 파일 복원
|
||||
cat backup_20260210.sql | docker compose exec -T postgres psql -U asset_user -d asset_pilot
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ 문제 해결
|
||||
|
||||
### 컨테이너가 시작되지 않음
|
||||
```bash
|
||||
# 로그 확인
|
||||
docker compose logs
|
||||
|
||||
# 특정 서비스 로그
|
||||
docker compose logs app
|
||||
docker compose logs postgres
|
||||
```
|
||||
|
||||
### Docker가 설치되지 않음
|
||||
```bash
|
||||
# Docker 자동 설치
|
||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||
sudo sh get-docker.sh
|
||||
sudo usermod -aG docker $USER
|
||||
newgrp docker # 또는 로그아웃 후 재로그인
|
||||
```
|
||||
|
||||
### 포트가 이미 사용 중
|
||||
```bash
|
||||
# docker-compose.yml 파일 편집
|
||||
nano docker-compose.yml
|
||||
|
||||
# ports 섹션 수정
|
||||
# "8001:8000" # 8000 대신 8001 사용
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🗑️ 완전 삭제
|
||||
|
||||
```bash
|
||||
# 컨테이너 + 볼륨 모두 삭제
|
||||
docker compose down -v
|
||||
|
||||
# 이미지도 삭제
|
||||
docker rmi asset_pilot_docker-app postgres:16-alpine
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📱 모바일/태블릿 접속
|
||||
|
||||
1. 같은 Wi-Fi에 연결
|
||||
2. 브라우저에서 `http://[IP]:8000` 접속
|
||||
3. **홈 화면에 추가** → 앱처럼 사용!
|
||||
|
||||
---
|
||||
|
||||
## 🔐 보안 팁
|
||||
|
||||
```bash
|
||||
# .env 파일 권한 설정
|
||||
chmod 600 .env
|
||||
|
||||
# 방화벽 설정
|
||||
sudo ufw allow 8000/tcp
|
||||
sudo ufw enable
|
||||
|
||||
# PostgreSQL 외부 접근 차단 (기본값 유지)
|
||||
# docker-compose.yml에서 5432 포트를 127.0.0.1:5432:5432로 변경
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 설치 확인 체크리스트
|
||||
|
||||
- [ ] Docker 설치됨 (`docker --version`)
|
||||
- [ ] 프로젝트 압축 해제됨
|
||||
- [ ] `.env` 파일 비밀번호 설정됨
|
||||
- [ ] `docker compose up -d` 실행됨
|
||||
- [ ] 컨테이너 실행 중 (`docker compose ps`)
|
||||
- [ ] DB 초기화 완료
|
||||
- [ ] 웹 접속 가능 (`http://[IP]:8000`)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 장점 요약
|
||||
|
||||
| 기능 | 일반 설치 | Docker 설치 |
|
||||
|------|----------|------------|
|
||||
| 설치 복잡도 | 중간 | 매우 쉬움 |
|
||||
| 환경 격리 | 없음 | 완벽 |
|
||||
| 백업/복원 | 수동 | 간단 |
|
||||
| 업데이트 | 복잡 | 쉬움 |
|
||||
| 이식성 | 낮음 | 높음 |
|
||||
| 롤백 | 어려움 | 쉬움 |
|
||||
|
||||
---
|
||||
|
||||
**모든 준비 완료! 투자 모니터링을 시작하세요! 💰**
|
||||
|
||||
상세한 내용은 `DOCKER_GUIDE.md` 참조
|
||||
368
.TemporaryDocument/MIGRATION_GUIDE.md
Normal file
368
.TemporaryDocument/MIGRATION_GUIDE.md
Normal file
@@ -0,0 +1,368 @@
|
||||
# Asset Pilot - Windows → Orange Pi 5 Plus 전환 가이드
|
||||
|
||||
## 📋 개요
|
||||
|
||||
**목적**: Windows PyQt5 데스크톱 애플리케이션을 Orange Pi 5 Plus (Ubuntu 24.04) 기반 웹 애플리케이션으로 전환
|
||||
|
||||
**주요 변경사항**:
|
||||
- PyQt5 GUI → FastAPI + HTML/JavaScript 웹 인터페이스
|
||||
- CSV 파일 저장 → PostgreSQL 데이터베이스
|
||||
- Windows 토스트 알림 → 웹 푸시 알림 (선택적)
|
||||
- 로컬 실행 → 네트워크 기반 접근 가능
|
||||
|
||||
---
|
||||
|
||||
## 🔧 시스템 요구사항
|
||||
|
||||
### 하드웨어
|
||||
- Orange Pi 5 Plus (ARM64 아키텍처)
|
||||
- 최소 2GB RAM (4GB 권장)
|
||||
- 최소 8GB 저장공간
|
||||
|
||||
### 소프트웨어
|
||||
- Ubuntu 24.04 LTS (Joshua Riek 버전)
|
||||
- PostgreSQL 14+
|
||||
- Python 3.10+
|
||||
- Nginx (선택적, 프로덕션 배포용)
|
||||
|
||||
---
|
||||
|
||||
## 📦 설치 단계
|
||||
|
||||
### 1단계: 시스템 패키지 설치
|
||||
|
||||
```bash
|
||||
# 시스템 업데이트
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
|
||||
# PostgreSQL 설치
|
||||
sudo apt install -y postgresql postgresql-contrib
|
||||
|
||||
# Python 및 개발 도구 설치
|
||||
sudo apt install -y python3 python3-pip python3-venv python3-dev
|
||||
sudo apt install -y build-essential libpq-dev
|
||||
|
||||
# Nginx 설치 (선택적)
|
||||
sudo apt install -y nginx
|
||||
```
|
||||
|
||||
### 2단계: PostgreSQL 설정
|
||||
|
||||
```bash
|
||||
# PostgreSQL 서비스 시작
|
||||
sudo systemctl start postgresql
|
||||
sudo systemctl enable postgresql
|
||||
|
||||
# 데이터베이스 및 사용자 생성
|
||||
sudo -u postgres psql << EOF
|
||||
CREATE DATABASE asset_pilot;
|
||||
CREATE USER asset_user WITH ENCRYPTED PASSWORD 'your_secure_password';
|
||||
GRANT ALL PRIVILEGES ON DATABASE asset_pilot TO asset_user;
|
||||
\q
|
||||
EOF
|
||||
```
|
||||
|
||||
### 3단계: 애플리케이션 설치
|
||||
|
||||
```bash
|
||||
# 작업 디렉토리 생성
|
||||
mkdir -p ~/asset_pilot_web
|
||||
cd ~/asset_pilot_web
|
||||
|
||||
# 제공된 파일 압축 해제
|
||||
unzip asset_pilot_orangepi.zip
|
||||
cd asset_pilot_orangepi
|
||||
|
||||
# Python 가상환경 생성
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
|
||||
# 의존성 패키지 설치
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 4단계: 환경 변수 설정
|
||||
|
||||
`.env` 파일 생성:
|
||||
|
||||
```bash
|
||||
cat > .env << 'EOF'
|
||||
# 데이터베이스 설정
|
||||
DATABASE_URL=postgresql://asset_user:your_secure_password@localhost/asset_pilot
|
||||
|
||||
# 서버 설정
|
||||
APP_HOST=0.0.0.0
|
||||
APP_PORT=8000
|
||||
DEBUG=False
|
||||
|
||||
# 데이터 수집 간격 (초)
|
||||
FETCH_INTERVAL=5
|
||||
EOF
|
||||
```
|
||||
|
||||
### 5단계: 데이터베이스 초기화
|
||||
|
||||
```bash
|
||||
# 가상환경 활성화 상태에서
|
||||
python init_db.py
|
||||
```
|
||||
|
||||
### 6단계: 서비스 등록 (자동 실행)
|
||||
|
||||
```bash
|
||||
# systemd 서비스 파일 복사
|
||||
sudo cp asset_pilot.service /etc/systemd/system/
|
||||
|
||||
# 서비스 파일 편집 (경로 확인)
|
||||
sudo nano /etc/systemd/system/asset_pilot.service
|
||||
|
||||
# 서비스 활성화
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable asset_pilot.service
|
||||
sudo systemctl start asset_pilot.service
|
||||
|
||||
# 상태 확인
|
||||
sudo systemctl status asset_pilot.service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🌐 웹 인터페이스 접근
|
||||
|
||||
### 로컬 네트워크에서 접근
|
||||
|
||||
1. Orange Pi의 IP 주소 확인:
|
||||
```bash
|
||||
ip addr show | grep inet
|
||||
```
|
||||
|
||||
2. 웹 브라우저에서 접속:
|
||||
```
|
||||
http://[Orange_Pi_IP]:8000
|
||||
```
|
||||
예: `http://192.168.1.100:8000`
|
||||
|
||||
### Nginx 리버스 프록시 설정 (선택적)
|
||||
|
||||
프로덕션 환경에서는 Nginx를 통한 접근 권장:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/nginx/sites-available/asset_pilot
|
||||
```
|
||||
|
||||
다음 내용 입력:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name your_domain_or_ip;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8000;
|
||||
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 $scheme;
|
||||
}
|
||||
|
||||
location /api/stream {
|
||||
proxy_pass http://127.0.0.1:8000/api/stream;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
proxy_buffering off;
|
||||
proxy_cache off;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
활성화:
|
||||
|
||||
```bash
|
||||
sudo ln -s /etc/nginx/sites-available/asset_pilot /etc/nginx/sites-enabled/
|
||||
sudo nginx -t
|
||||
sudo systemctl restart nginx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 데이터 마이그레이션
|
||||
|
||||
### Windows 앱에서 데이터 내보내기
|
||||
|
||||
기존 Windows 앱의 `user_assets.csv` 파일을 Orange Pi로 복사:
|
||||
|
||||
```bash
|
||||
# Windows에서 SCP로 전송 (예시)
|
||||
scp user_assets.csv orangepi@192.168.1.100:~/asset_pilot_web/
|
||||
```
|
||||
|
||||
### 데이터 가져오기
|
||||
|
||||
```bash
|
||||
cd ~/asset_pilot_web/asset_pilot_orangepi
|
||||
source venv/bin/activate
|
||||
python import_csv.py ../user_assets.csv
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 모니터링 및 관리
|
||||
|
||||
### 로그 확인
|
||||
|
||||
```bash
|
||||
# 실시간 로그 보기
|
||||
sudo journalctl -u asset_pilot.service -f
|
||||
|
||||
# 최근 100줄 로그
|
||||
sudo journalctl -u asset_pilot.service -n 100
|
||||
```
|
||||
|
||||
### 서비스 관리
|
||||
|
||||
```bash
|
||||
# 시작
|
||||
sudo systemctl start asset_pilot.service
|
||||
|
||||
# 중지
|
||||
sudo systemctl stop asset_pilot.service
|
||||
|
||||
# 재시작
|
||||
sudo systemctl restart asset_pilot.service
|
||||
|
||||
# 상태 확인
|
||||
sudo systemctl status asset_pilot.service
|
||||
```
|
||||
|
||||
### 데이터베이스 백업
|
||||
|
||||
```bash
|
||||
# 백업 생성
|
||||
pg_dump -U asset_user -h localhost asset_pilot > backup_$(date +%Y%m%d).sql
|
||||
|
||||
# 복원
|
||||
psql -U asset_user -h localhost asset_pilot < backup_20260210.sql
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 보안 권장사항
|
||||
|
||||
1. **방화벽 설정**:
|
||||
```bash
|
||||
sudo ufw allow 8000/tcp # 또는 Nginx 사용 시 80/tcp
|
||||
sudo ufw enable
|
||||
```
|
||||
|
||||
2. **PostgreSQL 외부 접근 차단**: 기본 설정 유지 (localhost만 허용)
|
||||
|
||||
3. **강력한 비밀번호 사용**: `.env` 파일의 데이터베이스 비밀번호 변경
|
||||
|
||||
4. **HTTPS 설정** (선택적):
|
||||
- Let's Encrypt 인증서 사용
|
||||
- Nginx SSL 설정
|
||||
|
||||
---
|
||||
|
||||
## 🆘 문제 해결
|
||||
|
||||
### 서비스가 시작되지 않음
|
||||
|
||||
```bash
|
||||
# 로그 확인
|
||||
sudo journalctl -u asset_pilot.service -n 50
|
||||
|
||||
# 수동 실행으로 오류 확인
|
||||
cd ~/asset_pilot_web/asset_pilot_orangepi
|
||||
source venv/bin/activate
|
||||
python main.py
|
||||
```
|
||||
|
||||
### 데이터베이스 연결 오류
|
||||
|
||||
```bash
|
||||
# PostgreSQL 상태 확인
|
||||
sudo systemctl status postgresql
|
||||
|
||||
# 연결 테스트
|
||||
psql -U asset_user -h localhost -d asset_pilot
|
||||
```
|
||||
|
||||
### 포트 충돌
|
||||
|
||||
```bash
|
||||
# 8000번 포트 사용 중인 프로세스 확인
|
||||
sudo lsof -i :8000
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📱 모바일 접근
|
||||
|
||||
### 홈 화면에 추가 (PWA 스타일)
|
||||
|
||||
1. 모바일 브라우저에서 접속
|
||||
2. 브라우저 메뉴 → "홈 화면에 추가"
|
||||
3. 앱처럼 사용 가능
|
||||
|
||||
---
|
||||
|
||||
## 🔄 업데이트 절차
|
||||
|
||||
```bash
|
||||
cd ~/asset_pilot_web/asset_pilot_orangepi
|
||||
source venv/bin/activate
|
||||
|
||||
# 최신 코드 적용
|
||||
git pull # 또는 새 파일 복사
|
||||
|
||||
# 의존성 업데이트
|
||||
pip install -r requirements.txt --upgrade
|
||||
|
||||
# 데이터베이스 마이그레이션 (필요시)
|
||||
python migrate_db.py
|
||||
|
||||
# 서비스 재시작
|
||||
sudo systemctl restart asset_pilot.service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📞 지원
|
||||
|
||||
문제 발생 시:
|
||||
1. 로그 확인: `sudo journalctl -u asset_pilot.service -n 100`
|
||||
2. 데이터베이스 상태 확인: `sudo systemctl status postgresql`
|
||||
3. 네트워크 연결 확인: `ping 8.8.8.8`
|
||||
|
||||
---
|
||||
|
||||
## 🎯 주요 차이점 요약
|
||||
|
||||
| 기능 | Windows 앱 | Orange Pi 웹앱 |
|
||||
|------|-----------|---------------|
|
||||
| UI | PyQt5 | HTML/JavaScript |
|
||||
| 저장소 | CSV 파일 | PostgreSQL |
|
||||
| 접근성 | 로컬 실행 | 네트워크 접근 |
|
||||
| 알림 | Windows 토스트 | 브라우저 알림 |
|
||||
| 멀티 기기 | 불가 | 가능 |
|
||||
| 자동 시작 | Windows 작업 스케줄러 | systemd |
|
||||
|
||||
---
|
||||
|
||||
## ✅ 체크리스트
|
||||
|
||||
설치 완료 확인:
|
||||
- [ ] PostgreSQL 설치 및 실행
|
||||
- [ ] 데이터베이스 생성
|
||||
- [ ] Python 가상환경 생성
|
||||
- [ ] 의존성 패키지 설치
|
||||
- [ ] 환경 변수 설정
|
||||
- [ ] 데이터베이스 초기화
|
||||
- [ ] 서비스 등록 및 시작
|
||||
- [ ] 웹 브라우저 접속 확인
|
||||
- [ ] 데이터 수집 동작 확인
|
||||
- [ ] 기존 데이터 마이그레이션 (선택적)
|
||||
|
||||
모든 항목 완료 시 시스템 사용 준비 완료! 🎉
|
||||
126
.TemporaryDocument/QUICKSTART.md
Normal file
126
.TemporaryDocument/QUICKSTART.md
Normal file
@@ -0,0 +1,126 @@
|
||||
# Asset Pilot - Orange Pi 빠른 시작 가이드
|
||||
|
||||
## 🚀 5분 안에 시작하기
|
||||
|
||||
### 1️⃣ 파일 전송
|
||||
|
||||
Orange Pi에 `asset_pilot_orangepi.tar.gz` 파일을 전송:
|
||||
|
||||
```bash
|
||||
# Windows에서 (PowerShell)
|
||||
scp asset_pilot_orangepi.tar.gz orangepi@192.168.1.100:~/
|
||||
|
||||
# Linux/Mac에서
|
||||
scp asset_pilot_orangepi.tar.gz orangepi@192.168.1.100:~/
|
||||
```
|
||||
|
||||
### 2️⃣ Orange Pi에서 설치
|
||||
|
||||
```bash
|
||||
# SSH 접속
|
||||
ssh orangepi@192.168.1.100
|
||||
|
||||
# 압축 해제
|
||||
tar -xzf asset_pilot_orangepi.tar.gz
|
||||
cd asset_pilot_orangepi
|
||||
|
||||
# 자동 설치 스크립트 실행
|
||||
bash install.sh
|
||||
```
|
||||
|
||||
스크립트가 다음을 자동으로 처리합니다:
|
||||
- PostgreSQL 설치 및 설정
|
||||
- Python 가상환경 생성
|
||||
- 필요한 패키지 설치
|
||||
- 데이터베이스 초기화
|
||||
- 서비스 등록
|
||||
|
||||
### 3️⃣ 접속
|
||||
|
||||
웹 브라우저에서:
|
||||
```
|
||||
http://[Orange_Pi_IP]:8000
|
||||
```
|
||||
|
||||
예: `http://192.168.1.100:8000`
|
||||
|
||||
---
|
||||
|
||||
## 📱 스마트폰에서 접속
|
||||
|
||||
1. 같은 Wi-Fi 네트워크에 연결
|
||||
2. 브라우저에서 `http://[IP]:8000` 접속
|
||||
3. "홈 화면에 추가" → 앱처럼 사용!
|
||||
|
||||
---
|
||||
|
||||
## 🔧 주요 명령어
|
||||
|
||||
```bash
|
||||
# 서비스 상태 확인
|
||||
sudo systemctl status asset_pilot
|
||||
|
||||
# 로그 실시간 보기
|
||||
sudo journalctl -u asset_pilot -f
|
||||
|
||||
# 서비스 재시작
|
||||
sudo systemctl restart asset_pilot
|
||||
|
||||
# 서비스 중지
|
||||
sudo systemctl stop asset_pilot
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Windows 데이터 가져오기
|
||||
|
||||
기존 `user_assets.csv` 파일이 있다면:
|
||||
|
||||
```bash
|
||||
# CSV 파일을 Orange Pi로 복사
|
||||
scp user_assets.csv orangepi@192.168.1.100:~/
|
||||
|
||||
# Orange Pi에서 가져오기
|
||||
cd ~/asset_pilot_orangepi
|
||||
source venv/bin/activate
|
||||
python import_csv.py ../user_assets.csv
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ❓ 문제 해결
|
||||
|
||||
### 접속이 안 될 때
|
||||
|
||||
1. 서비스 확인:
|
||||
```bash
|
||||
sudo systemctl status asset_pilot
|
||||
```
|
||||
|
||||
2. 방화벽 확인:
|
||||
```bash
|
||||
sudo ufw allow 8000/tcp
|
||||
```
|
||||
|
||||
3. IP 주소 확인:
|
||||
```bash
|
||||
ip addr show
|
||||
```
|
||||
|
||||
### 데이터가 수집되지 않을 때
|
||||
|
||||
로그 확인:
|
||||
```bash
|
||||
sudo journalctl -u asset_pilot -n 100
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 더 자세한 정보
|
||||
|
||||
- **전체 가이드**: MIGRATION_GUIDE.md
|
||||
- **프로젝트 문서**: README.md (프로젝트 내)
|
||||
|
||||
---
|
||||
|
||||
**준비 완료! 이제 자산을 모니터링하세요! 💰**
|
||||
BIN
.TemporaryDocument/asset_pilot_docker.tar.gz
Normal file
BIN
.TemporaryDocument/asset_pilot_docker.tar.gz
Normal file
Binary file not shown.
BIN
.TemporaryDocument/asset_pilot_orangepi.tar.gz
Normal file
BIN
.TemporaryDocument/asset_pilot_orangepi.tar.gz
Normal file
Binary file not shown.
BIN
.TemporaryDocument/assetpilot.ico
Normal file
BIN
.TemporaryDocument/assetpilot.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 232 KiB |
130
.TemporaryDocument/claude.md
Normal file
130
.TemporaryDocument/claude.md
Normal file
@@ -0,0 +1,130 @@
|
||||
이걸 postgresql 도커 따로 개발프로그램 실행 도커 따로 이렇게 설치하고 싶은데 과정알려줘
|
||||
|
||||
오전 8:10
|
||||
|
||||
4개의 파일 생성됨, 명령 4개 실행함
|
||||
이제 다시 파일들을 생성하겠습니다.
|
||||
|
||||
|
||||
명령 3개 실행함
|
||||
좋습니다! 이제 Docker 관련 파일들을 추가하겠습니다.
|
||||
|
||||
|
||||
9개의 파일 생성됨, 명령 실행함
|
||||
이제 프로젝트를 압축하여 제공하겠습니다.
|
||||
|
||||
|
||||
명령 2개 실행함, 파일 생성됨
|
||||
완벽합니다! 이제 모든 파일을 제공하겠습니다.
|
||||
|
||||
|
||||
Presented 2 files
|
||||
완료했습니다! 🐳
|
||||
|
||||
📦 Docker 버전 제공 완료
|
||||
제공된 파일
|
||||
asset_pilot_docker.tar.gz - Docker 기반 전체 패키지
|
||||
DOCKER_QUICKSTART.md - Docker 빠른 시작 가이드
|
||||
🐳 Docker 설치 방식의 장점
|
||||
독립된 컨테이너 구조
|
||||
PostgreSQL Container (DB) ←→ App Container (FastAPI)
|
||||
↓ ↓
|
||||
Volume (postgres_data) Volume (app_logs)
|
||||
주요 이점:
|
||||
|
||||
✅ PostgreSQL과 앱이 별도 컨테이너로 완전 격리
|
||||
✅ 한 번의 명령으로 전체 시스템 실행
|
||||
✅ 컨테이너별 독립적 재시작 가능
|
||||
✅ 볼륨으로 데이터 영구 저장
|
||||
✅ 백업/복원 매우 간단
|
||||
✅ 이식성 최고 (다른 서버로 쉽게 이동)
|
||||
🚀 설치 과정
|
||||
초간단 설치 (3단계)
|
||||
bash
|
||||
# 1. 압축 해제
|
||||
tar -xzf asset_pilot_docker.tar.gz
|
||||
cd asset_pilot_docker
|
||||
|
||||
# 2. 자동 설치 실행
|
||||
bash start.sh
|
||||
|
||||
# 3. 완료! 접속
|
||||
# http://[IP]:8000
|
||||
start.sh 스크립트가 자동으로:
|
||||
Docker 설치 확인 (없으면 자동 설치)
|
||||
Docker Compose 확인 (없으면 자동 설치)
|
||||
비밀번호 입력 받아 .env 파일 생성
|
||||
PostgreSQL 컨테이너 시작
|
||||
App 컨테이너 빌드 및 시작
|
||||
데이터베이스 자동 초기화
|
||||
접속 URL 안내
|
||||
🔧 주요 관리 명령어
|
||||
컨테이너 관리
|
||||
bash
|
||||
docker compose up -d # 시작 (백그라운드)
|
||||
docker compose down # 중지
|
||||
docker compose ps # 상태 확인
|
||||
docker compose logs -f # 로그 실시간
|
||||
docker compose restart app # 앱만 재시작
|
||||
데이터 관리
|
||||
bash
|
||||
# 백업
|
||||
docker compose exec postgres pg_dump -U asset_user asset_pilot > backup.sql
|
||||
|
||||
# 복원
|
||||
cat backup.sql | docker compose exec -T postgres psql -U asset_user -d asset_pilot
|
||||
|
||||
# CSV 가져오기
|
||||
docker cp user_assets.csv asset_pilot_app:/app/
|
||||
docker compose exec app python import_csv.py user_assets.csv
|
||||
📊 컨테이너 구성 상세
|
||||
PostgreSQL 컨테이너
|
||||
이미지: postgres:16-alpine (경량)
|
||||
포트: 5432 (내부 네트워크만)
|
||||
볼륨: postgres_data (데이터 영구 저장)
|
||||
헬스체크: 자동 상태 확인
|
||||
App 컨테이너
|
||||
이미지: 자체 빌드 (Python 3.11)
|
||||
포트: 8000 (외부 접근 가능)
|
||||
의존성: PostgreSQL 준비 완료 후 시작
|
||||
헬스체크: /health 엔드포인트 확인
|
||||
🔄 업데이트 방법
|
||||
bash
|
||||
# 코드 업데이트 후
|
||||
docker compose build app # 이미지 재빌드
|
||||
docker compose up -d app # 앱만 재시작
|
||||
🔐 보안 설정
|
||||
PostgreSQL: 내부 네트워크만 접근
|
||||
.env 파일: 권한 600 (소유자만 읽기/쓰기)
|
||||
방화벽: 8000번 포트만 개방
|
||||
비루트 사용자: 컨테이너 내부에서 appuser로 실행
|
||||
💡 일반 설치 vs Docker 설치
|
||||
항목 일반 설치 Docker 설치
|
||||
설치 난이도 중간 (여러 단계) 쉬움 (3단계)
|
||||
의존성 관리 수동 설치 필요 자동 처리
|
||||
환경 격리 없음 완벽
|
||||
백업 수동 (복잡) 간단
|
||||
업데이트 복잡 쉬움
|
||||
롤백 어려움 쉬움
|
||||
이식성 낮음 높음
|
||||
리소스 가벼움 약간 더 사용
|
||||
📚 포함된 문서
|
||||
프로젝트 내부 (압축 해제 후):
|
||||
|
||||
README.md - 프로젝트 개요
|
||||
DOCKER_GUIDE.md - 상세 설치/관리 가이드
|
||||
docker-compose.yml - 컨테이너 설정
|
||||
Dockerfile - 앱 이미지 빌드 설정
|
||||
start.sh - 자동 설치 스크립트
|
||||
🎯 권장 사용 시나리오
|
||||
Docker 설치 추천:
|
||||
|
||||
✅ 깔끔한 환경 원할 때
|
||||
✅ 쉬운 백업/복원 필요할 때
|
||||
✅ 여러 서버에 배포할 때
|
||||
✅ 컨테이너 기술 선호할 때
|
||||
일반 설치 추천:
|
||||
|
||||
✅ Docker 없는 환경
|
||||
✅ 최소 리소스 사용
|
||||
✅ 직접 제어 선호
|
||||
21
.TemporaryDocument/필요 Linux명령들 모음.md
Normal file
21
.TemporaryDocument/필요 Linux명령들 모음.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# 프로그램 수정후
|
||||
docker compose up -d --build
|
||||
|
||||
# 실행을 터미널 에서 보고 싶으면
|
||||
docker compose logs -f app
|
||||
|
||||
|
||||
# AssetPilot의 오렌지 파이 리소스 부하 확인하고 싶으면
|
||||
docker stats asset_pilot_app asset_pilot_db
|
||||
|
||||
# docker compose down 해야 하는 경우
|
||||
보통의 코드 수정(Python 파일 수정 등)에는 up --build만으로 충분하지만, 아래 상황에서는 down을 먼저 하는 것이 깔끔합니다.
|
||||
|
||||
포트 변경: docker-compose.yml에서 ports 설정을 바꿨을 때.
|
||||
|
||||
네트워크 구조 변경: 서비스 간의 네트워크 연결 방식을 크게 수정했을 때.
|
||||
|
||||
완전 초기화: volumes에 쌓인 데이터까지 싹 지우고 새로 시작하고 싶을 때 (이때는 docker compose down -v).
|
||||
|
||||
좀비 컨테이너: 가끔 도커 엔진의 버그로 컨테이너가 정상적으로 교체되지 않고 꼬여있을 때.
|
||||
|
||||
Reference in New Issue
Block a user