0 前言两个月前偶然间看到telegram团队做了一个网盘叫teldrive，据说是可以无限存储的网盘，且可以webdav挂载到本地，于是部署到了服务器上，但当时没有写博客记录，最近空闲了决定补一下博客。1 teldrive介绍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.ymlvim 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，可以看作是ip5432则是端口，这里是默认没有改/teldrive代表访问的数据库是teldrive其实就是数据库的标准url访问i形式://:@:<port(optional)>/<database_name>顺带一提halo博客用的springboot，链接mysql的话也一个格式mysql://twoonefour:xxx@127.0.0.1/halo题外话扯远了，配置完docker-compose.yml后，这里还需要一个session.db文件，创建一下就可以开启容器了touch session.dbdocker-compose up -d之后可以尝试访问http://localhost:8080对接rclone使用webdavrclone是一个开源的用于挂载盘到本地的一个开源软件github仓库地址但这里teldrive是不能使用开源的rclone的，坑死我了teldrive需要使用telegram团队魔改的版本需要使用魔改版本需要使用魔改版本魔改teldrive 仓库地址直接从release下载下来即可使用下载完以后创建文件配置，位于~/.config/rclone/rclone.conf[teldrive]type = teldriveapi_host = http://localhost:8080 # default hostaccess_token = #session token obtained from cookieschunk_size = 500Mupload_concurrency = 4encrypt_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_tokenuser-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我这里给出我的方案，我是使用的systemdvim /usr/lib/systemd/system/rclone.service填入以下内容[Unit]Description=Rclone webdavAfter=network.target[Service]User=rootNice=1RestartSec=5Restart=alwaysSuccessExitStatus=0 1ExecStart=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-reloadsystemctl start rclone之后就能同普通文件夹一样，访问/volume3就是访问远程，使用cp命令，mv命令都可以，看你的脑洞要如何运用了顺带一提我的nas就是整个备份到了teldrive里，可以看到我已经用了1T空间了.原文地址 原文地址 至此搭建结束，enjoy