如何把 SurfSense 旧版 all-in-one 容器的数据迁移到新的 Docker Compose 栈?
如何把 SurfSense 旧版 all-in-one 容器的数据迁移到新的 Docker Compose 栈【免费下载链接】SurfSenseOpen-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Maps etc) through one platform, API or MCP server. Join our Discord: https://discord.gg/ejRNvftDp9项目地址: https://gitcode.com/GitHub_Trending/su/SurfSense如果你之前以 all-in-one 容器的方式运行 SurfSense镜像ghcr.io/modsetter/surfsense:latest通过docker-compose.quickstart.yml启动所有数据都存放在surfsense-data这一个卷里。新的 Docker Compose 栈把数据库从 PostgreSQL 14 升级到了 17直接把旧卷挂进新栈不可行必须做一次性的 dump 加 restore。SurfSense 的官方安装脚本已经内置了这条迁移路径检测旧卷、用临时 PostgreSQL 14 容器导出数据库、恢复SECRET_KEY、把数据灌入 PostgreSQL 17 并启动新栈。本文给出默认凭据下的一条命令主路径、自定义数据库凭据时的手动导出流程以及迁移结果的验证与清理方式。适用前提主机已安装并运行 Docker或 Docker Desktop且带 Compose脚本会检查缺失时直接报错退出。旧版 all-in-one 容器创建的surfsense-data卷还在本机。磁盘有约 500 MB 空闲空间用于存放 dump 文件低于 500 MB 时脚本会提示并要求确认。迁移依据的文档与脚本见 Updating 文档、Docker Installation 文档、install.sh 和 migrate-database.sh。主路径一条命令完成迁移在你想放置 SurfSense 的目录下执行Linux/macOSbash 环境curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash检测到surfsense-data卷后脚本自动进入迁移模式按顺序完成以下动作停止正在使用surfsense-data的旧容器防止数据文件损坏执行前会提示确认——这是脚本唯一会主动停掉你已有进程的地方。启动一个临时 PostgreSQL 14 容器镜像pgvector/pgvector:pg14容器名surfsense-pg14-migration挂上旧卷。用pg_dump把旧库导出到./surfsense_migration_backup.sql并校验 dump 文件非空、包含 PostgreSQL dump 头。从旧卷中的/data/.secret_key恢复SECRET_KEY保存到./surfsense_migration_secret.key。下载 compose 文件到./surfsense/目录用恢复出的SECRET_KEY生成.env。启动 PostgreSQL 17新栈的db服务镜像见 docker-compose.yml 中的pgvector/pgvector:pg17把 dump 灌入。启动全部服务并等待其变为健康状态。整个过程的完整日志写入./surfsense-migration.log。原始surfsense-data卷全程不会被删除dump 文件本身就是检查点——中途任何一步失败直接重跑安装脚本即可。若./surfsense_migration_backup.sql已存在上次运行导出过脚本会跳过导出、直接执行恢复因此重跑是安全的。脚本还会顺带询问是否启用 Watchtower 每日自动更新这与迁移本身无关按需选择即可--no-watchtower可跳过。旧容器使用自定义数据库凭据时导出脚本默认使用的旧库凭据是usersurfsense、passwordsurfsense、dbsurfsense。如果你给旧 all-in-one 容器设置过自定义的POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB先手动运行导出脚本再运行安装器。两条命令必须在同一个目录下执行因为安装器会从当前目录读取 dump 文件curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/migrate-database.sh -o migrate-database.sh bash migrate-database.sh --db-user myuser --db-password mypass --db-name mydb curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash其中myuser/mypass/mydb是文档给出的示例值需替换成旧容器实际使用的POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB。脚本另支持--yes跳过所有确认提示参数完整用法可运行bash migrate-database.sh --help查看。如果旧卷里找不到.secret_key文件说明当年SECRET_KEY是作为显式环境变量传入容器的。交互运行时脚本会提示你输入旧值直接回车则生成新 key代价是迁移后所有已登录的浏览器会话失效。若要在非交互模式下找回原 key脚本会自动生成新 key 并提示迁移后到./surfsense/.env中把SECRET_KEY改回原值。Windows PowerShell 用户可用文档中给出的 PowerShell 安装器install.ps1它通过migrate-database.ps1执行同一套迁移逻辑irm https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.ps1 | iex验证迁移结果按以下顺序确认恢复冒烟测试安装脚本在 restore 后统计public模式下的表数输出类似Smoke test passed: N table(s) restored successfully.N 为实际表数随你的数据不同。若统计到 0 张表脚本会提示 restore may have silently failed并让你查看docker compose logs db。打开页面核对数据安装完成后打开http://localhost:3929默认地址文档要求Open SurfSense and confirm your data is intact。这是文档给出的最终确认步骤。检查服务健康状态cd surfsense docker compose ps服务会从(health: starting)变为(healthy)说明新栈整体起来了。如果 restore 阶段输出了错误脚本会原样打印并说明部分错误如already exists可能只是 pg_dump 头信息的良性噪音文档指出只有当 SurfSense 行为异常时才需要手动检查安装脚本会同时打印对应的手动psql检查命令。清理与回退边界./surfsense_migration_backup.sql在验证通过前保留确认数据无误后再删除rm ./surfsense_migration_backup.sql。docker volume rm surfsense-data是不可逆操作务必在页面核对数据完成之后执行。安装脚本结束时的提示还包含删除./.migration_done标记文件它会阻止迁移模式的重复触发。若某次运行停在导出阶段想重新导出先删除已有 dump 文件再重跑脚本遇到已存在的 dump 会中止以避免覆盖并明确提示这一处理。迁移失败时无需担心数据损失原卷始终原样保留migrate-database.sh的清理逻辑只移除临时容器失败时也会明确提示 Your original data in surfsense-data is untouched。至此旧版 all-in-one 容器的数据已完整运行在新的 Docker Compose 栈上后续升级走常规的docker compose pull docker compose up -d即可不再涉及卷迁移。【免费下载链接】SurfSenseOpen-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Maps etc) through one platform, API or MCP server. Join our Discord: https://discord.gg/ejRNvftDp9项目地址: https://gitcode.com/GitHub_Trending/su/SurfSense创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

