feat: Nexora 门户网站 v1.0 — 服务导航、开发指南、SSO 说明

This commit is contained in:
2026-03-31 19:50:51 +08:00
parent e7b4656eb1
commit f7a6ab7d24

530
index.html Normal file
View File

@@ -0,0 +1,530 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nexora — 智能研发平台</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
nexora: { 50: '#fef2f2', 100: '#fee2e2', 500: '#ef4444', 600: '#dc2626', 700: '#b91c1c', 800: '#991b1b', 900: '#1a1a2e' },
dark: { 800: '#1e1e2e', 900: '#0f0f1a', 700: '#2a2a3e' }
}
}
}
}
</script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
body { font-family: 'Inter', system-ui, sans-serif; }
html { scroll-behavior: smooth; }
.gradient-text { background: linear-gradient(135deg, #ef4444, #f97316, #eab308); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.card-hover { transition: all 0.3s ease; }
.card-hover:hover { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(0,0,0,0.3); }
.glow { box-shadow: 0 0 30px rgba(239, 68, 68, 0.15); }
.service-icon { font-size: 2.5rem; }
.nav-blur { backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.hero-bg { background: radial-gradient(ellipse at 50% 0%, rgba(239,68,68,0.12) 0%, transparent 60%); }
.section-divider { background: linear-gradient(90deg, transparent, rgba(239,68,68,0.3), transparent); height: 1px; }
pre code { font-size: 0.85rem; }
.flow-arrow { color: #ef4444; font-size: 1.5rem; }
.env-dev { border-color: #22c55e; }
.env-staging { border-color: #eab308; }
.env-prod { border-color: #ef4444; }
</style>
</head>
<body class="bg-dark-900 text-gray-200 antialiased">
<!-- Navigation -->
<nav class="fixed top-0 w-full z-50 nav-blur bg-dark-900/80 border-b border-gray-800/50">
<div class="max-w-6xl mx-auto px-6 py-4 flex items-center justify-between">
<a href="#" class="flex items-center gap-3">
<span class="text-3xl">🦞</span>
<span class="text-xl font-bold text-white">Nexora</span>
</a>
<div class="hidden md:flex items-center gap-8 text-sm">
<a href="#services" class="text-gray-400 hover:text-white transition">服务</a>
<a href="#quickstart" class="text-gray-400 hover:text-white transition">快速开始</a>
<a href="#devops" class="text-gray-400 hover:text-white transition">开发流程</a>
<a href="#team" class="text-gray-400 hover:text-white transition">团队</a>
<a href="#sso" class="text-gray-400 hover:text-white transition">SSO</a>
<a href="https://uptime.nexora.restry.cn" target="_blank" class="px-4 py-2 bg-nexora-600/20 text-nexora-500 rounded-lg hover:bg-nexora-600/30 transition text-sm">服务状态 ↗</a>
</div>
</div>
</nav>
<!-- Hero -->
<section class="hero-bg pt-32 pb-20">
<div class="max-w-6xl mx-auto px-6 text-center">
<div class="inline-flex items-center gap-2 px-4 py-2 rounded-full bg-dark-700/50 border border-gray-700/50 text-sm text-gray-400 mb-8">
<span class="w-2 h-2 bg-green-500 rounded-full animate-pulse"></span>
全部服务运行中
</div>
<h1 class="text-5xl md:text-7xl font-800 text-white mb-6 leading-tight">
<span class="gradient-text">Nexora</span><br>智能研发平台
</h1>
<p class="text-xl text-gray-400 max-w-2xl mx-auto mb-10 leading-relaxed">
一站式自托管研发基础设施 — 代码管理、知识协作、服务监控、容器编排、团队沟通,统一认证,开箱即用。
</p>
<div class="flex flex-wrap justify-center gap-4">
<a href="#quickstart" class="px-8 py-3 bg-nexora-600 text-white rounded-lg font-medium hover:bg-nexora-700 transition">
快速开始 →
</a>
<a href="#services" class="px-8 py-3 bg-dark-700 text-gray-300 rounded-lg font-medium hover:bg-dark-800 border border-gray-700 transition">
查看服务
</a>
</div>
</div>
</section>
<div class="section-divider max-w-4xl mx-auto"></div>
<!-- Services -->
<section id="services" class="py-20">
<div class="max-w-6xl mx-auto px-6">
<div class="text-center mb-16">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4">平台服务</h2>
<p class="text-gray-400 max-w-xl mx-auto">所有服务通过 Gitea 统一账号体系登录,一个账号访问全部平台。</p>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Gitea -->
<a href="https://gitea.nexora.restry.cn" target="_blank" class="card-hover p-6 rounded-2xl bg-dark-800 border border-gray-700/50 glow block">
<div class="service-icon mb-4">🗃️</div>
<h3 class="text-xl font-semibold text-white mb-2">Gitea — 代码管理</h3>
<p class="text-gray-400 text-sm leading-relaxed mb-3">
轻量级 Git 托管平台,兼容 GitHub 生态。支持仓库管理、Pull Request、代码审查、Issue 跟踪、Gitea Actions CI/CD。
</p>
<div class="text-xs text-gray-500">gitea.nexora.restry.cn ↗</div>
</a>
<!-- Outline -->
<a href="https://outline.nexora.restry.cn" target="_blank" class="card-hover p-6 rounded-2xl bg-dark-800 border border-gray-700/50 glow block">
<div class="service-icon mb-4">📝</div>
<h3 class="text-xl font-semibold text-white mb-2">Outline — 知识库</h3>
<p class="text-gray-400 text-sm leading-relaxed mb-3">
团队文档协作平台,支持 Markdown 编辑、实时协作、结构化知识管理。项目文档、API 文档、会议记录、技术方案都在这里。
</p>
<div class="text-xs text-gray-500">outline.nexora.restry.cn ↗</div>
</a>
<!-- Uptime Kuma -->
<a href="https://uptime.nexora.restry.cn" target="_blank" class="card-hover p-6 rounded-2xl bg-dark-800 border border-gray-700/50 glow block">
<div class="service-icon mb-4">📊</div>
<h3 class="text-xl font-semibold text-white mb-2">Uptime Kuma — 监控</h3>
<p class="text-gray-400 text-sm leading-relaxed mb-3">
服务可用性监控,实时检测所有平台服务状态。支持 HTTP、TCP、Ping、DNS 多种检测方式,故障时自动告警到 Mattermost。
</p>
<div class="text-xs text-gray-500">uptime.nexora.restry.cn ↗</div>
</a>
<!-- Portainer -->
<a href="https://portainer.nexora.restry.cn" target="_blank" class="card-hover p-6 rounded-2xl bg-dark-800 border border-gray-700/50 glow block">
<div class="service-icon mb-4">🐳</div>
<h3 class="text-xl font-semibold text-white mb-2">Portainer — 容器管理</h3>
<p class="text-gray-400 text-sm leading-relaxed mb-3">
Docker 可视化管理面板。查看容器状态、日志、资源占用,管理镜像、网络、数据卷,无需命令行也能运维。
</p>
<div class="text-xs text-gray-500">portainer.nexora.restry.cn ↗</div>
</a>
<!-- Mattermost -->
<a href="https://mm.dora.restry.cn" target="_blank" class="card-hover p-6 rounded-2xl bg-dark-800 border border-gray-700/50 glow block">
<div class="service-icon mb-4">💬</div>
<h3 class="text-xl font-semibold text-white mb-2">Mattermost — 团队沟通</h3>
<p class="text-gray-400 text-sm leading-relaxed mb-3">
自托管即时通讯平台,替代 Slack。频道管理、文件分享、集成 WebhookCI/CD 通知和监控告警都汇聚于此。
</p>
<div class="text-xs text-gray-500">mm.dora.restry.cn ↗</div>
</a>
<!-- Nexora AI -->
<div class="card-hover p-6 rounded-2xl bg-dark-800 border border-gray-700/50 glow">
<div class="service-icon mb-4">🤖</div>
<h3 class="text-xl font-semibold text-white mb-2">Nexora AI — 运维管家</h3>
<p class="text-gray-400 text-sm leading-relaxed mb-3">
AI 驱动的 DevOps 助手,驻扎在 Mattermost。服务监控、代码管理、自动化运维、子代理编排7×24 在线协助。
</p>
<div class="text-xs text-gray-500">通过 Mattermost 交互 🦞</div>
</div>
</div>
</div>
</section>
<div class="section-divider max-w-4xl mx-auto"></div>
<!-- Quick Start -->
<section id="quickstart" class="py-20">
<div class="max-w-4xl mx-auto px-6">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4 text-center">快速开始</h2>
<p class="text-gray-400 text-center mb-16">从零开始5 分钟上手 Nexora 平台。</p>
<!-- Step 1: Login -->
<div class="mb-12">
<div class="flex items-center gap-3 mb-4">
<span class="w-8 h-8 bg-nexora-600 text-white rounded-lg flex items-center justify-center font-bold text-sm">1</span>
<h3 class="text-xl font-semibold text-white">登录账号</h3>
</div>
<div class="pl-11">
<p class="text-gray-400 mb-3">
所有平台服务使用 <strong class="text-white">Gitea 统一账号</strong>登录。首次使用请联系管理员创建账号,然后访问 Gitea 修改初始密码。
</p>
<div class="bg-dark-800 rounded-xl p-4 border border-gray-700/50">
<p class="text-sm text-gray-400 mb-2">📌 登录地址</p>
<code class="text-nexora-500">https://gitea.nexora.restry.cn</code>
<p class="text-sm text-gray-500 mt-2">其他服务Outline、Portainer 等)点击 "通过 Nexora Git 登录" 即可 SSO 跳转。</p>
</div>
</div>
</div>
<!-- Step 2: SSH Key -->
<div class="mb-12">
<div class="flex items-center gap-3 mb-4">
<span class="w-8 h-8 bg-nexora-600 text-white rounded-lg flex items-center justify-center font-bold text-sm">2</span>
<h3 class="text-xl font-semibold text-white">配置 SSH Key</h3>
</div>
<div class="pl-11">
<p class="text-gray-400 mb-3">推送代码需要 SSH 密钥认证:</p>
<div class="bg-dark-800 rounded-xl p-4 border border-gray-700/50 overflow-x-auto">
<pre class="text-sm text-gray-300"><code># 生成 SSH Key如果还没有
ssh-keygen -t ed25519 -C "your-email@nexora.dev"
# 复制公钥
cat ~/.ssh/id_ed25519.pub
# 粘贴到 Gitea → 设置 → SSH/GPG Keys → 添加密钥</code></pre>
</div>
</div>
</div>
<!-- Step 3: Import Repo -->
<div class="mb-12">
<div class="flex items-center gap-3 mb-4">
<span class="w-8 h-8 bg-nexora-600 text-white rounded-lg flex items-center justify-center font-bold text-sm">3</span>
<h3 class="text-xl font-semibold text-white">导入已有代码</h3>
</div>
<div class="pl-11">
<p class="text-gray-400 mb-3">从 GitHub/GitLab 等平台迁移仓库:</p>
<div class="bg-dark-800 rounded-xl p-4 border border-gray-700/50">
<ol class="text-sm text-gray-300 space-y-2 list-decimal list-inside">
<li>登录 Gitea → 右上角 <strong class="text-white">+</strong><strong class="text-white">迁移外部仓库</strong></li>
<li>选择来源平台GitHub、GitLab、Gitea 等)</li>
<li>填入仓库 URL支持 HTTPS 和 SSH</li>
<li>如果是私有仓库,填入访问令牌</li>
<li>选择是否迁移 Issues、PR、Labels 等</li>
<li>点击 <strong class="text-white">迁移仓库</strong>,等待完成</li>
</ol>
</div>
<p class="text-sm text-gray-500 mt-3">💡 也可以命令行迁移:</p>
<div class="bg-dark-800 rounded-xl p-4 border border-gray-700/50 overflow-x-auto mt-2">
<pre class="text-sm text-gray-300"><code># 克隆原仓库(含所有分支和标签)
git clone --mirror https://github.com/org/repo.git
# 推送到 Nexora Gitea
cd repo.git
git remote set-url origin ssh://git@gitea.nexora.restry.cn:2222/your-username/repo.git
git push --mirror</code></pre>
</div>
</div>
</div>
<!-- Step 4: New Repo -->
<div class="mb-12">
<div class="flex items-center gap-3 mb-4">
<span class="w-8 h-8 bg-nexora-600 text-white rounded-lg flex items-center justify-center font-bold text-sm">4</span>
<h3 class="text-xl font-semibold text-white">新建代码仓库</h3>
</div>
<div class="pl-11">
<div class="bg-dark-800 rounded-xl p-4 border border-gray-700/50 overflow-x-auto">
<pre class="text-sm text-gray-300"><code># 方式一:网页创建
# Gitea → + → 创建仓库 → 填写名称/描述 → 创建
# 方式二:命令行推送新项目
mkdir my-project && cd my-project
git init && git checkout -b main
echo "# My Project" > README.md
git add . && git commit -m "init: project scaffold"
git remote add origin ssh://git@gitea.nexora.restry.cn:2222/your-username/my-project.git
git push -u origin main</code></pre>
</div>
</div>
</div>
</div>
</section>
<div class="section-divider max-w-4xl mx-auto"></div>
<!-- DevOps -->
<section id="devops" class="py-20">
<div class="max-w-5xl mx-auto px-6">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4 text-center">开发流程</h2>
<p class="text-gray-400 text-center mb-16">规范化的三环境 + Git Flow 工作流,保障代码质量与部署安全。</p>
<!-- 3 Environments -->
<h3 class="text-2xl font-semibold text-white mb-8">🏗️ 三环境架构</h3>
<div class="grid md:grid-cols-3 gap-6 mb-16">
<div class="p-6 rounded-2xl bg-dark-800 border-2 env-dev">
<div class="text-3xl mb-3">🟢</div>
<h4 class="text-lg font-bold text-green-400 mb-2">Development</h4>
<p class="text-sm text-gray-400 mb-3">开发环境 — 自由实验,快速迭代</p>
<ul class="text-xs text-gray-500 space-y-1">
<li>• 分支:<code class="text-green-400">feature/*</code></li>
<li>• 部署:本地 / Docker Compose</li>
<li>• 数据库:独立开发库</li>
<li>• 域名:<code>dev-*.nexora.restry.cn</code></li>
</ul>
</div>
<div class="p-6 rounded-2xl bg-dark-800 border-2 env-staging">
<div class="text-3xl mb-3">🟡</div>
<h4 class="text-lg font-bold text-yellow-400 mb-2">Staging</h4>
<p class="text-sm text-gray-400 mb-3">测试环境 — 集成测试,验收确认</p>
<ul class="text-xs text-gray-500 space-y-1">
<li>• 分支:<code class="text-yellow-400">develop</code></li>
<li>• 部署PR 合并后自动部署</li>
<li>• 数据库:测试数据(可重置)</li>
<li>• 域名:<code>staging-*.nexora.restry.cn</code></li>
</ul>
</div>
<div class="p-6 rounded-2xl bg-dark-800 border-2 env-prod">
<div class="text-3xl mb-3">🔴</div>
<h4 class="text-lg font-bold text-red-400 mb-2">Production</h4>
<p class="text-sm text-gray-400 mb-3">生产环境 — 稳定可靠,审批发布</p>
<ul class="text-xs text-gray-500 space-y-1">
<li>• 分支:<code class="text-red-400">main</code>(打 tag</li>
<li>• 部署:审批后触发</li>
<li>• 数据库:生产数据(定时备份)</li>
<li>• 域名:<code>*.nexora.restry.cn</code></li>
</ul>
</div>
</div>
<!-- Git Flow -->
<h3 class="text-2xl font-semibold text-white mb-8">🌿 Git 分支策略</h3>
<div class="bg-dark-800 rounded-2xl p-8 border border-gray-700/50 mb-16">
<div class="overflow-x-auto">
<pre class="text-sm text-gray-300 leading-relaxed"><code>main (生产) ─────●──────────────────●─────── 稳定发布
↑ ↑
release/* ────●── 测试修复 ──● │ 发版准备
↑ ↓ ↑
develop (集成) ──●──●──●──●──●──●──●──●──●──── 日常集成
↑ ↑ ↑
feature/login ──●──● │ 功能分支
feature/api ───────●──● 功能分支
hotfix/* ──●──── 紧急修复 → main + develop</code></pre>
</div>
<div class="mt-6 grid md:grid-cols-2 gap-4 text-sm">
<div class="text-gray-400"><code class="text-white">main</code> — 生产代码,只接受 release 和 hotfix 合并</div>
<div class="text-gray-400"><code class="text-white">develop</code> — 集成分支feature 完成后合并到此</div>
<div class="text-gray-400"><code class="text-white">feature/*</code> — 功能开发,从 develop 拉出</div>
<div class="text-gray-400"><code class="text-white">release/*</code> — 发版准备,冻结功能只修 bug</div>
<div class="text-gray-400"><code class="text-white">hotfix/*</code> — 紧急修复,从 main 拉出</div>
</div>
</div>
<!-- Workflow -->
<h3 class="text-2xl font-semibold text-white mb-8">🔄 日常开发流程</h3>
<div class="bg-dark-800 rounded-2xl p-8 border border-gray-700/50 mb-16 overflow-x-auto">
<pre class="text-sm text-gray-300"><code># 1. 从 develop 拉功能分支
git checkout develop && git pull
git checkout -b feature/user-auth
# 2. 开发 & 提交
git add . && git commit -m "feat: add JWT authentication"
# 3. 推送并创建 Pull Request
git push -u origin feature/user-auth
# → 在 Gitea 上创建 PR → develop
# 4. 代码审查 + CI 通过 → 合并
# → Staging 自动部署QA 验证
# 5. 发版
git checkout -b release/v1.0.0 develop
# 测试修复后 → 合并到 main + develop
git tag v1.0.0
git push --tags
# → Production 部署</code></pre>
</div>
<!-- CI/CD -->
<h3 class="text-2xl font-semibold text-white mb-8">⚡ CI/CD 自动化</h3>
<div class="bg-dark-800 rounded-2xl p-8 border border-gray-700/50">
<p class="text-gray-400 mb-4">使用 <strong class="text-white">Gitea Actions</strong>(兼容 GitHub Actions 语法):</p>
<div class="flex flex-wrap items-center gap-3 mb-6 text-sm">
<span class="px-3 py-1 bg-blue-900/30 text-blue-400 rounded-lg">git push</span>
<span class="flow-arrow"></span>
<span class="px-3 py-1 bg-purple-900/30 text-purple-400 rounded-lg">Build</span>
<span class="flow-arrow"></span>
<span class="px-3 py-1 bg-yellow-900/30 text-yellow-400 rounded-lg">Test</span>
<span class="flow-arrow"></span>
<span class="px-3 py-1 bg-green-900/30 text-green-400 rounded-lg">Deploy</span>
<span class="flow-arrow"></span>
<span class="px-3 py-1 bg-red-900/30 text-red-400 rounded-lg">Notify</span>
</div>
<pre class="text-sm text-gray-300 overflow-x-auto"><code># .gitea/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [develop, main]
pull_request:
branches: [develop]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: npm ci && npm run build
- name: Test
run: npm test
- name: Deploy to Staging
if: github.ref == 'refs/heads/develop'
run: echo "Deploy to staging..."
- name: Deploy to Production
if: startsWith(github.ref, 'refs/tags/v')
run: echo "Deploy to production..."</code></pre>
</div>
</div>
</section>
<div class="section-divider max-w-4xl mx-auto"></div>
<!-- Team -->
<section id="team" class="py-20">
<div class="max-w-4xl mx-auto px-6">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4 text-center">团队成员</h2>
<p class="text-gray-400 text-center mb-12">平台账号统一由 Gitea 管理,以下为当前团队成员。</p>
<div class="grid md:grid-cols-2 lg:grid-cols-4 gap-6">
<div class="text-center p-6 rounded-2xl bg-dark-800 border border-gray-700/50">
<div class="text-4xl mb-3">👨‍💼</div>
<h4 class="font-semibold text-white">admin</h4>
<p class="text-xs text-nexora-500">管理员</p>
<p class="text-xs text-gray-500 mt-1">admin@nexora.dev</p>
</div>
<div class="text-center p-6 rounded-2xl bg-dark-800 border border-gray-700/50">
<div class="text-4xl mb-3">👩‍💻</div>
<h4 class="font-semibold text-white">dev-alice</h4>
<p class="text-xs text-green-400">开发</p>
<p class="text-xs text-gray-500 mt-1">alice@nexora.dev</p>
</div>
<div class="text-center p-6 rounded-2xl bg-dark-800 border border-gray-700/50">
<div class="text-4xl mb-3">👨‍💻</div>
<h4 class="font-semibold text-white">dev-bob</h4>
<p class="text-xs text-green-400">开发</p>
<p class="text-xs text-gray-500 mt-1">bob@nexora.dev</p>
</div>
<div class="text-center p-6 rounded-2xl bg-dark-800 border border-gray-700/50">
<div class="text-4xl mb-3">🧪</div>
<h4 class="font-semibold text-white">qa-charlie</h4>
<p class="text-xs text-yellow-400">测试</p>
<p class="text-xs text-gray-500 mt-1">charlie@nexora.dev</p>
</div>
</div>
<div class="mt-8 text-center text-sm text-gray-500">
需要新建账号?联系管理员或在 Mattermost 找 🦞 Nexora AI 协助。
</div>
</div>
</section>
<div class="section-divider max-w-4xl mx-auto"></div>
<!-- SSO -->
<section id="sso" class="py-20">
<div class="max-w-4xl mx-auto px-6">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4 text-center">统一认证 (SSO)</h2>
<p class="text-gray-400 text-center mb-12">Gitea 作为 OAuth2/OIDC Provider一个账号登录所有服务。</p>
<div class="bg-dark-800 rounded-2xl p-8 border border-gray-700/50">
<div class="flex flex-wrap items-center justify-center gap-4 mb-8 text-sm">
<span class="px-4 py-2 bg-gray-700 rounded-lg text-white">Outline</span>
<span class="px-4 py-2 bg-gray-700 rounded-lg text-white">Portainer</span>
<span class="px-4 py-2 bg-gray-700 rounded-lg text-white">新服务...</span>
<span class="flow-arrow"></span>
<span class="px-4 py-2 bg-nexora-600 rounded-lg text-white font-semibold">🗃️ Gitea OAuth</span>
<span class="flow-arrow"></span>
<span class="px-4 py-2 bg-green-800 rounded-lg text-white">✅ 登录成功</span>
</div>
<h4 class="text-lg font-semibold text-white mb-4">接入新服务到 Gitea SSO</h4>
<ol class="text-sm text-gray-400 space-y-3 list-decimal list-inside">
<li>登录 Gitea → <strong class="text-white">站点管理</strong><strong class="text-white">应用</strong><strong class="text-white">创建 OAuth2 应用</strong></li>
<li>填写应用名称和回调 URL<code class="text-nexora-500">https://new-service.nexora.restry.cn/callback</code></li>
<li>获取 <code class="text-white">Client ID</code><code class="text-white">Client Secret</code></li>
<li>在新服务中配置 OIDC
<div class="bg-dark-700 rounded-lg p-3 mt-2 overflow-x-auto">
<pre class="text-xs text-gray-300"><code>Authorization URL: https://gitea.nexora.restry.cn/login/oauth/authorize
Token URL: https://gitea.nexora.restry.cn/login/oauth/access_token
Userinfo URL: https://gitea.nexora.restry.cn/login/oauth/userinfo</code></pre>
</div>
</li>
<li>用户点击 "通过 Nexora Git 登录" 即可 SSO 跳转 ✅</li>
</ol>
</div>
</div>
</section>
<div class="section-divider max-w-4xl mx-auto"></div>
<!-- Architecture -->
<section class="py-20">
<div class="max-w-4xl mx-auto px-6">
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4 text-center">基础架构</h2>
<p class="text-gray-400 text-center mb-12">全容器化部署FRP 内网穿透Caddy 自动 TLS。</p>
<div class="bg-dark-800 rounded-2xl p-8 border border-gray-700/50 overflow-x-auto">
<pre class="text-sm text-gray-300 leading-relaxed"><code>
┌─────────────────────────────────────────────────────────────┐
│ 外网用户 (HTTPS) │
└─────────────────────┬───────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ fw-n2 (40.162.94.187) — FRP Server │
│ *.nexora.restry.cn → FRP 隧道 │
└─────────────────────┬───────────────────────────────────────┘
↓ HTTP/HTTPS 隧道
┌─────────────────────────────────────────────────────────────┐
│ claw-bot (192.168.31.141) — FRP Client │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Caddy (TLS 终结 + 反向代理) │ │
│ │ ├── gitea.nexora.restry.cn → Gitea:3000 │ │
│ │ ├── outline.nexora.restry.cn → Outline:3000 │ │
│ │ ├── uptime.nexora.restry.cn → Uptime Kuma:3001 │ │
│ │ ├── portainer.nexora.restry.cn→ Portainer:9000 │ │
│ │ └── www.nexora.restry.cn → 静态文件 (本站) │ │
│ └────────────────────────────────────────────────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ Gitea │ │ Outline │ │ Postgres │ │ Uptime Kuma │ │
│ └──────────┘ └──────────┘ └──────────┘ └───────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────────────┐ │
│ │Portainer │ │ Redis │ │ 🦞 Nexora AI (OpenClaw) │ │
│ └──────────┘ └──────────┘ └──────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
</code></pre>
</div>
</div>
</section>
<!-- Footer -->
<footer class="border-t border-gray-800/50 py-12">
<div class="max-w-6xl mx-auto px-6 text-center">
<div class="flex items-center justify-center gap-3 mb-4">
<span class="text-2xl">🦞</span>
<span class="text-lg font-semibold text-white">Nexora</span>
</div>
<p class="text-sm text-gray-500 mb-4">智能研发平台 — 自托管、安全、高效</p>
<div class="flex flex-wrap justify-center gap-6 text-sm text-gray-500 mb-6">
<a href="https://gitea.nexora.restry.cn" class="hover:text-white transition">Gitea</a>
<a href="https://outline.nexora.restry.cn" class="hover:text-white transition">Outline</a>
<a href="https://uptime.nexora.restry.cn" class="hover:text-white transition">服务状态</a>
<a href="https://portainer.nexora.restry.cn" class="hover:text-white transition">Portainer</a>
<a href="https://mm.dora.restry.cn" class="hover:text-white transition">Mattermost</a>
</div>
<p class="text-xs text-gray-600">© 2026 Nexora. All rights reserved.</p>
</div>
</footer>
</body>
</html>