Nuxt 统一登录门户,内置账号密码注册登录和 Linux.do 第三方登录,MySQL + Prisma 保存用户状态、邀请码、网站服务、授权记录和反馈内容,后台 UI 使用 Element Plus。
当前线上地址:
- 门户:
https://zrg.zrbyhelp.com/ - MinIO:
https://minio.zrbyhelp.com
- 安装依赖:
pnpm install- 配置环境变量:
cp .env.example .env重点变量:
DATABASE_URL: MySQL 连接串NUXT_ADMIN_ACCOUNTS: 管理员账号,多个用英文逗号分隔NUXT_ADMIN_EMAILS: 旧邮箱管理员兼容配置,可选NUXT_PUBLIC_APP_URL: 门户公网地址,线上为https://zrg.zrbyhelp.comNUXT_LINUXDO_CLIENT_ID: Linux.do Connect 应用 Client IDNUXT_LINUXDO_CLIENT_SECRET: Linux.do Connect 应用 Client SecretNUXT_LINUXDO_REDIRECT_URI: Linux.do 回调地址,线上为https://zrg.zrbyhelp.com/api/auth/linuxdo/callbackNUXT_LINUXDO_SCOPE: 可选,Linux.do Connect 应用需要 scope 时再填写NUXT_LINUXDO_AUTHORIZE_URL/NUXT_LINUXDO_TOKEN_URL/NUXT_LINUXDO_USER_URL: 可选,覆盖 Linux.do OAuth 端点NUXT_MINIO_ENDPOINT/NUXT_MINIO_PORT: MinIO 地址和端口,线上 endpoint 为minio.zrbyhelp.comNUXT_MINIO_ACCESS_KEY/NUXT_MINIO_SECRET_KEY: MinIO 访问凭据NUXT_MINIO_BUCKET: 用户头像和第三方上传文件使用的 bucketNUXT_MINIO_PUBLIC_BASE_URL: 外部可访问的 bucket 地址,用于生成头像和文件 URL,线上可配置为https://minio.zrbyhelp.com/zr-access-portal
- 启动本地 MySQL 和 MinIO:
docker compose up -d mysql minio- 初始化数据库:
pnpm db:push
pnpm db:backfill-accounts- 启动开发服务:
pnpm dev复制环境变量后直接构建并启动:
cp .env.example .env
docker compose up -d --buildCompose 会启动 app、mysql、minio 和 minio-init。应用容器启动时默认执行 prisma db push --accept-data-loss --skip-generate 和账号回填脚本;稳定部署后可在 .env 中设置 DB_PUSH_ON_START=false、DB_BACKFILL_ACCOUNTS_ON_START=false 关闭自动同步。
默认入口:
- 门户:
http://localhost:3000 - MinIO API:
http://localhost:9000 - MinIO Console:
http://localhost:9001
线上部署入口:
- 门户:
https://zrg.zrbyhelp.com/ - MinIO:
https://minio.zrbyhelp.com
如果本机端口冲突,可修改 .env 中的 APP_PORT、MYSQL_PORT、MINIO_API_PORT、MINIO_CONSOLE_PORT。
如果 Docker Hub 拉取不稳定,可在 .env 中把 NODE_IMAGE、MYSQL_IMAGE、MINIO_IMAGE、MINIO_MC_IMAGE 改成你当前可访问的镜像源地址。
/login: 统一登录入口,也支持外部服务带client_id/callback/state发起授权。/feedback: 投诉建议收集页,三方网站也可弹窗打开。/relogin: 外部服务要求用户重新登录时使用。/onboarding: 用户填写邀请码或为指定网站提交访问申请。/pending: 申请等待审核页。/apps: 全部启用网站服务列表,会标注用户是否可访问。/admin: 管理后台,服务端通过本地 session 和NUXT_ADMIN_ACCOUNTS鉴权。/docs/: VitePress 构建后的三方接入文档。生成静态文档:pnpm docs:build。
完整接入说明见 docs/service-auth.md。