feat: Nexora 门户网站 v1.0 — 服务导航、开发指南、SSO 说明
This commit is contained in:
530
index.html
Normal file
530
index.html
Normal 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。频道管理、文件分享、集成 Webhook,CI/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>
|
||||
Reference in New Issue
Block a user