首页
关于
Search
1
seafile pro 11.0安装踩坑记录
40 阅读
2
GitHub+Coding双线部署的Hexo静态博客搭建
18 阅读
3
年度数字账单
15 阅读
4
再谈知识管理方案:Obsidian本地 + Typecho云端
13 阅读
5
Alist 疑似被收购,用户需谨慎更新v3.45.0
11 阅读
技术
生活
科研
登录
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日
40 阅读
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日
9 阅读
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日
13 阅读
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日
4 阅读
0 评论
0 点赞
2021-07-09
Android系统HTTPS抓包问题分析
前言曾在Android系统抓包Bilibili客户端时遇到HTTPS验证问题,一直很不解,我不是安装了CA证书了吗?直到在52pojie看到@小木曾雪菜 的文章 [原创] 网络逆向(一) 油猴脚本与抓包初步 以显示b站楼层编号为例 才恍然大悟,b站客户端通过SSL pinning进行安全通信,原理大概是: 中间人通过伪造假的服务端证书来欺骗客户端,那么客户端就预置一份服务端证书来验证证书的真假. 之后机缘巧合下刚好在论坛的精华贴看到@psych1 的文章 [Android 原创] android系统https抓包问题分析很好的解释了我遇到的问题,特此记录,侵删
2021年07月09日
8 阅读
0 评论
0 点赞
1
2