0 前言
两个月前偶然间看到telegram团队做了一个网盘叫teldrive,据说是可以无限存储的网盘,且可以webdav挂载到本地,于是部署到了服务器上,但当时没有写博客记录,最近空闲了决定补一下博客。
1 teldrive介绍
teldrive是一个通过telegram账号登陆后存储到私人账户空间的一个网盘空间,类似于google drive和onedrive
特点如下
数据很安全,官方保证存储数据不会丢失
可以webdav挂载到本地
无限容量
上传下载速度取决于你的服务器链接至telgram服务器的速度
缺点是无法直链共享,共享需要走自己的服务器流量
这里可以看到这个url指向本地ip,需要公网环境才可以共享
2 部署teldrive
根据teldrive官方仓库的指引即可
本文采取docker-compose部署的方式
填写配置信息
首先创建并填写config.toml
创建config,
根据提示填写数据库地址,secret即可
数据库地址比较容易理解,secret则是可以通过openssl rand -hex 64生成,或者通过官方的vercel app链接一键获取
这里可能会比较疑惑的是app-id和app-hash
其实app-id和app-hash是telegram的api相关密钥
telegram 获取api密钥
根据英文指引即可获得,这里不再赘述
特别提示:如果你部署在国内本地服务器,那你需要在[tg]下添加proxy选项
最终我的配置是这样的
[db]
data-source = "postgres://postgres:xxx@postgres_db:5432/teldrive"
[jwt]
secret = "xxxxxxx"
[tg]
app-id = "xxxx"
app-hash = "xxxxxxxxxxxxxxxxxxxxxxxx"
proxy = "http://192.168.50.171:10809"
填写docker-compose
我的docker-compose.yml经供参考
在同一文件夹下创建docker-compose.yml
vim docker-compose.yml
填入如下内容
services:
teldrive:
image: ghcr.io/tgdrive/teldrive
restart: always
container_name: teldrive
ports:
- '8080:8080'
volumes:
- ./config.toml:/config.toml
- ./session.db:/session.db
networks:
- teldrive
postgres_db:
image: ghcr.io/tgdrive/postgres:17-alpine
container_name: postgres_db
restart: always
networks:
- teldrive
environment:
- POSTGRES_PASSWORD=xxxxxxxxx
- POSTGRES_DB=teldrive
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:
networks:
teldrive:
external: true
注意这里POSTGRES_DB和POSTGRES_PASSWORD环境信息需要修改为同刚才config.toml相同的配置,如我的配置
[db]
data-source = "postgres://postgres:xxx@postgres_db:5432/teldrive"
这里
postgres://代表协议对接postgresql数据库
冒号前则是用户名
冒号后面的xxx则是密码
@后面就是访问终结点,postgres_db,可以看作是ip
5432则是端口,这里是默认没有改
/teldrive代表访问的数据库是teldrive
其实就是数据库的标准url访问i形式
顺带一提halo博客用的springboot,链接mysql的话也一个格式
mysql://twoonefour:[email protected]/halo
题外话扯远了,配置完docker-compose.yml后,这里还需要一个session.db文件,创建一下就可以开启容器了
touch session.db
docker-compose up -d
之后可以尝试访问
对接rclone使用webdav
rclone是一个开源的用于挂载盘到本地的一个开源软件
github仓库地址
但这里teldrive是不能使用开源的rclone的,坑死我了
teldrive需要使用telegram团队魔改的版本
需要使用魔改版本
需要使用魔改版本
魔改teldrive 仓库地址
直接从release下载下来即可使用
下载完以后创建文件配置,位于~/.config/rclone/rclone.conf
[teldrive]
type = teldrive
api_host = http://localhost:8080 # default host
access_token = #session token obtained from cookies
chunk_size = 500M
upload_concurrency = 4
encrypt_files = false # Enable this to encrypt files make sure encryption key is not empty in teldrive config file.
random_chunk_name= true # Use random chunk names when uploading files to channel instead of original filename.
需要动脑筋的是access_token,在teldrive登陆以后,在控制台cookie中获取
user-session就是access_token
user-session就是access_token
复制这个值填上就可以了
其他的根据需要填写
填完以后就可以运行了,我的命令示例如下
rclone mount teldrive:/ /volume3 \
--vfs-cache-mode full \
--vfs-cache-max-age 72h \
--vfs-cache-poll-interval 5m \
--vfs-cache-max-size 15G \
--dir-cache-time 200h \
--cache-dir /opt/rclonecache
这里我是挂载到/volume3下的
其他参数请看文档rclone文档
自动挂载请参照官方文档自动挂载 rclone-as-unix-mount-helper
我这里给出我的方案,我是使用的systemd
vim /usr/lib/systemd/system/rclone.service
填入以下内容
[Unit]
Description=Rclone webdav
After=network.target
[Service]
User=root
Nice=1
RestartSec=5
Restart=always
SuccessExitStatus=0 1
ExecStart=rclone mount teldrive:/ /volume3 --vfs-cache-mode full --vfs-cache-max-age 72h --vfs-cache-poll-interval 5m --vfs-cache-max-size 15G --dir-cache-time 200h --cache-dir /opt/rclonecache
[Install]
WantedBy=multi-user.target
接着素质二连即可启动
systemctl daemon-reload
systemctl start rclone
之后就能同普通文件夹一样,访问/volume3就是访问远程,使用cp命令,mv命令都可以,看你的脑洞要如何运用了
顺带一提我的nas就是整个备份到了teldrive里,可以看到我已经用了1T空间了.
原文地址 原文地址
至此搭建结束,enjoy
评论 (0)