tgNetDisc:把 Telegram 变成轻量图床和网盘
· 约 6 分钟

tgNetDisc:把 Telegram 变成轻量图床和网盘


这是什么?

tgNetDisc 是一个基于 Telegram Bot API 的开源图床/网盘项目。

它的思路很直接:文件上传到 Telegram,Web 页面负责上传、展示和生成外链。对用户来说,它像一个轻量网盘;对博客作者来说,它也可以当图床。

tgNetDisc 主页面

它解决什么问题?

很多人需要一个轻量文件外链服务,但传统方案总绕不开几个问题:对象存储要配置权限,图床服务可能限流,网盘分享链接又不够直观。

tgNetDisc 换了个角度:既然 Telegram 本身能长期保存文件,就让 Bot 把文件发到频道或聊天,再把文件 ID 转成可访问链接。

这不是企业级对象存储,但对个人博客、临时文件分发、小规模图床来说,足够聪明。

核心功能

功能说明
文件上传通过网页或 API 上传文件
外链生成上传成功后返回可访问 URL
图片预览图片链接可直接浏览器打开
密码访问支持通过密码保护上传页面
大文件分片超过限制后切片上传并生成清单
Docker 部署官方提供容器部署方式

项目基于 csznet/tgState 修改而来,主语言是 Go,README 中也说明了支持多种 CPU 架构。

Docker 部署

推荐直接用 Docker:

docker run -d --restart=always \
  --name netdisc \
  -p 8088:8088 \
  -e TOKEN=你的机器人Token \
  -e CHANNEL=你的频道或ChatID \
  -e MODE=pan \
  -e PASS=访问密码 \
  -e DOMAIN=https://你的域名.com \
  yohannfan/yohann-netdisc:latest

关键变量如下:

变量作用
TOKENTelegram Bot Token
CHANNEL文件发送到的频道或 Chat ID
PASS上传页面访问密码,可选
DOMAIN生成完整外链用的域名,可选
MODEpan 表示网盘模式

如果使用频道作为存储位置,需要把 Bot 拉进频道并设置为管理员。频道公开时可以使用 @channelName,也可以用 Chat ID。

API 上传

tgNetDisc 的 API 很简单,一个 multipart/form-data 请求即可:

curl -X POST \
  -F "image=@/path/to/file.png" \
  -b "p=你的密码" \
  https://你的域名.com/api

返回示例:

{
  "code": 1,
  "message": "/d/BQACAgUAAyEGAASMO11u...",
  "url": "https://你的域名.com/d/BQACAgUAAyEGAASMO11u..."
}

url 就是最终外链。图片可以直接预览,普通文件则可以直接下载。

Python 调用

import httpx

endpoint = "https://你的域名.com/api"
cookies = {"p": "你的密码"}
files = {"image": ("demo.png", open("demo.png", "rb"), "image/png")}

resp = httpx.post(endpoint, files=files, cookies=cookies)
print(resp.json()["url"])

这个接口适合接入博客自动化、截图上传、临时附件分发等流程。

大文件分片

Telegram 单次文件上传存在大小限制,tgNetDisc 会对大文件做分片处理。它会先上传多个分片,再上传一个记录分片信息的清单文件。访问最终链接时再根据清单组合读取。

这个设计很实用,但也要接受一个现实:大文件上传不会很快。它适合能等的文件分发,不适合追求高速的大体积网盘体验。

适合什么场景?

场景是否适合
博客图床很适合,外链直接可用
临时文件分发适合,小文件体验好
自动化上传适合,API 简洁
私人超大网盘勉强,不建议当主力
企业文件服务不适合,依赖 Telegram

优缺点

优点很明显:部署简单、容量弹性大、API 直接、几乎不占本地磁盘。对于个人用户来说,这些都很香。

限制也要说清楚:它依赖 Telegram 服务和网络环境;大文件分片慢;文件管理能力比较弱;如果你的服务器无法稳定访问 Telegram,体验会直接打折。

总结

tgNetDisc 的价值在于“轻”。它不打算替代专业对象存储,也不适合做严肃网盘系统,但非常适合作为个人图床、临时文件分发站,或者自动化流程里的文件出口。

如果你已经有一台能访问 Telegram 的 VPS,又想要一个成本很低的外链服务,tgNetDisc 值得试。

项目地址:Yohann0617/tgNetDisc 原项目:csznet/tgState