首页
关于
Search
1
seafile pro 11.0安装踩坑记录
9 阅读
2
年度数字账单
7 阅读
3
GitHub+Coding双线部署的Hexo静态博客搭建
4 阅读
4
博客:重新起航!
3 阅读
5
再谈知识管理方案:Obsidian本地 + Typecho云端
3 阅读
技术
生活
科研
登录
Search
标签搜索
博客
Backblaze
知识管理
obsidian
S3
B2
Seafile
VPS
服务器
Docker
Cloudreve
私人网盘
云存储
typecho
邮箱
腾讯
python
爬虫
计算机网络
Android
Momoko
累计撰写
12
篇文章
累计收到
0
条评论
首页
栏目
技术
生活
科研
页面
关于
搜索到
8
篇与
技术
的结果
2025-09-09
seafile pro 11.0安装踩坑记录
系统环境与部署目标操作系统: Ubuntu 20.04 LTS容器化方案: Docker & Docker Compose应用服务: Seafile Professional Server 11.0反向代理: 1Panel (Nginx-based)对象存储: Backblaze B2 Cloud Storage (S3-Compatible API)部署目标: 实现一个稳定、可靠的Seafile专业版实例,其文件数据完全存储于Backblaze B2,并实现HTTPS安全访问和WebDAV功能。问题复现与排错在遵循官方文档进行初步配置后(遵循S3存储相关文档),遭遇了一系列问题。下文将按照实际排错顺序,逐一剖析并提供解决方案。数据被错误上传到本地问题:所有上传的文件数据块均被写入了本地磁盘,而B2的存储用量没有任何变化。解决:B2存储配置有误,导致Seafile服务使用了本地存储。正确配置(seafile.conf)请参考下方:# /opt/seafile-data/seafile/conf/seafile.conf [fileserver] port = 8082 [database] # 参考官网,自行设置 # ... (数据库配置) ... [notification] # 参考官网,自行设置 # ... (通知服务配置) ... [commit_object_backend] name = s3 bucket = <commits-bucket-name> host = <b2-s3-endpoint> key_id = <commits-exclusive-key-id> key = <commits-exclusive-key> use_v4_signature = true aws_region = <region-from-endpoint> use_https = true [fs_object_backend] name = s3 bucket = <fs-bucket-name> host = <b2-s3-endpoint> key_id = <fs-exclusive-key-id> key = <fs-exclusive-key> use_v4_signature = true aws_region = <region-from-endpoint> use_https = true [block_backend] name = s3 bucket = <blocks-bucket-name> host = <b2-s3-endpoint> key_id = <blocks-exclusive-key-id> key = <blocks-exclusive-key> use_v4_signature = true aws_region = <region-from-endpoint> use_https = true [memcached] memcached_options = --SERVER=memcached --POOL-MIN=10 --POOL-MAX=100Signature validation failed问题:seafile网页版上传文件时显示ERROR,查看seafile日志发现Signature validation failed。这表明连接已成功建立,但在API认证环节失败。2025-09-08 04:54:02 ../common/obj-backend-s3.c(355): Put object ... error 403. Response: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Error> <Code>AccessDenied</Code> <Message>Signature validation failed</Message> </Error> 2025-09-08 04:54:02 repo-mgr.c(7655): Failed to add commit.解决:采用的是AWS S3 v4的验证方式,Backblaze B2并不完全兼容。因此,在创建bucket时,应该为commits, fs, blocks三个Bucket分别创建三个独立的App Key,并确保每个Key的权限范围仅限于其对应的Bucket。WebDAV 502 Bad Gateway问题:Seafile安装后经测试上传没有问题,但在启用并配置了Seafile WebDAV服务后,所有通过反向代理访问WebDAV端点(https://example.com/seafdav)的请求,均收到502 Bad Gateway错误。通过docker compose up启动Seafile时,Docker Compose默认会创建一个专用的、隔离的bridge网络(例如,名为seafile_seafile-net)。所有在docker-compose.yml中定义的服务(seafile, db, memcached)都会被加入到这个网络中,它们之间可以互相访问。与此同时,1Panel及其管理的OpenResty/Nginx服务,运行在另一个独立的Docker网络中(例如,1panel-network)。而不同自定义网络之间默认是互相隔离的,这造成不同服务之间无法通信。一开始,在1Panel中为WebDAV配置的反向代理目标地址是http://127.0.0.1:8080,这个地址指向的是1Panel容器所在的网络命名空间或宿主机,取决于1Panel的网络模式。它无法穿透网络隔离,直接访问到seafile_seafile-net网络内部的seafile容器的8080端口。解决:通过端口映射暴露服务修改docker-compose.yml, 为seafile服务添加WebDAV端口的映射。services: seafile: ports: - "10080:80" # 主网站端口 - "18080:8080" # WebDAV端口 (宿主机18080 -> 容器8080)更新反向代理配置,在1Nginx中,将WebDAV的proxy_pass目标地址修改为指向映射后的宿主机端口。proxy_pass http://127.0.0.1:18080/seafdav/;重启服务, 执行docker compose down && docker compose up -d以应用新的端口映射。似乎也可以通过将容器加入共同网络来解决,但我还没试过。
2025年09月09日
9 阅读
0 评论
0 点赞
2025-06-11
使用 Cloudreve 挂载 Backblaze B2 私人网盘全记录(含踩坑与解决方案)
Cloudreve 是一款功能强大的私有网盘系统,支持多种存储后端,其中包括兼容 S3 的对象存储。Backblaze B2 提供了 S3 Compatible API,非常适合个人用户。目标是实现:上传文件至 Backblaze B2Cloudreve 前端支持断点续传、分片上传使用私有 bucket,保护文件隐私本文记录本人成功将 Cloudreve 与 Backblaze B2 对接作为私人网盘的完整流程,涉及配置 S3 存储策略、解决分片上传失败、CORS 报错、ETag 缺失等问题。下文默认你已经部署好了 Cloudreve。一、Backblaze B2 配置创建 Bucket: 登录 Backblaze 控制台, 创建私有 bucket。如果启用Default Encryption则被加密的文件将不会出现在未来创建的快照中,也就是说,如果你依赖 snapshots 来备份数据,则这些加密文件不会包含在内。Object Lock保持Disable即可。创建应用密钥限定该密钥只能访问新创建的 bucket,也可以设置为ALL。授权 Read & Write 权限。其它可选项不管。记下生成的keyID、applicationKey二、Cloudreve 存储策略配置在 Cloudreve 管理后台的存储策略配置中,选择存储类型为 AWS S3 参数填写。Bucket 名称,Endpoint,Region(从Endpoint中截取,例如us-east-005),keyID / applicationKey(使用刚才生成的应用密钥)其它配置参数保持不变,一路向下!你可能在 CORS policy 这一步遇到问题,先点跳过,解决方法看后面章节。这个时候,你已经初步设置好了 Cloudreve 部分,但你在 Cloudreve 中上传文件时可能报错 Network Error。原因是 Backblaze B2 默认不暴露 ETag header,且未开放 S3 PUT/POST 操作跨域访问。你需要回到 Backblaze 中进行设置三、CORS 设置(关键!)为了解决上传出错问题,你需要额外设置。参考:使用 B2 CLI 设置 CORS, 对应官方文档:Backblaze B2 (S3 兼容) 解决:linux环境下下载并安装 B2 CLI 工具# 1. 下载最新版 B2 CLI 二进制文件 wget https://github.com/Backblaze/B2_Command_Line_Tool/releases/latest/download/b2-linux -O b2 # 2. 添加执行权限 chmod +x b2 # 3. 移动到系统路径,方便全局调用(可选) sudo mv b2 /usr/local/bin/登录Backblaze 账户,你需要提前在 B2 控制台创建 Master Application Key 或 具有修改 bucket 权限的 Key(即前文创建的那个)b2 authorize-account系统会提示你输入:Application Key ID 和 Application Key,登录成功后,B2 CLI 就可以操作你的 bucket。应用修改后的 CORS 规则,替换下面为你创建的名称。b2 bucket update <bucketName> allPrivate --cors-rules '[{"corsRuleName":"cloudreveCorsUpload","allowedOrigins":["*"],"allowedHeaders":["authorization","content-type","x-bz-file-name","x-bz-content-sha1"],"allowedOperations":["b2_download_file_by_id","b2_download_file_by_name","b2_upload_file","b2_upload_part","s3_put","s3_post","s3_get","s3_delete"],"exposeHeaders":["ETag"],"maxAgeSeconds":3600}]'确认修改是否完成b2 bucket get <bucketName>输出中必须含有"exposeHeaders": ["ETag"]立即测试上传,确认:小文件上传无误;大文件(>chunk)自动分片上传成功;中文文件名支持(建议搭配自动重命名)四、Cloudreve 忘记密码Cloudreve 忘记密码后重置密码,不用修改数据库。 进入 Cloudreve Docker 容器终端,然后执行指令:./cloudreve --database-script ResetAdminPassword接着你的终端/日志中就会出现重置后的密码了
2025年06月11日
3 阅读
0 评论
0 点赞
2025-06-10
再谈知识管理方案:Obsidian本地 + Typecho云端
在数字化时代,有效的知识管理工具是个人思考、创作与分享的关键。过去几年,我从博客写作到日常笔记记录,尝试了多种方案,也积累了一些经验。目前,我的知识流转体系最终定格在 Obsidian 本地记录 + Typecho 博客发布。Hexo+GitHub:一切的起点最初采用的是 Hexo + GitHub Pages,优势显而易见:静态站点,加载速度快免费托管Markdown 编写但问题也挺明显,每次写完文章都要本地重新编译、提交、推送,出门在外也无法修改或提交,光是折腾这些就劝退了我不少写作的欲望。Notion:体验极佳的写作工具Notion 的初次使用体验令人惊艳。功能全,体验丝滑,国内edu邮箱也能使用教育版。但最大的问题是——数据在云上,不在自己手里。某地区冲突后Notion宣布在🇷🇺停止服务,让人不得不思考:数据主权到底在谁手上?Obsidian:本地优先,私密而自由在寻找本地化解决方案时,Obsidian 进入了我的视野。它在许多方面可以作为 Notion 的本地替代品,尤其适合碎片化的信息记录。值得一提的是,尽管 Obsidian 拥有极其丰富的插件生态,但折腾一阵之后就会意识到,过度追求花哨的功能和插件反而会分散精力,偏离知识管理的初衷。Obsidian简洁高效的基础功能,对我更加实用。Obsidian + Typecho:结构分明、职责分离目前采用下面这套知识管理架构:Obsidian(本地):主要用于日常记录、不成熟的想法整理、个人隐私信息存储等。Typecho(博客):专注于发布经过深思熟虑、结构完整、适合公开分享的文章与知识沉淀成果。既能在 Obsidian 中快速捕捉灵感、沉淀想法,又能将成熟内容系统整理后发布在 Typecho 上。两者互不干扰,彼此配合,形成一个从内化到外化的完整知识流转链。除了Typecho,也体验了其它几种主流的动态博客系统。Hexo这类静态博客首先被排除;WordPress 功能强大且生态丰富,但其庞大的体量和资源消耗,略显臃肿;Ghost 有简洁的设计和成熟的商业化生态(知识付费和订阅方面)。Ghost 足够简洁,但高度定制化,主题也贵(一个好看的主题要90美刀😺);Halo 作为一个基于Java的博客系统,在功能上表现不错,但考虑到个人博客通常是低访问量场景,其效率并不理想。最后还是 Typecho 凭借其轻量级、简洁易用和高度灵活的特性,成为了最终选择,它恰到好处地满足了我的需求😊。
2025年06月10日
3 阅读
0 评论
0 点赞
2022-02-10
知识管理方案探讨及主流笔记软件体验
前言平常本人使用hexo博客系统,用于记录学习笔记、生活随笔等,但是随着笔记的增多,一些碎片化的、不成体系的知识点又不足以单独发文章,了解到双链类笔记对知识体系的串联,于是开始寻找更好的知识管理方案。 以下体验仅代表个人意见。软件体验可以看看下了31个markdown编辑器,我就不信选不出一个好用的,这里介绍用过的几个印象深刻的笔记软件。ObsidianObsidian 几乎所有功能都免费,仅仅针对官方数据同步、发布至网页端这两个功能进行收费。 主攻本地而不是云端也对我口味,双链的操作逻辑 [[双链]] 简单易记,好评(能用键盘不用鼠标,快捷键也要担心冲突和难记)。然而本地文件封闭,所以东西都集中在库里,文件交互不友好。优点:数据本地储存、丰富的插件市场、md语法支持友好缺点:本地文件系统封闭,所有文件保存于“库”中,不方便和其它软件产生的文件交互Notion可以说是一个非常全面的知识管理工具,UI也令人惊艳,如果我没有用过博客系统可能会用这个。 然而导入md代码缩进一堆问题,行内代码都能识别成代码块,公式也识别不了(关键是甚至不保留原始字符),体验极差,直接劝退。适合没有迁移需求的人。优点: UI美观、功能强大缺点: md支持极为有限,导入md各种问题语雀蚂蚁集团旗下的在线文档编辑与协同工具,重点在于其知识库系统。体验还不错,导入格式几乎完美(然而图床图片加载极慢,软件设置代理也只快了一丢丢),按流量计费,我很多笔记有大量云床链接,弃之。只要码字需求或不在意会员费用的可考虑优点:UI美观,md导入基本无错缺点:按流量计费,图床图片加载极慢总结及个人方案目前主流笔记软件大同小异,但都逃不过“笔记”的限制,可能因为用户体量和制作团队的关系,各个软件都仅局限在笔记的功能上,知识管理依然需要自己分类构建,todo、日历、清单、网页嵌入功能固然实现了从无到有和功能汇总,但使用体验显然不如专业软件,谈不上效率多高,功能的拓展也依赖官方或三方插件。 我个人目前使用hexo+githubpages作为笔记,用pycharm直接定位本地文件夹写md,集成git帮我实现版本管理,随时回滚,随时提交,随时部署。GitHub Copilot实现ai填充,todo注释定位到行。最关键的是本地文件管理的自由度,可以将代码项目和博客项目放在一个窗口中分屏浏览,不影响本地结构。缺点在前言里已经说明,双链功能目前用搜索代替,碎片知识记录于onenote。在知识输出方面效率极高,但输入和收集管理方面有较大缺陷。
2022年02月10日
3 阅读
0 评论
0 点赞
2021-07-09
Android系统HTTPS抓包问题分析
前言曾在Android系统抓包Bilibili客户端时遇到HTTPS验证问题,一直很不解,我不是安装了CA证书了吗?直到在52pojie看到@小木曾雪菜 的文章 [原创] 网络逆向(一) 油猴脚本与抓包初步 以显示b站楼层编号为例 才恍然大悟,b站客户端通过SSL pinning进行安全通信,原理大概是: 中间人通过伪造假的服务端证书来欺骗客户端,那么客户端就预置一份服务端证书来验证证书的真假. 之后机缘巧合下刚好在论坛的精华贴看到@psych1 的文章 [Android 原创] android系统https抓包问题分析很好的解释了我遇到的问题,特此记录,侵删
2021年07月09日
2 阅读
0 评论
0 点赞
1
2