器能做什么?)
Turtl Server 完全指南自托管端到端加密筆記同步服務(wù)器能做什么【免費(fèi)下載鏈接】serverThe new Turtl server項(xiàng)目地址: https://gitcode.com/gh_mirrors/server14/serverTurtl Server是一個(gè)基于 Node.js 的免費(fèi)自托管服務(wù)器專為 Turtl 端到端加密筆記客戶端提供賬號(hào)管理、數(shù)據(jù)存儲(chǔ)、多端同步與權(quán)限共享能力。想讓自己的筆記只屬于自己把它部署在自己的機(jī)器上幾行命令即可完成。它是什么為什么值得自托管Turtl 采用**端到端加密E2EE**架構(gòu)筆記內(nèi)容、密鑰都在客戶端加密后才上傳服務(wù)器端只存密文。換句話說(shuō)即便服務(wù)器被入侵你的筆記內(nèi)容也無(wú)法被直接讀出。Turtl Server 本身是一個(gè)輕量的 Express 應(yīng)用默認(rèn)監(jiān)聽(tīng)8181 端口配套 PostgreSQL 數(shù)據(jù)庫(kù)存儲(chǔ)用戶、筆記、空間等元數(shù)據(jù)。項(xiàng)目以 AGPL-3.0 協(xié)議開(kāi)源你可以自由修改、二次分發(fā)許可證見(jiàn) LICENSE。核心能力一覽源自項(xiàng)目說(shuō)明 README.md功能說(shuō)明對(duì)應(yīng)模塊? 賬號(hào)管理注冊(cè)、登錄、郵箱確認(rèn)、注銷controllers/users.js 數(shù)據(jù)存儲(chǔ)筆記、文件附件的托管models/note.js、controllers/files.js 同步增量 / 全量同步多端實(shí)時(shí)一致controllers/sync.js 權(quán)限與共享團(tuán)隊(duì)空間、邀請(qǐng)成員、轉(zhuǎn)讓所有者controllers/spaces.js核心功能拆解同步機(jī)制如何工作同步是自托管筆記服務(wù)器最關(guān)鍵的環(huán)節(jié)。Turtl Server 提供了三種同步端點(diǎn)見(jiàn) controllers/sync.js增量同步GET /sync客戶端帶上上次同步 ID服務(wù)器只返回變化的記錄省電省流量適合輪詢?nèi)客紾ET /sync/full設(shè)備首次登錄或本地?cái)?shù)據(jù)丟失時(shí)一鍵拉取整個(gè)資料庫(kù)批量同步POST /sync客戶端把一批本地變更按順序提交服務(wù)器嚴(yán)格按序應(yīng)用——比如先同步密鑰鏈、再同步板Board這類有先后依賴的操作失敗時(shí)會(huì)返回成功/失敗明細(xì)方便客戶端重試。?默認(rèn)單次批量上限為 32 條記錄config.sync.max_bulk_sync_records防止異常客戶端刷爆服務(wù)器。團(tuán)隊(duì)協(xié)作空間、邀請(qǐng)與文件空間Spaces創(chuàng)建共享空間邀請(qǐng)成員、調(diào)整角色、轉(zhuǎn)讓所有者全部由controllers/spaces.js提供的 REST 接口完成密鑰鏈Keychain共享時(shí)通過(guò)models/keychain.js管理每個(gè)成員持有的解密密鑰保證誰(shuí)能解密密鑰誰(shuí)才能看到內(nèi)容文件附件筆記附件支持本地磁盤或 S3 兼容對(duì)象存儲(chǔ)controllers/files.js通過(guò)流式上傳/下載大文件也不占滿內(nèi)存。最快部署方法Docker Compose 一鍵安裝無(wú)需手動(dòng)裝 Node 和 Postgres官方已提供編排文件 docker-compose.yml1?? 克隆倉(cāng)庫(kù)git clone https://gitcode.com/gh_mirrors/server14/server cd server2?? 一條命令啟動(dòng)同時(shí)拉起 PostgreSQL 11 與服務(wù)器服務(wù)就緒后等待健康檢查通過(guò)docker-compose up? 完成后訪問(wèn)http://localhost:8181即可看到{greeting:Hi.}說(shuō)明服務(wù)已就緒。?? 注意直接退出容器會(huì)丟失數(shù)據(jù)。生產(chǎn)環(huán)境請(qǐng)將 PostgreSQL 數(shù)據(jù)掛載到 Docker 卷中持久化。用環(huán)境變量覆蓋默認(rèn)配置Docker 下可覆蓋任意配置項(xiàng)變量名 TURTL_前綴 大寫化的 YAML 路徑。例如要修改app.api_url就設(shè)置TURTL_APP_API_URL。docker-compose.yml 中已示例了數(shù)據(jù)庫(kù)連接與TURTL_APP_SECURE_HASH_SALT的寫法。手動(dòng)部署傳統(tǒng)安裝四步走如果不想用 Docker要求 Node.js ≥ 8、PostgreSQL ≥ 9.6且已建好專用用戶與數(shù)據(jù)庫(kù)mkdir turtl cd turtl git clone https://gitcode.com/gh_mirrors/server14/server cd server npm install cp config/config.yaml.default config/config.yaml接著打開(kāi)config/config.yaml重點(diǎn)配置三處完整模板見(jiàn)config/config.yaml.default配置項(xiàng)作用db.connstrPostgreSQL 連接串賬號(hào)/庫(kù)名/密碼uploads/s3附件走本地磁盤還是 S3 對(duì)象存儲(chǔ)app.secure_hash_salt務(wù)必改成自己的長(zhǎng)隨機(jī)字符串用于密碼哈希默認(rèn)值僅測(cè)試可用app.api_url客戶端訪問(wèn)的 API 地址末尾不要帶斜杠最后初始化并啟動(dòng)mkdir plugins # 按 config.yaml 中 plugins.plugin_location 創(chuàng)建 ./scripts/init-db.sh # 創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu)scripts/init-db.sh node server.js啟動(dòng)時(shí)服務(wù)器會(huì)依次加載 users、sync、spaces、files 等控制器與插件邏輯見(jiàn) server.js并在日志中打印監(jiān)聽(tīng)地址。插件架構(gòu)郵件、統(tǒng)計(jì)、支付都能插進(jìn)來(lái)Turtl Server 刻意不把發(fā)郵件收款埋點(diǎn)寫死在主程序里而是通過(guò)插件架構(gòu)擴(kuò)展啟動(dòng)時(shí)掃描插件目錄加載每個(gè)插件的main.js注冊(cè)邏輯見(jiàn)helpers/plugins.js。郵件插件示例example-plugins/email/main.js用 nodemailer 實(shí)現(xiàn)邀請(qǐng)郵件、確認(rèn)郵件發(fā)送把 SMTP 地址填入config.yaml的plugins.email.endpoint并設(shè)enabled: true即可啟用你同樣可以為統(tǒng)計(jì)、支付處理等能力編寫自己的插件而不必改動(dòng)核心代碼。小結(jié)誰(shuí)適合部署 Turtl Server? 重視隱私、拒絕把筆記托管給第三方的個(gè)人用戶? 想體驗(yàn)自托管端到端加密、研究同步協(xié)議實(shí)現(xiàn)方式的開(kāi)發(fā)者? 需要團(tuán)隊(duì)共享加密筆記的小團(tuán)隊(duì)空間 邀請(qǐng) 密鑰共享。只需一臺(tái)能跑 Docker 的機(jī)器 一個(gè) PostgreSQL10 分鐘就能擁有屬于自己的加密筆記同步服務(wù)器。?【免費(fèi)下載鏈接】serverThe new Turtl server項(xiàng)目地址: https://gitcode.com/gh_mirrors/server14/server創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考