sync: update from workspace (latest ITSM/CICD/DR changes)
This commit is contained in:
parent
d0685384d7
commit
81493e355d
@ -22,6 +22,9 @@ const FEATURE_CATEGORIES = [
|
||||
{ title: '멀티모달 AI (이미지 분석)', desc: 'llava 모델로 스크린샷·에러 화면 분석. 이미지 → 에러 분류 + SR 자동 생성.' },
|
||||
{ title: 'RPA 봇 + 웹 스크랩핑', desc: '소스 기반 Validation 학습 → 반복 업무 자동화. URL 수집·게시·원복 워크플로우.' },
|
||||
{ title: '스마트 알림 규칙 편집기', desc: '노코드 조건 편집기. SR_CREATED·KPI_BREACH 등 트리거. 무음 시간·다이제스트·AI 중요도 필터.' },
|
||||
{ title: '디자인 SR AI 자동화', desc: 'Ollama llava:7b 비전으로 스크린샷 분석. CSS_CHANGE·ICON_REQUEST 자동 분류. 자연어→CSS/SVG 코드 즉시 생성.' },
|
||||
{ title: '음성인식 명령 실행', desc: 'expo-speech-recognition 온디바이스 한국어 STT. 폐쇄망 완전 지원. 음성→ITSM 명령 자동 매핑.' },
|
||||
{ title: '다음명령 제시', desc: 'Ollama 컨텍스트 분석→추천 명령 3개 자동 표시. 사용 이력 학습. Messenger/Mobile App 통합.' },
|
||||
],
|
||||
},
|
||||
{
|
||||
@ -167,7 +170,13 @@ const FEATURES = [
|
||||
{ icon:'💼', title:'SaaS 멀티테넌트', desc:'화이트라벨·구독·과금·셀프서비스 포털. 기관별 완전 격리. 1,000+ 기관 지원.' },
|
||||
{ icon:'📱', title:'APK QR 직접 배포', desc:'Manager에서 APK 업로드 → QR 생성. 스캔 즉시 설치. 앱스토어 불필요. 내부망 배포 최적.' },
|
||||
{ icon:'⚡', title:'배치 SSH + 자산 QR', desc:'수십 서버 동시 SSH 실행·결과 수집. QR 라벨로 자산 실사 체크인 자동화.' },
|
||||
{ icon:'🚀', title:'CI/CD 파이프라인', desc:'Jenkins + Gitea. 5개 시스템 자동 빌드·배포·롤백·알림. 에이전트리스 배포.' },
|
||||
{ icon:'🎨', title:'디자인 AI SR 자동화', desc:'Ollama llava 비전 분석→CSS/SVG 자동 생성. 디자인 SR 90% AI 처리. 스크린샷→개선 제안.' },
|
||||
{ icon:'🎤', title:'음성인식 + 다음명령 제시', desc:'expo-speech-recognition 온디바이스. 한국어 STT. Messenger 명령 칩 자동 추천.' },
|
||||
{ icon:'🧠', title:'AI Brain 지능화 엔진', desc:'영구 메모리(pgvector)·자동 스킬·LoRA 파인튜닝·지식 그래프. 운영 경험 누적→자기 개선.' },
|
||||
{ icon:'🔐', title:'Zero Trust + SBOM + N²SF', desc:'ZTNA 정책·디바이스 신뢰·SBOM CycloneDX·국정원 N²SF 준수. EU CRA 공공 조달 완전 지원.' },
|
||||
{ icon:'🌱', title:'GreenOps + Edge/IoT', desc:'Scope 2 탄소 추적(EU CSRD)·9.21억 IoT 디바이스. Carbon-aware 스케줄링.' },
|
||||
{ icon:'🏗️', title:'IDP 개발자 플랫폼', desc:'소프트웨어 카탈로그·Golden Path 템플릿·셀프서비스 포털. 30~50% 배포 단축.' },
|
||||
{ icon:'🚀', title:'CI/CD 파이프라인', desc:'Jenkins + Gitea. 5개 시스템 자동 빌드·배포·롤백·알림. 서버 빌드 방식.' },
|
||||
];
|
||||
|
||||
const EDITIONS = [
|
||||
@ -288,8 +297,8 @@ const TECH_STACK = [
|
||||
|
||||
export default function GuardiaDetail() {
|
||||
useSeoMeta({
|
||||
title: 'GUARDiA ITSM — AI 기반 공공기관 인프라 자율 운영 플랫폼 (110+ 기능)',
|
||||
description: 'GUARDiA ITSM: 810개 API, 110가지 이상 기능. APK QR 배포·배치SSH·자산QR·스마트알림·RAG·Text-to-SQL·CMDB 자동 발견·멀티클라우드·Upstage OCR·Jira·Slack 연동.',
|
||||
title: 'GUARDiA ITSM — AI 기반 공공기관 인프라 자율 운영 플랫폼 (140+ 기능)',
|
||||
description: 'GUARDiA ITSM: 960개 API, 140가지 이상 기능. 디자인 AI SR 자동화·음성인식·영구 메모리·ZTNA·SBOM·N²SF·IDP·GreenOps·Edge IoT. 폐쇄망/개방망 설치 지원.',
|
||||
path: '/solution/guardia',
|
||||
keywords: 'GUARDiA ITSM, AI ITSM, 공공기관 인프라 자동화, ChatOps, 에이전트리스, RAG 검색, Text-to-SQL, CMDB 자동 발견, 멀티클라우드, 나라장터, Upstage OCR, 구성 드리프트',
|
||||
image: '/screenshots/01_dashboard.png',
|
||||
@ -324,8 +333,8 @@ export default function GuardiaDetail() {
|
||||
<div className="gd-hero-stats">
|
||||
{[
|
||||
{val:'1,000+', lab:'관리 기관'},
|
||||
{val:'810+', lab:'API 엔드포인트'},
|
||||
{val:'110+', lab:'구현 완료 기능'},
|
||||
{val:'960+', lab:'API 엔드포인트'},
|
||||
{val:'140+', lab:'구현 완료 기능'},
|
||||
{val:'0개', lab:'대상 서버 추가 설치'},
|
||||
].map((s,i) => (
|
||||
<div key={i} className="gd-stat">
|
||||
@ -343,12 +352,14 @@ export default function GuardiaDetail() {
|
||||
<div className="gd-tabs">
|
||||
{[
|
||||
{id:'features', label:'핵심 기능'},
|
||||
{id:'screenshots', label:'화면 미리보기'},
|
||||
{id:'app', label:'모바일 앱'},
|
||||
{id:'messenger', label:'Messenger Bot'},
|
||||
{id:'manager', label:'Manager'},
|
||||
{id:'install', label:'설치 가이드'},
|
||||
{id:'manual', label:'매뉴얼'},
|
||||
{id:'editions', label:'에디션 비교'},
|
||||
{id:'tech', label:'기술 스택'},
|
||||
{id:'usecase', label:'도입 사례'},
|
||||
].map(t => (
|
||||
<button key={t.id}
|
||||
className={`gd-tab ${activeTab === t.id ? 'active' : ''}`}
|
||||
@ -782,6 +793,422 @@ export default function GuardiaDetail() {
|
||||
</section>
|
||||
)}
|
||||
|
||||
{/* ── 화면 미리보기 ─────────────────────────────────────── */}
|
||||
{activeTab === 'screenshots' && (
|
||||
<section className="section">
|
||||
<div className="container">
|
||||
<div className="section-header">
|
||||
<span className="section-label">Screenshots</span>
|
||||
<h2 className="section-title">GUARDiA <em>화면 미리보기</em></h2>
|
||||
<p className="section-sub">실제 운영 환경의 스크린샷입니다</p>
|
||||
<div className="divider" />
|
||||
</div>
|
||||
<div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(320px,1fr))',gap:24}}>
|
||||
{[
|
||||
{src:'/screenshots/itsm_main.png', title:'GUARDiA ITSM 대시보드', desc:'SR 현황·서버 상태·KPI 실시간 모니터링'},
|
||||
{src:'/screenshots/manager_main.png', title:'GUARDiA Manager', desc:'네이버 클라우드 콘솔 스타일 관제 포털'},
|
||||
{src:'/screenshots/webmail_main.png', title:'GUARDiA Webmail', desc:'Postfix/Dovecot 연동 기업 웹메일'},
|
||||
{src:'/screenshots/itsm_02_dashboard.png', title:'ITSM 운영 대시보드', desc:'AI 이상 탐지·SLA·KPI 종합 현황'},
|
||||
{src:'/screenshots/manager_03_servers.png', title:'서버 자산 관리', desc:'CMDB 서버 목록·상태·배포 이력'},
|
||||
{src:'/screenshots/manager_05_deployments.png', title:'배포 관리', desc:'CI/CD 파이프라인·배포 이력·롤백'},
|
||||
].map((sc,i) => (
|
||||
<div key={i} style={{borderRadius:12,overflow:'hidden',border:'1px solid #e2e8f0',boxShadow:'0 2px 12px rgba(0,51,102,.08)'}}>
|
||||
<div style={{background:'#f1f5f9',height:8,display:'flex',gap:4,padding:'8px 12px',alignItems:'center'}}>
|
||||
{['#ef4444','#f59e0b','#22c55e'].map(col=><div key={col} style={{width:10,height:10,borderRadius:'50%',background:col}}/>)}
|
||||
</div>
|
||||
<img src={sc.src} alt={sc.title} style={{width:'100%',display:'block',objectFit:'cover'}}
|
||||
onError={e=>{e.target.parentElement.style.display='none'}} />
|
||||
<div style={{padding:'12px 16px'}}>
|
||||
<div style={{fontWeight:700,fontSize:14,color:'#003366'}}>{sc.title}</div>
|
||||
<div style={{fontSize:12,color:'#64748b',marginTop:4}}>{sc.desc}</div>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* 신규 기능 하이라이트 */}
|
||||
<div style={{marginTop:48}}>
|
||||
<h3 style={{fontSize:22,fontWeight:800,color:'#1e293b',textAlign:'center',marginBottom:24}}>
|
||||
2026 신규 기능 하이라이트
|
||||
</h3>
|
||||
<div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(280px,1fr))',gap:16}}>
|
||||
{[
|
||||
{icon:'🎨',title:'디자인 AI SR 자동화',badge:'NEW',
|
||||
desc:'Ollama llava 비전으로 스크린샷 분석. CSS 변경·SVG 아이콘·UI 리뷰를 AI가 자동 처리. 디자인 SR 처리 시간 90% 단축.'},
|
||||
{icon:'🎤',title:'음성인식 명령 실행',badge:'NEW',
|
||||
desc:'expo-speech-recognition 온디바이스. 폐쇄망 완전 지원. "서버 상태 확인해줘" → /server status 자동 매핑.'},
|
||||
{icon:'💡',title:'다음명령 제시 (Smart UX)',badge:'NEW',
|
||||
desc:'Ollama 대화 컨텍스트 분석→추천 명령 3개. 사용 이력 학습. Messenger Bot·Mobile App 통합.'},
|
||||
{icon:'🧠',title:'AI 뇌 엔진 (Brain)',badge:'NEW',
|
||||
desc:'영구 메모리(pgvector)·자동 스킬 발굴·LoRA 파인튜닝·관찰형 AI. 운영 경험 누적→스스로 진화.'},
|
||||
{icon:'🔐',title:'Zero Trust + SBOM',badge:'NEW',
|
||||
desc:'ZTNA 정책 엔진·디바이스 신뢰 점수. SBOM CycloneDX 1.4 생성·VEX. EU CRA/공공 조달 준수.'},
|
||||
{icon:'🌱',title:'GreenOps + Edge IoT',badge:'NEW',
|
||||
desc:'Scope 2 탄소 배출 추적(EU CSRD). 9.21억 IoT 디바이스 텔레메트리. Carbon-aware 스케줄링.'},
|
||||
].map((f,i) => (
|
||||
<div key={i} style={{background:'#fff',border:'1px solid #e2e8f0',borderRadius:12,padding:20,
|
||||
borderTop:`3px solid #003366`}}>
|
||||
<div style={{display:'flex',alignItems:'center',gap:8,marginBottom:10}}>
|
||||
<span style={{fontSize:24}}>{f.icon}</span>
|
||||
<span style={{fontWeight:700,fontSize:15,color:'#003366'}}>{f.title}</span>
|
||||
<span style={{background:'#003366',color:'#fff',fontSize:10,padding:'2px 7px',
|
||||
borderRadius:8,marginLeft:'auto'}}>{f.badge}</span>
|
||||
</div>
|
||||
<p style={{fontSize:13,color:'#475569',lineHeight:1.7,margin:0}}>{f.desc}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
)}
|
||||
|
||||
{/* ── 설치 가이드 ──────────────────────────────────────── */}
|
||||
{activeTab === 'install' && (
|
||||
<section className="section">
|
||||
<div className="container">
|
||||
<div className="section-header">
|
||||
<span className="section-label">Installation Guide</span>
|
||||
<h2 className="section-title">GUARDiA <em>설치 가이드</em></h2>
|
||||
<p className="section-sub">폐쇄망(공공기관 내부망)과 개방망 환경별 단계별 설치 방법</p>
|
||||
<div className="divider" />
|
||||
</div>
|
||||
|
||||
{/* 시스템 요구사항 */}
|
||||
<div style={{background:'#eff6ff',border:'1px solid #bfdbfe',borderRadius:12,padding:20,marginBottom:32}}>
|
||||
<h3 style={{fontSize:16,fontWeight:700,color:'#003366',marginBottom:12}}>📋 시스템 요구사항 (공통)</h3>
|
||||
<div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(200px,1fr))',gap:12,fontSize:13}}>
|
||||
{[
|
||||
{label:'OS', val:'Ubuntu 22.04 LTS / RHEL 8 이상'},
|
||||
{label:'CPU', val:'8코어 이상 권장 (4코어 최소)'},
|
||||
{label:'RAM', val:'16GB 이상 (Ollama 8GB + 서비스 8GB)'},
|
||||
{label:'GPU', val:'8GB VRAM (LoRA 파인튜닝 시, 선택)'},
|
||||
{label:'Storage', val:'100GB SSD 이상'},
|
||||
{label:'Network', val:'내부망 포트: 8443, 8090, 8025, 9001'},
|
||||
].map(r=>(
|
||||
<div key={r.label} style={{background:'#fff',padding:'10px 14px',borderRadius:8,border:'1px solid #dbeafe'}}>
|
||||
<div style={{fontWeight:700,color:'#003366',marginBottom:2}}>{r.label}</div>
|
||||
<div style={{color:'#374151'}}>{r.val}</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style={{display:'grid',gridTemplateColumns:'1fr 1fr',gap:32}}>
|
||||
|
||||
{/* 폐쇄망 설치 */}
|
||||
<div>
|
||||
<div style={{background:'#003366',color:'#fff',borderRadius:'12px 12px 0 0',padding:'16px 20px',display:'flex',alignItems:'center',gap:8}}>
|
||||
<span style={{fontSize:20}}>🔒</span>
|
||||
<div>
|
||||
<div style={{fontSize:16,fontWeight:800}}>폐쇄망 설치</div>
|
||||
<div style={{fontSize:12,opacity:.8}}>인터넷 차단 공공기관 내부망 환경</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style={{border:'1px solid #e2e8f0',borderTop:'none',borderRadius:'0 0 12px 12px',padding:20}}>
|
||||
|
||||
{/* 보안 경고 */}
|
||||
<div style={{background:'#fef3c7',border:'1px solid #fcd34d',borderRadius:8,padding:12,marginBottom:16,fontSize:12}}>
|
||||
<strong>⚠️ 보안 주의사항</strong><br/>
|
||||
• 설치 파일 무결성 검증 (SHA-256) 필수<br/>
|
||||
• USB/이동식 미디어 사용 시 바이러스 검사<br/>
|
||||
• 설치 계정은 관리자 전용 (root 사용 후 비활성화)<br/>
|
||||
• 설치 완료 후 기본 비밀번호 즉시 변경
|
||||
</div>
|
||||
|
||||
{[
|
||||
{step:'STEP 1', title:'오프라인 패키지 준비 (외부망 PC)',
|
||||
color:'#003366',
|
||||
cmds:[
|
||||
'# 외부망 PC에서 실행',
|
||||
'pip download -r requirements.txt -d ./packages/',
|
||||
'ollama pull llama3 && ollama pull llava:7b',
|
||||
'# Ollama 모델 파일 위치: ~/.ollama/models/',
|
||||
'tar czf guardia-offline.tar.gz packages/ models/',
|
||||
]},
|
||||
{step:'STEP 2', title:'파일 이전 (보안 반입)',
|
||||
color:'#005A8C',
|
||||
cmds:[
|
||||
'# 승인된 이동식 미디어 사용',
|
||||
'# SHA-256 체크섬 검증 필수',
|
||||
'sha256sum guardia-offline.tar.gz > checksum.txt',
|
||||
'# 내부망 서버로 이전 후 검증',
|
||||
'sha256sum -c checksum.txt',
|
||||
]},
|
||||
{step:'STEP 3', title:'의존성 오프라인 설치',
|
||||
color:'#1d4ed8',
|
||||
cmds:[
|
||||
'tar xzf guardia-offline.tar.gz',
|
||||
'pip install --no-index --find-links=./packages/ \\',
|
||||
' fastapi sqlalchemy asyncpg pgvector',
|
||||
'# PostgreSQL (오프라인 deb/rpm 패키지)',
|
||||
'apt install ./postgresql_16_amd64.deb',
|
||||
]},
|
||||
{step:'STEP 4', title:'Ollama 오프라인 모델 설치',
|
||||
color:'#7c3aed',
|
||||
cmds:[
|
||||
'# Ollama 바이너리 설치',
|
||||
'curl -fsSL https://ollama.ai/install.sh | sh',
|
||||
'# 오프라인 모델 복사',
|
||||
'cp -r ./models/ ~/.ollama/',
|
||||
'ollama list # 모델 확인',
|
||||
]},
|
||||
{step:'STEP 5', title:'GUARDiA 서비스 설정',
|
||||
color:'#059669',
|
||||
cmds:[
|
||||
'git clone <내부망-Gitea-URL>/zio/guardia-itsm.git',
|
||||
'cd guardia-itsm',
|
||||
'cp .env.closed .env # 폐쇄망 설정',
|
||||
'# .env 필수 설정:',
|
||||
'GUARDIA_NETWORK_MODE=closed',
|
||||
'DATABASE_URL=postgresql+asyncpg://...',
|
||||
'OLLAMA_BASE_URL=http://localhost:11434',
|
||||
]},
|
||||
{step:'STEP 6', title:'서비스 시작 및 보안 강화',
|
||||
color:'#dc2626',
|
||||
cmds:[
|
||||
'systemctl enable --now guardia',
|
||||
'# 방화벽 설정 (내부망만 허용)',
|
||||
'ufw allow from 192.168.0.0/16 to any port 8443',
|
||||
'ufw deny 8443 # 외부 차단',
|
||||
'# SSL 인증서 (내부 CA 사용)',
|
||||
'openssl req -x509 -nodes -days 3650 ...',
|
||||
'# 초기 admin 비밀번호 즉시 변경',
|
||||
]},
|
||||
].map((s,i) => (
|
||||
<div key={i} style={{marginBottom:16}}>
|
||||
<div style={{display:'flex',alignItems:'center',gap:8,marginBottom:6}}>
|
||||
<span style={{background:s.color,color:'#fff',fontSize:11,padding:'2px 8px',borderRadius:10,fontWeight:700}}>{s.step}</span>
|
||||
<span style={{fontWeight:700,fontSize:14,color:'#1e293b'}}>{s.title}</span>
|
||||
</div>
|
||||
<pre style={{background:'#0f172a',color:'#e2e8f0',borderRadius:8,padding:12,
|
||||
fontSize:11,overflowX:'auto',margin:0,lineHeight:1.7}}>
|
||||
{s.cmds.join('\n')}
|
||||
</pre>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 개방망 설치 */}
|
||||
<div>
|
||||
<div style={{background:'#059669',color:'#fff',borderRadius:'12px 12px 0 0',padding:'16px 20px',display:'flex',alignItems:'center',gap:8}}>
|
||||
<span style={{fontSize:20}}>🌐</span>
|
||||
<div>
|
||||
<div style={{fontSize:16,fontWeight:800}}>개방망 설치</div>
|
||||
<div style={{fontSize:12,opacity:.8}}>인터넷 연결 가능한 일반 서버 환경</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style={{border:'1px solid #e2e8f0',borderTop:'none',borderRadius:'0 0 12px 12px',padding:20}}>
|
||||
|
||||
{/* 보안 경고 */}
|
||||
<div style={{background:'#fef3c7',border:'1px solid #fcd34d',borderRadius:8,padding:12,marginBottom:16,fontSize:12}}>
|
||||
<strong>⚠️ 보안 주의사항</strong><br/>
|
||||
• HTTPS 반드시 적용 (Let's Encrypt 또는 공인 인증서)<br/>
|
||||
• 관리 포트(8443, 8090) 방화벽으로 접근 제한<br/>
|
||||
• 기본 자격증명 설치 후 즉시 변경<br/>
|
||||
• 정기 보안 패치 적용 (crontab 자동화 권장)
|
||||
</div>
|
||||
|
||||
{[
|
||||
{step:'STEP 1', title:'시스템 준비 및 의존성 설치',
|
||||
color:'#059669',
|
||||
cmds:[
|
||||
'# Ubuntu 22.04 기준',
|
||||
'apt update && apt upgrade -y',
|
||||
'apt install -y python3.11 python3-pip postgresql-16',
|
||||
' nodejs npm git',
|
||||
'# Ollama 설치 (on-premise AI)',
|
||||
'curl -fsSL https://ollama.ai/install.sh | sh',
|
||||
]},
|
||||
{step:'STEP 2', title:'Ollama AI 모델 설치',
|
||||
color:'#0891b2',
|
||||
cmds:[
|
||||
'# 필수 모델 (총 약 10GB)',
|
||||
'ollama pull llama3 # 일반 NLP (4.7GB)',
|
||||
'ollama pull llava:7b # 비전/이미지 분석',
|
||||
'ollama pull nomic-embed-text # 임베딩',
|
||||
'ollama pull codellama:7b # 코드 분석',
|
||||
'# 서비스 자동 시작',
|
||||
'systemctl enable --now ollama',
|
||||
]},
|
||||
{step:'STEP 3', title:'GUARDiA 소스 설치',
|
||||
color:'#7c3aed',
|
||||
cmds:[
|
||||
'git clone https://github.com/zio/guardia-itsm.git',
|
||||
'cd guardia-itsm',
|
||||
'python3 -m venv venv && source venv/bin/activate',
|
||||
'pip install -r requirements.txt',
|
||||
'# PostgreSQL DB 초기화',
|
||||
'createdb guardia_db',
|
||||
'python3 -c "from database import init_db; init_db()"',
|
||||
]},
|
||||
{step:'STEP 4', title:'환경 설정 (.env)',
|
||||
color:'#d97706',
|
||||
cmds:[
|
||||
'cp .env.example .env',
|
||||
'# 필수 설정 변경:',
|
||||
'DATABASE_URL=postgresql+asyncpg://user:pass@localhost/guardia_db',
|
||||
'SECRET_KEY=$(openssl rand -hex 32)',
|
||||
'AES_KEY=$(openssl rand -hex 16) # 자격증명 암호화',
|
||||
'OLLAMA_BASE_URL=http://localhost:11434',
|
||||
'# 보안: 외부 API 호출 완전 금지',
|
||||
'GUARDIA_NETWORK_MODE=open',
|
||||
]},
|
||||
{step:'STEP 5', title:'HTTPS 및 방화벽 설정',
|
||||
color:'#dc2626',
|
||||
cmds:[
|
||||
'# Let\'s Encrypt SSL (도메인 있는 경우)',
|
||||
'apt install certbot',
|
||||
'certbot certonly --standalone -d your-domain.go.kr',
|
||||
'# 방화벽 설정 (필수)',
|
||||
'ufw allow ssh',
|
||||
'ufw allow from <허용-IP> to any port 8443',
|
||||
'ufw allow from <허용-IP> to any port 8090',
|
||||
'ufw enable',
|
||||
]},
|
||||
{step:'STEP 6', title:'서비스 등록 및 시작',
|
||||
color:'#003366',
|
||||
cmds:[
|
||||
'# systemd 서비스 등록',
|
||||
'cp deploy/guardia.service /etc/systemd/system/',
|
||||
'systemctl daemon-reload',
|
||||
'systemctl enable --now guardia',
|
||||
'# 초기 관리자 계정 설정 (즉시 변경!)',
|
||||
'python3 manage.py create-admin',
|
||||
'# 설치 확인',
|
||||
'curl -k https://localhost:8443/health',
|
||||
]},
|
||||
].map((s,i) => (
|
||||
<div key={i} style={{marginBottom:16}}>
|
||||
<div style={{display:'flex',alignItems:'center',gap:8,marginBottom:6}}>
|
||||
<span style={{background:s.color,color:'#fff',fontSize:11,padding:'2px 8px',borderRadius:10,fontWeight:700}}>{s.step}</span>
|
||||
<span style={{fontWeight:700,fontSize:14,color:'#1e293b'}}>{s.title}</span>
|
||||
</div>
|
||||
<pre style={{background:'#0f172a',color:'#e2e8f0',borderRadius:8,padding:12,
|
||||
fontSize:11,overflowX:'auto',margin:0,lineHeight:1.7}}>
|
||||
{s.cmds.join('\n')}
|
||||
</pre>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 설치 후 확인 사항 */}
|
||||
<div style={{marginTop:32,background:'#f0fdf4',border:'1px solid #bbf7d0',borderRadius:12,padding:20}}>
|
||||
<h3 style={{fontSize:16,fontWeight:700,color:'#166534',marginBottom:12}}>✅ 설치 완료 후 확인 사항</h3>
|
||||
<div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(240px,1fr))',gap:10,fontSize:13}}>
|
||||
{[
|
||||
'기본 admin 비밀번호 변경 완료',
|
||||
'HTTPS 인증서 적용 (유효기간 확인)',
|
||||
'방화벽 규칙 검토 (불필요 포트 차단)',
|
||||
'Ollama 모델 정상 로드 (ollama list)',
|
||||
'PostgreSQL 자동 백업 설정',
|
||||
'systemd 서비스 자동 시작 등록',
|
||||
'로그 수집 경로 확인 (/opt/guardia/logs)',
|
||||
'CSAP 보안 점검 실행 (선택)',
|
||||
].map((item,i)=>(
|
||||
<div key={i} style={{display:'flex',alignItems:'center',gap:6,padding:'8px 12px',
|
||||
background:'#fff',borderRadius:8,border:'1px solid #dcfce7'}}>
|
||||
<span style={{color:'#16a34a',fontWeight:700}}>✓</span>
|
||||
<span style={{color:'#374151'}}>{item}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 문의 */}
|
||||
<div style={{textAlign:'center',marginTop:32,padding:24,background:'#eff6ff',borderRadius:12}}>
|
||||
<p style={{fontSize:15,color:'#003366',fontWeight:600,marginBottom:8}}>
|
||||
설치 지원이 필요하신가요?
|
||||
</p>
|
||||
<p style={{fontSize:13,color:'#64748b',marginBottom:16}}>
|
||||
지오정보기술 전문 엔지니어가 기관 환경에 맞는 설치를 지원합니다.
|
||||
</p>
|
||||
<Link to="/support/contact?type=install" className="btn btn-primary">
|
||||
설치 지원 문의
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
)}
|
||||
|
||||
{/* ── 매뉴얼 ───────────────────────────────────────────── */}
|
||||
{activeTab === 'manual' && (
|
||||
<section className="section">
|
||||
<div className="container">
|
||||
<div className="section-header">
|
||||
<span className="section-label">Manual</span>
|
||||
<h2 className="section-title">GUARDiA <em>운영 매뉴얼</em></h2>
|
||||
<p className="section-sub">운영자·엔지니어·관리자별 상세 매뉴얼</p>
|
||||
<div className="divider" />
|
||||
</div>
|
||||
|
||||
<div style={{display:'grid',gridTemplateColumns:'repeat(auto-fit,minmax(280px,1fr))',gap:20}}>
|
||||
{[
|
||||
{icon:'📘', title:'운영자 지침서', no:'04', desc:'일상 운영 절차, SR 관리, 장애 대응, 보안 운영 지침. 16개 섹션 935줄.', tag:'필수'},
|
||||
{icon:'🚀', title:'설치 가이드 (Linux)', no:'05', desc:'Ubuntu/CentOS/RHEL 환경 설치 절차. 폐쇄망·개방망 별도 가이드 포함.', tag:'설치'},
|
||||
{icon:'🪟', title:'설치 가이드 (Windows)',no:'06', desc:'Windows Server 환경 WSL2 기반 설치. 방화벽·포트 설정 상세.', tag:'설치'},
|
||||
{icon:'🔑', title:'라이선스 발급 가이드', no:'14', desc:'커뮤니티·스탠다드·엔터프라이즈 라이선스 키 발급·갱신·관리.', tag:'관리'},
|
||||
{icon:'🌐', title:'API 명세서', no:'16', desc:'960개+ REST API 엔드포인트 전체 명세. Swagger/OpenAPI 3.0.', tag:'개발'},
|
||||
{icon:'🛡️', title:'DR 재해복구 가이드', no:'39', desc:'DR 자동화·Failover·네트워크장비·CSAP 운영 가이드 통합본.', tag:'운영'},
|
||||
{icon:'🔧', title:'CI/CD 파이프라인 가이드',no:'20',desc:'Jenkins·Gitea·deploy_server.py·Webhook 자동 배포 전체 흐름.', tag:'DevOps'},
|
||||
{icon:'🎨', title:'디자인 AI SR 가이드', no:'44', desc:'디자인 수정 SR AI 자동화. Ollama llava 비전 분석·SVG·CSS 생성 방법.', tag:'NEW'},
|
||||
].map((m,i)=>(
|
||||
<div key={i} style={{background:'#fff',border:'1px solid #e2e8f0',borderRadius:12,padding:20,
|
||||
borderLeft:`4px solid #003366`,transition:'box-shadow .2s'}}>
|
||||
<div style={{display:'flex',alignItems:'flex-start',gap:10}}>
|
||||
<span style={{fontSize:28}}>{m.icon}</span>
|
||||
<div style={{flex:1}}>
|
||||
<div style={{display:'flex',alignItems:'center',gap:6,marginBottom:4}}>
|
||||
<span style={{fontWeight:700,fontSize:14,color:'#003366'}}>{m.title}</span>
|
||||
<span style={{background:m.tag==='NEW'?'#003366':m.tag==='필수'?'#dc2626':'#e2e8f0',
|
||||
color:m.tag==='NEW'||m.tag==='필수'?'#fff':'#64748b',
|
||||
fontSize:10,padding:'1px 6px',borderRadius:8,fontWeight:600}}>
|
||||
{m.tag}
|
||||
</span>
|
||||
</div>
|
||||
<div style={{fontSize:11,color:'#94a3b8',marginBottom:6}}>문서 #{m.no}</div>
|
||||
<p style={{fontSize:12,color:'#475569',lineHeight:1.6,margin:0}}>{m.desc}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* 매뉴얼 전체 목록 */}
|
||||
<div style={{marginTop:32,background:'#f8fafc',borderRadius:12,padding:20}}>
|
||||
<h3 style={{fontSize:15,fontWeight:700,color:'#1e293b',marginBottom:16}}>
|
||||
📚 전체 매뉴얼 목록 (44개 문서)
|
||||
</h3>
|
||||
<div style={{display:'grid',gridTemplateColumns:'repeat(auto-fill,minmax(280px,1fr))',gap:8}}>
|
||||
{[
|
||||
'01 분석설계서', '02 단위통합테스트계획서', '03 개발자지침서',
|
||||
'04 운영자지침서 ⭐', '05 설치가이드(Linux)', '06 설치가이드(Windows)',
|
||||
'07 SI프로젝트관리 분석설계서', '08 AI에이전트 Paperclip 설계서',
|
||||
'09~13 확장개발 Priority 1~5', '14 라이선스키 발급가이드',
|
||||
'15 UI Nifty 가이드', '16 API 명세서 ⭐', '17 홈페이지 개발가이드',
|
||||
'18 zio서버 설치SW 목록', '19 zio서버 운영가이드', '20 CI/CD 가이드',
|
||||
'33 Messenger 앱스토어 등록', '34 Messenger 개발·배포 가이드',
|
||||
'39 DR·네트워크·CSAP 운영가이드', '40 바이브코딩 운영가이드',
|
||||
'41 DB 연결정보', '42 zio서버 SW 구성도', '43 레파지토리 구조 가이드',
|
||||
'44 신규기능 운영가이드 ⭐ NEW',
|
||||
].map((doc,i)=>(
|
||||
<div key={i} style={{fontSize:12,color:'#374151',padding:'6px 10px',
|
||||
background:'#fff',borderRadius:6,border:'1px solid #e2e8f0'}}>
|
||||
{doc}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<p style={{fontSize:12,color:'#94a3b8',marginTop:12,textAlign:'right'}}>
|
||||
⭐ 필수 문서 | 자세한 매뉴얼은 도입 상담 시 제공됩니다.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
)}
|
||||
|
||||
{/* ── CTA ─────────────────────────────────────────────── */}
|
||||
<section className="gd-cta">
|
||||
<div className="container">
|
||||
|
||||
Loading…
Reference in New Issue
Block a user