leonardoaguiar.com Nós
語言

Nós

Nós 是一款不需要伺服器的通訊 App,支援 Android 和 iPhone。聊天、群組、照片、語音訊息、檔案和通話都採用端對端加密,經由節點上的信箱傳遞,而節點任何人都能架設,包括你自己的電腦。不需要電話號碼、不需要帳號,中間也沒有任何公司。「Nós」在葡萄牙文中同時是「我們」和「節點」的意思:指的是人,以及他們共同組成的網路。

Chats 標籤頁

開始使用

第一個畫面提供 Create account(建立帳號)、Import account(輸入帳號)和 Explore without account(不建立帳號先逛逛)。

底部的標籤頁有 Chats(聊天)、Calls(通話)、Contacts(聯絡人)和 Settings(設定)。

加入聯絡人

沒有人能用電話號碼或名稱找到你。別人要透過你的名片才能聯絡你,而名片要給誰由你決定。

請求

透過金鑰找到你,或經由介紹的人,會出現在 Requests(請求)中(Chats 和 Contacts 上會有橫幅)。在你點 Accept(接受)之前,他們無法傳訊息給你。Ignore(忽略)會忘掉他們;Block(封鎖)還會在你的信箱擋下他們。

聊天

列表會顯示每個聊天的最後一則訊息、時間、送達勾號、輸入中狀態、草稿和未讀數量。可用 All(全部)、Unread(未讀)、Groups(群組)和 Archive(封存)篩選;搜尋欄位可依名稱和內文篩選。按住某個聊天(或按右鍵)可 Pin(置頂)、Mute(靜音)、Mark as read(標示為已讀)、Archive(封存)或 Delete chat(刪除聊天)。+ 會打開 Add a contact(加入聯絡人)、Message a contact(傳訊息給聯絡人)、New group(新增群組)和 Notes to self(給自己的筆記,會與你的其他裝置同步)。

一段對話

訊息

送達狀態

標記意思
時鐘正在這支手機上等待(沒有連線,或沒有任何信箱回應)。它會自動送出。
一個勾號已在對方的某個信箱中,會在那裡等到對方的手機取走它。
兩個勾號對方的裝置已收到並解密。
兩個藍色勾號對方已讀取(如果雙方都打開了已讀回條)。
警告未送達(被封鎖,或無法聯絡到對方)。Info › Send again(再傳送一次)會重試。

訊息的 Info 會告訴你它何時寫成、何時送到信箱、何時送達和何時被讀取;在群組中,還會告訴你誰收到、誰讀了。

自動消失的訊息

在聊天的詳細資訊中,Disappearing messages(自動消失的訊息:1 小時、24 小時、7 天、90 天或 Off 關閉)會讓新訊息在這段時間後從雙方的手機上消失。Privacy › Disappearing messages 可設定新聊天的計時。

群組

New group 需要一個名稱、選填的圖片,以及要加入的聯絡人(最多 64 位成員)。沒有任何伺服器保存群組:每位成員都保存一份由管理員簽署的成員清單,每則訊息都以傳送者的金鑰加密一次,再送到每位成員的信箱。

一個群組

通話

聯絡人聊天中的電話和攝影機按鈕可開始語音或視訊通話。通話直接在兩台裝置之間進行(WebRTC),並經過加密;訊號傳遞則以一分鐘後就失效的小信封傳送。通話中有:Mute(靜音)、Camera(打開或關閉視訊)、Flip(切換鏡頭)和 End(結束)。來電會顯示 Accept(接聽)和 Decline(拒絕)。

通話沒有中繼:當兩邊的網路無法建立直接的路徑時,通話就無法接通,App 會顯示「Couldn't connect directly」(無法直接連線)。Calls 標籤頁會列出你的通話;點電話圖像即可回撥。

聯絡人

列表會顯示你的聯絡人及其使用者名稱、Online(上線中,若對方有分享),以及你的群組。聯絡人的詳細資訊中有 Message(傳訊息)、Call(語音通話)、Video(視訊)、Verify safety number(驗證安全碼)、Nickname(暱稱,只有你看得到)、媒體、自動消失的訊息、Mute(靜音)、Introduce to someone(介紹給某人)、對方的 Devices(裝置)、Block(封鎖)、Clear chat(清除聊天)和 Remove contact(移除聯絡人)。

安全碼

每一對聯絡人共用一組 60 位數的安全碼。你可以當面或在通話中比對,或用 Scan their code 掃描對方手機上的條碼:如果相符,就把對方標示為 Verified(已驗證,名稱旁會有一個標記)。

封鎖

Block 會取消你在所有信箱上給那個人的郵戳:節點不再接受他的信封。對方不會收到通知。Settings › Privacy › Blocked 會列出被封鎖的人,並可解除封鎖。

