白嫖 telegram 存储空间用作网盘服务 - 🐳 Teldrive 搭建教程
白嫖 telegram 存储空间用作网盘服务 - 🐳 Teldrive 搭建教程
小柯Docker + Supabase 版
使用 Docker 运行 Teldrive + Supabase 云数据库(无需自建 PostgreSQL)
适用于 Debian / Ubuntu 服务器 | 轻量、免维护数据库
1️⃣ 准备工作
开始之前,请确认已经准备好以下项目:
| 项目 | 说明 |
|---|---|
| Linux 服务器 | 本教程基于 Debian/Ubuntu,其他发行版请自行调整 Docker 安装命令 |
| Docker 和 Docker Compose | 需要安装 Docker 引擎及 Compose 插件(或独立 docker-compose) |
| Telegram 账号 | 用于登录和存储文件 |
| 私有 Telegram 频道 | 需要你的账号是频道的管理员,且频道必须为私有 |
| Telegram API ID / Hash | 前往 my.telegram.org/apps 申请并保存好 |
| Supabase 账号 | 免费注册 supabase.com,用于创建云数据库 |
| 服务器开放端口 | Teldrive 默认使用 8080 端口,需放行防火墙(例如 ufw allow 8080) |
⚠️ 重要提醒:请合理使用 Telegram API,避免大量上传违规或垃圾文件,否则可能导致账号被封禁。加密密钥一旦丢失,已上传文件将永久无法解密,请务必备份。
2️⃣ 安装 Docker 和 Docker Compose
如果你的服务器尚未安装 Docker,请执行以下命令一键安装:
# 安装 Docker(官方脚本) |
💡 如果系统提示 docker: command not found,请重启服务器或重新登录终端。
3️⃣ 配置 Supabase 云数据库
3.1 创建 Supabase 项目
- 登录 Supabase,点击 “New project”。
- 填写项目名称、数据库密码(记住此密码),选择免费区域(建议选择离你较近的区域)。
- 等待 2-3 分钟完成数据库初始化。
3.2 启用 pgroonga 扩展
Teldrive 需要全文搜索扩展 pgroonga。在 Supabase 的 SQL Editor 中执行:
CREATE EXTENSION IF NOT EXISTS pgroonga; |
进入项目后,点击左侧 SQL Editor → New query,粘贴上述 SQL 并运行。
3.3 获取数据库连接字符串
- 在 Supabase 项目仪表盘,点击左侧 Settings → Database。
- 找到 Connection string 部分,选择 Transaction Pooler 模式(端口
5432)。 - 复制连接字符串,格式类似:
postgresql://postgres:[YOUR-PASSWORD]@db.[ref].supabase.co:5432/postgres - 注意:请将密码中的特殊字符进行 URL 编码(例如
@替换为%40,#替换为%23)。
📌 保存好这个连接字符串,稍后将填入 Teldrive 配置文件。
4️⃣ 准备 Teldrive 配置文件
创建存放配置的目录并生成随机密钥。
# 创建工作目录 |
将输出的两串字符保存好。
4.1 创建 config.toml
nano config.toml |
详细配置可看
粘贴以下内容,并根据你的信息替换相应字段:
# 数据库配置(使用 Supabase 连接字符串) |
💡 注意:allowed-users 中是 Telegram 用户名(不是昵称),如果未设置请先去 Telegram 设置中添加。app-id 是纯数字,不要加引号;app-hash 和 encryption-key 需要用双引号包裹。
5️⃣ 编写 Docker Compose 文件
在同一目录下创建 docker-compose.yml:
nano docker-compose.yml |
粘贴以下内容:
services: |
📌 如果你希望使用其他端口,可以修改左侧的 8080,例如 "8081:8080"。
6️⃣ 启动 Teldrive 容器
# 创建空的 storage.db(如果容器需要) |
如果没有错误,Teldrive 将在后台运行,监听 8080 端口。
7️⃣ 首次登录与配置
7.1 访问 Web 界面
浏览器打开:http://你的服务器IP:8080
7.2 登录 Telegram
- 推荐方式:使用 Telegram 手机/桌面 App 扫描页面二维码,一键授权。
- 备选方式:点击 “Login using phone number”,输入
api_id和api_hash(如果配置文件中已填写,此步可跳过),然后输入手机号和验证码。
如果收不到验证码,请检查 Telegram App 中 “Telegram” 官方聊天窗口,验证码通常通过 App 内消息发送。
7.3 配置存储频道
- 登录后点击右上角 齿轮图标(设置)。
- 找到 Channel 或 Storage 部分。
- 点击 Refresh Channels 拉取你管理的频道列表。
- 选择你创建的私有频道(需要是管理员)。
- 点击 Save 保存。
7.4 开始上传文件
返回首页,点击上传按钮或拖拽文件到页面,文件将通过你的 Telegram 账号存入频道。
8️⃣ 常见问题排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
docker compose: command not found |
未安装 Docker Compose 插件 | 运行 sudo apt install docker-compose-plugin 或使用独立命令 docker-compose up -d |
| 容器启动后立即退出 | 配置文件错误或数据库连接失败 | 执行 docker compose logs 查看详细错误;检查 config.toml 中的数据库连接字符串是否正确 |
启动日志显示 connection refused或超时 |
Supabase 连接字符串错误或服务器无法访问外网 | 确认连接字符串中的密码已 URL 编码;检查服务器是否能 ping 通 db.xxx.supabase.co |
日志提示 extension "pgroonga" is not installed |
Supabase 数据库中未启用 pgroonga 扩展 | 在 Supabase SQL Editor 中执行 CREATE EXTENSION IF NOT EXISTS pgroonga; |
浏览器访问 8080 无响应 |
防火墙未放行端口 | 执行 ufw allow 8080 或 iptables -I INPUT -p tcp --dport 8080 -j ACCEPT |
Web 登录提示 API_ID or API_HASH invalid |
配置文件中的 app-id 或 app-hash 错误 |
检查 app-id 是否为纯数字无引号,app-hash 是否为带双引号的字符串;重新从 my.telegram.org 复制 |
| 登录成功但频道列表为空 | Telegram 账号不是任何私有频道的管理员 | 确保已创建私有频道并设为管理员;点击 “Refresh Channels” 强制刷新 |
上传文件失败,日志显示 FLOOD_WAIT |
触发 Telegram 频率限制 | 减少上传频率,等待一段时间后再试;避免短时间内大量上传 |
| 文件上传后无法下载或显示损坏 | 加密密钥 encryption-key 与上传时不匹配 |
请勿更改 encryption-key,恢复原密钥;务必备份配置文件 |
| 忘记 JWT 密钥或加密密钥 | 配置文件丢失 | 密钥无法恢复,已上传文件将永久损坏,请务必提前备份 config.toml |
9️⃣ 更新 Teldrive
cd ~/teldrive |
🔟 备份与恢复
10.1 备份配置文件
cp ~/teldrive/config.toml ~/teldrive/config.toml.bak |
10.2 备份 Supabase 数据库
Supabase 提供自动备份,你也可以手动导出:
pg_dump -h db.你的项目ref.supabase.co -U postgres -d postgres > teldrive_backup.sql |
恢复时:
psql -h db.你的项目ref.supabase.co -U postgres -d postgres < teldrive_backup.sql |
10.3 备份加密密钥
🔐 请务必将 config.toml 中的 encryption-key 和 secret 抄写或保存到密码管理器,一旦丢失将无法恢复已上传的文件!
二进制文件 + 本地 PostgreSQL 版
1️⃣ 准备工作
开始之前,请确认已经准备好以下项目:
| 项目 | 说明 |
|---|---|
| Linux 服务器 | 本教程基于 Debian/Ubuntu,其他发行版请自行调整命令 |
| Telegram 账号 | 用于登录和存储文件 |
| 私有 Telegram 频道 | 需要你的账号是频道的管理员,且频道必须为私有 |
| Telegram API ID / Hash | 前往 my.telegram.org/apps 申请并保存好 |
| 服务器端口开放 | Teldrive 默认使用 8080 端口,需放行防火墙(例如 ufw allow 8080) |
⚠️ 重要提醒:请合理使用 Telegram API,避免大量上传违规或垃圾文件,否则可能导致账号被封禁。加密密钥一旦丢失,已上传文件将永久无法解密,请务必备份。
2️⃣ 安装 PostgreSQL 并启用 pgroonga 扩展
2.1 安装 PostgreSQL
# 更新软件包列表 |
2.2 安装 pgroonga 全文搜索扩展
# 添加 Groonga 官方 APT 仓库 |
2.3 创建数据库和用户
# 切换到 postgres 系统用户 |
在 psql 命令行中依次执行以下 SQL:
-- 创建数据库用户(请将 'your_strong_password' 替换为强密码) |
2.4 测试数据库连接
psql -U teldrive -h localhost -d teldrive -W |
输入密码后能进入 psql 提示符即表示成功。
3️⃣ 下载并配置 Teldrive 二进制文件
3.1 下载 Teldrive
访问 Teldrive Releases 页面,找到最新版本,下载 Linux x86_64 压缩包。
# 创建专用目录 |
3.2 生成随机密钥
Teldrive 需要 JWT 密钥 和 文件加密密钥,使用 openssl 生成:
# 生成 JWT 密钥 |
将输出的两串字符分别保存为 JWT_SECRET 和 ENCRYPTION_KEY。
3.3 创建配置文件 config.toml
nano ~/teldrive/config.toml |
粘贴以下内容并根据实际情况修改:
# 数据库配置 |
💡 注意:allowed-users 中的用户名是你登录 Telegram 时的用户名(不是昵称),如果未设置请先去 Telegram 设置中添加。app-id 是纯数字,app-hash 是带引号的字符串。
3.4 测试运行
cd ~/teldrive |
如果没有错误输出,会显示类似 Listening on :8080 的信息。按 Ctrl+C 停止,然后进入后台运行。
4️⃣ 后台运行 Teldrive(systemd 服务,推荐)
创建 systemd 服务文件:
sudo nano /etc/systemd/system/teldrive.service |
粘贴以下内容(注意根据实际路径修改):
[Unit] |
启用并启动服务:
sudo systemctl daemon-reload |
💡 备用方案:如果不想用 systemd,也可以使用 nohup 简单后台运行:nohup ./teldrive --config config.toml > teldrive.log 2>&1 &
5️⃣ 首次登录与配置
5.1 访问 Web 界面
浏览器打开:http://你的服务器IP:8080
5.2 登录 Telegram
- 方式一(推荐):使用 Telegram 手机/桌面 App 扫描页面二维码,一键授权。
- 方式二:点击 “Login using phone number”,输入
api_id和api_hash(若配置文件已填则跳过),然后输入手机号和验证码。
如果收不到验证码,请检查 Telegram App 中 “Telegram” 官方聊天窗口,验证码通常通过 App 内消息发送。
5.3 配置存储频道
- 登录后点击右上角 齿轮图标(设置)。
- 找到 Channel 或 Storage 部分。
- 点击 Refresh Channels 拉取你管理的频道列表。
- 选择你创建的私有频道(需要是管理员)。
- 点击 Save 保存。
5.4 开始上传文件
返回首页,点击上传按钮或拖拽文件到页面,文件将通过你的 Telegram 账号存入频道。
6️⃣ 常见问题排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
启动时报 dial tcp 127.0.0.1:5432: connect: connection refused |
PostgreSQL 未启动或配置错误 | systemctl start postgresql;检查 config.toml 中的数据库连接字符串 |
启动时报 extension "pgroonga" is not installed |
数据库未启用 pgroonga 扩展 | 以 teldrive 用户连接数据库,执行 CREATE EXTENSION IF NOT EXISTS pgroonga; |
浏览器访问 8080 无响应 |
防火墙未放行端口 | ufw allow 8080 或 iptables -I INPUT -p tcp --dport 8080 -j ACCEPT |
Web 登录提示 API_ID or API_HASH invalid |
配置文件中 app-id 或 app-hash 错误 |
检查 app-id 为纯数字无引号,app-hash 为带双引号的字符串;重新从 my.telegram.org 复制 |
| 登录成功但频道列表为空 | Telegram 账号不是任何私有频道的管理员 | 确保已创建私有频道并设为管理员;点击 “Refresh Channels” 强制刷新 |
上传文件失败,日志显示 FLOOD_WAIT |
触发 Telegram 频率限制 | 减少上传频率,等待一段时间后再试;避免短时间内大量上传 |
| 文件上传后无法下载或损坏 | 加密密钥 encryption-key与上传时不匹配 |
请勿更改 encryption-key,恢复原密钥;务必备份配置文件 |
| 忘记 JWT 密钥或加密密钥 | 配置文件丢失 | 密钥无法恢复,已上传文件永久损坏,请务必提前备份 config.toml |
7️⃣ 更新 Teldrive
cd ~/teldrive |
8️⃣ 备份与恢复
8.1 备份配置文件
cp ~/teldrive/config.toml ~/teldrive/config.toml.bak |
8.2 备份数据库
pg_dump -U teldrive -h localhost teldrive > teldrive_backup.sql |
恢复数据库:
psql -U teldrive -h localhost -d teldrive < teldrive_backup.sql |
8.3 备份加密密钥
🔐 请务必将 config.toml 中的 encryption-key 和 secret 抄写或保存到密码管理器,一旦丢失将无法恢复已上传的文件!
config.toml 详细字段说明
# [cache] - 缓存配置 |
🎉 恭喜!你已经完成了 Teldrive 的完整搭建。现在可以把它作为私有云盘使用,文件存储在 Telegram 频道中。请遵守 Telegram 服务条款,合理使用。
更多帮助请参考 Teldrive 官方文档。


