自托管的文件分享服务

上传文件,拿到链接和二维码,交给对方。对方在分享过期或下载次数用完之前都能取件。整个服务是一个 Docker 容器,跑在你自己的机器上。

  • AGPL-3.0
  • amd64 · arm64
  • SQLite · PostgreSQL · MySQL
  • S3 · Azure Blob · GCS
第一次启动

docker run -p 12923:12923 -v tessera-data:/data ghcr.io/limatura/tessera:latest

{"level":"WARN","message":"created the first administrator with a generated password; sign in and change it","username":"admin","password":"d8558ce68d08…"}

{"level":"INFO","message":"listening","address":"0.0.0.0:12923"}

# 打开 http://localhost:12923,用上面的密码以 admin 登录。

手机上看到的分享页

分享怎么运作

  1. 上传页

    1上传

    把文件或文件夹拖到页面上。也可以贴一段代码,或缩短一个链接。

  2. 上传完成的画面:二维码、链接和分享设置

    2交给对方

    上传完会拿到链接和二维码。链接最后的 8 个字符就是取件码,短到念得出来。过期时间、阅后即焚和密码当场就能设,之后也能改。

  3. 对方看到的分享页

    3取件

    对方打开链接,或在首页输入取件码。分享过期或次数用完后,链接会显示已失效,文件也会删掉。

其他功能

链接预览

链接贴到聊天软件,会出现服务器画的预览卡。打开预览不会用掉下载次数,加了密码的分享只会显示它上了锁。

文件分享的预览加了密码的分享的预览文字分享的预览

好念的取件码

不分大小写,空格和连字符都不影响。O、I、L 会当成 0、1、1。

密码保护

输入密码之前,看不到文件名和大小。

断点续传

连接断掉的话,上传会从中断的地方接着传。

端到端加密

可选。文件在你的机器上加密后才发出,服务器拿不到密钥。

病毒扫描

可选。上传的文件先交给 ClamAV 或你自己的扫描服务,扫完才能下载。

整台的管理后台

看存了多少、存在哪里,管理账号、邀请码和角色,改配置不用重启。

管理说明
管理后台的仪表盘

文件存在哪里

先用磁盘上的文件夹,需要时再加 bucket。已经存好的文件不会搬动。

磁盘上的文件夹

默认

默认,不用配置。

data/blobs
  • 文件放在你挂载的 volume 里的 /data/blobs
  • 文字分享存在数据库里
  • 备份这个 volume 就全部都在

Bucket

从管理后台添加

磁盘小,或 bucket 比较便宜的时候。

s3://bucket
  • S3 兼容存储、Azure Blob、Google Cloud Storage
  • WebDAV 只适合小文件
  • 每个可以设容量上限,要替换前先设成只读

跨 bucket 分块

默认关闭

给比任何一个 bucket 都大的文件。

  • 五个免费的 10 GB bucket 能放下一个 40 GB 的文件
  • 只有哪里都放不下整个的文件才会被切开
  • 分块的文件下载时经过服务器,两边都会用到流量

REST API

上传页和管理后台用的就是你也能调用的同一套 API。所有接口都在 API 参考里。

API 参考

跑起来

有 Docker 的机器,三步就好。

  1. 1

    启动

    一个容器,/data 挂上 volume,重建容器数据也不会丢。

    $ docker run -d --name tessera \  -p 12923:12923 -v tessera-data:/data \  ghcr.io/limatura/tessera:latest
  2. 2

    找密码

    第一次启动会在日志打印生成的管理员密码,只打印这一次。

    $ docker logs tessera 2>&1 \  | grep password
  3. 3

    登录

    打开 12923 端口,用 admin 登录并设新密码。其他配置都在管理后台。

    http://localhost:12923