宁波网站建设方式,wordpress 抓取时间长,南昌网站排名优化,电影网站建设 流程什么是 BookLogr #xff1f; BookLogr 是一款网络应用#xff0c;旨在帮助您轻松管理个人图书馆。这项自托管服务可确保您完全控制数据#xff0c;提供安全且私密的方式来跟踪您拥有、阅读或希望阅读的所有书籍。您也可以选择向公众自豪地展示您的图书馆#xff0c;与您的…
什么是 BookLogr BookLogr 是一款网络应用旨在帮助您轻松管理个人图书馆。这项自托管服务可确保您完全控制数据提供安全且私密的方式来跟踪您拥有、阅读或希望阅读的所有书籍。您也可以选择向公众自豪地展示您的图书馆与您的朋友和家人分享。 官方给的重要的提示
该项目正在积极开发中。预计会出现错误和重大变化。
BookLogr 和 Calibre 不同并不提供书籍管理而是类似于豆瓣的书影音档案帮助用户收纳和归档自己的书籍可以创建书单 记录读书笔记在阅读过程中还可以对书籍进行打分、并写评论。这不仅有助于个人记录也能与其他用户分享你的阅读体验。
BookLogr 跟老苏之前介绍过的 Koillection 或者 Ryot 有一定的相似之处。
构建镜像
官方没有提供镜像但是 API 和认证服务提供了 Dockerfile前端则没有老苏只是为了体验一下没有像往常采用多阶段构建而是采用了开发模式构建
认证服务
构建镜像的基本命令如下
# 拉取源代码
git clone https://github.com/Mozzo1000/auth-server.git# 进入代码目录
cd auth-server# 构建镜像
docker build -t wbsu2003/auth-server:v1 .API 服务
构建镜像的基本命令如下
# 拉取源代码
git clone https://github.com/Mozzo1000/booklogr.git# 进入代码目录
cd booklogr# 构建镜像
docker build -t wbsu2003/booklogr:v1 .前端
需要准备一个 Dockerfile 文件这是一个以开发模式运行的容器包含了运行所需要的库
# 使用 Node.js 作为基础镜像
FROM node:20.16# 设置工作目录
WORKDIR /app# 复制项目文件到工作目录
COPY . .# 安装项目依赖
RUN npm install# 运行 Vite 开发服务器
CMD [npm, run, dev, --, --host]构建镜像的基本命令如下
# 假设你当前在 booklogr 目录 需要进入子目录
cd web# 将 Dockerfile 放入当前目录# 构建镜像
docker build -t wbsu2003/booklogr-web:v1 .顺便提一句老苏所有折腾过的 dockerfile 都上传到了 Githubhttps://github.com/wbsu2003/Dockerfile/ 反向代理
API 服务采用了 Python Flask 开发所以又遇到了我们熟悉的跨域问题
Access to XMLHttpRequest at http://192.168.0.197:5004/v1/books from origin http://192.168.0.197:5173 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource.没有找到相关的设置所以还是使用 npm 来解决。由于不涉及公网访问本文还是采用了 tailscale npm 方案 文章传送门用自定义域名访问tailscale节点 假设我们访问地址如下
域名局域网地址备注book.xxsu.cfhttp://192.168.0.197:5173前端 web 的访问地址api.xxsu.cfhttp://192.168.0.197:5004API 服务的访问地址auth.xxsu.cfhttp://192.168.0.197:5003认证服务的访问地址
前端在 npm 中的设置另外两个服务除了域名和端口其他是一样的 SSL 中照例都勾选了 API 服务和认证服务的设置到此就结束了但是前端 Web 还有个关键的步骤需要在 Advanced 中填入下面的内容
location /v1 {add_header Access-Control-Allow-Origin https://book.xxsu.cf;proxy_pass http://192.168.0.197:5004;
}这段代码的作用就是
为所有 /v1 开头的请求设置 CORS 头允许来自 https://book.xxsu.cf 的跨域请求将所有这些请求代理到本地的 5004 端口服务也就是 API 服务
所以你要根据自己的域名和 IP 进行修改
安装
因为涉及到多个容器所以采用 docker-compose 方式安装
env.txt
首先要准备一个 env.txt 文件
FLASK_APPapi.app
FLASK_DEBUG1
DATABASE_URLpostgresql://admin:passwordbooklogr-db/booklogr
AUTH_SECRET_KEYufmmCydg3sBhJa9zuWvgyfUoFzMXzVqjzdXzhWy9
AUTH_ALLOW_REGISTRATIONTrue
AUTH_REQUIRE_VERIFICATIONFalse
GOOGLE_CLIENT_IDxxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRETxxx# docker-compose
POSTGRES_USERadmin
POSTGRES_PASSWORDpassword
POSTGRES_DBbooklogr# web
VITE_API_ENDPOINThttps://api.xxsu.cf/
VITE_AUTH_API_URLhttps://auth.xxsu.cf
VITE_GOOGLE_CLIENT_IDxxx.apps.googleusercontent.com
VITE_DISABLE_HOMEPAGEtrue做个简单说明
DATABASE_URL 如果数据库的相关设置做了修改这里也要跟着变AUTH_SECRET_KEY随机字符串AUTH_ALLOW_REGISTRATION是否允许未经身份验证的用户注册账户AUTH_REQUIRE_VERIFICATION当允许注册时是否求用户验证其电子邮件地址GOOGLE_CLIENT_ID如果您想允许使用 Google 进行身份验证请将其更改为您自己的 Google 客户端 ID如果你不使用保留默认就可以千万别注释会导致页面白屏GOOGLE_CLIENT_SECRET Google 客户端密钥POSTGRES_USER数据库用户POSTGRES_PASSWORD数据库用户对应的密码POSTGRES_DB数据库库名VITE_API_ENDPOINTbooklogr API 服务的 URLVITE_AUTH_API_URL认证服务的 URLVITE_GOOGLE_CLIENT_ID需跟 GOOGLE_CLIENT_ID 一致VITE_DISABLE_HOMEPAGE删除主页并直接重定向到登录页面或库如果您已经登录。
更多环境变量的说明请参考官方的 wikihttps://github.com/Mozzo1000/booklogr/wiki/ENV-variables
docker-compose.yml
将下面的内容保存为 docker-compose.yml 文件
services:booklogr-web:image: wbsu2003/booklogr-webcontainer_name: booklogr-webports:- 5173:5173env_file:- env.txtdepends_on:- auth-api- booklogr-apibooklogr-db:container_name: booklogr-dbimage: postgres # use latest official postgres version# ports:# - 5432:5432 restart: alwayshealthcheck:test: [CMD-SHELL, pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}]interval: 10stimeout: 5sretries: 5env_file:- env.txtvolumes:- ./bdata:/var/lib/postgresql/data/ # persist data even if container shuts downbooklogr-api:image: wbsu2003/booklogr:v1container_name: booklogr-apidepends_on:booklogr-db:condition: service_healthyenv_file:- env.txtports:- 5004:5000auth-db:image: postgres # use latest official postgres versioncontainer_name: booklogr-auth-server-db# ports:# - 5433:5432restart: alwayshealthcheck:test: [CMD-SHELL, pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}]interval: 10stimeout: 5sretries: 5environment:POSTGRES_USER: admin # CHANGE THIS FOR USE IN PRODUCTION!POSTGRES_PASSWORD: password # CHANGE THIS FOR USE IN PRODUCTION!POSTGRES_DB: auth-servervolumes:- ./adata:/var/lib/postgresql/data/ # persist data even if container shuts downauth-api:image: wbsu2003/auth-server:v1container_name: booklogr-auth-server-apidepends_on:auth-db:condition: service_healthyrestart: alwaysenvironment:FLASK_APP: api.appDATABASE_URL: postgresql://admin:passwordauth-db/auth-server # CHANGE THIS FOR USE IN PRODUCTION! Needs to be the same as the credentials in auth-dbenv_file:- env.txtports:- 5003:5000然后执行下面的命令
# 新建文件夹 booklogr 和 子目录
mkdir -p /volume1/docker/booklogr/{adata,bdate}# 进入 booklogr 目录
cd /volume1/docker/booklogr# 将 docker-compose.yml 和 env.txt 放入当前目录# 一键启动
docker-compose up -d文件结构如下 如果一切正常应该有 5 个容器 运行
在浏览器中输入 https://book.xxsu.cf 就能看到主界面 第一次需要 Register 自己的账号 如果显示需要验证码不用管它直接 Login 就行 登录成功后的主界面 搜索一本书 需要将 openlibrary.org 加入到科学网的黑名单否则是搜不到内容的 点 Add to list 将书加入书单 可以选择阅读状态 添加成功会有提示 在 My Library 中进入相应的状态可以找到添加的书籍 在 Profile 中查看 点 Open Library 会跳转到相应的网站 Open Library 是一个开放的、可编辑的图书馆目录旨在为每本出版过的书籍创建一个网页。截至 2018 年 10 月该平台已经收录了超过 36 万本书籍。这个项目类似于维基百科用户可以自由地编辑和贡献内容。 下拉可以借阅 随便翻一翻 如果看书完了可以 Set as finished然后可以打分并分享到 Mastodon 还可以写Notes Add note 随便写点啥 在书库里会有相应的显示 参考文档 Mozzo1000/booklogr: A simple, self-hosted service to keep track of your personal library 地址https://github.com/Mozzo1000/booklogr BookLogr 地址https://demo.booklogr.app Home · Mozzo1000/booklogr Wiki 地址https://github.com/Mozzo1000/booklogr/wiki internetarchive/openlibrary: One webpage for every book ever published! 地址https://github.com/internetarchive/openlibrary