自架的檔案分享服務

上傳檔案,拿到連結和 QR code,交給對方。對方在分享過期或下載次數用完之前都能取件。整個服務是一個 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. 上傳完成的畫面:QR code、連結和分享設定

    2交給對方

    上傳完會拿到連結和 QR code。連結最後的 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

    找密碼

    第一次啟動會在 log 印出產生的管理員密碼,只印這一次。

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

    登入

    打開 12923 port,用 admin 登入並設新密碼。其他設定都在管理後台。

    http://localhost:12923