<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>一只 creeper 的 Blog</title><description>are you ok ?</description><link>https://blog.st.onecreeper.cn/</link><language>zh_CN</language><item><title>大折叠单手使用指南</title><link>https://blog.st.onecreeper.cn/posts/%E5%A4%A7%E5%8F%A0%E5%8D%95%E6%89%8B%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</link><guid isPermaLink="true">https://blog.st.onecreeper.cn/posts/%E5%A4%A7%E5%8F%A0%E5%8D%95%E6%89%8B%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</guid><description>vivo X Fold 5 的大屏与单手使用体验记录。</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;设备信息&lt;/h1&gt;
</content:encoded></item><item><title>2026年 RSS 不完全使用指南</title><link>https://blog.st.onecreeper.cn/posts/2026%E5%B9%B4rss%E4%B8%8D%E5%AE%8C%E5%85%A8%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</link><guid isPermaLink="true">https://blog.st.onecreeper.cn/posts/2026%E5%B9%B4rss%E4%B8%8D%E5%AE%8C%E5%85%A8%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</guid><description>用 RSS 聚合高质量内容，摆脱推荐算法的信息茧房。</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;[!信息]-
可能有用的：&lt;a href=&quot;https://bailian.console.aliyun.com/cn-beijing/?spm=5176.29619931.J_XNqYbJaEnpB5_cCJf7e6D.1.3e8110d7ZYcJlm&amp;amp;tab=model#/model-market/detail/qwen-flash&quot;&gt;大模型服务平台百炼控制台&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;背景/引言&lt;/h1&gt;
&lt;p&gt;无论是帖子还是短视频都隐藏着推荐算法，这些算法把我们困在信息茧房中，为了破除这些信息茧房，我想到了“失传已久”的RSS。&lt;/p&gt;
&lt;h1&gt;实现&lt;/h1&gt;
&lt;h2&gt;需求分析&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;能够推送高质量内容 -&amp;gt; 需要对内容进行选择&lt;/li&gt;
&lt;li&gt;能够实现内容聚合 -&amp;gt; 利用RSS很容易实现&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;问题与解决方案&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;现在几乎没有网站提供RSS内容了&lt;/li&gt;
&lt;li&gt;高质量内容难找&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;扩展需求&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;每日pixiv&lt;/li&gt;
&lt;li&gt;英语新闻阅读&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;我的方案&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;graph TD
    subgraph A [服务器]
        direction TB
        A1[Docker] --&amp;gt; A2[RSSHub]
        A1 --&amp;gt; A3[FreshRSS]
    end

    subgraph B [电脑端]
        B1[Mr RSS]
    end

    subgraph C [手机端]
        C1[FeedMe]
    end

    subgraph D [RSS源]
        D1[RSSHub源]
        D2[其他RSS源]
    end

    D1 --&amp;gt; A2
    D2 --&amp;gt; A3
    A2 --&amp;gt; A3
    
    A3 -- 双向同步 --&amp;gt; B1
    A3 -- 双向同步 --&amp;gt; C1

