开始
跑起来,然后登录
tessera 是一个自建的文件传递工具。上传一个文件,拿到一组取件码,把码给对方。

上传页:拖放文件、粘贴文字或加一条链接

上传后:链接、二维码、期限
跑起来
拉镜像
docker pull ghcr.io/limatura/tessera:latest:latest 是最新的 release,:sha-<commit> 钉住某一次构建。amd64 和 arm64 都有出,所以 Pi 和 NAS 跑得起来。
要自己构建的话,docker build -f apps/server/Dockerfile -t tessera . 会连前端一起编进去。
跑起来
docker run -p 12923:12923 -v tessera-data:/data ghcr.io/limatura/tessera:latest数据放在名为 tessera-data 的 named volume。Docker 第一次运行时会自动创建,服务器也已经有写入权限。想把数据放在自己指定的目录,请用 Docker Compose 标签页。
从日志里拿管理员密码
镜像的日志是 JSON,一行一个对象。用这个找出来:
docker logs <container> 2>&1 | grep password用 Compose 的话,改运行 docker compose logs tessera 2>&1 | grep password。
那一行长这样:
{
"timestamp": "…",
"level": "WARN",
"message": "created the first administrator with a generated password; sign in and change it",
"username": "admin",
"password": "1e3bc629…",
"target": "tessera_server::auth::bootstrap"
}这行只打印一次
之后重启不会再打印。错过的话用 reset-password
再设一次。
登录,然后换掉密码
系统会一直挡着你,直到换掉为止。
不用 Docker
每个发布版也附了单独的服务器可执行文件,有 Linux(x86_64 和 arm64,静态链接,哪个发行版都能跑)和 macOS(Intel 和 Apple Silicon)的版本。没有 Windows 版,Windows 上请用 Docker。网页界面已经编译进去了,所以这一个文件就是整台机器。
curl -fsSL https://github.com/Limatura/tessera/releases/latest/download/tessera-server-linux-x86_64.tar.gz | tar -xz
./tessera-server这样直接跑,和镜像有三个地方不一样:
- 它监听
127.0.0.1:12923,只有这台电脑连得到。请在前面放反向代理,或设TESSERA_SERVER__HOST=0.0.0.0。 - 数据放在你启动它的目录下面的
data/。 - 日志是纯文本,管理员密码在结尾是
username=admin password=…的那一行。
要把数据放在别的地方,这两个都要设:
TESSERA_SERVER__DATA_DIR=/var/lib/tessera \
TESSERA_DATABASE__URL=sqlite:///var/lib/tessera/tessera.db \
./tessera-server数据库不会跟着数据目录走
只设 TESSERA_SERVER__DATA_DIR 的话,数据库还是在启动位置下面的 data/tessera.db。tessera-server reset-password 这类管理命令读的是同一套设置,所以要带同样的变量、在同一个目录执行。不然它们动到的会是另一个空的数据库。
/data 里有什么
blobs 是上传的文件本体,直到你加了别的地方放文件为止。secret.key 用来加密存在数据库里的凭证:存储 backend 的地址、发信密码、第三方登录的 secret。
secret.key 要跟数据库一起备份
没有它还原回来的数据库照样开得起来,但里面每一个封起来的凭证都读不出来,要全部重新输入。见配置。
配置不在卷里。它们来自环境变量,以及同一个网址的 /admin/ 后台。
/data 挂出来的话,容器一重建东西就没了。