管理
邀請碼、角色、停權,以及實例統計怎麼讀
後台在同一個網址的 /admin/,跟主程式編在同一個執行檔裡。管一台機器是四件事:決定誰進得來、決定他們能做什麼、看著存了些什麼,以及出事的時候介入。每一件都是一個權限。
features.admin 關掉的話,這裡每一條都回 404
不是 403。關掉的功能是這台機器沒有的東西,所以回的跟一個不存在的路徑一樣。

權限與角色
權限是一個 resource:verb 字串。會伸到持有者自己東西以外的,會被標成 privileged。
| 權限 | 管到 |
|---|---|
shares:create、shares:read、shares:delete | 自己的分享 |
tokens:manage | 自己的 API 權杖 |
shares:read:any、shares:delete:any | 這台機器上的每一份分享 |
users:read、users:write、users:delete | 帳號 |
invites:read、invites:create、invites:delete | 邀請碼 |
roles:read、roles:write | 角色和誰持有 |
stats:read | 實例統計 |
內建四個角色:owner 全部都有,admin 除了 users:delete、shares:delete:any、roles:write 以外都有,member 有那四個管自己東西的,guest 一個都沒有。
guest 是給「要人先註冊,再由人工放行」的機器用的。把 auth.default_role 指到它,新帳號在被指派角色之前什麼都做不了。
自己開一個
一個角色是一個名字、一段說明、一份權限清單,加上兩個上限:屬於它的人總共能存多少、單一檔案最大多大。你可以自己建、改它能做什麼,也可以刪掉。
內建角色不能改也不能刪
改它們的權限會回 409,訊息叫你去看 auth.default_role。自己開一個角色,讓新帳號進那個。
一個帳號剛好在一個角色裡。指派一個新的就是換掉原本那個。
內建四個是層層包含的:guest 什麼都不能做,member 能做的是 admin 扣掉管理的部分,owner 能做 admin 的全部再加上更多。所以一個就夠了。
邀請碼
只有 auth.registration 是 invite 的時候才會看。open 不理它,closed 則是誰都註冊不了。
一組碼有可用次數、選填的期限,和一段備註,讓一整串碼看得出誰是誰。沒設期限的話,它會活到用完或被撤銷為止。在只收邀請的機器上不帶碼註冊,會被拒絕並告訴對方需要邀請碼。
碼只回來一次
碼本身不會被存下來,只留一段拿來核對的指紋。沒抄下來的只能撤銷掉再開一個。
清單會顯示每一組碼用掉幾次、還能不能用。撤銷一組不會影響已經用它建好的帳號。
命令列也能開:tessera-server invite。-n 是能用幾次,預設 1;-d 是幾天後過期,不填就不過期;--note 是備註。碼只會印出來一次。
tessera-server invite -n 5 -d 7 --note "book club"帳號
帳號可以停權,也可以放回來。
- 停權是讓那個人登不進來。他的分享會繼續送,因為拿著那些連結的人沒有做錯什麼。
- 要連內容一起停,就去停那些分享本身。
弄丟驗證器的人,可以在這裡幫他關掉兩步驟驗證。使用者清單會顯示誰開了。
刪掉帳號會洗乾淨它的紀錄,但不會動他上傳的東西。結束某個人的分享是另一個動作,而且會回報結束了幾份。兩種情況各留下什麼,見你的資料在哪裡。
最後一個管理員拿不掉
刪掉、降權,或是把改角色的權限從唯一持有它的帳號上拿走,都會被擋。對自己做也一樣。
分享
這台機器上的每一份分享都列得出來,新的在前,附上是誰上傳的、送出去多少,以及被停用的話原因是什麼:管理員停的,或是掃毒找到了什麼。任何一份都刪得掉。
shares:delete:any 是唯一碰得到「上傳者已經不在」那些分享的方法,因為一般的刪除看的是擁有權,而被刪掉的帳號什麼都不擁有。
設定
每一個設定都列得出現在生效的值,以及那個值是哪一層給的。只能走環境變數的那些會明講,不會在你試著改的時候默默失敗。
會丟掉東西的改動要確認過才做得下去,而且可以先問它會毀掉什麼再決定。
哪些設定只能走環境變數,見設定。
存取紀錄
share.access_log.enabled 預設關。打開之後每一次把內容交出去都會被記下來,持有 shares:read:any 的人可以按分享去讀。
上傳者讀不到。
一列裡有什麼、留多久,見你的資料在哪裡。
儲存 backend
放檔案的地方在這裡管:加一個、刪一個、選哪一個收新的上傳。每一個有名字、位址、選填的容量上限、一個唯讀開關,以及能不能讓瀏覽器直接連過去。
每一個也會顯示上一次呼叫有沒有回應,沒有的話原因是什麼。上傳和下載會一直更新這個狀態,閒著的每 15 分鐘檢查一次,失敗中的每 5 分鐘一次。不回應的 backend 其他地方看起來都正常,只有存在上面的分享會失敗。
位址存之前會先封起來而且讀不回來,因為它帶著憑證,而 backend 清單正是那種會被貼進求助討論串的東西。
檔案怎麼挑一個,見檔案放在哪裡。
站名和外觀
首頁和連結預覽上顯示的標題、描述,以及這台機器的預設語言,都在這裡設。
連結預覽用這個語言寫,因為聊天軟體抓連結時,不會說是誰要看。瀏覽器要的語言不是英文、日文、繁體中文或簡體中文的訪客,網站也會用這個語言打開。沒改之前是英文。
之後再改,只會影響新的訪客。第一次來的時候,語言就存進 cookie 了,之後一律以 cookie 為準。
預設的外觀也是:淺色、深色或跟隨系統,一個主題,一個強調色。每個人可以在自己的設定裡選自己的;預設的就是其他人看到的。
測速
預設關。speed.enabled 會加一個頁面,用不落地的拋棄式資料來回傳送,量訪客跟這台機器之間的線路。
| 設定 | 預設 | |
|---|---|---|
speed.enabled | 關 | |
speed.anonymous | 關 | 只有登入的人能測 |
speed.max_bytes | 25 MiB | 一次最多送或收多少 |
每個來源一小時可以測五次,上傳和下載算在一起。關掉的時候,或是不開放給匿名訪客的時候,對他們來說這個功能就像不存在。
實例統計
這台機器會回報:
| 欄位 | 是什麼 |
|---|---|
accounts、administrators | 有幾個帳號,其中幾個在管理 |
shares 對 live_shares | 總共握有幾份,對上訪客現在還打得開幾份 |
stored_bytes | 還在儲存上的上傳內容 |
quota_bytes | storage.max_total_bytes 的上限,沒設就是 null |
live_invites | 還能讓人進來的碼 |
bytes_served | 這台伺服器送出去多少 |
bytes_redirected | 有多少是讓瀏覽器直接去 bucket 拿的 |
stored_bytes、shares、live_shares、bytes_served 每天會存一份快照,留一年,讓後台畫得出儲存空間的變化。伺服器整天沒開的日子沒有快照,不會補成 0;歷史從有這個功能的那一版開始。
shares 和 live_shares 差很多,代表掃描沒跟上,或是保存期比你以為的長。
quota_bytes 是 null 代表沒有人設過
在一台收匿名上傳的機器上,這個組合就是啟動時那句警告在講的事。見設定。