From f66cbc97c86f7d7c5e0677530c966dbf6cd17397 Mon Sep 17 00:00:00 2001 From: pooneyy <85266337+pooneyy@users.noreply.github.com> Date: Wed, 29 Oct 2025 11:58:03 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(telegraph-image):=20add=20tele?= =?UTF-8?q?graph-image=20application=20configuration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add data.yml with form fields for KV database, dashboard credentials, telegram integration, and content moderation - add docker-compose.yml for container deployment with environment variables and network configuration - add README.md with setup instructions and telegram bot configuration guide in chinese - add README_en.md with english version of setup instructions - add main data.yml with application metadata, tags, and architecture support --- apps/telegraph-image/2025.10.29/data.yml | 81 ++++++++++++++++++ .../2025.10.29/docker-compose.yml | 23 +++++ apps/telegraph-image/README.md | 44 ++++++++++ apps/telegraph-image/README_en.md | 19 ++++ apps/telegraph-image/data.yml | 25 ++++++ apps/telegraph-image/logo.png | Bin 0 -> 5896 bytes 6 files changed, 192 insertions(+) create mode 100644 apps/telegraph-image/2025.10.29/data.yml create mode 100644 apps/telegraph-image/2025.10.29/docker-compose.yml create mode 100644 apps/telegraph-image/README.md create mode 100644 apps/telegraph-image/README_en.md create mode 100644 apps/telegraph-image/data.yml create mode 100644 apps/telegraph-image/logo.png diff --git a/apps/telegraph-image/2025.10.29/data.yml b/apps/telegraph-image/2025.10.29/data.yml new file mode 100644 index 000000000..7102b9236 --- /dev/null +++ b/apps/telegraph-image/2025.10.29/data.yml @@ -0,0 +1,81 @@ +additionalProperties: + formFields: + - default: "8080" + envKey: PANEL_APP_PORT_HTTP + label: + en: Port + zh: 端口 + required: true + type: number + edit: true + rule: paramPort + + - default: ./data + envKey: KV_DATABASE_DIR + label: + en: KV Database Persistence Directory + zh: KV数据库持久化目录 + required: true + type: text + edit: true + + - default: "" + envKey: BASIC_USER + label: + en: Dashboard Username + zh: 管理面板用户名 + required: true + type: text + edit: true + rule: paramCommon + - default: "" + envKey: BASIC_PASS + label: + en: Dashboard Password + zh: 管理面板密码 + required: true + type: password + edit: true + rule: paramComplexity + random: true + + - default: "" + envKey: TG_Chat_ID + label: + en: Telegram Channel ID + zh: Telegram 频道 ID + required: true + type: text + edit: true + + - default: "" + envKey: TG_Bot_Token + label: + en: Telegram Bot Token + zh: Telegram Bot Token + required: true + type: text + edit: true + + - default: "false" + envKey: WhiteList_Mode + label: + en: WhiteList Mode + zh: 白名单模式 + required: false + type: select + edit: true + values: + - label: "True" + value: "true" + - label: "False" + value: "false" + + - default: "" + envKey: ModerateContentApiKey + label: + en: ModerateContent NSFW API key + zh: ModerateContent 图片审查 API key + required: false + type: text + edit: true diff --git a/apps/telegraph-image/2025.10.29/docker-compose.yml b/apps/telegraph-image/2025.10.29/docker-compose.yml new file mode 100644 index 000000000..09bc8823e --- /dev/null +++ b/apps/telegraph-image/2025.10.29/docker-compose.yml @@ -0,0 +1,23 @@ +services: + telegraph-image: + image: ghcr.io/pooneyy/telegraph-image:2025.10.29 + container_name: telegraph-image + ports: + - ${PANEL_APP_PORT_HTTP}:8080 + volumes: + - ${KV_DATABASE_DIR}:/app/data + environment: + - BASIC_USER=${BASIC_USER} + - BASIC_PASS=${BASIC_PASS} + - TG_Chat_ID=${TG_Chat_ID} + - TG_Bot_Token=${TG_Bot_Token} + - WhiteList_Mode=${WhiteList_Mode} + - ModerateContentApiKey=${ModerateContentApiKey} + networks: + - 1panel-network + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/telegraph-image/README.md b/apps/telegraph-image/README.md new file mode 100644 index 000000000..657b7f010 --- /dev/null +++ b/apps/telegraph-image/README.md @@ -0,0 +1,44 @@ +# Telegraph-Image + +免费图片托管解决方案,Flickr/imgur 替代品。使用 Cloudflare Pages 和 Telegraph。 + +## 写在前面 + +使用中国大陆备案域名的用户,请务必开启白名单模式,因为对于同样的图片 URI ,所有部署该服务的站点都可访问。 + +在别处上传的违规图片,也可以通过你的域名访问。 + +>示例 +>https://telegraph-image.pages.dev/file/7f84b69bcd38c25846374.png +>https://testimg.pages.dev/file/7f84b69bcd38c25846374.png + +## 如何获取Telegram的`Bot_Token`和`Chat_ID` + +> 不要滥用,以及避免被他人滥用,以免 Telegram 被封禁 + +如果您还没有Telegram账户,请先创建一个。接着,按照以下步骤操作以获取`BOT_TOKEN`和`CHAT_ID`: + +1. **获取`Bot_Token`** + - 在Telegram中,向[@BotFather](https://t.me/BotFather)发送命令`/newbot`,根据提示依次输入您的机器人名称和用户名。成功创建机器人后,您将会收到一个`BOT_TOKEN`,用于与Telegram API进行交互。 + + +![202409071744569](https://f.pz.al/pzal/2025/10/29/a24a7eda32dbc.png) + +2. **设置机器人为频道管理员** + - 创建一个新的频道(Channel),进入该频道后,选择频道设置。将刚刚创建的机器人添加为频道管理员,这样机器人才能发送消息。 + +![202409071758534](https://f.pz.al/pzal/2025/10/29/8fdf7027d3d74.png) + +![202409071758796](https://f.pz.al/pzal/2025/10/29/a59052ed758fa.png) + +3. **获取`Chat_ID`** + - 通过[@VersaToolsBot](https://t.me/VersaToolsBot)获取您的频道ID。向该机器人发送消息,按照指示操作,最后您将得到`CHAT_ID`(即频道的ID)。 + - 或者通过[@GetTheirIDBot](https://t.me/GetTheirIDBot)获取您的频道ID。向该机器人发送消息,按照指示操作,最后您将得到`CHAT_ID`(即频道的ID)。 + + ![202409071751619](https://f.pz.al/pzal/2025/10/29/912fba79e3aa0.png) + +最后去Cloudflare Pages后台设置相关的环境变量(注:修改环境变量后,需要重新部署才能生效) +| 环境变量 | 示例值 | 说明 | +|-----------------|---------------------------|----------------------------------------------------------------------------------------| +| `TG_Bot_Token` | `123468:AAxxxGKrn5` | 从[@BotFather](https://t.me/BotFather)获取的Telegram Bot Token。 | +| `TG_Chat_ID` | `-1234567` | 频道的ID,确保TG Bot是该频道或群组的管理员。 | diff --git a/apps/telegraph-image/README_en.md b/apps/telegraph-image/README_en.md new file mode 100644 index 000000000..faf78a747 --- /dev/null +++ b/apps/telegraph-image/README_en.md @@ -0,0 +1,19 @@ +# Telegraph-Image + +Free Image Hosting solution, Flickr/imgur alternative. Using Cloudflare Pages and Telegraph. + +## How to Obtain `Bot_Token` and `Chat_ID` for Telegram + +> Do not abuse and avoid being abused by others, lest Telegram be banned + +If you don't have a Telegram account yet, please create one first. Then, follow these steps to get the `Bot_Token` and `Chat_ID`: + +1. **Get the `Bot_Token`** + - In Telegram, send the command `/newbot` to [@BotFather](https://t.me/BotFather), and follow the prompts to input your bot's name and username. Once successfully created, you will receive a `Bot_Token`, which is used to interact with the Telegram API. + +2. **Set the bot as a channel administrator** + - Create a new channel and, after entering the channel, go to channel settings. Add the bot you just created as a channel administrator, so it can send messages. + +3. **Get the `Chat_ID`** + - Use [@GetTheirIDBot](https://t.me/GetTheirIDBot) to get your channel ID. Send a message to this bot and follow the instructions to receive your `Chat_ID` (the ID of your channel). + \ No newline at end of file diff --git a/apps/telegraph-image/data.yml b/apps/telegraph-image/data.yml new file mode 100644 index 000000000..830000e1f --- /dev/null +++ b/apps/telegraph-image/data.yml @@ -0,0 +1,25 @@ +name: Telegraph Image +tags: + - 实用工具 + - 图片托管 +title: 免费图片托管解决方案,使用 Cloudflare Pages 和 Telegraph +description: + en: Image Hosting solution, Using Cloudflare Pages and Telegraph. + zh: 免费图片托管解决方案,使用 Cloudflare Pages 和 Telegraph +additionalProperties: + key: telegraph-image + name: Telegraph Image + tags: + - Tool + shortDescZh: 免费图片托管解决方案,使用 Cloudflare Pages 和 Telegraph + shortDescEn: Image Hosting solution, Using Cloudflare Pages and Telegraph. + type: website + crossVersionUpdate: true + limit: 0 + website: https://github.com/cf-pages/Telegraph-Image + github: https://github.com/cf-pages/Telegraph-Image + document: https://github.com/cf-pages/Telegraph-Image + architecture: + - amd64 + - arm64 + diff --git a/apps/telegraph-image/logo.png b/apps/telegraph-image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..03887f03ec2159aee82abcb132c0531785c416cc GIT binary patch literal 5896 zcmV+j7x(CiP)C}Ok#z5>95cI&wu{&A1^Pu z=%Q=-mo^FJXo_I&mQpq^vk)F6+>@*_Hg8K2JW!khvz2zvX_rO=v$W-GUP1$VIHLxh z*i_1Xv9XN#XTHYb)*WCQ(rVd8!aYf^Vd{p7(1Wbz`jmyWY(mkz><#v5bjA*BO6X> zV4W$A>{?P2dq43697#RG_M+@->)0@a9QaVnS?^<3PvX*c~Z{*z4*0 z+0yg_?E9Jun5&q~nliS4hZeu%qw)U4CTQc|#@i$^F(pn4Blqp3Mrh%q_U?@R>^GWH zcu-c6p&Djw-oc(+SHm`?9A-BXX+$PwicM_p)1~w(7L-xO9+gFAgMrQ7P{Dq>rj8XP zH-U9E#lwUX;Zj3#BfGJ#j=i*@j6Ei)%$cPy=cO|C6CPre@|kPbY7&`{0PYn_Jj%>G z0?64^&YqG)=FPj=d>$|VG4&98m(Ns(X;da81t*S8Y>-C+RqLzRKRH$Ak`j1;$2C65 zN7#D_H1Q+kLX_IdBZ4YTrISYLni`m`sbJ41A7US49#Qd!Bs>e-NX^5KtWA5_cV{eg zMiqM^t&SOR21+9{p$OcLd2`hFIv)3G_zmRVQL=B}${%ae}6S0po`B&(0ZND807 zWmd3%oR-WFGz_RhwA?1h)}rceWtwUf=s+{gYUwVu5z zgc>S%7=jQMUz%WOT^%dlRLP!nSZGZZ`(D}sRzfR)gxbJpA*qqItgmL_4hx-L!(L22 z%B~7UMk;s+f*8x{6EMP~hu1gnW()2=I+wr$YwMUUu?Ys0zHx$>h{U6;J##O6v7`hh z&U%Dq!YoZCdp@OseMu8RLgld3dZ^~UK0Wd1T+HUDSF=@#G!Z1!j+mRizP^TePbl<; zO7?d=HaSJHGvNv(9EZU*^=$XfEcUH&h0dsALCMFVS?L=k2uDdi%)ZF1V$Y8&blQHl zC4nY`gbR_-#Cq24XG=3P@7lVRy@P!(Hn_fuXs&DYfS?%wZzZyD!2#2br4#OHL=EoBes&#l!NT| zYZNRMjXw?$XCr=+e@77GAqahpomqE){jDH$QX~7H)Hgv9p|QVN`Wb+i&H`k80ATnC zpy)h6&N+Zr-UHCQ4UlS^tfJ&f|MCd+A@s>>WFKwZ!(Q-uc{iJr+`z(;-yxISs1a0#4iJe zA{cio{>vnkM;xKe8}_kqS%hB4|KEEr16;i|GnvPNQom^uCz4c9<>AOJ^iDqU`?Ob# zg`FX@ov*mmr*4Xw5Sl1@FmefvBPV7uFk9hlneANTlf}bdijz%}+Cz~;Xp{>>jU(45 z&R{qTO!MV^sDfWCp$u}3(E4*?Zdt0)d2Hy>a9zxz&?xPJNG&uCD9|1T4?Nvhs)Jp4#+1o@yuUOO+M`4F&A+^w$s{6Q$3q2yQ(D+7p?XviWps>S( zkWy%jVGI6m=1bhu0ka)VU)i!9G)j98QVWd*NVwpkgwSu9#A-YWJ3I&}g~o#Y@=ry< zq+U=NkB>S4*1ttUdlXU&{n}^Zgir~gFY?%Z0}1U}NIpVevW?Jkha8-b+G&LLIHZoD zaa$E;9F&Nm-!_XiBqX#4A+^xB$@OZV{6gb0`-x_NwQo?C!=sQo5B;)&dFaZ|C=cy% zNG&vukZ%~}AE9x-p^jDx6(z2TLCm3Hh^ifcl?@~E{9LJp#);v+%ktN9yl)XR98}Ap z4Dnp%h{|3FENlaRgBe11bwS+G+tT-Yky>bMF`)eb;9|FYsXP4gV7Y1{f4Ddme7K$l ziW^bc1HQQ?Sh%HGz&pDILd&`#?wG_Dg#AWEOWU7b89v|3sDV9cO*@-*G zN9Nah!8gY!h`cE4<|y9U76`Af^3nUYboU_3j+NtL<(nL%H0GaiUttREE0i4!Gs4TQ z;G?@&W;^)b@bAPQXVTn+04Z;7GD7yZtY8dn9eV<}Dq6R2~NY~a8Vi82?oIWF=Ylf;{_cteCy6*Ya}Z)lyC%%f6giBiWpYvDz1p%Iii z>2-i@AM-H5EXKZ={cv=|7XIF#I03Bxg3J64$t)}UcO89jh>y%OlX*1rkz<6gGOIAL zobkOWA@o=_z9Z(SvEvcusZs2k!{79Rwu_F~CzD_Hi@Uma|3&;_P)0*uVvY<$a7o8~ zvl&wX^VTc&_su->p|sE_WBQu_h35fkzYzOHW4;<2I^yIJEA_B014m=rfr8;h=_Rq~ zi3*S82Wv8x?CKI${+uPVoq)ntAzLz|dsJHJu{VOTHICT1=KywG6szU-UEu=rk+}GR z*zF(BU`e0`GKvs$gv-3U3w*MTPM6s}Nen7(hgkjwnD!)5HA34!Q86Blx1D%(_dhHB zp?WHqGsZNV6e8bEV37r)>xYC`eaiQ$HlYdifyG9PcXmn=W{f{li#h6;!$VWQUlN*_ z49q+%t?ZFSp;mV2~F5RS#V)PRWgqOOHQK>4o?0YBs3u)RL%_uIbdflX*(0l zd<2)Yi`97(JqHO*AXsb^w6$GWty5au`$>)Qef&h5ZAoa)24m*P{r%wYq{=xtz%(M} z#>cJBBcVMTjF|(cy4yqrU^;Qx-rjqqCZRnSj74#xV^6O=i$ zv|Dj0X9|W&EB23Bcp;%Z521g?9c;ww0)$Rc*MRQi6ME%VV42ruuEt>>Jp;F3aPn1LO2{Pbpr zMkb;8pBqVyeVRi{yToE66-cBeTu*2`-{XL|7tYbwtdG$AuWM?3(o~8lbGKU*=#$X4 z8U1wnN8qbDY>$)9@=yqD(}lZDyt61~c6p((>3LNBps=xXx(|zIc?caXr95w1s^_=2 z>B4Ld$?W<<X+GmTC38+s2!IOI_B^&4>P8Bz~gwJ7*Vx@ zF0o9Gd2~!Y3fUYL2%~mXFEpmya1*4n9~^fJ$MAUEsYmllATzd-#S@|yx#3hN-_@HSBTx$Ow2wNkN>dkDR<(RPfOj31_O-n2?`)X@hA#iNH+ zAcrfWDxp{6!a;>qkzyO)9Ftf_tzdN?W^*vEr;*tWghr8Y(E}Gh6j?afg6B=Q2_vKu zlf>A=wA;jOgtqTe7B+S&xC&-J_CW6HJp6gsri)T@ZXk5Lt+S6>`bS_P6UOkP9WAAP zetVlPDmHR`p)t(B;{|Y1rUscu!Skm1#0>Z8N%{Q3nShm4)9e;P3-t*H22@*YBaGC- zdDGIQ^MtKqdwYfbk4itQJE4rwC&e;QJWx?pBlBJ0$ho}gmhk0s_M2&WRi7xc3ct** zj3Pqg#?GK^uCWRxoML*Q-)V(R!knS{mczSk2$c(M-*T_?gFA|_FR|DH(e?K^#neG? z>sUa(*<-qay0y@e_N`Mc*mDgJsB!oZ_3=h#+y}`=dbMP8+!fh`7HgU<;`SjGJot1F zMr!_sney}7Ccs$JO)^W1^g^HfrlxtJ3LbbSVED0kN5_NGW<`E!1~V+H>VxVaHO87%PEFgI5Jb^oV-XPG?sy4tm&Pt`~yk}7E>+5 z^QP|#KkS{2JiWE85;$FG>`sLB37%3p7EsU%QFQ~On{7vr9?o|EW7O1$Q-u~=+xCj9 zU@CYxIlzzt8;#?9LFjB$(IadYAeoiHX+opS%WL|C7Pd-1l-vky#>%X)v_h;LB$<`N zDMDi_fQY?(WXkp2nqHI|vpKY+tt>Ma8n;f_cAF^uFa$9pp|P$3Cq&e9jZh2I7aCW= zY6o4aa*l9+rYE$mPczQ$-DOFea1W*|w0ImuAN5=#RLPWu9<6Cs!OauI-AqYntWR)e zpJsw^HVz9Ndw5u=ob!|=ZNfEiNN8*~8&=vaw&_yAO%udKOfK|sabzAntyBd!Oc0YX zsnFPTe93N-nQ$E@6k6=LW_7#WCWL!4D)h$f-v})>Q0$|anQ%G$btdbwd@l4WJJ~~N zwd|FIGqywF4HF*%_S$CV-R1q#p3;1UnO;H8iVP0!? z!tBLc+k=8jZjsD{YobM=O`pdU^!&kVk)dVI!mQ?SKYf?-H%1WCz*}nsKdtej*nH~? zUVq5xp1nxh9O9oxLKChD3hkYB^Hhko?T21?1?IN?cVIpWO{qG<_3+6y;R(SF-r3EM z3qnU1TYt60&~}UZNf54xHy1iUZ$1=auskLRov>r*xln!EyWZKfrHXJpc*wz)0f5(Si62_-@{(^E3B|%SwL>f3sizDa^`2yF{C$Fzp(+k-R}Y|cGG zuPV9qAE8BER}{Zdf^Y!uteY$-xAn@>t=8x6ky#j_xAi_5QP^4SolS8xp?-XI#=gb+ zHtp(Ccz9f)H|`jk7gcNx@~3PEp?X>%AjkCS@`8^499L%hmAb9(sj$M%w|sOanj8|U z#YfvR9I9{2iZ1GWWKyBCcCtCqTdf-c4VE6IZ<-*+gU8O`uQQq>4W0j*wx@gcq(bAh zwshdSA`I=np0>ziuT|xP3&IOK%KURo zR+5^K6Yd-H(;1CC)L5BNX#KWRgvM*d*3KXEczTz=&eTU+wFo)D!P8G?Y7Wh7-MF%- zYkG0>WLIoq`+^mPooRtO^L75iZY%x3g!_WI=73!DMLvjzL>G6?ce>2>E2+f#$g=$Q zRe?FCtF#$_kOG_la+%MD7j*tMGJoJ9$z--)@rJJX5&E_$AFc6*x7K)@7GDUbfc4GV zmf_&s)|1N%I({L!$YZat!rq4ibtZrRY~vwct+AblAR{C;F+EyvE7b^}pM4pe*P0(w z(EYPeedoOe`%+&K`Nnx+ddqVG*{0Y4o#}tM)O}*Un#3j?0Y_vbW-+=$a$8SD7%WR8 zi`yU1EQR|Q97%nx$m{s~CAqDu{j!ZG`8Vw*kAr$~;z(&e;u~6o%mruIS7++tgW#2* z+}2$Y`IeP5O%2SAF7ACcs-Vj!GQX=VBER!!sG;p_a9-Po{yC=ei?lZ{EZjo4BYZTz;FH~Q z!9T}*K7Zm2gM!v-Qz6KNDauJ{?}r{#0~+=MPpDcR!w5)c5Uk+f)=* e&_$Qpum1;86TE$iUD#>>0000