稍后阅读和书签管理类开源应用转了一圈,各有各的好和问题,最后还是选择了Omnivore。它的主要问题是私有化部署支持并不理想。 为了解决这个问题,最为核心的就是要想办法替换强依赖的GCS组件,同时要尽可能减少源代码的改动,以便后续更新升级。因此,就写了一个适配器组件gs-s3-adapter,大致如下: 基于minio-js实现的google/storage部分接口。主要用于Omnivore的私有部署场景,用来替换项目中使用的@google-cloud/storage包,从而尽可能避免修改代码直接部署使用。 使用 需要修改Omnivore项目的packages/api/Dockerfile和packages/content-fetch/Dockerfile文件,此处以api为例 1.打开packages/api/Dockerfile文件 2.找到: RUN yarn install --pure-lockfile --production 3.在这之后添加替换代码 RUN yarn install --pure-lockfile --production # Replace @google-cloud/storage with gcs-s3-adapter RUN yarn add --ignore-workspace-root-check gcs-s3-adapter RUN rm -rf /app/node_modules/@google-cloud/storage RUN ln -s /app/node_modules/gcs-s3-adapter /app/node_modules/@google-cloud/storage 4.修改docker-compose.yml,添加S3相关环境变量 environment: - S3_HOST=192.168.x.x - S3_PORT=xxxx # optional - S3_ACCESS_KEY=xxx - S3_SECRET_KEY=xxx ... 5.构建并启动 docker-compose build api docker-compose up -d content-fetch与此类似 其它相关问题 存储问题解决后依然还有一些其它的问题需要,有的必须要处理,有的则是可选项 message queue(必须) content-fetch服务在抓取内容结束后,通过queue通知api服务。api服务需要启动一个queue processor来处理content-fetch的返回,否则会一直block。目前已知的方式有两种: •修改packages/api/server.ts ...