- Switch from Pretendard web font to system fonts - Remove 2.3MB of Pretendard font files - Add WebP image format for n8n workflow - Update CSP to remove CDN font dependencies - Add critical CSS inline, dns-prefetch, image optimization Metrics improvement: - FCP: 13.4s → 2.0s - LCP: 14.1s → 2.6s - Performance: 55 → 95 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
970 lines
60 KiB
HTML
970 lines
60 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ko" class="scroll-smooth">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self' data:; connect-src 'self';">
|
||
<title>Anvil Hosting - 개발자를 위한 컨테이너 클라우드</title>
|
||
|
||
<!-- SEO Meta Tags -->
|
||
<meta name="description" content="Incus/LXD 기반 초경량 컨테이너 호스팅. VM 오버헤드 없이 네이티브 성능을 제공하며, n8n, Ansible 자동화 파이프라인과 즉시 연동됩니다. 도쿄, 서울, 싱가포르, 홍콩 리전 지원.">
|
||
<meta name="keywords" content="컨테이너 호스팅, LXD, Incus, 클라우드 서버, VPS, 도쿄 서버, 서울 서버, 개발자 호스팅, Docker, 자동화">
|
||
<meta name="author" content="Anvil Hosting">
|
||
<meta name="robots" content="index, follow">
|
||
<link rel="canonical" href="https://hosting.anvil.it.com">
|
||
|
||
<!-- Open Graph / Facebook -->
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:url" content="https://hosting.anvil.it.com">
|
||
<meta property="og:title" content="Anvil Hosting - 개발자를 위한 컨테이너 클라우드">
|
||
<meta property="og:description" content="Incus/LXD 기반 초경량 컨테이너 호스팅. 네이티브 성능과 자동화 파이프라인을 경험하세요.">
|
||
<meta property="og:image" content="https://hosting.anvil.it.com/og-image.png">
|
||
<meta property="og:locale" content="ko_KR">
|
||
|
||
<!-- Twitter -->
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:url" content="https://hosting.anvil.it.com">
|
||
<meta name="twitter:title" content="Anvil Hosting - 개발자를 위한 컨테이너 클라우드">
|
||
<meta name="twitter:description" content="Incus/LXD 기반 초경량 컨테이너 호스팅. 네이티브 성능과 자동화 파이프라인을 경험하세요.">
|
||
<meta name="twitter:image" content="https://hosting.anvil.it.com/og-image.png">
|
||
|
||
<!-- Favicon -->
|
||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect fill='%230ea5e9' rx='20' width='100' height='100'/><text x='50' y='70' font-size='60' text-anchor='middle' fill='white' font-family='sans-serif' font-weight='bold'>A</text></svg>">
|
||
|
||
<!-- Tailwind CSS (Production Build) -->
|
||
<link rel="stylesheet" href="style.css">
|
||
|
||
<!-- Fonts -->
|
||
<link rel="stylesheet" href="fonts.css">
|
||
|
||
<!-- Critical CSS for above-the-fold -->
|
||
<style>
|
||
/* Critical CSS for above-the-fold */
|
||
body{background:#0a0f1a;color:#e2e8f0;margin:0}
|
||
.font-sans{font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif}
|
||
nav{position:fixed;width:100%;z-index:50;background:rgba(10,15,26,.8);backdrop-filter:blur(12px)}
|
||
</style>
|
||
|
||
<!-- App JavaScript (must load before Alpine.js) -->
|
||
<script defer src="app.js"></script>
|
||
|
||
<!-- Alpine.js (pinned version with SRI) -->
|
||
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.14.3/dist/cdn.min.js" integrity="sha384-iZD2X8o1Zdq0HR5H/7oa8W30WS4No+zWCKUPD7fHRay9I1Gf+C4F8sVmw7zec1wW" crossorigin="anonymous"></script>
|
||
</head>
|
||
<body x-data="anvilApp()" @keydown.window="handleKeydown($event)" class="font-sans antialiased selection:bg-brand-500/30">
|
||
|
||
<!-- Skip Link for Keyboard Users -->
|
||
<a href="#main-content" class="skip-link">메인 콘텐츠로 건너뛰기</a>
|
||
|
||
<!-- Navbar -->
|
||
<nav class="fixed w-full z-50 top-0 border-b border-white/5 bg-dark-900/80 backdrop-blur-md">
|
||
<div class="max-w-7xl mx-auto px-6 h-16 flex items-center justify-between">
|
||
<div class="flex items-center gap-8">
|
||
<a href="#" class="flex items-center gap-2 group">
|
||
<div class="w-8 h-8 rounded bg-brand-500 flex items-center justify-center text-white font-bold font-mono text-xl shadow-lg shadow-brand-500/20">A</div>
|
||
<span class="font-bold text-lg tracking-tight">Anvil<span class="text-brand-400">.Hosting</span></span>
|
||
</a>
|
||
<div class="hidden md:flex gap-6 text-sm font-medium text-slate-300">
|
||
<a href="#features" class="hover:text-white transition">기능</a>
|
||
<a href="#pricing" class="hover:text-white transition">요금제</a>
|
||
<a href="#automation" class="hover:text-white transition">자동화</a>
|
||
</div>
|
||
</div>
|
||
<a href="https://t.me/AnvilForgeBot" target="_blank" rel="noopener noreferrer" aria-label="Console 시작 - 텔레그램 봇으로 이동" class="px-4 py-2 bg-brand-700 hover:bg-brand-500 text-white text-sm font-bold rounded-lg transition shadow-lg shadow-brand-500/20 flex items-center gap-2">
|
||
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.64 6.8c-.15 1.58-.8 5.42-1.13 7.19-.14.75-.42 1-.68 1.03-.58.05-1.02-.38-1.58-.75-.88-.58-1.38-.94-2.23-1.5-.99-.65-.35-1.01.22-1.59.15-.15 2.71-2.48 2.76-2.69a.2.2 0 00-.05-.18c-.06-.05-.14-.03-.21-.02-.09.02-1.49.95-4.22 2.79-.4.27-.76.41-1.08.4-.36-.01-1.04-.2-1.55-.37-.62-.2-1.12-.31-1.15-.63.03-.37.59-.75 1.5-.95 6.07-2.64 10.12-4.38 12.15-5.21 2.91-1.2 3.51-1.4 3.91-1.41.09 0 .28.02.41.09.11.06.23.14.3.24.08.12.12.33.09.57z"/></svg>
|
||
Console 시작
|
||
</a>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- Main Content -->
|
||
<main id="main-content">
|
||
|
||
<!-- Hero Section -->
|
||
<section class="relative pt-32 pb-20 overflow-hidden grid-bg gradient-bg noise-bg">
|
||
<!-- Animated Blobs -->
|
||
<div class="blob blob-1 w-[600px] h-[600px] bg-brand-500/20 top-[-200px] left-[-100px] -z-10"></div>
|
||
<div class="blob blob-2 w-[500px] h-[500px] bg-purple-500/15 top-[100px] right-[-150px] -z-10"></div>
|
||
<div class="blob blob-3 w-[400px] h-[400px] bg-brand-400/10 bottom-[-100px] left-[30%] -z-10"></div>
|
||
|
||
<div class="max-w-7xl mx-auto px-6 grid lg:grid-cols-2 gap-16 items-center relative z-10">
|
||
<!-- Left: Text -->
|
||
<div>
|
||
<div class="inline-flex items-center gap-2 px-4 py-1.5 rounded-full glass-card-static text-xs font-mono text-brand-400 mb-6">
|
||
<span class="w-2 h-2 rounded-full bg-green-400 animate-pulse"></span>
|
||
System Operational: v2.4.0 Live
|
||
</div>
|
||
<h1 class="text-5xl md:text-6xl font-bold leading-tight mb-6">
|
||
<span class="gradient-text-animated">Incus/LXD</span> 기반<br>
|
||
초경량 컨테이너 호스팅
|
||
</h1>
|
||
<p class="text-lg text-slate-400 mb-8 leading-relaxed">
|
||
VM의 오버헤드는 버리세요. OS 수준의 완벽한 격리와 네이티브 성능을 제공합니다.
|
||
<span class="text-white font-medium">n8n, Ansible</span> 자동화 파이프라인과 즉시 연동됩니다.
|
||
</p>
|
||
|
||
<div class="flex flex-col sm:flex-row gap-4">
|
||
<div class="relative">
|
||
<button @click="openLauncher()" :aria-expanded="launcherOpen" aria-haspopup="dialog" aria-label="인스턴스 즉시 배포 - 서버 런처 열기" class="btn-glow relative w-full sm:w-auto px-8 py-4 bg-gradient-to-r from-white to-slate-100 text-dark-900 font-bold rounded-xl flex items-center justify-center gap-3 transition-all active:scale-95 group">
|
||
<span class="text-xl">🚀</span>
|
||
<span>인스턴스 즉시 배포</span>
|
||
<svg class="w-4 h-4 text-brand-600 transition-transform group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"/></svg>
|
||
</button>
|
||
</div>
|
||
<div id="ping-widget" class="flex flex-col gap-1.5 text-xs font-mono text-slate-400 bg-slate-900/50 p-3 rounded-lg border border-slate-700/50 backdrop-blur-sm mt-8 sm:mt-0 sm:ml-4 max-w-sm">
|
||
<div class="flex items-center gap-3">
|
||
<span class="w-24 whitespace-nowrap">🇰🇷 Seoul</span>
|
||
<div class="flex-1 h-1 bg-slate-700 rounded-full overflow-hidden"><div class="h-full bg-green-400 w-[95%]"></div></div>
|
||
<span class="text-green-400 w-12 text-right"><span id="ping-kr">2</span>ms</span>
|
||
</div>
|
||
<div class="flex items-center gap-3">
|
||
<span class="w-24 whitespace-nowrap">🇯🇵 Tokyo</span>
|
||
<div class="flex-1 h-1 bg-slate-700 rounded-full overflow-hidden"><div class="h-full bg-brand-400 w-[80%]"></div></div>
|
||
<span class="text-brand-400 w-12 text-right"><span id="ping-jp">35</span>ms</span>
|
||
</div>
|
||
<div class="flex items-center gap-3">
|
||
<span class="w-24 whitespace-nowrap">🇭🇰 HongKong</span>
|
||
<div class="flex-1 h-1 bg-slate-700 rounded-full overflow-hidden"><div class="h-full bg-yellow-400 w-[70%]"></div></div>
|
||
<span class="text-yellow-400 w-12 text-right"><span id="ping-hk">45</span>ms</span>
|
||
</div>
|
||
<div class="flex items-center gap-3">
|
||
<span class="w-24 whitespace-nowrap">🇸🇬 Singapore</span>
|
||
<div class="flex-1 h-1 bg-slate-700 rounded-full overflow-hidden"><div class="h-full bg-yellow-400 w-[60%]"></div></div>
|
||
<span class="text-yellow-400 w-12 text-right"><span id="ping-sg">65</span>ms</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Right: Telegram Chat Demo -->
|
||
<div class="relative max-w-md mx-auto w-full">
|
||
<!-- Telegram Window -->
|
||
<div class="rounded-2xl shadow-2xl overflow-hidden relative border border-slate-700">
|
||
<!-- Telegram Header -->
|
||
<div class="bg-[#232e3c] px-4 py-3 flex items-center gap-3">
|
||
<div class="w-10 h-10 rounded-full bg-gradient-to-br from-blue-400 to-blue-600 flex items-center justify-center text-white text-lg font-bold">A</div>
|
||
<div class="flex-1">
|
||
<div class="font-semibold text-white text-[15px]">Anvil Forge Bot</div>
|
||
<div class="text-xs text-[#6c7883]">bot</div>
|
||
</div>
|
||
<div class="flex gap-4 text-[#6c7883]">
|
||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 0 0 1.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 0 0-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 0 0 5.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>
|
||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Chat Messages -->
|
||
<div class="p-4 space-y-3 text-[14px] bg-[#0e1621] min-h-[420px]" style="background-image: url('data:image/svg+xml,%3Csvg width="60" height="60" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="none" fill-rule="evenodd"%3E%3Cg fill="%23ffffff" fill-opacity="0.02"%3E%3Cpath d="M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E');">
|
||
<!-- User Message -->
|
||
<div class="flex justify-end chat-bubble delay-1">
|
||
<div class="bg-[#2b5278] text-white px-3 py-2 rounded-xl rounded-tr-sm max-w-[85%] leading-relaxed shadow-sm">
|
||
도쿄 리전에 데비안 12로 프로 등급 서버 하나 만들어줘
|
||
<div class="text-[10px] text-blue-200/60 text-right mt-1">오후 3:42 ✓✓</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Bot Response -->
|
||
<div class="flex justify-start chat-bubble delay-2">
|
||
<div class="bg-[#182533] text-[#f5f5f5] px-3 py-2 rounded-xl rounded-tl-sm max-w-[85%] shadow-sm">
|
||
<div class="text-[#6ab3f3] font-medium text-[13px] mb-1">Anvil Forge Bot</div>
|
||
🤖 AI가 요청을 분석했습니다.<br><br>
|
||
다음 구성으로 서버를 준비할까요?<br><br>
|
||
📍 <span class="text-white/90">위치:</span> 🇯🇵 도쿄<br>
|
||
💿 <span class="text-white/90">OS:</span> Debian 12<br>
|
||
⚡ <span class="text-white/90">사양:</span> Pro (2 vCPU / 4GB)
|
||
<div class="text-[10px] text-slate-400 text-right mt-1">오후 3:42</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- User Message -->
|
||
<div class="flex justify-end chat-bubble delay-3">
|
||
<div class="bg-[#2b5278] text-white px-3 py-2 rounded-xl rounded-tr-sm max-w-[80%] shadow-sm">
|
||
응 바로 생성해줘
|
||
<div class="text-[10px] text-blue-200/60 text-right mt-1">오후 3:42 ✓✓</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Bot Response (Success) -->
|
||
<div class="flex justify-start chat-bubble delay-4">
|
||
<div class="bg-[#182533] text-[#f5f5f5] px-3 py-2 rounded-xl rounded-tl-sm max-w-[85%] shadow-sm">
|
||
<div class="text-[#6ab3f3] font-medium text-[13px] mb-1">Anvil Forge Bot</div>
|
||
✅ <span class="text-green-400 font-medium">서버 생성 완료!</span><br><br>
|
||
🌐 <span class="text-white/90">IP:</span> <code class="bg-black/30 px-1 rounded text-[13px]">45.12.89.121</code><br>
|
||
🔑 <span class="text-white/90">Root PW:</span> <span class="text-slate-400">(보안 전송됨)</span><br><br>
|
||
<span class="text-slate-400 text-[13px]">지금 바로 SSH 접속이 가능합니다.</span>
|
||
<div class="text-[10px] text-slate-400 text-right mt-1">오후 3:43</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Decoration -->
|
||
<div class="absolute -right-12 -bottom-12 w-64 h-64 bg-brand-500/20 rounded-full blur-3xl -z-10"></div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Technical Features -->
|
||
<section id="features" class="py-24 bg-dark-800 relative overflow-hidden">
|
||
<!-- Background accent -->
|
||
<div class="absolute top-0 left-0 w-full h-px bg-gradient-to-r from-transparent via-brand-500/50 to-transparent"></div>
|
||
|
||
<div class="max-w-7xl mx-auto px-6">
|
||
<div class="text-center mb-16">
|
||
<h2 class="text-3xl md:text-4xl font-bold mb-4">엔지니어를 위한 <span class="gradient-text">기술 스택</span></h2>
|
||
<p class="text-slate-400 text-lg">단순한 호스팅을 넘어, 제어가 가능한 인프라를 제공합니다.</p>
|
||
</div>
|
||
|
||
<div class="grid md:grid-cols-2 lg:grid-cols-4 gap-6">
|
||
<!-- Tech Card 1 -->
|
||
<div class="glass-card feature-card p-8 rounded-2xl group" data-accent="brand">
|
||
<div class="w-12 h-12 rounded-xl bg-brand-500/10 flex items-center justify-center mb-5 group-hover:scale-110 transition-transform">
|
||
<span class="text-2xl">⚡</span>
|
||
</div>
|
||
<div class="text-brand-400 font-mono mb-3 text-sm tracking-wide"><Incus/LXD></div>
|
||
<h3 class="text-xl font-bold mb-3">Native Performance</h3>
|
||
<p class="text-slate-400 text-sm leading-relaxed">
|
||
KVM 오버헤드 없이 커널을 직접 공유하는 컨테이너 기술로 베어메탈에 가까운 성능을 냅니다. Docker in Docker도 완벽하게 지원합니다.
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Tech Card 2 -->
|
||
<div class="glass-card feature-card p-8 rounded-2xl group" data-accent="purple">
|
||
<div class="w-12 h-12 rounded-xl bg-purple-500/10 flex items-center justify-center mb-5 group-hover:scale-110 transition-transform">
|
||
<span class="text-2xl">🔗</span>
|
||
</div>
|
||
<div class="text-purple-400 font-mono mb-3 text-sm tracking-wide"><Automation></div>
|
||
<h3 class="text-xl font-bold mb-3">API & Webhooks</h3>
|
||
<p class="text-slate-400 text-sm leading-relaxed">
|
||
n8n, Ansible, Terraform으로 인프라를 코드로 관리하세요. 서버 생성, 삭제, 리소스 조정을 자동화된 워크플로우로 제어할 수 있습니다.
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Tech Card 3 -->
|
||
<div class="glass-card feature-card p-8 rounded-2xl group" data-accent="green">
|
||
<div class="w-12 h-12 rounded-xl bg-green-500/10 flex items-center justify-center mb-5 group-hover:scale-110 transition-transform">
|
||
<span class="text-2xl">🛡️</span>
|
||
</div>
|
||
<div class="text-green-400 font-mono mb-3 text-sm tracking-wide"><Security></div>
|
||
<h3 class="text-xl font-bold mb-3">Isolated & Safe</h3>
|
||
<p class="text-slate-400 text-sm leading-relaxed">
|
||
CrowdSec이 기본 통합된 방화벽과 네임스페이스 격리 기술로 이웃한 컨테이너의 영향 없이 안전하게 데이터를 보호합니다.
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Tech Card 4 (DDoS) -->
|
||
<div class="glass-card feature-card p-8 rounded-2xl group" data-accent="red">
|
||
<div class="w-12 h-12 rounded-xl bg-red-500/10 flex items-center justify-center mb-5 group-hover:scale-110 transition-transform">
|
||
<span class="text-2xl">🚫</span>
|
||
</div>
|
||
<div class="text-red-400 font-mono mb-3 text-sm tracking-wide"><Anti-DDoS></div>
|
||
<h3 class="text-xl font-bold mb-3">1Tbps+ Mitigation</h3>
|
||
<p class="text-slate-400 text-sm leading-relaxed">
|
||
L3/L4는 물론 복잡한 L7 애플리케이션 공격까지 완벽 방어합니다. 전 세계 엣지 노드에서 공격을 즉시 정화하여 무중단 서비스를 보장합니다.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Automation Section -->
|
||
<section id="automation" class="py-24 bg-dark-900 relative overflow-hidden">
|
||
<!-- Background accent -->
|
||
<div class="absolute top-0 left-0 w-full h-px bg-gradient-to-r from-transparent via-purple-500/30 to-transparent"></div>
|
||
<div class="absolute bottom-0 right-0 w-[500px] h-[500px] bg-purple-500/5 rounded-full blur-[100px] -z-10"></div>
|
||
|
||
<div class="max-w-7xl mx-auto px-6 flex flex-col lg:flex-row items-center gap-16">
|
||
<div class="lg:w-1/2">
|
||
<div class="inline-flex items-center gap-2 px-4 py-1.5 rounded-full glass-card-static text-xs font-mono text-purple-400 mb-6">
|
||
<span class="w-1.5 h-1.5 rounded-full bg-purple-400"></span>
|
||
Infrastructure as Code
|
||
</div>
|
||
<h2 class="text-3xl md:text-4xl font-bold mb-6">
|
||
반복적인 작업은<br>
|
||
<span class="gradient-text">자동화에 맡기세요</span>
|
||
</h2>
|
||
<p class="text-slate-400 mb-8 leading-relaxed text-lg">
|
||
웹 콘솔에 접속할 필요도 없습니다. <span class="text-white font-mono">Terraform</span>으로 인프라를 정의하고, <span class="text-white font-mono">Ansible</span>로 설정을 배포하세요. Anvil은 개발자 친화적인 API를 제공합니다.
|
||
</p>
|
||
|
||
<ul class="space-y-4">
|
||
<li class="flex items-center gap-4">
|
||
<div class="w-10 h-10 rounded bg-slate-800 flex items-center justify-center text-purple-400 border border-slate-700">
|
||
<svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2 0 00-1.022-.547l-2.384-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"/></svg>
|
||
</div>
|
||
<div>
|
||
<div class="font-bold text-white">Webhook Integration</div>
|
||
<div class="text-sm text-slate-400">Github Actions, GitLab CI/CD 연동</div>
|
||
</div>
|
||
</li>
|
||
<li class="flex items-center gap-4">
|
||
<div class="w-10 h-10 rounded bg-slate-800 flex items-center justify-center text-purple-400 border border-slate-700">
|
||
<svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"/></svg>
|
||
</div>
|
||
<div>
|
||
<div class="font-bold text-white">Full API Access</div>
|
||
<div class="text-sm text-slate-400">서버 생성, 제어, 모니터링 100% API 지원</div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="lg:w-1/2 w-full" x-data="{ tab: 'n8n' }">
|
||
<!-- Tab Buttons -->
|
||
<div class="flex gap-2 mb-4" role="tablist" aria-label="코드 예제 선택">
|
||
<button role="tab"
|
||
aria-selected="true"
|
||
aria-controls="panel-n8n"
|
||
data-tab="n8n"
|
||
id="btn-n8n"
|
||
class="px-4 py-2 rounded-lg bg-purple-600 text-white text-sm font-bold transition">
|
||
n8n Workflow
|
||
</button>
|
||
<button role="tab"
|
||
aria-selected="false"
|
||
aria-controls="panel-tf"
|
||
data-tab="tf"
|
||
id="btn-tf"
|
||
class="px-4 py-2 rounded-lg bg-slate-800 text-slate-400 text-sm font-bold border border-slate-700 hover:text-white transition">
|
||
Terraform
|
||
</button>
|
||
</div>
|
||
|
||
<!-- n8n Window -->
|
||
<div id="panel-n8n" role="tabpanel" aria-labelledby="btn-n8n" class="rounded-2xl overflow-hidden shadow-2xl border border-slate-700 relative group">
|
||
<!-- Window Header -->
|
||
<div class="flex items-center px-4 py-3 bg-[#1a1a2e] border-b border-slate-700/50 gap-2">
|
||
<div class="w-3 h-3 rounded-full bg-[#ff5f56]"></div>
|
||
<div class="w-3 h-3 rounded-full bg-[#ffbd2e]"></div>
|
||
<div class="w-3 h-3 rounded-full bg-[#27c93f]"></div>
|
||
<span class="ml-3 text-slate-400 text-xs font-mono">n8n Workflow Editor</span>
|
||
</div>
|
||
<!-- Screenshot Image (Cropped diagram) -->
|
||
<div class="relative overflow-hidden rounded-b-xl">
|
||
<picture>
|
||
<source srcset="images/n8n-workflow.webp" type="image/webp">
|
||
<img src="images/n8n-workflow.png"
|
||
alt="n8n 워크플로우 자동화 예시: GitHub Actions 트리거 → Anvil API 호출 → 서버 자동 생성 프로세스"
|
||
class="w-full h-auto block transition-transform duration-500 group-hover:scale-[1.02]"
|
||
width="800"
|
||
height="450"
|
||
loading="lazy"
|
||
decoding="async"
|
||
fetchpriority="low"
|
||
crossorigin="anonymous">
|
||
</picture>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Terraform Window (Hidden by default) -->
|
||
<div id="panel-tf" role="tabpanel" aria-labelledby="btn-tf" class="hidden bg-[#1e1e1e] rounded-xl overflow-hidden shadow-2xl border border-slate-700 h-[320px] font-mono text-sm">
|
||
<div class="flex items-center px-4 py-2 bg-[#252526] border-b border-[#3e3e42] gap-2">
|
||
<div class="w-3 h-3 rounded-full bg-[#ff5f56]"></div>
|
||
<div class="w-3 h-3 rounded-full bg-[#ffbd2e]"></div>
|
||
<div class="w-3 h-3 rounded-full bg-[#27c93f]"></div>
|
||
<span class="ml-2 text-slate-400 text-xs">main.tf</span>
|
||
</div>
|
||
<div class="p-6 text-slate-300 leading-relaxed overflow-x-auto h-full overflow-y-auto custom-scrollbar">
|
||
<div><span class="text-[#569cd6]">resource</span> <span class="text-[#ce9178]">"anvil_instance"</span> <span class="text-[#ce9178]">"web"</span> {</div>
|
||
<div class="pl-4"><span class="text-[#9cdcfe]">name</span> = <span class="text-[#ce9178]">"production-web-01"</span></div>
|
||
<div class="pl-4"><span class="text-[#9cdcfe]">image</span> = <span class="text-[#ce9178]">"debian-12"</span></div>
|
||
<div class="pl-4"><span class="text-[#9cdcfe]">region</span> = <span class="text-[#ce9178]">"jp-east-1"</span></div>
|
||
<div class="pl-4"><span class="text-[#9cdcfe]">plan</span> = <span class="text-[#ce9178]">"pro-v2"</span></div>
|
||
<br>
|
||
<div class="pl-4"><span class="text-[#6a9955]">// 자동 백업 설정</span></div>
|
||
<div class="pl-4"><span class="text-[#9cdcfe]">backup_schedule</span> {</div>
|
||
<div class="pl-8"><span class="text-[#9cdcfe]">enabled</span> = <span class="text-[#569cd6]">true</span></div>
|
||
<div class="pl-8"><span class="text-[#9cdcfe]">retain</span> = <span class="text-[#b5cea8]">7</span></div>
|
||
<div class="pl-4">}</div>
|
||
<div>}</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Infrastructure Details -->
|
||
<section class="py-24 relative overflow-hidden">
|
||
<!-- Background accent -->
|
||
<div class="absolute top-0 left-0 w-full h-px bg-gradient-to-r from-transparent via-slate-700 to-transparent"></div>
|
||
|
||
<div class="max-w-7xl mx-auto px-6 grid md:grid-cols-2 gap-12">
|
||
<div>
|
||
<h3 class="text-2xl md:text-3xl font-bold mb-8">High-Spec <span class="gradient-text">Infrastructure</span></h3>
|
||
<ul class="space-y-6">
|
||
<li class="flex gap-4">
|
||
<div class="w-12 h-12 rounded bg-slate-800 flex items-center justify-center flex-shrink-0 border border-slate-700">
|
||
<span class="text-2xl">⚡</span>
|
||
</div>
|
||
<div>
|
||
<h4 class="font-bold text-lg">NVMe Storage</h4>
|
||
<p class="text-slate-400 text-sm">모든 플랜에 Enterprise급 NVMe SSD 제공. IOPS 병목 없는 데이터베이스 성능 보장.</p>
|
||
</div>
|
||
</li>
|
||
<li class="flex gap-4">
|
||
<div class="w-12 h-12 rounded bg-slate-800 flex items-center justify-center flex-shrink-0 border border-slate-700">
|
||
<span class="text-2xl">🌐</span>
|
||
</div>
|
||
<div>
|
||
<h4 class="font-bold text-lg">Premium Network</h4>
|
||
<p class="text-slate-400 text-sm">CN2/BGP 최적화 경로. 서울-도쿄 35ms, 서울-홍콩 45ms의 낮은 레이턴시.</p>
|
||
</div>
|
||
</li>
|
||
<li class="flex gap-4">
|
||
<div class="w-12 h-12 rounded bg-slate-800 flex items-center justify-center flex-shrink-0 border border-slate-700">
|
||
<span class="text-2xl">💾</span>
|
||
</div>
|
||
<div>
|
||
<h4 class="font-bold text-lg">ZFS Snapshots</h4>
|
||
<p class="text-slate-400 text-sm">CoW(Copy-on-Write) 기반의 즉각적인 스냅샷과 롤백 지원. 데이터 손실 걱정 끝.</p>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="glass-card rounded-2xl p-1 terminal-glow">
|
||
<!-- Terminal UI Mockup -->
|
||
<div class="bg-dark-900/90 rounded-xl h-full p-5 font-mono text-xs md:text-sm text-slate-300 overflow-hidden">
|
||
<div class="flex gap-2 mb-4 items-center">
|
||
<div class="w-3 h-3 rounded-full bg-red-500/80"></div>
|
||
<div class="w-3 h-3 rounded-full bg-yellow-500/80"></div>
|
||
<div class="w-3 h-3 rounded-full bg-green-500/80"></div>
|
||
<span class="ml-3 text-slate-500 text-xs">anvil-server ~ bash</span>
|
||
</div>
|
||
<p><span class="text-brand-400">root@anvil:~#</span> neofetch</p>
|
||
<div class="mt-2 text-slate-400">
|
||
.<br>
|
||
/ \<br>
|
||
( )<br>
|
||
\ / <span class="text-white">OS:</span> Debian GNU/Linux 12 (bookworm)<br>
|
||
| <span class="text-white">Kernel:</span> 6.1.0-18-cloud-amd64<br>
|
||
| <span class="text-white">Uptime:</span> 142 days, 4 hours<br>
|
||
| <span class="text-white">Virtualization:</span> lxc (Incus)<br>
|
||
| <span class="text-white">CPU:</span> AMD EPYC 7763 (4) @ 2.45GHz<br>
|
||
| <span class="text-white">Memory:</span> 512MiB / 64GiB<br>
|
||
</div>
|
||
<p class="mt-4"><span class="text-brand-400">root@anvil:~#</span> docker ps</p>
|
||
<p class="text-green-400">CONTAINER ID IMAGE STATUS PORTS</p>
|
||
<p>a1b2c3d4e5f6 nginx Up 24h 0.0.0.0:80->80/tcp</p>
|
||
<p class="mt-4 animate-pulse">_</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Domain Section -->
|
||
<section id="domain" class="py-24 relative overflow-hidden">
|
||
<!-- Background accent -->
|
||
<div class="absolute top-0 left-0 w-full h-px bg-gradient-to-r from-transparent via-brand-500/30 to-transparent"></div>
|
||
<div class="absolute top-[20%] left-[-10%] w-[400px] h-[400px] bg-brand-500/5 rounded-full blur-[100px] -z-10"></div>
|
||
|
||
<div class="max-w-7xl mx-auto px-6">
|
||
<div class="flex flex-col lg:flex-row items-center gap-16">
|
||
<div class="lg:w-1/2">
|
||
<div class="inline-flex items-center gap-2 px-4 py-1.5 rounded-full glass-card-static text-xs font-mono text-brand-400 mb-6">
|
||
<span class="w-1.5 h-1.5 rounded-full bg-brand-400 animate-pulse"></span>
|
||
NEW: AI Domain Generator
|
||
</div>
|
||
<h2 class="text-3xl md:text-4xl font-bold mb-6">대화로 끝내는<br><span class="gradient-text">도메인 등록과 관리</span></h2>
|
||
<p class="text-slate-400 mb-8 leading-relaxed text-lg">
|
||
원하는 아이디어만 말씀하세요. AI가 창의적인 도메인을 추천하고, 텔레그램 대화창에서 3초 만에 등록까지 완료합니다. 복잡한 설정 없이 네임서버까지 즉시 연결됩니다.
|
||
</p>
|
||
|
||
<div class="grid grid-cols-2 gap-4">
|
||
<div class="glass-card p-5 rounded-xl group">
|
||
<div class="text-brand-400 font-bold mb-2 flex items-center gap-2">
|
||
<span class="text-lg">🤖</span> AI 추천
|
||
</div>
|
||
<p class="text-sm text-slate-400">키워드 분석 기반 도메인 작명</p>
|
||
</div>
|
||
<div class="glass-card p-5 rounded-xl group">
|
||
<div class="text-brand-400 font-bold mb-2 flex items-center gap-2">
|
||
<span class="text-lg">🔍</span> 실시간 조회
|
||
</div>
|
||
<p class="text-sm text-slate-400">전 세계 TLD 실시간 가용 확인</p>
|
||
</div>
|
||
<div class="glass-card p-5 rounded-xl group">
|
||
<div class="text-brand-400 font-bold mb-2 flex items-center gap-2">
|
||
<span class="text-lg">⚙️</span> 간편 DNS
|
||
</div>
|
||
<p class="text-sm text-slate-400">대화형 A/CNAME/MX 레코드 설정</p>
|
||
</div>
|
||
<div class="glass-card p-5 rounded-xl group">
|
||
<div class="text-brand-400 font-bold mb-2 flex items-center gap-2">
|
||
<span class="text-lg">🔒</span> Whois 보안
|
||
</div>
|
||
<p class="text-sm text-slate-400">개인정보 보호 설정 기본 제공</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="lg:w-1/2 w-full">
|
||
<div class="glass-panel p-8 rounded-2xl border border-slate-700 relative overflow-hidden">
|
||
<div class="absolute top-0 right-0 p-4 opacity-10">
|
||
<svg class="w-32 h-32 text-brand-400" fill="currentColor" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/></svg>
|
||
</div>
|
||
<h3 class="text-xl font-bold mb-4 flex items-center gap-2">
|
||
<span class="w-2 h-2 rounded-full bg-brand-500"></span>
|
||
주요 도메인 가격 (연간)
|
||
</h3>
|
||
<div class="space-y-4 font-mono text-sm">
|
||
<div class="flex justify-between items-center p-3 border-b border-white/5">
|
||
<span class="text-white">.com / .net</span>
|
||
<span class="text-brand-400 font-bold">₩20,000 / ₩22,600</span>
|
||
</div>
|
||
<div class="flex justify-between items-center p-3 border-b border-white/5">
|
||
<span class="text-white">.it.com / .dev</span>
|
||
<div class="text-right">
|
||
<span class="text-brand-400 font-bold">₩8,700 / ₩27,800</span>
|
||
<div class="text-[10px] text-slate-400 mt-0.5">(.it.com 갱신 ₩67,900)</div>
|
||
</div>
|
||
</div>
|
||
<div class="flex justify-between items-center p-3 border-b border-white/5">
|
||
<span class="text-white">.io / .ai</span>
|
||
<span class="text-brand-400 font-bold">₩114,800 / ₩139,200</span>
|
||
</div>
|
||
<div class="flex justify-between items-center p-3">
|
||
<span class="text-white">.xyz / .me</span>
|
||
<span class="text-brand-400 font-bold">₩27,800 / ₩31,300</span>
|
||
</div>
|
||
</div>
|
||
<a href="https://t.me/AnvilForgeBot" target="_blank" rel="noopener noreferrer" class="mt-8 w-full py-3 bg-brand-700 hover:bg-brand-500 text-white font-bold rounded-lg transition text-center block">
|
||
🌐 도메인 검색 시작하기
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Pricing -->
|
||
<section id="pricing" class="py-24 relative overflow-hidden">
|
||
<!-- Background Effects -->
|
||
<div class="absolute inset-0 gradient-bg opacity-50"></div>
|
||
<div class="absolute top-1/4 -right-32 w-96 h-96 bg-purple-500/10 rounded-full blur-3xl"></div>
|
||
<div class="absolute bottom-1/4 -left-32 w-96 h-96 bg-brand-500/10 rounded-full blur-3xl"></div>
|
||
|
||
<div class="max-w-7xl mx-auto px-6 relative z-10">
|
||
<div class="text-center mb-16 animate-on-scroll">
|
||
<div class="inline-flex items-center gap-2 px-4 py-2 rounded-full glass-panel text-sm text-slate-300 mb-6">
|
||
<span class="w-2 h-2 rounded-full bg-green-400 animate-pulse"></span>
|
||
투명한 가격 정책
|
||
</div>
|
||
<h2 class="text-3xl md:text-4xl font-bold mb-4">합리적인 <span class="gradient-text">요금제</span></h2>
|
||
<p class="text-slate-400 text-lg">전 세계 4개 리전에서 제공되는 최적의 인프라 요금</p>
|
||
<p class="text-slate-500 text-sm mt-2">(월간 기준, VAT 포함)</p>
|
||
</div>
|
||
|
||
<!-- Pricing Tabs -->
|
||
<div x-data="pricingTable()" class="glass-card-static p-8 rounded-3xl mb-12 animate-on-scroll">
|
||
<!-- Tab Buttons -->
|
||
<div class="flex justify-center mb-8">
|
||
<div class="glass-panel p-1.5 rounded-2xl inline-flex gap-1">
|
||
<button @click="region = 'global'" :class="region === 'global' ? 'bg-gradient-to-r from-brand-600 to-brand-500 text-white shadow-lg shadow-brand-500/30 border-b-2 border-b-white/60' : 'text-slate-400 hover:text-white hover:bg-white/5'" class="px-6 py-3 rounded-xl text-sm font-bold transition-all flex items-center gap-2">
|
||
<span>🌏 Global</span>
|
||
<span class="text-[10px] font-normal opacity-80">(Tokyo/SG/HK)</span>
|
||
</button>
|
||
<button @click="region = 'seoul'" :class="region === 'seoul' ? 'bg-gradient-to-r from-brand-600 to-brand-500 text-white shadow-lg shadow-brand-500/30 border-b-2 border-b-white/60' : 'text-slate-400 hover:text-white hover:bg-white/5'" class="px-6 py-3 rounded-xl text-sm font-bold transition-all flex items-center gap-2">
|
||
<span>🇰🇷 Seoul</span>
|
||
<span class="text-[10px] font-normal opacity-80">(Premium)</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Dynamic Pricing Table -->
|
||
<div x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0 transform scale-95" x-transition:enter-end="opacity-100 transform scale-100">
|
||
<div class="overflow-x-auto">
|
||
<table class="w-full text-left font-sans"
|
||
aria-label="서버 요금 비교표 - 리전 및 플랜별 가격 정보">
|
||
<caption class="sr-only">
|
||
서버 요금은 월간 기준입니다. 글로벌 리전(도쿄, 싱가포르, 홍콩)과 서울 프리미엄 리전 중에서 선택할 수 있습니다.
|
||
</caption>
|
||
<thead>
|
||
<tr class="text-slate-500 text-sm border-b border-slate-700">
|
||
<th class="pb-4 font-medium pl-4">Plan</th>
|
||
<th class="pb-4 font-medium text-center">vCPU</th>
|
||
<th class="pb-4 font-medium text-center">RAM</th>
|
||
<th class="pb-4 font-medium text-center" :class="isSeoul() ? 'text-green-400' : ''">
|
||
<span x-text="isSeoul() ? 'SSD (High)' : 'SSD'"></span>
|
||
</th>
|
||
<th class="pb-4 font-medium text-center">Transfer</th>
|
||
<th class="pb-4 font-medium text-right pr-4">Price / Month</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody class="text-slate-300 text-sm">
|
||
<template x-for="(plan, index) in plans" :key="plan.plan">
|
||
<tr :class="plan.featured
|
||
? 'border-b border-slate-700/50 bg-brand-500/5 hover:bg-brand-500/10 transition border-l-4 border-l-brand-500'
|
||
: (index < plans.length - 1 ? 'border-b border-slate-700/50 hover:bg-slate-800/50 transition' : 'hover:bg-slate-800/50 transition')">
|
||
<td :class="plan.featured ? 'py-4 pl-3 font-bold text-brand-400' : 'py-4 pl-4 font-bold text-white'">
|
||
<span x-text="plan.plan"></span>
|
||
<span x-show="plan.featured"> ⭐</span>
|
||
</td>
|
||
<td :class="plan.featured ? 'text-center text-brand-400 font-bold' : 'text-center text-brand-400'" x-text="plan.vcpu"></td>
|
||
<td :class="plan.featured ? 'text-center font-bold' : 'text-center'" x-text="plan.ram"></td>
|
||
<td :class="isSeoul() ? 'text-center text-green-400 font-bold' : 'text-center'" x-text="plan.ssd"></td>
|
||
<td class="text-center" x-text="plan.transfer"></td>
|
||
<td :class="plan.featured ? 'text-right pr-4 font-bold text-lg text-brand-400' : 'text-right pr-4 font-bold text-lg'" x-text="formatPrice(plan.price)"></td>
|
||
</tr>
|
||
</template>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<!-- Global Note -->
|
||
<p x-show="!isSeoul()" class="mt-4 text-center text-xs text-slate-500">
|
||
* 🇯🇵 도쿄, 🇸🇬 싱가포르 기준 요금입니다. 🇭🇰 홍콩 리전은 약 10%의 추가 요금이 발생할 수 있습니다.
|
||
</p>
|
||
|
||
<!-- Seoul Enterprise Note -->
|
||
<div x-show="isSeoul()" class="mt-6 p-4 bg-slate-800/50 rounded-lg border border-slate-700 flex flex-col md:flex-row justify-between items-center gap-4">
|
||
<div class="text-xs text-slate-400">
|
||
<span class="text-white font-bold block mb-1">더 강력한 성능이 필요하신가요?</span>
|
||
AWS EC2 기반의 고성능(4 vCPU+) 인스턴스는 별도 문의 바랍니다. (VPC Peering 지원)
|
||
</div>
|
||
<a href="https://t.me/AnvilForgeBot" target="_blank" rel="noopener noreferrer" class="px-4 py-2 bg-slate-700 hover:bg-slate-600 text-white text-xs font-bold rounded transition">
|
||
Enterprise 문의 →
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Feature Highlight -->
|
||
<div class="grid md:grid-cols-2 gap-8 max-w-4xl mx-auto animate-on-scroll">
|
||
<div class="glass-card p-6 rounded-2xl flex items-start gap-4 group">
|
||
<div class="w-12 h-12 rounded-xl bg-gradient-to-br from-brand-500/20 to-purple-500/20 flex items-center justify-center text-2xl group-hover:scale-110 transition-transform">🌍</div>
|
||
<div>
|
||
<h3 class="font-bold text-white mb-2">글로벌 4개 리전 운영</h3>
|
||
<p class="text-sm text-slate-400 leading-relaxed">도쿄(JP-East), 오사카(JP-West), 싱가포르(SG-Core), 홍콩(HK-Hub)에서 즉시 서버를 생성할 수 있습니다.</p>
|
||
</div>
|
||
</div>
|
||
<div class="glass-card p-6 rounded-2xl flex items-start gap-4 group border-brand-500/20">
|
||
<div class="w-12 h-12 rounded-xl bg-gradient-to-br from-green-500/20 to-brand-500/20 flex items-center justify-center text-2xl group-hover:scale-110 transition-transform">🛡️</div>
|
||
<div>
|
||
<h3 class="font-bold text-white mb-2">프리미엄 DDoS 방어</h3>
|
||
<p class="text-sm text-slate-400 leading-relaxed">모든 리전에 엔터프라이즈급 DDoS 방어 옵션(₩99,000, VAT 포함)을 추가하여 L7 공격까지 완벽하게 방어할 수 있습니다.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Bare Metal Section -->
|
||
<div class="mt-16 glass-card p-8 md:p-10 rounded-3xl relative overflow-hidden animate-on-scroll pricing-featured">
|
||
<!-- Background Glow Effects -->
|
||
<div class="absolute inset-0 bg-gradient-to-br from-red-500/5 via-transparent to-purple-500/5 z-0"></div>
|
||
<div class="absolute -top-20 -right-20 w-60 h-60 bg-red-500/10 rounded-full blur-3xl"></div>
|
||
<div class="absolute -bottom-20 -left-20 w-60 h-60 bg-brand-500/10 rounded-full blur-3xl"></div>
|
||
|
||
<div class="relative z-10 flex flex-col md:flex-row items-center justify-between gap-8">
|
||
<div>
|
||
<div class="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-gradient-to-r from-red-500/20 to-orange-500/20 border border-red-500/30 text-xs font-bold text-red-400 mb-4">
|
||
<span class="w-1.5 h-1.5 rounded-full bg-red-400 animate-pulse"></span>
|
||
EXTREME PERFORMANCE
|
||
</div>
|
||
<h3 class="text-3xl md:text-4xl font-bold text-white mb-3">Bare Metal <span class="gradient-text">Dedicated</span></h3>
|
||
<p class="text-slate-400 max-w-xl leading-relaxed">
|
||
가상화가 없는 100% 물리 서버를 단독으로 사용하세요. <br>
|
||
<span class="text-white font-mono">AMD EPYC 9004</span> 프로세서와 <span class="text-white font-mono">DDR5 ECC RAM</span>의 압도적인 성능을 경험할 수 있습니다.
|
||
</p>
|
||
<div class="flex flex-wrap gap-4 mt-6 text-sm font-mono text-slate-300">
|
||
<span class="flex items-center gap-2 glass-panel px-3 py-1.5 rounded-lg"><span class="text-brand-400">✓</span> Full IPMI Access</span>
|
||
<span class="flex items-center gap-2 glass-panel px-3 py-1.5 rounded-lg"><span class="text-brand-400">✓</span> Custom Hardware</span>
|
||
<span class="flex items-center gap-2 glass-panel px-3 py-1.5 rounded-lg"><span class="text-brand-400">✓</span> 40Gbps Private Network</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flex flex-col items-center md:items-end gap-4">
|
||
<div class="text-center md:text-right glass-panel p-6 rounded-2xl">
|
||
<span class="text-sm text-slate-400">Live Inventory Pricing</span>
|
||
<div class="text-4xl md:text-5xl font-bold text-white mt-1">₩169,000<span class="text-lg text-slate-500 font-normal">~</span></div>
|
||
<p class="text-xs text-brand-400 mt-2">🇸🇬 싱가포르 최저가 재고 보유 중</p>
|
||
<p class="text-[10px] text-slate-400 mt-1">※ 서울/도쿄 리전 재고 및 가격은 봇으로 확인하세요.</p>
|
||
</div>
|
||
<a href="https://t.me/AnvilForgeBot" target="_blank" rel="noopener noreferrer" class="btn-glow px-8 py-4 bg-gradient-to-r from-brand-600 to-brand-500 text-white font-bold rounded-xl hover:shadow-lg hover:shadow-brand-500/30 transition-all flex items-center gap-3">
|
||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.64 6.8c-.15 1.58-.8 5.42-1.13 7.19-.14.75-.42 1-.68 1.03-.58.05-1.02-.38-1.58-.75-.88-.58-1.38-.94-2.23-1.5-.99-.65-.35-1.01.22-1.59.15-.15 2.71-2.48 2.76-2.69a.2.2 0 00-.05-.18c-.06-.05-.14-.03-.21-.02-.09.02-1.49.95-4.22 2.79-.4.27-.76.41-1.08.4-.36-.01-1.04-.2-1.55-.37-.62-.2-1.12-.31-1.15-.63.03-.37.59-.75 1.5-.95 6.07-2.64 10.12-4.38 12.15-5.21 2.91-1.2 3.51-1.4 3.91-1.41.09 0 .28.02.41.09.11.06.23.14.3.24.08.12.12.33.09.57z"/></svg>
|
||
실시간 재고/가격 조회 (Bot)
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
</main>
|
||
<!-- End Main Content -->
|
||
|
||
<!-- Footer -->
|
||
<footer class="py-16 relative overflow-hidden">
|
||
<!-- Background -->
|
||
<div class="absolute inset-0 bg-gradient-to-t from-dark-900 to-transparent"></div>
|
||
<div class="absolute top-0 left-0 right-0 h-px bg-gradient-to-r from-transparent via-brand-500/30 to-transparent"></div>
|
||
|
||
<div class="max-w-7xl mx-auto px-6 relative z-10">
|
||
<div class="flex flex-col md:flex-row justify-between items-center gap-8">
|
||
<!-- Brand -->
|
||
<div class="text-center md:text-left">
|
||
<div class="flex items-center gap-3 mb-2 justify-center md:justify-start">
|
||
<div class="w-10 h-10 rounded-xl bg-gradient-to-br from-brand-500 to-purple-500 flex items-center justify-center text-white font-bold text-lg">A</div>
|
||
<span class="text-xl font-bold text-white">Anvil Hosting</span>
|
||
</div>
|
||
<p class="text-sm text-slate-500">Global Cloud Infrastructure</p>
|
||
</div>
|
||
|
||
<!-- Links -->
|
||
<div class="flex flex-wrap justify-center gap-8">
|
||
<a href="/terms.html" class="text-slate-400 hover:text-brand-400 transition underline-animation">이용약관</a>
|
||
<a href="/privacy.html" class="text-slate-400 hover:text-brand-400 transition underline-animation">개인정보처리방침</a>
|
||
<a href="/sla.html" class="text-slate-400 hover:text-brand-400 transition underline-animation">SLA</a>
|
||
</div>
|
||
|
||
<!-- Company Info -->
|
||
<div class="text-center md:text-right text-sm">
|
||
<div class="text-slate-400">© 2026 LIBEHAIM Inc. | Taro Tanaka</div>
|
||
<div class="text-xs text-slate-500 mt-1">#202 K-Flat, 3-1-13 Higashioi, Shinagawa-ku, Tokyo 140-0011, Japan</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Bottom Decoration -->
|
||
<div class="mt-12 pt-8 border-t border-white/5 text-center">
|
||
<p class="text-xs text-slate-500">Powered by <span class="text-brand-400">Cloud Infrastructure</span> across 4 global regions</p>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
<!-- Server Launcher Modal -->
|
||
|
||
<div x-show="launcherOpen"
|
||
|
||
x-transition:enter="transition ease-out duration-300"
|
||
|
||
x-transition:enter-start="opacity-0"
|
||
|
||
x-transition:enter-end="opacity-100"
|
||
|
||
x-transition:leave="transition ease-in duration-200"
|
||
|
||
x-transition:leave-start="opacity-100"
|
||
|
||
x-transition:leave-end="opacity-0"
|
||
|
||
class="fixed inset-0 z-[100] flex items-center justify-center p-2 sm:p-4 bg-dark-900/90 backdrop-blur-sm"
|
||
|
||
style="display: none;">
|
||
|
||
|
||
|
||
<div @click.away="if(!launching) launcherOpen = false"
|
||
role="dialog"
|
||
aria-modal="true"
|
||
aria-labelledby="modal-main-title"
|
||
aria-describedby="modal-description"
|
||
class="bg-slate-900/95 backdrop-blur-xl border border-white/10 mx-2 sm:mx-4 rounded-3xl shadow-2xl shadow-black/50 overflow-hidden flex flex-col"
|
||
style="width: 100%; max-width: 800px; max-height: 90vh; height: 90vh;">
|
||
|
||
<!-- Accessibility: Hidden description -->
|
||
<div id="modal-description" class="sr-only">
|
||
단계별로 서버 구성을 선택하세요. 각 단계에서 옵션을 클릭하거나 Tab 키로 네비게이션할 수 있습니다. ESC 키를 누르면 닫을 수 있습니다.
|
||
</div>
|
||
|
||
<!-- Modal Header -->
|
||
<div class="px-4 py-3 border-b border-white/5 flex justify-between items-center flex-shrink-0">
|
||
<div class="flex items-center gap-2">
|
||
<div class="w-8 h-8 rounded-full bg-gradient-to-br from-brand-500 to-purple-500 flex items-center justify-center text-sm flex-shrink-0">🚀</div>
|
||
<div>
|
||
<h2 id="modal-main-title" class="text-sm font-bold text-white">서버 생성 마법사</h2>
|
||
<p class="text-[10px] text-slate-400">Anvil Forge Bot</p>
|
||
</div>
|
||
</div>
|
||
<button @click="resetLauncher"
|
||
aria-label="모달 닫기 (ESC 키 지원)"
|
||
class="modal-close w-8 h-8 flex items-center justify-center rounded-full bg-white/5 text-slate-400 hover:bg-white/10 hover:text-white transition flex-shrink-0"
|
||
x-show="!launching">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Chat Container -->
|
||
<div id="chat-container" role="log" aria-live="polite" class="flex-1 overflow-y-auto px-3 sm:px-6 py-3 sm:py-4 space-y-2 sm:space-y-4" x-show="wizardStep < 5">
|
||
<!-- Messages -->
|
||
<template x-for="(msg, idx) in messages" :key="idx">
|
||
<div :class="msg.type === 'bot' ? 'flex justify-start' : 'flex justify-end'"
|
||
role="article"
|
||
:aria-label="(msg.type === 'bot' ? 'Anvil Forge Bot' : '당신') + ': ' + msg.text">
|
||
<div :class="msg.type === 'bot'
|
||
? 'bg-slate-800 text-slate-200 rounded-xl sm:rounded-2xl rounded-tl-sm'
|
||
: 'bg-brand-500 text-white rounded-xl sm:rounded-2xl rounded-tr-sm'"
|
||
class="px-3 py-2 sm:px-4 sm:py-2.5 text-xs sm:text-sm max-w-[90%] break-words"
|
||
role="document">
|
||
<span x-text="msg.text"></span>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<!-- Current Step Options -->
|
||
<div class="pt-2">
|
||
<!-- Step 0: Region Selection -->
|
||
<fieldset x-show="wizardStep === 0" role="radiogroup" aria-label="리전 선택" class="space-y-3">
|
||
<legend class="sr-only">리전 선택 (지역 선택)</legend>
|
||
<template x-for="r in regions" :key="r.id">
|
||
<button @click="selectRegion(r)"
|
||
role="radio"
|
||
:aria-checked="config.region === r.id"
|
||
:tabindex="config.region === r.id ? '0' : '-1'"
|
||
class="w-full flex items-center justify-between px-5 py-4 bg-slate-800/80 hover:bg-slate-700 border-2 rounded-xl transition-all group"
|
||
:class="config.region === r.id
|
||
? 'border-brand-500 bg-brand-500/10'
|
||
: 'border-slate-700/50 hover:border-brand-500/50'">
|
||
<div class="flex items-center gap-4">
|
||
<span class="text-3xl" x-text="r.flag"></span>
|
||
<div class="text-left">
|
||
<div class="font-semibold text-white text-base" x-text="r.name"></div>
|
||
<div class="text-sm text-slate-300" x-text="r.id"></div>
|
||
</div>
|
||
</div>
|
||
<div class="text-sm text-slate-500 group-hover:text-brand-400 font-mono" x-text="r.ping"></div>
|
||
</button>
|
||
</template>
|
||
</fieldset>
|
||
|
||
<!-- Step 1: Plan Selection -->
|
||
<fieldset x-show="wizardStep === 1" class="space-y-3">
|
||
<legend class="sr-only">플랜 선택 (서버 사양 선택)</legend>
|
||
<template x-for="p in plans" :key="p">
|
||
<button @click="selectPlan(p)"
|
||
class="w-full flex items-center justify-between px-5 py-4 bg-slate-800/80 hover:bg-slate-700 border border-slate-700/50 hover:border-brand-500/50 rounded-xl transition-all">
|
||
<div class="flex items-center gap-4">
|
||
<div class="w-12 h-12 rounded-lg bg-slate-700/50 flex items-center justify-center text-2xl"
|
||
x-text="p === 'Micro' ? '🔹' : p === 'Starter' ? '🔷' : p === 'Pro' ? '⭐' : '💎'"></div>
|
||
<div class="text-left">
|
||
<div class="font-semibold text-white text-base" x-text="p"></div>
|
||
<div class="text-sm text-slate-400" x-text="getPlanSpec(p)"></div>
|
||
</div>
|
||
</div>
|
||
<div class="text-right">
|
||
<div class="font-bold text-brand-400 text-base" x-text="'₩' + getPrice(p)"></div>
|
||
<div class="text-xs text-slate-500">/월</div>
|
||
</div>
|
||
</button>
|
||
</template>
|
||
</fieldset>
|
||
|
||
<!-- Step 2: OS Selection -->
|
||
<fieldset x-show="wizardStep === 2" class="space-y-3">
|
||
<legend class="sr-only">운영체제 선택</legend>
|
||
<template x-for="os in osList" :key="os.id">
|
||
<button @click="selectOS(os)"
|
||
class="w-full flex items-center gap-4 px-5 py-4 bg-slate-800/80 hover:bg-slate-700 border border-slate-700/50 hover:border-purple-500/50 rounded-xl transition-all">
|
||
<span class="text-2xl" x-text="os.icon"></span>
|
||
<span class="font-semibold text-white text-base" x-text="os.name"></span>
|
||
</button>
|
||
</template>
|
||
</fieldset>
|
||
|
||
<!-- Step 3: Payment Selection -->
|
||
<fieldset x-show="wizardStep === 3" class="space-y-3">
|
||
<legend class="sr-only">결제 방식 선택</legend>
|
||
<template x-for="pay in paymentMethods" :key="pay.id">
|
||
<button @click="selectPayment(pay)"
|
||
class="w-full flex items-center justify-between px-5 py-4 bg-slate-800/80 hover:bg-slate-700 border border-slate-700/50 hover:border-green-500/50 rounded-xl transition-all">
|
||
<div class="text-left">
|
||
<div class="font-semibold text-white text-base" x-text="pay.name"></div>
|
||
<div class="text-sm text-slate-400" x-text="pay.desc"></div>
|
||
</div>
|
||
<div x-show="pay.discount > 0" class="px-3 py-1.5 bg-green-500/20 text-green-400 text-sm font-bold rounded-full">
|
||
-<span x-text="pay.discount"></span>%
|
||
</div>
|
||
</button>
|
||
</template>
|
||
</fieldset>
|
||
|
||
<!-- Step 4: Confirmation -->
|
||
<div x-show="wizardStep === 4" class="space-y-4">
|
||
<div class="px-5 py-4 bg-slate-800/50 border border-slate-700/50 rounded-xl space-y-3">
|
||
<div class="flex justify-between text-base"><span class="text-slate-400">리전</span><span class="text-white font-medium" x-text="config.region"></span></div>
|
||
<div class="flex justify-between text-base"><span class="text-slate-400">플랜</span><span class="text-white font-medium" x-text="config.plan + ' (' + getPlanSpec(config.plan) + ')'"></span></div>
|
||
<div class="flex justify-between text-base"><span class="text-slate-400">OS</span><span class="text-white font-medium" x-text="config.os"></span></div>
|
||
<div class="flex justify-between text-base"><span class="text-slate-400">결제</span><span class="text-white font-medium" x-text="config.payment === 'yearly' ? '연간' : '월간'"></span></div>
|
||
<div class="border-t border-slate-700 pt-3 mt-3 flex justify-between font-bold text-lg">
|
||
<span class="text-slate-300">월 요금</span>
|
||
<span class="text-brand-400" x-text="'₩' + getFinalPrice().toLocaleString('ko-KR')"></span>
|
||
</div>
|
||
</div>
|
||
<button @click="startLaunch"
|
||
class="w-full py-4 bg-gradient-to-r from-brand-600 to-brand-500 hover:from-brand-500 hover:to-brand-400 text-white font-bold rounded-xl transition-all shadow-lg shadow-brand-500/25 active:scale-[0.98] text-base">
|
||
🚀 서버 생성하기
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Back Button -->
|
||
<div x-show="wizardStep > 0 && wizardStep < 5" class="px-4 pb-3 flex-shrink-0">
|
||
<button @click="goBack" class="text-xs text-slate-500 hover:text-slate-300 transition flex items-center gap-1">
|
||
<svg class="w-3 h-3" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/></svg>
|
||
이전 단계
|
||
</button>
|
||
</div>
|
||
|
||
<!-- Deploying State -->
|
||
<div x-show="wizardStep >= 5" class="p-4 flex flex-col min-h-[300px]">
|
||
<!-- Progress -->
|
||
<div class="mb-4">
|
||
<div class="flex justify-between text-xs text-slate-400 mb-2">
|
||
<span x-text="deployStep < 5 ? '배포 중...' : '완료'"></span>
|
||
<span x-text="(deployStep * 20) + '%'"></span>
|
||
</div>
|
||
<div class="h-1.5 bg-slate-800 rounded-full overflow-hidden">
|
||
<div class="h-full bg-gradient-to-r from-brand-500 to-purple-500 transition-all duration-500 rounded-full" :style="'width: ' + (deployStep * 20) + '%'"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Logs -->
|
||
<div class="flex-1 bg-black/30 rounded-xl p-3 text-xs text-slate-400 overflow-y-auto border border-white/5 space-y-1 max-h-40">
|
||
<template x-for="(log, idx) in logs" :key="idx">
|
||
<div x-text="log"></div>
|
||
</template>
|
||
<div x-show="launching" class="animate-pulse text-brand-400">▋</div>
|
||
</div>
|
||
|
||
<!-- Success State -->
|
||
<div x-show="deployStep === 5" x-transition class="mt-4 p-4 bg-gradient-to-br from-brand-500/10 to-purple-500/10 border border-brand-500/20 rounded-2xl text-center">
|
||
<div class="w-12 h-12 rounded-full bg-gradient-to-br from-brand-500 to-purple-500 flex items-center justify-center text-white text-xl mb-2 mx-auto">✓</div>
|
||
<h4 class="text-base font-bold text-white mb-1">서버 준비 완료!</h4>
|
||
<p class="text-slate-400 text-xs mb-3">인스턴스가 활성화되었습니다</p>
|
||
<div class="flex gap-2">
|
||
<button @click="resetLauncher" class="flex-1 py-2.5 bg-slate-800 hover:bg-slate-700 text-white font-semibold rounded-xl transition text-sm">닫기</button>
|
||
<a href="https://t.me/AnvilForgeBot" target="_blank" rel="noopener noreferrer" class="flex-1 py-2.5 bg-gradient-to-r from-brand-600 to-brand-500 text-white font-semibold rounded-xl transition text-center text-sm">Console →</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Scroll Animation Script -->
|
||
<script>
|
||
// Intersection Observer for scroll animations
|
||
document.addEventListener('DOMContentLoaded', () => {
|
||
const observerOptions = {
|
||
threshold: 0.1,
|
||
rootMargin: '0px 0px -50px 0px'
|
||
};
|
||
|
||
const observer = new IntersectionObserver((entries) => {
|
||
entries.forEach(entry => {
|
||
if (entry.isIntersecting) {
|
||
entry.target.classList.add('visible');
|
||
observer.unobserve(entry.target);
|
||
}
|
||
});
|
||
}, observerOptions);
|
||
|
||
// Observe all animate-on-scroll elements
|
||
document.querySelectorAll('.animate-on-scroll').forEach(el => {
|
||
observer.observe(el);
|
||
});
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |