为了将Telegram转变为一个无限的网盘资源,便发现了 TG-FileStreamBot 项目,这是一个可以将Telegram作为文件流媒体服务器的工具。尽管在部署过程中遇到了一些障碍,但通过一系列的调试终得到了解决。
部署经历
-
构建步骤:
我从 GitHub 克隆了 TG-FileStreamBot 的仓库,并对 docker-compose.yml 文件进行了必要的调整。这里需要注意的是,我只修改了宿主机的端口映射,而容器内的端口并未修改。其余配置项则严格遵照官方文档进行设置。
git clone https://github.com/EverythingSuckz/TG-FileStreamBot
cd TG-FileStreamBot
docker-compose up -d
调整 docker-compose.yml
文件内容。
services:
fsb:
build: .
restart: unless-stopped
container_name: fsb
environment:
# required
- API_ID=1234567 # change this to your ID
- API_HASH=4ab169c0909090904c44e558361e062f # change this to your HASH
- BOT_TOKEN=987783:AAHW7r_AV9a9BdkskdksixslpOeep6kfkV2lkjI # enter your bot token
- BIN_CHANNEL=-6915 # paste channel ID
- FQDN=example.com
- PORT=8038
- NO_PORT=true
- HAS_SSL=true
ports:
- 8038:8080
volumes:
- $HOME/TG-FileStreamBot:/app/.env
使用Docker Compose成功构建项目后,没有收到任何错误提示。
-
测试与问题排查:
通过Telegram Bot发送文件后,我可以成功接收文件并获得返回的文件链接。然而,在尝试访问这些文件时,我遭遇了502错误。
我立即返回到终端进行排查。使用
docker ps -a
确认容器运行无异常后,我尝试了curl http://localhost:8038
,结果显示curl: (52) Empty reply from server
,表明服务器没有响应。
进一步深入容器内部排查,我发现即使在容器内部执行 curl
命令也出现相同的错误。通过执行 netstat -tuln
,我注意到8038端口已被占用。
-
问题解决:
经过查看docker-compose.yml文件,我意识到我需要调整容器和宿主机之间的端口映射。我将文件中的映射从8038:8080更改为8038:8038,并重新部署了服务。
修改后的docker-compose.yml配置如下:
services:
fsb:
build: .
restart: unless-stopped
container_name: fsb
environment:
# required
- API_ID=1234567 # change this to your ID
- API_HASH=4ab169c0909090904c44e558361e062f # change this to your HASH
- BOT_TOKEN=987783:AAHW7r_AV9a9BdkskdksixslpOeep6kfkV2lkjI # enter your bot token
- BIN_CHANNEL=-6915 # paste channel ID
- FQDN=example.com
- PORT=8038
- NO_PORT=true
- HAS_SSL=true
ports:
- 8038:8038
volumes:
- $HOME/TG-FileStreamBot:/app/.env
重新部署后,系统恢复正常运行,问题得到了解决。
血泪教训:不仔细阅读文档掉进坑里,终究需要花费不少时间去填平。