From 76d1e7f3b141cd8472877026e5e8d4dcf7b65a17 Mon Sep 17 00:00:00 2001 From: houheya Date: Fri, 3 Jul 2026 18:16:20 +0800 Subject: [PATCH] Add talebook/talebook --- apps/talebook-bt/app.json | 40 +++++++++++++++++++ apps/talebook-bt/ico-dkapp_talebook.png | Bin 0 -> 3334 bytes apps/talebook-bt/talebook/.env | 8 ++++ apps/talebook-bt/talebook/docker-compose.yml | 19 +++++++++ 4 files changed, 67 insertions(+) create mode 100644 apps/talebook-bt/app.json create mode 100644 apps/talebook-bt/ico-dkapp_talebook.png create mode 100644 apps/talebook-bt/talebook/.env create mode 100644 apps/talebook-bt/talebook/docker-compose.yml diff --git a/apps/talebook-bt/app.json b/apps/talebook-bt/app.json new file mode 100644 index 00000000..be5547f7 --- /dev/null +++ b/apps/talebook-bt/app.json @@ -0,0 +1,40 @@ +{ + "appid": 0, + "appname": "talebook", + "apptitle": "TaleBook", + "apptype": "Tools", + "appTypeCN": "实用工具", + "appversion": [ + { "m_version": "latest", "s_version": [] } + ], + "appdesc": "基于 Calibre 的个人电子书管理系统,支持在线阅读、OPDS、多用户、元数据管理、书源导入、邮件推送", + "appstatus": 1, + "home": "https://github.com/talebook/talebook", + "help": "https://github.com/talebook/talebook/blob/master/document/README.zh_CN.md", + "updateat": 1752027587, + "reuse": true, + "cpu": 0, + "mem": 0, + "disk": 10240, + "depend": null, + "field": [ + { "attr": "web_http_port", "name": "Web 端口", "type": "number", "default": 8080, "suffix": "", "unit": "" }, + { "attr": "allow_access", "name": "允许外部访问", "type": "checkbox", "default": true, "suffix": "允许直接通过主机IP+端口访问", "unit": "" }, + { "attr": "puid", "name": "PUID", "type": "number", "default": 1000, "suffix": "容器内运行用户ID", "unit": "" }, + { "attr": "pgid", "name": "PGID", "type": "number", "default": 1000, "suffix": "容器内运行用户组ID", "unit": "" }, + { "attr": "timezone", "name": "时区", "type": "text", "default": "Asia/Shanghai", "suffix": "", "unit": "" } + ], + "env": [ + { "key": "app_path", "type": "path", "default": null, "desc": "应用数据目录" }, + { "key": "host_ip", "type": "string", "default": null, "desc": "主机IP" }, + { "key": "cpus", "type": "number", "default": null, "desc": "CPU核心数限制" }, + { "key": "memory_limit", "type": "number", "default": null, "desc": "内存大小限制" }, + { "key": "web_http_port", "type": "port", "default": null, "desc": "Web端口" }, + { "key": "puid", "type": "number", "default": null, "desc": "用户ID" }, + { "key": "pgid", "type": "number", "default": null, "desc": "用户组ID" }, + { "key": "timezone", "type": "string", "default": null, "desc": "时区" } + ], + "volumes": { + "data": { "type": "path", "desc": "数据目录(书库、设置、日志等)" } + } +} diff --git a/apps/talebook-bt/ico-dkapp_talebook.png b/apps/talebook-bt/ico-dkapp_talebook.png new file mode 100644 index 0000000000000000000000000000000000000000..9877a873c0cbed69b59bc1e15e80bf01e8624080 GIT binary patch literal 3334 zcmV+h4f*nkP) zP)-#+(l!#{h=Ssg#a4n66a)+b0s+|!gg_Fqyk+|TLtaSUdw1S8?9K!NdBaOScS+nJ^SH9-D|M z4~$0N%YOtRtjVKgjxEnFB0^dgJQ8PpF6)koQ-&j{-T4|pqi1CG=!j9b4Z-Z^@5LQc zN1}atawM{D@~H@Ego4|RsSn*ofTuLZT-e3MX~^i<9+U1KjwfH7ia|fS5|O%%DMAQ$ zTT&uMj~jx^uIxc)@*p&Ueq{5=?A!6n>9>;okHKWgQv|QMmHLmzfTeG)!O0&gq3gQei`J;N zFp2j)G7i%o%|%8hTDh>G%~ympLSJ1~iw~Fo56?Wh82L*-!{Gxb;G(tcMzwUuW0jjm z4a8G(r((zr1E{u~?+{26_)#cAngPT$mP;$Pat=?rMx* zZksd=DRc{zTbgSWAwKZ2H#ku8-66cYcr9M}^S@BM>yY2um=MAkyX4-LgZm#Ihxmlh zM)`^mAA}fD)Qr^E+41eR{dnPtx3Ol$X7FvzU-QDfuF}0n;B>eQH^Kf~M1&AR!Csw3 z_SI+4;jIN9;?2LVM9Ho)IP6ZJp1IBW=BpB{|G3C+jq>S$A}uAPYgQ(P=3IlDMh>)8 zZoFk6x^~Z`;>tsI-|m*?>AnWeyAMs9aLp*(v=eW>vI?KA-Abf5yb4o({500CDnw0H zotG}q2+If&LeNB9Hm3hE7Z20G$x3Eyiu>qRixB3Wd?7gR z$cUgZ2bygS)aY{;dEv{;o4Ut`sGGcQ^;c-9w>Ps4{?JlFg3rDUqzJJH+(j zz6x8v*o}X`^(l@YITfO}3&|8A7qE~YN%|8Gx=rogagav&E3j?Lp0I9J?#vY-ZX`_h zcIs7ejqqi{@n_G}!08OFo9pRQ5#ou6$2r%6GnLhFSp>L;d#_VV3E_W9U2Q#T&si+w zlYM)YzF7nV7izxTNOQNgnY*S#&X>m_E|)bmpvkf1z%oL(>J}C5!LyGo!4nTHv{dFi z^ai#S7E3PSeDp^JUxbwBoQL1QvL&BT7q=2=-$CH3ocI#JJE*(fn$DIwCUYU2u?2;^~-uVV7x?`&m_ zB|Ru#{ypPjo)94f(mSNmQmpUUS)RA5ue&fJ_XN=Db43V^!ZSLiNvF%XQFnwma~ld- ziV#9A!DQ{Cj;7$b_eN&Hgph3&Ayh-mR`_ab>QGZ%8#2JbCX9JP5)$IU%LX#w91aIf zwfkQGkfjMHKIRGG-jyvWQHo)Gt=*V*ml{~Chqe2$5hDp=f^UkVWR6pFp8ep-gRge9YI7q$C>+3gs|VN3n;+ z?8-~RS~H;))#TJ9q-Uf?UOJ@Eecty-+FeAOEg|@F&lUmkDnfz)+{~1hczG$<%q9?>A|w!$ z0lXX4#OYY`3ESA4|uB8v)(BVLX#Ki?%U zgG;9wmhhj12$>Lh$u3<@qRBM93p!kU-wN~c6(KA1;%bI%xcHaQ|_cI;eO>NPuu<_sx=8R-UerzJVo8 zBvB|rB)~L}<}b+gzdE~lREy*9sX-6-g8^=bmkc593$l8jXiLC|F+WB3o}HwwzuS3G zstZ;TlZ5b`6n~ztXYX$KaduadF6hzgf^ggwSNFoO5kJ9q^32`E+z@#CuU0b9>uwu;MOmgK%OGu4=&Gt{y#W!xEwr>)f~`p zk7JS$28{{f-Vs0C)L8Lxeaz? zvBWGPOvZcv_!x`+w$ejZVd1>xczy2sc=d&Ry!6bwnETW_Sn}!zSig2FP8_R%%YtWk zWjw|#Ar5K>wioTg=8fOBluh5FXv-e3Zuj;B#%KGg&(?wmfL7n0e325fgt)o8_qpF+-;nbc&Ex0NpH0B18|aGj8Th>B2-nuO~vpu`s#;bqVkQoF!`p>+|k>v8%@P1v>Xs2saVREQD+l5BRyxm+b$MO85k0laUDw+Ft(JKMjQ0&5&jPV0RR7}aj=vC000I_L_t&o0J95o+&+iV QF#rGn07*qoM6N<$f~<~FasU7T literal 0 HcmV?d00001 diff --git a/apps/talebook-bt/talebook/.env b/apps/talebook-bt/talebook/.env new file mode 100644 index 00000000..15914a68 --- /dev/null +++ b/apps/talebook-bt/talebook/.env @@ -0,0 +1,8 @@ +WEB_HTTP_PORT=8080 +PUID=1000 +PGID=1000 +TIMEZONE=Asia/Shanghai +HOST_IP= +CPUS= +MEMORY_LIMIT= +APP_PATH= diff --git a/apps/talebook-bt/talebook/docker-compose.yml b/apps/talebook-bt/talebook/docker-compose.yml new file mode 100644 index 00000000..47e6b745 --- /dev/null +++ b/apps/talebook-bt/talebook/docker-compose.yml @@ -0,0 +1,19 @@ +services: + talebook: + image: talebook/talebook:latest + deploy: + resources: + limits: + cpus: ${CPUS} + memory: ${MEMORY_LIMIT} + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TIMEZONE} + ports: + - ${HOST_IP}:${WEB_HTTP_PORT}:80 + restart: always + volumes: + - ${APP_PATH}/data:/data + labels: + createdBy: "bt_apps"