&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;服务说明&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;RSSHUB: 一个中间件，可以将不支持RSS的站点转出RSS，例如: bilibili,贴吧,pixiv等，具体可以去[路由列表 | RSSHub](https://docs.rsshub.app/zh/routes/)查看
FreshRSS: 一个RSSweb平台，便于我们多端同步并且支持插件
	PS: 两者皆支持arm架构设备部署，也许可以用电视盒子实现？
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;部署&lt;/h3&gt;
&lt;h4&gt;RSSHUB:&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;vim docker-compose.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;services:
  rsshub:
    image: diygod/rsshub
    restart: always
    ports:
      - &apos;1200:1200&apos;
    # 加载 .env 文件中的配置 (GitHub Token, OpenAI Key 等)
    env_file: .env
    environment:
      # --- 覆盖网络配置以匹配 Docker 内部网络 ---
      # 注意：Docker 内部通信使用容器名和内部端口，不需要使用宿主机映射的端口
      NODE_ENV: production
      CACHE_TYPE: redis
      # 内部连接 Redis 标准端口 6379
      REDIS_URL: &apos;redis://redis:6379/&apos;
      # 连接 Browserless 标准端口 3000
      PUPPETEER_WS_ENDPOINT: &apos;ws://browserless:3000&apos;
      # 连接 Real-Browser 标准端口 3000
      PUPPETEER_REAL_BROWSER_SERVICE: &apos;http://real-browser:3000&apos;
    healthcheck:
      test: [&apos;CMD&apos;, &apos;curl&apos;, &apos;-f&apos;, &apos;http://localhost:1200/healthz&apos;]
      interval: 30s
      timeout: 10s
      retries: 3
    depends_on:
      - redis
      - browserless
      - real-browser

  # 新版 RSSHub 推荐搭配，用于绕过 Cloudflare
  real-browser:
    image: ghcr.io/hyoban/puppeteer-real-browser-hono
    restart: always
    ports:
      - &apos;3002:3000&apos; # 如果你需要在宿主机调试，访问 localhost:3002
    healthcheck:
      test: [&apos;CMD&apos;, &apos;curl&apos;, &apos;-f&apos;, &apos;http://localhost:3000&apos;]
      interval: 30s
      timeout: 10s
      retries: 3

  # 标准 Puppeteer 服务
  browserless:
    image: browserless/chrome
    restart: always
    ulimits:
      core:
        hard: 0
        soft: 0
    healthcheck:
      test: [&apos;CMD&apos;, &apos;curl&apos;, &apos;-f&apos;, &apos;http://localhost:3000/pressure&apos;]
      interval: 30s
      timeout: 10s
      retries: 3

  redis:
    image: redis:alpine
    restart: always
    ports:
      - &apos;6380:6379&apos; # 宿主机 6380 -&amp;gt; 容器 6379。配合你之前的习惯
    volumes:
      - redis-data:/data
    healthcheck:
      test: [&apos;CMD&apos;, &apos;redis-cli&apos;, &apos;ping&apos;]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 5s

volumes:
  redis-data:
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;vim .env
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# =============================================================================
# 基础配置
# =============================================================================

# --- 系统环境 ---
NODE_ENV=production

# --- 缓存配置 (Redis) ---
CACHE_TYPE=redis
REDIS_URL=redis://redis:6380/

# --- Puppeteer (浏览器服务) ---
PUPPETEER_WS_ENDPOINT=ws://browserless:3002

# =============================================================================
# 未配置项 (已全部注释)
# 如需启用，请删除行首的 &quot;#&quot; 并填入对应值
# =============================================================================

# --- 网络配置 ---
# PORT=1200
# LISTEN_INADDR_ANY=1
# REQUEST_RETRY=2
# REQUEST_TIMEOUT=3000
# NO_RANDOM_UA=

# --- 跨域设置 ---
# ALLOW_ORIGIN=*

# --- 缓存设置 (默认/内存) ---
# CACHE_EXPIRE=300
# CACHE_CONTENT_EXPIRE=3600
# MEMORY_MAX=256

# --- 代理配置 (Proxy) ---
# PROXY_URI=https://rsshub.ser.onecreeper.cn
# PROXY_AUTH=
# PROXY_URL_REGEX=.*

# --- 访问控制 (Access Control) ---
ACCESS_KEY=250250250c_RSSHUB

# --- 日志配置 ---
# DEBUG_INFO=true
# LOGGER_LEVEL=info
# SENTRY=

# --- 其他应用配置 ---
# DISALLOW_ROBOT=true
# ENABLE_CLUSTER=false
# TITLE_LENGTH_LIMIT=150
# OPENAI_TEMPERATURE=0.2

# --- OpenAI (ChatGPT) ---
# OPENAI_API_KEY=
# OPENAI_API_ENDPOINT=
# OPENAI_MODEL=


# =============================================================================
# 路由特定配置可以参考官方 [配置 | RSSHub](https://docs.rsshub.app/zh/deploy/config)
# =============================================================================

&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;FreshRSS&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;mkdir data freshrss_data freshrss_extensions
vim docker-compose.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;version: &apos;3.8&apos;

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    restart: unless-stopped
    ports:
      - &quot;1244:80&quot;
    # 左边是你想暴露的端口
    environment:
      - TZ=Asia/Shanghai
      - CRON_MIN=4,34
      - FRESHRSS_ENV=production
      # 核心配置：设置您的外部访问域名
      - BASE_URL=https://rss.ser.onecreeper.cn
      # 核心配置：信任反向代理。
      # 必须允许私有网段，以便 FreshRSS 正确读取 X-Forwarded-Proto: https 头
      - TRUSTED_PROXY=172.16.0.0/12 192.168.0.0/16 10.0.0.0/8 127.0.0.1
    volumes:
      # 将 FreshRSS 的数据映射到本地的 ./data/freshrss 目录
      - ./data/freshrss:/var/www/FreshRSS/data
      # 将 FreshRSS 的扩展映射到本地的 ./data/freshrss_extensions 目录
      - ./data/freshrss_extensions:/var/www/FreshRSS/extensions
    depends_on:
      - db

  db:
    image: postgres:15-alpine
    container_name: freshrss-db
    restart: unless-stopped
    volumes:
      # 将 PostgreSQL 的数据映射到本地的 ./data/db 目录
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=freshrss
      - POSTGRES_USER=freshrss
      - POSTGRES_PASSWORD=freshrss_password # 建议修改此密码
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;RSS源&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;pixiv可通过RSShub实现，需要配置refresh_token&lt;/li&gt;
&lt;li&gt;每日英语新闻学习 ，利用现成的网站，news in levels ，每日按照分级提供新闻 ，地址 https://www.newsinlevels.com/feed&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;效果&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./assets/864406f643f10ae38f3d9c9aa68fea1a_MD5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Wallos 个人订阅管理工具</title><link>https://blog.st.onecreeper.cn/posts/wallos%E4%B8%AA%E4%BA%BA%E8%AE%A2%E9%98%85%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/</link><guid isPermaLink="true">https://blog.st.onecreeper.cn/posts/wallos%E4%B8%AA%E4%BA%BA%E8%AE%A2%E9%98%85%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7/</guid><description>使用开源自托管工具管理网盘、域名和云服务订阅。</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;随着订阅的服务越来越多，我总是会在想不到的时候收到“续费通知”，网盘会员，手机号，域名，云服务器。我曾经购买过小厂的云服务器，快过期的时候给我发送了续费邮件，但是被归到垃圾箱分类了。云服务器过期，数据也没了。我发觉有一个工具来管理自己的订阅是很重要的，另外我也不喜欢绑卡自动续费。&lt;/p&gt;
&lt;h1&gt;简单介绍&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Wallos&lt;/strong&gt;是一款开源的个人订阅管理工具，&lt;a href=&quot;https://wallosapp.com/&quot;&gt;官网&lt;/a&gt;，&lt;a href=&quot;https://github.com/ellite/Wallos&quot;&gt;github&lt;/a&gt;。对了，官方提供了一个&lt;a href=&quot;https://demo.wallosapp.com/&quot;&gt;体验demo&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wallos is a powerful, open-source, and self-hostable web application designed to empower you in managing your finances with ease. Say goodbye to complicated spreadsheets and expensive financial software – Wallos simplifies the process of tracking expenses and helps you gain better control over your financial life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;译文：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wallos 是一款强大、开源且自托管的网络应用程序，旨在帮助您轻松管理财务。告别复杂的电子表格和昂贵的财务软件——Wallos 简化了记录开支的过程，帮助您更好地掌控自己的财务生活。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;他不仅可以出色的满足我们管理订阅的需求，中文支持完善，并且提供了&lt;a href=&quot;https://api.wallosapp.com/&quot;&gt;api接口&lt;/a&gt;，意味着我们也可以自己开发(vibe)一些工具来更好的使用。我就在想做一块可以看日历，任务清单，账单，订阅服务的墨水屏。&lt;/p&gt;
&lt;p&gt;网页截图：
&lt;img src=&quot;./assets/91b5d20e3b69001cf7b118ce8ecc5355_MD5.jpeg&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;./assets/cfdde453f4105276ab47090f4367b393_MD5.jpeg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;./assets/c65e2727978c9e704ae274f81efd52e7_MD5.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;因为我还没怎么用，订阅的东西没用完整添加。&lt;/p&gt;
&lt;h1&gt;安装&lt;/h1&gt;
&lt;h2&gt;安装要求：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;直接运行：需要你能够运行nginx网页服务器和php8.3 (摘自github)&lt;/li&gt;
&lt;li&gt;docker容器化部署(推荐)：x86电脑/服务器，arm64(仅测试了Apple M4 电视盒子能否支持无法保证)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;docker compose部署&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;mkdir wallos #创建一个文件夹用于存储wallos数据
cd wallos
vim docker-compose.yml #创建并编辑docker-compose.yml文件
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入vim后键入&lt;code&gt;i&lt;/code&gt;，然后粘贴下面的内容，&lt;code&gt;8282&lt;/code&gt;是你想暴露的端口。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;services:
  wallos:  # 定义一个名为 &quot;wallos&quot; 的服务
    container_name: wallos  # 指定容器运行时的名称为 &quot;wallos&quot;，便于识别和管理
    image: bellamy/wallos:latest  # 使用的镜像名称及标签：从 Docker Hub 拉取 bellamy/wallos 的最新版本
    ports:
      - &quot;8282:80/tcp&quot;  # 端口映射：将宿主机的 8282 端口映射到容器的 80 端口（TCP协议），用于访问 Web 界面
    environment:
      TZ: &quot;Asia/Shanghai&quot;  # 设置容器内的时区环境变量为上海时区，确保时间显示正确
    # Volumes 用于在容器升级或重启时持久化保存数据
    volumes:
      - &apos;./db:/var/www/html/db&apos;
      - &apos;./logos:/var/www/html/images/uploads/logos&apos;
    restart: unless-stopped  # 容器重启策略：除非手动停止，否则在 Docker 启动时自动运行该容器
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按下&lt;code&gt;Esc&lt;/code&gt;,键入&lt;code&gt;:wq&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;执行。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo docker compose up -d   #如果权限组配置了可以不加sudo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;访问 https://serverip:8282&lt;/p&gt;
&lt;h1&gt;使用&lt;/h1&gt;
&lt;p&gt;大多数基本操作我就不介绍了，很容易摸清楚，官方建议注册一个&lt;a href=&quot;https://fixer.io/#pricing_plan&quot;&gt;Fixer API&lt;/a&gt;用于获取汇率并自动计算，不过我不需要就没弄了而且注册还有填一堆信息。&lt;/p&gt;
&lt;p&gt;这里讲下我的邮箱设置，我之前用网易邮箱做wordpress博客的通知邮箱，后来被网易停用了说我发广告，所有我找了个别的方案: &lt;a href=&quot;https://resend.com/&quot;&gt;Resend&lt;/a&gt;。可以参考&lt;a href=&quot;https://www.bilibili.com/video/BV1JS411A7se/&quot;&gt;这个视频&lt;/a&gt;配置下，这样就有了自己的私人邮箱，然后填入 wallos &lt;img src=&quot;./assets/873bfd272de4c77d63b5c75dd213a71e_MD5.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smtp.resend.com
587
resend
you_resend_key
SubscriptionReminder@you_email.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样你就可以收到邮件提醒了。&lt;/p&gt;
</content:encoded></item><item><title>简易密码生成器</title><link>https://blog.st.onecreeper.cn/posts/%E7%AE%80%E6%98%93%E5%AF%86%E7%A0%81%E7%94%9F%E6%88%90%E5%99%A8/</link><guid isPermaLink="true">https://blog.st.onecreeper.cn/posts/%E7%AE%80%E6%98%93%E5%AF%86%E7%A0%81%E7%94%9F%E6%88%90%E5%99%A8/</guid><description>使用基座密码和域名摘要生成易于推导的专属密码。</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;项目起源&lt;/h1&gt;
&lt;p&gt;设置密码很多时候都是一个难题，简单密码不安全，困难密码难记。虽然困难密码可以使用bitwarden之类的密码管理软件存储，但是偶尔无法使用这些工具就会很麻烦。于是在我和gemini2.5pro，glm4.6的共同努力下，完成了这个密码生成工具。&lt;/p&gt;
&lt;h1&gt;项目特色&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;较高安全性&lt;/strong&gt;：我虽然没有系统性的学习密码之类的知识，但是我的生成器基本是使用的现有的一些算法（散列值）。每个密码的形式都是 “基座密码” + “网站域名 + 盐 对应的md5值的特定几位”
&lt;strong&gt;易于推导&lt;/strong&gt;：简单的算法，只要你能找到一个在线的md5计算网站就能手动推导自己的密码。
&lt;strong&gt;相同网站相同密码&lt;/strong&gt;：如果忘记直接重新生成就行，结果始终相等。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/958b8588d96b3b0f27d0d2f897e598cd_MD5.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;使用方法&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/onecreeper/EasyPassGen&quot;&gt;EasyPassGen - 智能密码生成器 - github&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载 windows发布包&lt;/li&gt;
&lt;li&gt;解压后双击 &lt;code&gt;EasyPassGen.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;按提示输入域名生成密码&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;效果&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;./assets/5c8da18496bafa6e0a9e4a72cb367227_MD5.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>LobeChat + Vercel + Auth0 + 阿里云 OSS 部署教程</title><link>https://blog.st.onecreeper.cn/posts/lobechat--vercel--auth0--%E9%98%BF%E9%87%8C%E4%BA%91oss-%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B/</link><guid isPermaLink="true">https://blog.st.onecreeper.cn/posts/lobechat--vercel--auth0--%E9%98%BF%E9%87%8C%E4%BA%91oss-%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B/</guid><description>使用 Vercel、Auth0 和阿里云 OSS 部署私人 LobeChat。</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;LobeChat + Vercel + Auth0 + 阿里云OSS 部署教程&lt;/h1&gt;
&lt;h2&gt;第 1 步：一键部署 LobeChat&lt;/h2&gt;
&lt;p&gt;首先，我们需要将 LobeChat 的官方项目代码复制一份到自己的 GitHub 账号下，然后再通过 Vercel 进行部署。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fork 项目&lt;/strong&gt;：
访问 &lt;a href=&quot;https://github.com/lobehub/lobe-chat&quot;&gt;LobeChat 的 GitHub 仓库&lt;/a&gt;，点击页面右上角的 Fork 按钮，将项目复刻到你自己的 GitHub 账户中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;在 Vercel 中创建项目&lt;/strong&gt;：
前往 Vercel 控制台，点击 Create a New Project。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;导入 GitHub 仓库&lt;/strong&gt;：
选择 Import Git Repository，并选择你刚刚 Fork 的 lobe-chat 仓库进行导入。Vercel 会自动识别项目类型并为你配置好大部分部署选项。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;直接部署&lt;/strong&gt;：
此时先不要急着修改环境变量，直接点击 Deploy 按钮。Vercel 会开始构建和部署你的应用。这个过程可能需要一些时间（大约 10-20 分钟），请耐心等待。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;部署完成后，你将拥有一个可以访问的 LobeChat 站点，你可以在 Vercel 看到它的域名，这个后面要用。但这只是一个基础版本，接下来我们将为它添加数据库和用户系统。&lt;/p&gt;
&lt;h2&gt;第 2 步：配置数据库 (Postgres)&lt;/h2&gt;
&lt;p&gt;为了让 LobeChat 能够保存用户的对话历史和设置，我们需要一个数据库。Vercel 自带的 Storage 功能可以让我们一键创建一个免费的 Postgres 数据库。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;创建数据库&lt;/strong&gt;：
回到 Vercel 主页，切换到 Storage 标签页，点击 Create a new Database 并选择 Neon。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;连接项目&lt;/strong&gt;：
选择你的 lobe-chat 项目，并为数据库连接起一个前缀，随便设置就行，然后点击 Connect。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配置环境变量&lt;/strong&gt;：
连接成功后，Vercel 会自动在你的项目中添加 POSTGRES_* 相关的环境变量。但 LobeChat 使用的是通用的 DATABASE_URL 变量，所以我们需要手动配置一下。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;进入你的项目设置 Settings -&amp;gt; Environment Variables。&lt;/li&gt;
&lt;li&gt;复制 Vercel 自动生成的 POSTGRES_URL_NONPOOLING 的值。&lt;/li&gt;
&lt;li&gt;添加以下4个新的环境变量：&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DATABASE_URL&lt;/td&gt;
&lt;td&gt;粘贴你复制的 POSTGRES_URL_NONPOOLING 值&lt;/td&gt;
&lt;td&gt;用于连接数据库的服务端链接&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEXT_PUBLIC_SERVICE_MODE&lt;/td&gt;
&lt;td&gt;server&lt;/td&gt;
&lt;td&gt;开启服务端模式，以便使用数据库功能&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KEY_VAULTS_SECRET&lt;/td&gt;
&lt;td&gt;运行 openssl rand -base64 32 生成&lt;/td&gt;
&lt;td&gt;一个 32 位的随机密钥，用于加密敏感数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;APP_URL&lt;/td&gt;
&lt;td&gt;https://你的应用地址&lt;/td&gt;
&lt;td&gt;应用访问地址&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;：KEY_VAULTS_SECRET 是一个用于加密用户 API Key 等敏感信息的密钥。你可以在本地终端（如 PowerShell, Terminal）中运行 openssl rand -base64 32 命令来生成一个足够安全的随机字符串。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;第 3 步：配置用户认证 (Auth0)&lt;/h2&gt;
&lt;p&gt;为了实现多用户登录和隔离，我们需要接入一个身份验证服务。这里我们选用 Auth0。&lt;/p&gt;
&lt;p&gt;官方文档已经提供了非常详细的步骤，请直接参考官方文档中关于配置 Auth0 身份验证服务的说明。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键提示&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按照官方文档一步步操作即可，流程非常清晰。&lt;a href=&quot;https://lobehub.com/zh/docs/self-hosting/advanced/auth/next-auth/auth0&quot;&gt;在 LobeChat 中配置 Auth0 身份验证服务 - 详细步骤和环... · LobeHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;在 Auth0 设置中，请不要开启注册功能。作为私人应用，我们通常是手动在 Auth0 后台为受信任的用户创建账号，以确保服务的私密性和安全性。&lt;/li&gt;
&lt;li&gt;完成 Auth0 配置后，别忘了将相关的环境变量（如 AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRET, AUTH_SECRET 等）添加到你的 Vercel 项目中。&lt;/li&gt;
&lt;li&gt;同时，添加一个关键的环境变量来启用 NextAuth：&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NEXT_PUBLIC_ENABLE_NEXT_AUTH&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;在 Vercel 部署中显式开启 NextAuth 认证&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;此外，还需要配置以下认证相关的环境变量：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NEXT_AUTH_SECRET&lt;/td&gt;
&lt;td&gt;运行 openssl rand -base64 32 生成&lt;/td&gt;
&lt;td&gt;NextAuth 的加密密钥&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEXT_AUTH_SSO_PROVIDERS&lt;/td&gt;
&lt;td&gt;auth0&lt;/td&gt;
&lt;td&gt;指定单点登录提供商&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUTH_AUTH0_ID&lt;/td&gt;
&lt;td&gt;你的Auth0客户端ID&lt;/td&gt;
&lt;td&gt;Auth0 应用的客户端标识符&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUTH_AUTH0_SECRET&lt;/td&gt;
&lt;td&gt;你的Auth0客户端密钥&lt;/td&gt;
&lt;td&gt;Auth0 应用的客户端密钥&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUTH_AUTH0_ISSUER&lt;/td&gt;
&lt;td&gt;你的Auth0发行者URL&lt;/td&gt;
&lt;td&gt;Auth0 颁发者地址&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEXTAUTH_URL&lt;/td&gt;
&lt;td&gt;你的应用地址/api/auth&lt;/td&gt;
&lt;td&gt;NextAuth 的回调URL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;第 4 步：配置对象存储 (阿里云 OSS)&lt;/h2&gt;
&lt;p&gt;如果希望在对话中使用文件上传功能（例如发送图片），你需要配置一个对象存储服务。这里我们以阿里云 OSS 为例，它价格实惠，标准用量下一年仅需⑨块钱。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/e8b7a10b708f387d74a78701f3840e5a_MD5.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4.1 创建 OSS Bucket&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录 &lt;a href=&quot;https://oss.console.aliyun.com/bucket&quot;&gt;OSS管理控制台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;点击&quot;创建 Bucket&quot;按钮&lt;/li&gt;
&lt;li&gt;填写 Bucket 名称（需全局唯一，请认真取名）&lt;/li&gt;
&lt;li&gt;选择地域（建议选择距离你较近的区域以获得更快的访问速度）&lt;/li&gt;
&lt;li&gt;其他选项暂时保持默认，点击&quot;确定&quot;创建&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;4.2 配置 Bucket 权限&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入创建好的 Bucket，找到&quot;权限管理&quot; -&amp;gt; &quot;读写权限&quot;&lt;/li&gt;
&lt;li&gt;将权限修改为&quot;公共读&quot;（这是为了让应用可以公开访问上传的文件）&lt;/li&gt;
&lt;li&gt;确认修改&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./assets/04af0559a29346aaa22c1044f8d9312c_MD5.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4.3 配置跨域规则&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;在 Bucket 设置中，找到&quot;数据安全&quot; -&amp;gt; &quot;跨域设置&quot;&lt;/li&gt;
&lt;li&gt;点击&quot;设置&quot;按钮，然后点击&quot;创建规则&quot;&lt;/li&gt;
&lt;li&gt;按以下配置填写：
&lt;ul&gt;
&lt;li&gt;来源(Origin)：填写你 Vercel 应用的域名（如 &lt;code&gt;https://your-app.vercel.app&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;允许 Methods(CORS)：GET, POST, PUT, DELETE, HEAD&lt;/li&gt;
&lt;li&gt;允许 Headers：*&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;点击&quot;确定&quot;保存规则&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4.4 创建 RAM 子用户&lt;/h3&gt;
&lt;p&gt;为了安全起见，我们不直接使用主账号的 AccessKey。而是创建一个只拥有 OSS 操作权限的子用户。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前往 &lt;a href=&quot;https://ram.console.aliyun.com/users&quot;&gt;访问控制 RAM 控制台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;点击&quot;创建用户&quot;按钮&lt;/li&gt;
&lt;li&gt;填写用户名（可自定义）&lt;/li&gt;
&lt;li&gt;点击&quot;确定&quot;创建用户&lt;/li&gt;
&lt;li&gt;创建完成后，务必保存好生成的 AccessKey ID 和 AccessKey Secret，这个凭证只会显示一次&lt;/li&gt;
&lt;li&gt;返回用户列表，找到刚创建的用户，点击&quot;添加权限&quot;&lt;/li&gt;
&lt;li&gt;在&quot;系统策略&quot;中搜索并选择 &lt;code&gt;AliyunOSSFullAccess&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击&quot;确定&quot;完成授权&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;4.5 获取 OSS 连接信息&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入 &lt;a href=&quot;https://oss.console.aliyun.com/bucket&quot;&gt;OSS管理控制台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;找到你创建的 Bucket，点击进入&lt;/li&gt;
&lt;li&gt;在&quot;概览&quot;页面，记录以下两个信息：
&lt;ul&gt;
&lt;li&gt;Endpoint（地域节点）中的外网访问地址（如 &lt;code&gt;https://oss-cn-beijing.aliyuncs.com&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;Bucket 域名（如 &lt;code&gt;https://your-bucket-name.oss-cn-beijing.aliyuncs.com&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;4.6 在 Vercel 中添加 OSS 环境变量&lt;/h3&gt;
&lt;p&gt;回到 Vercel 项目的环境变量设置页面，添加以下变量：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Example &amp;amp; Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S3_ACCESS_KEY_ID&lt;/td&gt;
&lt;td&gt;你的 RAM 用户 AccessKey ID&lt;/td&gt;
&lt;td&gt;LTAI5t...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3_SECRET_ACCESS_KEY&lt;/td&gt;
&lt;td&gt;你的 RAM 用户 AccessKey Secret&lt;/td&gt;
&lt;td&gt;your-secret-key...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3_ENDPOINT&lt;/td&gt;
&lt;td&gt;你的 Bucket 外网访问节点&lt;/td&gt;
&lt;td&gt;https://oss-cn-beijing.aliyuncs.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3_BUCKET&lt;/td&gt;
&lt;td&gt;你的 Bucket 名称&lt;/td&gt;
&lt;td&gt;your-unique-bucket-name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3_PUBLIC_DOMAIN&lt;/td&gt;
&lt;td&gt;你的 Bucket 访问域名&lt;/td&gt;
&lt;td&gt;https://your-unique-bucket-name.oss-cn-beijing.aliyuncs.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;示例配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;S3_ACCESS_KEY_ID=LT123123123123
S3_SECRET_ACCESS_KEY=y524523452345234cG976h822346346gB
S3_ENDPOINT=https://oss-cn-beijing.aliyuncs.com
S3_BUCKET=liujianmeisima
S3_PUBLIC_DOMAIN=https://zhaojiesima.oss-cn-beijing.aliyuncs.com
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;安全警告&lt;/strong&gt;：你的 AccessKey 和对象存储 Bucket 信息是高度敏感的资产。切勿泄露给任何人！有恶意用户会扫描网络来刷取他人的 OSS 流量，可能导致高额账单。强烈建议你的私人 LobeChat 应用不要公开给不受信任的人使用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;第 5 步：配置自定义域名&lt;/h2&gt;
&lt;p&gt;如果你希望使用自己的域名访问 LobeChat，需要进行以下配置：&lt;/p&gt;
&lt;h3&gt;5.1 在 Vercel 中配置自定义域名&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;在 Vercel 项目控制台，进入 Settings -&amp;gt; Domains&lt;/li&gt;
&lt;li&gt;点击 Add，输入你的自定义域名（如 chat.yourdomain.com）&lt;/li&gt;
&lt;li&gt;根据提示配置 DNS 记录&lt;/li&gt;
&lt;li&gt;等待 SSL 证书自动颁发（通常需要几分钟）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;5.2 更新 Auth0 配置&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录 Auth0 控制台，进入你的应用设置&lt;/li&gt;
&lt;li&gt;找到 &quot;Allowed Callback URLs&quot; 字段，添加你的自定义域名回调地址：&lt;pre&gt;&lt;code&gt;https://你的自定义域名/api/auth/callback/auth0
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;保存更改&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;5.3 更新阿里云 OSS 跨域配置&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录阿里云 OSS 控制台，进入你的 Bucket&lt;/li&gt;
&lt;li&gt;找到 &quot;数据安全 -&amp;gt; 跨域设置&quot;&lt;/li&gt;
&lt;li&gt;修改或添加跨域规则，将&quot;来源&quot;更新为你的自定义域名：&lt;pre&gt;&lt;code&gt;https://你的自定义域名
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;保存配置&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;5.4 更新环境变量&lt;/h3&gt;
&lt;p&gt;在 Vercel 项目设置中，更新以下环境变量：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;原值&lt;/th&gt;
&lt;th&gt;新值&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;APP_URL&lt;/td&gt;
&lt;td&gt;Vercel 默认域名&lt;/td&gt;
&lt;td&gt;https://你的自定义域名&lt;/td&gt;
&lt;td&gt;应用访问地址&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEXTAUTH_URL&lt;/td&gt;
&lt;td&gt;Vercel 默认域名/api/auth&lt;/td&gt;
&lt;td&gt;https://你的自定义域名/api/auth&lt;/td&gt;
&lt;td&gt;NextAuth 的回调URL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;第 6 步：大功告成&lt;/h2&gt;
&lt;p&gt;当你完成以上所有环境变量的配置后，Vercel 会自动进行最后一次重新部署。等待部署成功后，访问你的自定义域名，你将看到 Auth0 的登录页面。登录后，即可开始享受你功能齐全、完全私有的 LobeChat 实例了！&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;环境变量汇总&lt;/h2&gt;
&lt;h3&gt;数据库环境变量&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DATABASE_URL&lt;/td&gt;
&lt;td&gt;粘贴你复制的 POSTGRES_URL_NONPOOLING 值&lt;/td&gt;
&lt;td&gt;用于连接数据库的服务端链接&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEXT_PUBLIC_SERVICE_MODE&lt;/td&gt;
&lt;td&gt;server&lt;/td&gt;
&lt;td&gt;开启服务端模式，以便使用数据库功能&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KEY_VAULTS_SECRET&lt;/td&gt;
&lt;td&gt;运行 openssl rand -base64 32 生成&lt;/td&gt;
&lt;td&gt;一个 32 位的随机密钥，用于加密敏感数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;APP_URL&lt;/td&gt;
&lt;td&gt;https://你的自定义域名&lt;/td&gt;
&lt;td&gt;应用访问地址&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre&gt;&lt;code&gt;DATABASE_URL=粘贴你复制的POSTGRES_URL_NONPOOLING值
NEXT_PUBLIC_SERVICE_MODE=server
KEY_VAULTS_SECRET=运行openssl rand -base64 32生成
APP_URL=https://你的自定义域名
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;认证环境变量&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NEXT_PUBLIC_ENABLE_NEXT_AUTH&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;在 Vercel 部署中显式开启 NextAuth 认证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEXT_AUTH_SECRET&lt;/td&gt;
&lt;td&gt;生成的随机密钥&lt;/td&gt;
&lt;td&gt;NextAuth 的加密密钥&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEXT_AUTH_SSO_PROVIDERS&lt;/td&gt;
&lt;td&gt;auth0&lt;/td&gt;
&lt;td&gt;指定单点登录提供商&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUTH_AUTH0_ID&lt;/td&gt;
&lt;td&gt;你的Auth0客户端ID&lt;/td&gt;
&lt;td&gt;Auth0 应用的客户端标识符&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUTH_AUTH0_SECRET&lt;/td&gt;
&lt;td&gt;你的Auth0客户端密钥&lt;/td&gt;
&lt;td&gt;Auth0 应用的客户端密钥&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUTH_AUTH0_ISSUER&lt;/td&gt;
&lt;td&gt;你的Auth0发行者URL&lt;/td&gt;
&lt;td&gt;Auth0 颁发者地址&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NEXTAUTH_URL&lt;/td&gt;
&lt;td&gt;https://你的自定义域名/api/auth&lt;/td&gt;
&lt;td&gt;NextAuth 的回调URL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre&gt;&lt;code&gt;NEXT_PUBLIC_ENABLE_NEXT_AUTH=1
NEXT_AUTH_SECRET=生成的随机密钥
NEXT_AUTH_SSO_PROVIDERS=auth0
AUTH_AUTH0_ID=你的Auth0客户端ID
AUTH_AUTH0_SECRET=你的Auth0客户端密钥
AUTH_AUTH0_ISSUER=你的Auth0发行者URL
NEXTAUTH_URL=https://你的自定义域名/api/auth
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;对象存储环境变量&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Example &amp;amp; Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S3_ACCESS_KEY_ID&lt;/td&gt;
&lt;td&gt;你的 RAM 用户 AccessKey ID&lt;/td&gt;
&lt;td&gt;LTAI5t...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3_SECRET_ACCESS_KEY&lt;/td&gt;
&lt;td&gt;你的 RAM 用户 AccessKey Secret&lt;/td&gt;
&lt;td&gt;your-secret-key...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3_ENDPOINT&lt;/td&gt;
&lt;td&gt;你的 Bucket 外网访问节点&lt;/td&gt;
&lt;td&gt;https://oss-cn-beijing.aliyuncs.com&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3_BUCKET&lt;/td&gt;
&lt;td&gt;你的 Bucket 名称&lt;/td&gt;
&lt;td&gt;your-unique-bucket-name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3_PUBLIC_DOMAIN&lt;/td&gt;
&lt;td&gt;你的 Bucket 访问域名&lt;/td&gt;
&lt;td&gt;https://your-unique-bucket-name.oss-cn-beijing.aliyuncs.com&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre&gt;&lt;code&gt;S3_ACCESS_KEY_ID=你的RAM用户AccessKey ID
S3_SECRET_ACCESS_KEY=你的RAM用户AccessKey Secret
S3_ENDPOINT=你的Bucket外网访问节点
S3_BUCKET=你的Bucket名称
S3_PUBLIC_DOMAIN=你的Bucket访问域名
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h2&gt;后记&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;折腾半天都不能用，发现是NEXT_PUBLIC_ENABLE_NEXT_AUTH没有设置，另外lobechat的环境变量前几天才更新，建议同时参考官方网站进行部署。&lt;/li&gt;
&lt;li&gt;云函数有执行时间的限制，建议打开客户端请求模式。&lt;/li&gt;
&lt;li&gt;auth0关闭注册：&lt;a href=&quot;https://stackoverflow.com/questions/70863967/how-to-disable-enable-sign-ups-for-a-specific-application-with-auth0&quot;&gt;如何禁用/启用特定应用程序的注册功能？ - Stack Overflow --- How to disable/enable Sign Ups for a specific application with Auth0? - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;自动更新不建议开，不然突然炸了会很难受的。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;参考资料：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://lobehub.com/zh/docs/self-hosting/server-database/vercel&quot;&gt;在 Vercel 上部署 LobeChat 的服务端数据库版本 · Lo... · LobeHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pzweuj.github.io/posts/LobeChat&quot;&gt;Vercel部署LobeChat数据库版简略流程 | 生物信息文件夹&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/29191032890&quot;&gt;LobeChat私有化部署教程（带服务端数据库） - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>macOS 开机自动挂载 NAS 脚本分享</title><link>https://blog.st.onecreeper.cn/posts/macbook%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BDnas%E8%84%9A%E6%9C%AC/</link><guid isPermaLink="true">https://blog.st.onecreeper.cn/posts/macbook%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BDnas%E8%84%9A%E6%9C%AC/</guid><description>使用脚本让 NAS 在 MacBook 开机后自动挂载。</description><pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;项目来源&lt;/h1&gt;
&lt;p&gt;前段时间购买了MacBook Air，发现想要挂载NAS需要手动挂载，不能自动挂载。与AI对话后，编写了一个自动挂载脚本，现分享出来以帮助有类似需求的用户。&lt;/p&gt;
&lt;h2&gt;1. 准备工作&lt;/h2&gt;
&lt;h3&gt;1.1 创建脚本文件&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在您的主目录下创建脚本文件夹：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p ~/Tools/Scripts
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创建脚本文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano ~/Tools/Scripts/mount_nas.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将脚本代码复制粘贴到文件中，根据自己的需求修改配置，然后保存并退出。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash

exec &amp;amp;&amp;gt; &quot;${HOME}/Tools/Scripts/mount_nas_log.txt&quot; 

# ==============================================================================
# --- 开机自动挂载脚本 (在用户主目录创建挂载点) --- 
# ==============================================================================

# --- 配置区 --- 
# 格式: &quot;昵称;服务器IP/路径;用户名&quot; 
CONFIGS=( 
&quot;nas;192.168.10.1/onecreeper_nas;username&quot; 
) 

# --- 准备工作 --- 
# 定义挂载点基准目录 (在用户主目录下) 
BASE_MOUNT_DIR=&quot;${HOME}/Mounts&quot; 
echo &quot;将在 ${BASE_MOUNT_DIR} 中创建挂载点...&quot; 
mkdir -p &quot;${BASE_MOUNT_DIR}&quot; # -p 选项确保目录不存在时才创建，存在亦不报错

# --- 网络检查 --- 
UNIQUE_SERVERS=$(for config in &quot;${CONFIGS[@]}&quot;; do echo &quot;$config&quot; | cut -d&apos;;&apos; -f2 | cut -d&apos;/&apos; -f1; done | sort -u) 
declare -a REACHABLE_SERVERS=() 
echo &quot;正在检查所有 NAS/服务器是否在线...&quot; 

for SERVER_IP in $UNIQUE_SERVERS; do
    echo -n &quot;正在检查服务器: $SERVER_IP... &quot; 
    if ping -c 2 -W 1 $SERVER_IP &amp;amp;&amp;gt; /dev/null; then
        echo &quot;✅ 在线&quot; 
        REACHABLE_SERVERS+=(&quot;$SERVER_IP&quot;) 
    else
        echo &quot;❌ 超时&quot; 
    fi
done

echo &quot;服务器在线状态检查完毕。&quot; 

# --- 挂载逻辑 --- 
for config in &quot;${CONFIGS[@]}&quot;; do
    IFS=&apos;;&apos; read -r NICKNAME FULL_PATH USERNAME &amp;lt;&amp;lt;&amp;lt; &quot;$config&quot; 
    SERVER_IP=$(echo $FULL_PATH | cut -d&apos;/&apos; -f1) 
    # 使用用户主目录下的挂载点
    MOUNT_POINT=&quot;${BASE_MOUNT_DIR}/${NICKNAME}&quot; 
    
    IS_SERVER_REACHABLE=false
    for item in &quot;${REACHABLE_SERVERS[@]}&quot;; do [[ &quot;$item&quot; == &quot;$SERVER_IP&quot; ]] &amp;amp;&amp;amp; IS_SERVER_REACHABLE=true &amp;amp;&amp;amp; break; done
    
    if ! $IS_SERVER_REACHABLE; then
        echo &quot;⏭️ 跳过挂载 &apos;$NICKNAME&apos; (服务器不可达)&quot; 
        continue
    fi
    
    echo &quot;----------------------------------------&quot; 
    echo &quot;正在处理共享: $NICKNAME&quot; 
    
    # 自动创建挂载点文件夹
    mkdir -p &quot;${MOUNT_POINT}&quot; 
    
    if mount | grep -q &quot; on ${MOUNT_POINT} &quot;; then
        echo &quot;状态：已挂载。&quot; 
        continue
    fi
    
    NAS_PASSWORD=$(security find-internet-password -s &quot;$SERVER_IP&quot; -a &quot;$USERNAME&quot; -w) 
    if [ -z &quot;$NAS_PASSWORD&quot; ]; then
        echo &quot;❌ 错误：未能在钥匙串中找到 &apos;$USERNAME@$SERVER_IP&apos; 的密码。&quot; 
        continue
    fi
    
    echo &quot;正在尝试挂载到 ${MOUNT_POINT}&quot; 
    
    if [[ &quot;$USERNAME&quot; == *&quot;@&quot;* ]]; then
        # 对用户名进行URL编码
        ENCODED_USERNAME=$(echo &quot;$USERNAME&quot; | sed &apos;s/@/%40/g&apos;) 
        echo &quot;提示: 检测到包含&apos;@&apos;的用户名，已自动编码为: ${ENCODED_USERNAME}&quot; 
        mount_smbfs -N &quot;//${ENCODED_USERNAME}:${NAS_PASSWORD}@${FULL_PATH}&quot; &quot;${MOUNT_POINT}&quot; 
    else
        # 对于不含&apos;@&apos;的标准用户名，使用原始命令
        mount_smbfs -N &quot;//${USERNAME}:${NAS_PASSWORD}@${FULL_PATH}&quot; &quot;${MOUNT_POINT}&quot; 
    fi
    
    if [ $? -eq 0 ]; then
        echo &quot;✅ 成功挂载。&quot; 
    else
        echo &quot;❌ 挂载失败。请检查网络、服务器状态、密码，或Windows端的共享/防火墙设置。&quot; 
    fi
done

echo &quot;----------------------------------------&quot; 
echo &quot;所有挂载任务已执行完毕。&quot; 
exit 0
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;1.2 设置脚本权限&lt;/h3&gt;
&lt;p&gt;给脚本添加执行权限：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x ~/Tools/Scripts/mount_nas.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;1.3 配置NAS密码&lt;/h3&gt;
&lt;p&gt;脚本使用macOS的钥匙串来安全存储NAS密码。您需要为每个NAS服务器和用户名组合添加密码到钥匙串：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开“访达”&lt;/li&gt;
&lt;li&gt;左上角-前往-连接服务器&lt;/li&gt;
&lt;li&gt;输入你的nas地址账号密码，勾选记住密码之类的提示就会自动保存到密钥串中了&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;2. 测试脚本&lt;/h2&gt;
&lt;p&gt;在设置自动运行之前，先手动测试脚本是否正常工作：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~/Tools/Scripts/mount_nas.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查输出和日志文件 &lt;code&gt;~/Tools/Scripts/mount_nas_log.txt&lt;/code&gt;，确认所有NAS共享文件夹都已成功挂载到 &lt;code&gt;~/Mounts&lt;/code&gt; 目录下。&lt;/p&gt;
&lt;h2&gt;3. 设置开机自动运行&lt;/h2&gt;
&lt;h3&gt;使用自动操作将脚本变为程序&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;打开自动操作&lt;/li&gt;
&lt;li&gt;新建文稿 &amp;gt; 应用程序&lt;/li&gt;
&lt;li&gt;搜索&quot;运行shell脚本&quot;&lt;/li&gt;
&lt;li&gt;脚本填入 &lt;code&gt;Bash /Tools/Scripts/mount_nas.sh&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;使用登录项（用户级）&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;打开&quot;系统偏好设置&quot; &amp;gt; &quot;用户与群组&quot;&lt;/li&gt;
&lt;li&gt;选择您的用户账户，点击&quot;登录项&quot;选项卡&lt;/li&gt;
&lt;li&gt;点击左下角的锁图标并输入密码进行解锁&lt;/li&gt;
&lt;li&gt;点击&quot;+&quot;按钮添加登录项&lt;/li&gt;
&lt;li&gt;在文件选择对话框中，选择您刚刚创建的自动操作程序&lt;/li&gt;
&lt;li&gt;确保新添加的登录项旁边的复选框已选中&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此方法会在您登录用户账户时自动运行脚本。&lt;/p&gt;
&lt;h2&gt;4. 验证自动挂载&lt;/h2&gt;
&lt;p&gt;重启您的MacBook，登录后检查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开Finder，查看侧边栏是否出现挂载的NAS共享文件夹&lt;/li&gt;
&lt;li&gt;检查&lt;code&gt;~/Mounts&lt;/code&gt;目录，确认所有NAS共享文件夹都已挂载&lt;/li&gt;
&lt;li&gt;查看日志文件&lt;code&gt;~/Tools/Scripts/mount_nas_log.txt&lt;/code&gt;，确认脚本运行正常&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;常见问题与解决方案&lt;/h2&gt;
&lt;h3&gt;1. 挂载失败：密码错误&lt;/h3&gt;
&lt;p&gt;如果日志显示&quot;未能在钥匙串中找到密码&quot;的错误，请检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确保已在钥匙串中正确添加了NAS服务器的密码&lt;/li&gt;
&lt;li&gt;检查服务器IP地址和用户名是否与钥匙串中的记录完全匹配&lt;/li&gt;
&lt;li&gt;尝试手动运行&lt;code&gt;security find-internet-password -s &quot;服务器IP&quot; -a &quot;用户名&quot; -w&lt;/code&gt;命令，确认能获取到密码&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 挂载失败：网络问题&lt;/h3&gt;
&lt;p&gt;如果日志显示服务器不可达或挂载超时，请检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确保MacBook和NAS在同一网络中&lt;/li&gt;
&lt;li&gt;检查NAS设备是否正常运行&lt;/li&gt;
&lt;li&gt;确认NAS的IP地址没有变化&lt;/li&gt;
&lt;li&gt;检查网络防火墙设置&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. 特殊字符用户名问题&lt;/h3&gt;
&lt;p&gt;如果您的用户名包含特殊字符（特别是&quot;@&quot;），脚本会自动处理。但如果仍遇到问题，您可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手动对用户名进行URL编码（将&quot;@&quot;替换为&quot;%40&quot;）&lt;/li&gt;
&lt;li&gt;考虑在NAS/Windows上创建一个不含特殊字符的专用账户用于挂载&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 挂载点权限问题&lt;/h3&gt;
&lt;p&gt;如果挂载成功但无法访问文件，可能是权限问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查NAS上的共享权限设置&lt;/li&gt;
&lt;li&gt;确保MacBook用户有足够的访问权限&lt;/li&gt;
&lt;li&gt;尝试手动挂载并指定权限选项，如&lt;code&gt;mount_smbfs -N -o nobrowse &quot;//user:pass@server/share&quot; ~/Mounts/share&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;AI提问解决法&lt;/h2&gt;
&lt;p&gt;你去问问ai把，很强的。&lt;/p&gt;
</content:encoded></item></channel></rss>