SymPy 多体动力学实战:基于拉格朗日方法推导受迫 Duffing 振子-摆系统的运动方程

SymPy 多体动力学实战:基于拉格朗日方法推导受迫 Duffing 振子-摆系统的运动方程

SymPy 多体动力学实战:基于拉格朗日方法推导受迫 Duffing 振子-摆系统的运动方程 【免费下载链接】sympy A computer algebra system written in pure Python 项目地址: https://gitcode.com/GitHub_Trending/sy/sympy 导读 本文基于 SymPy 的 sympy.physic…

2026/11/15 13:54:21 阅读更多 →
MNN LLM 手机上内存不足时如何用 use_mmap、kvcache_mmap 和 chunk 规避溢出?

MNN LLM 手机上内存不足时如何用 use_mmap、kvcache_mmap 和 chunk 规避溢出?

MNN LLM 手机上内存不足时如何用 use_mmap、kvcache_mmap 和 chunk 规避溢出? 【免费下载链接】MNN MNN: A blazing-fast, lightweight inference engine battle-tested by Alibaba, powering high-performance on-device LLMs and Edge AI. 项目地址: https://gi…

2026/11/15 13:54:23 阅读更多 →
Flutter鸿蒙应用故障排查:从崩溃、卡顿到发热的DFX链路

Flutter鸿蒙应用故障排查:从崩溃、卡顿到发热的DFX链路

版本灰度放量的第三天,我手机上的主力发布群就开始轮流值班:“线上崩了”、“滑动明显卡”、“发热很快,半小时能当暖手宝”。这三个词同时出现,说实话第一反应是慌,第二反应才是从哪查。这个场景在Flutter鸿蒙应用上尤…

2026/11/11 1:26:54 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/15 5:13:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/15 5:13:35 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/15 5:13:35 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/15 3:37:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/15 4:18:38 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/15 5:13:35 阅读更多 →

日新闻

周新闻

月新闻