ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Filestash 如何接入 Syncthing 后端以只读方式浏览同步文件夹

Filestash 如何接入 Syncthing 后端以只读方式浏览同步文件夹 Filestash 如何接入 Syncthing 后端以只读方式浏览同步文件夹【免费下载链接】filestash:file_folder: Universal File Storage Client项目地址: https://gitcode.com/GitHub_Trending/fi/filestashFilestash 的存储后端列表里内置了一个 Syncthing 插件server/plugin/plg_backend_syncthing/index.go。它的用途不是管理 Syncthing而是把你的 Syncthing 同步文件夹以只读方式挂进 Filestash 的文件浏览器根目录列出 Syncthing 的全部同步文件夹文件夹内可以浏览、查看文件元信息并在线读取内容但不能新建、上传、重命名、移动或删除。这篇文档说明如何完成这个接入以及纯 API 浏览和经本地同步目录读取文件两种模式的区别。接入前先确认什么Syncthing 后端初始化时会立即调用一次 Syncthing REST API 拉取文件夹列表见 index_helper.go 中的fetchFolders请求/rest/config接口并使用X-Api-Key请求头。任何一步不满足保存连接时就会直接报错不会等到浏览时才发现Filestash 能访问到的 Syncthing 服务地址。后端表单的url留空时默认是http://localhost:8384Syncthing REST API 的默认端口即 README 中示例容器映射的 8384 端口。一个可访问 REST API 的 Syncthing API key填入表单的api_key字段。Syncthing 实例中已存在至少一个同步文件夹folder否则 Filestash 根目录只会列出一个空列表。如果需要在线查看文件内容下载、图片预览等还需要 Filestash 进程能够以只读方式访问 Syncthing 的本地同步目录通过sync_path字段指定该目录详见下一节。插件自带 README 给出了一个可参考的测试实例server/plugin/plg_backend_syncthing/README.md其中的./syncthing/config与./syncthing/sync是文档示例中的本地挂载路径docker run --namesyncthing-sync -d -e PUID1000 -e PGID1000 -p 8384:8384 -v ./syncthing/config:/var/syncthing -v ./syncthing/sync:/sync syncthing/syncthing这条命令会启动一个容器并把 Syncthing 的 REST 端口 8384 暴露到宿主机。副作用是创建一个名为syncthing-sync的容器并在当前目录生成./syncthing数据目录如果你已有自己的 Syncthing 实例跳过这一步直接把 API 地址指向现有实例即可。在 Filestash 中配置 syncthing 存储后端访问 Filestash 的管理端/admin进入存储后端Storage Backend设置页。该页面渲染可用后端列表与已启用后端的表单前端逻辑见 ctrl_storage_component_backend.js点击syncthing项即把它加入已启用后端。在展开的表单中填写三个字段——这是 LoginForm() 定义的全部内容字段占位提示用途urlAddressSyncthing REST API 地址留空默认http://localhost:8384api_keyAPI KeySyncthing API key用于X-Api-Key请求头sync_pathSync directorySyncthing 同步目录在 Filestash 所在主机上的路径可留空填写后保存配置。保存动作会触发后端Init()此时 Filestash 立刻用上面的地址和 key 请求/rest/config如果 API 返回非 200 状态会以API returned status code的形式报错此时应核对地址与 key而不是先尝试浏览。两种浏览模式的区别sync_path是否为空决定了文件内容从哪来不填sync_path纯 API 模式目录列表通过 Syncthing 的/rest/db/browse接口参数folder、prefix、levels1从 Syncthing 数据库获取因此文件夹结构、文件名、大小、修改时间都可以看到但文件会被标记为 Offline不能在线读取内容。适合只需要在 Filestash 里核对同步了什么的场景。填写sync_path本地目录模式列表仍然来自 Syncthing API但Stat/Cat等操作改为把路径解析为sync_path 文件夹的path来自/rest/config返回的folders[].path 相对路径直接以只读方式os.O_RDONLY打开本地文件见 index.go 中的Stat/Cat。此时文件可正常下载、预览。sync_path下找不到对应目录时会返回文件不存在之类的打开错误。根目录/下只列出同步文件夹本身每个文件夹显示为一个 directory不显示sync_path下其他内容。验证接入是否生效按以下顺序核对每一步都能直接落到文档或代码里的事实API 连通保存后端配置时没有报API returned status ...错误说明url与api_key已被 Syncthing 接受/rest/config返回 200。根目录进入 Filestash 的文件页该后端对应的目录应看到与 Syncthing 端配置一致的文件夹列表名字取labellabel为空时回退为id。进入文件夹列出的文件/子目录、大小与修改时间来自/rest/db/browse的结果只识别FILE_INFO_TYPE_FILE和FILE_INFO_TYPE_DIRECTORY两种类型其他类型会记录错误日志plg_backend_syncthing::ls errorunknownItemType。只读行为无论是否填sync_pathFilestash 根目录的元数据都被显式设置为不可建目录、不可建文件、不可重命名、不可移动、不可上传、不可删除Meta() 中对path /的分支。在界面上看不到或执行不了写操作即为预期结果这不是配置遗漏。内容读取仅当填写了sync_path时点开一个已知文件应能查看/下载未填写时文件显示为 Offline 属预期行为。限制与边界该后端不提供 Syncthing 管理功能。如果你想在 Filestash 域名下代理 Syncthing 自己的管理界面那是另一个独立插件server/plugin/plg_handler_syncthing/index.go通过features.syncthing.enable/SYNCTHING_URL启用后把 Syncthing Web UI 反向代理到/admin/syncthing与本文的存储后端接入互不依赖按需启用即可。接入成功与否完全取决于 Syncthing REST 端点的可达性与 key 有效性文档没有给出 Syncthing 侧需要额外开启的开关若连接失败按地址 → key → 实例中是否已有 folder的顺序核对即可。只读约束由该后端自身强制元数据层面禁用全部写操作不需要再叠加额外的授权插件。【免费下载链接】filestash:file_folder: Universal File Storage Client项目地址: https://gitcode.com/GitHub_Trending/fi/filestash创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表