Files
updater/SERVER_INFO.md

4.2 KiB

서버 배포 정보

🌐 서버 접속 정보

SSH 접속

Host: update.onetake.best
User: update
Port: 22

서버 경로

웹 루트: /home/update/html/
포털 파일: /home/update/html/index.php
버전 파일: /home/update/html/version.json
업로드 디렉토리: /home/update/html/pkgs/

🔑 인증 정보

관리자 계정

  • ID: admin
  • Password: (별도 관리)

API 키

ot_secret_key_2026_v7

📤 배포 방법

1. 전체 배포 (초기 설정)

# SCP로 전체 파일 업로드
scp -r php-portal/* update@update.onetake.best:/home/update/html/

# SSH 접속 후 권한 설정
ssh update@update.onetake.best
chmod 755 /home/update/html
chmod 666 /home/update/html/version.json
chmod 755 /home/update/html/pkgs

2. 포털 업데이트 (운영 중)

# 방법 1: API를 통한 업데이트
curl -F "api_key=ot_secret_key_2026_v7" \
     -F "id=portal-update" \
     -F "parent=SYSTEM" \
     -F "name=Portal Update" \
     -F "versionName=v8.10" \
     -F "versionCode=810" \
     -F "file=@php-portal/index.php" \
     "https://update.onetake.best/index.php?action=publish_update"

# 방법 2: 직접 SCP
scp php-portal/index.php update@update.onetake.best:/home/update/html/

3. Swap 스크립트 사용

# 1. swap_root.php 업로드
curl -F "api_key=ot_secret_key_2026_v7" \
     -F "id=portal-update" \
     -F "versionName=v8.10" \
     -F "file=@swap_root.php" \
     "https://update.onetake.best/index.php?action=publish_update"

# 2. 스크립트 실행으로 배포
curl "https://update.onetake.best/pkgs/portal-update/v8.10/swap_root.php"

🔧 서버 설정

PHP 설정 (php.ini)

upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 300
memory_limit = 512M

Apache/Nginx 설정

# Nginx 예시
client_max_body_size 512M;

📊 디렉토리 구조 (서버)

/home/update/html/
├── index.php              # 메인 포털
├── version.json           # 버전 데이터
├── pkgs/                  # 업로드된 패키지
│   ├── cm-tv/
│   │   └── v2.24.1/
│   │       └── tv-app.apk
│   ├── cm-controller/
│   │   └── v2.26.0/
│   │       └── controller-app.apk
│   ├── cm-sender/
│   │   └── v1.2.0/
│   │       └── PCSenderApp.exe
│   ├── cm-server/
│   │   └── v2.24.1/
│   │       └── server-package.zip
│   └── portal-update/
│       └── v8.10/
│           ├── index.php
│           └── swap_root.php
├── private_key.pem        # JWT 서명 키
└── public_key.pem         # JWT 검증 키

🛡️ 보안 체크리스트

  • SSH 키 기반 인증 설정
  • 방화벽 설정 (포트 22, 80, 443만 허용)
  • HTTPS 인증서 설정
  • 관리자 비밀번호 강화
  • API 키 주기적 변경
  • 업로드 디렉토리 실행 권한 제거
  • version.json 백업 설정

🔄 백업 및 복구

백업

# SSH 접속 후
cd /home/update/html
tar -czf backup-$(date +%Y%m%d).tar.gz \
    index.php version.json pkgs/ *.pem

# 로컬로 다운로드
scp update@update.onetake.best:/home/update/html/backup-*.tar.gz ./

복구

# 백업 파일 업로드
scp backup-20260206.tar.gz update@update.onetake.best:/home/update/html/

# SSH 접속 후 압축 해제
ssh update@update.onetake.best
cd /home/update/html
tar -xzf backup-20260206.tar.gz

📝 로그 확인

Apache 로그

tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log

PHP 에러 로그

tail -f /var/log/php/error.log

🚨 트러블슈팅

업로드 실패

  1. 파일 크기 제한 확인 (php.ini)
  2. 디렉토리 권한 확인 (755/666)
  3. 디스크 공간 확인 (df -h)

포털 접속 불가

  1. Apache/Nginx 상태 확인 (systemctl status apache2)
  2. PHP-FPM 상태 확인 (systemctl status php-fpm)
  3. 방화벽 설정 확인 (ufw status)

version.json 손상

  1. 백업에서 복구
  2. 또는 빈 구조로 초기화:
{
  "categories": ["GENERAL", "SYSTEM"],
  "projects": []
}

📞 연락처

서버 관리: update@onetake.best