通知

Settings › Notifications 有兩種模式:

在 iPhone 上,通知需要先把 App 加入主畫面(Safari › 分享 › 加入主畫面),再點 Turn on notifications(打開通知)。Android App 會在打開時檢查訊息。App 打開時,其他聊天的新訊息會以橫幅顯示。

裝置

Settings › Devices 會列出你的裝置。要加入一台裝置,請在新裝置上打開 Nós,選擇 Import account › Link to my phone(連結到我的手機),為它命名,然後在你的手機上點 Link a device(連結裝置)並掃描它顯示的條碼(或在手機上打開它的連結)。新裝置會取得你的聯絡人和群組,並從那時起收到每一則訊息;之前的訊息仍留在原處。復原短語保留在主要裝置上,裝置的移除也是由主要裝置進行。

網路

Network

節點負責保管信箱:加密的信封會保存在那裡,直到手機把它們取走(最多 30 天)。節點無法讀取信封,也看不到是誰寄的。每個人在不同的節點上最多有三個信箱,都列在他的名片中;一則訊息會送到所有信箱,只要有一次被取走就會清除。

架設你自己的節點

nos-node 可在 macOS 和 Linux(arm64 和 x86_64)上執行:

curl -fsSL https://leonardoaguiar.com/apps/nos/install.sh | sh
nos-node run
nos-node address

nos-node address 會印出一個連結和一個 QR 碼;在 Settings › Network › Add node 中打開它,即可認領這個節點。如果節點在家用路由器後面,請加上 --attach wss://leonardoaguiar.com/_/nos#f4eea0585b7f4cc4ecfab6a76082a724ee42c7b57d462377f6cf8344c785d00a 執行:它會與公共節點保持一條連線,由公共節點把 App 的連線中繼給它,而公共節點除了加密的位元組之外什麼都看不到。在伺服器上,請把它放在 TLS(nginx 或 Caddy)後面,並用 --url wss://… 傳入它的公開地址。--public 也會收容陌生人(需要工作量證明,配額也較小);--stun 0.0.0.0:3478 會為直接通話回應 STUN。節點會把它的金鑰、設定和資料保存在 ~/Library/Application Support/Nos Node(macOS)或 ~/.local/share/nos-node(Linux)。再執行一次安裝指令即可更新它。

備份與復原

Backup and recovery

守護人

Choose guardians(選擇守護人)會把你的短語分給 2 到 7 位聯絡人,由你決定需要其中幾位一起才能把它復原;人數不足時則什麼都不會洩露。每一份都會加密後交給他們。在新手機上,Import account › Ask my guardians(請我的守護人協助)會顯示一個代碼和一個連結,讓你傳給他們;每位守護人在 Nós 中打開它,確認真的是你之後,再送出他們的那一份。收到足夠的份數時,帳號就會回來。People you protect(你守護的人)會列出選擇了你的人。

Reset account(重設帳號)會清除這台裝置。沒有短語或守護人,帳號就無法復原:其他人都沒有它。

設定

頁面內容
Profile大頭貼、顯示名稱、使用者名稱、簡介、強調色、My card。變更會立即傳到你的聯絡人。
Privacy介紹(Contacts 聯絡人或 Nobody 沒有人)、Discoverable by key、聯絡人可以分享你的名片、Invite links、已讀回條、輸入中指示、上線狀態、新聊天的自動消失訊息、Blocked。
NotificationsInstant 或 Pure、顯示傳送者和內文、App 打開時的橫幅。
Chats主題(System 系統、Light 淺色、Dark 深色)、文字大小、Enter sends、封存所有聊天、清除所有聊天。
Storage and data這台裝置上照片、影片、語音訊息和檔案所使用的空間、Manage storage(管理儲存空間);自動下載照片、影片和檔案(Always 一律、Wi-Fi only 僅限 Wi-Fi、Never 永不),以及高畫質照片。
Devices你的裝置、Link a device、Remove(移除)。
Backup and recovery短語、備份、守護人、People you protect、Reset account。
Network連線、你的節點、Add a node。
Advanced你的金鑰(文字和 QR 碼)、這台裝置的金鑰、Publish my card again(重新發布我的名片)、Send waiting messages now(立即傳送等待中的訊息)。

沒有「上次上線時間」:沒有任何節點會保存它。輸入中和上線狀態都是幾秒內就失效的小信封,只傳給你的聯絡人,而且兩者都可以關閉。

協定

安裝與更新

隱私權

Nós 沒有自己的伺服器,也沒有帳號。會離開你裝置的內容:

沒有使用統計資料、不會上傳聯絡人、沒有使用者目錄,也沒有「上次上線時間」。

致謝