Compare commits

...
26 Commits
Author SHA1 Message Date
user.email c50ceaad68 feat(vault): add hqs026/pve026 (192.168.100.26) connection info 2026-09-04 18:53:13 +08:00
user.email 2a4619f457 feat(vault): add zipline_konmon (zip.konmon.com.tw fileserver token) 2026-09-04 15:09:52 +08:00
XiaoNan d0ac6db8aa fix(vault): quote mailgun_sandbox note to fix YAML parse
- note contained colon and caused yaml.safe_load to fail in get-secret.sh
2026-09-03 11:01:57 +08:00
XiaoNan 9913e88b27 feat(vault): add mailgun_sandbox as backup for smtp2go_mc4
- domain sandboxa4549b6ba4654d379af3765fcdde98a2.mailgun.org, login mc_agents@..., api dc40... / sending_key 61c1...
- 4 authorized recipients verified 2026-09-03: alice_mc_claw@outlook.com, eric.chang@kumon-km.com.tw, mc@mc4.us, chang0206@gmail.com (limit 5)
- role backup, note SMTP 421 requires activation, API works
2026-09-03 11:01:29 +08:00
XiaoNan ec36a1e16f feat(vault): update smtp2go_mc4 to agents_notification
- username mc4.us -> agents_notification
- password eaNJtokvE9e5 -> dT1am3BSU9h4RZA6 (per Eric 2026-09-03)
- re-verified SMTP 2525 STARTTLS login + send 250 OK id=1x1xJK-FnQW0hPl9Om-YsUb to eric.chang@kumon-km.com.tw
2026-09-03 10:36:25 +08:00
XiaoNan 308a5b921a feat(vault): add telegram_bots (leeahyoung_bot + agent_NMJ_bot)
- leeahyoung_bot 8961820722:AAHg...OU64 for 阿勇 192.168.17.123, Eric chat 864811879 (added 2026-09-03)
- xiaonan_bot 8978525850:AAE2...Flw for 小南 192.168.100.123
2026-09-03 10:32:24 +08:00
XiaoNan 0b536694ec feat(vault): add smtp2go_mc4 (mail.smtp2go.com via mc4.us) as preferred mail relay
- SMTP host mail.smtp2go.com:2525 STARTTLS (alt 8025/587/80/25 TLS, 465/8465/443 SSL)
- username mc4.us, sender_default test@mc4.us, verified 2026-09-03 SMTP 250 OK id=1x1wot-4o5NDgrjOgB-tIyW + API email_id 1x1wpM-FnQW0hQ0Xk8-kn7T
- stored as smtp2go_mc4 (top-level) + openclaw_alice.http_nodes.smtp2go_mc4
2026-09-03 10:12:06 +08:00
XiaoNan 64061d486c security: rotate outlook_alice app password (smtp-mail.outlook.com, 2026-09-03) 2026-09-03 09:58:12 +08:00
XiaoNan e4171959b8 security: rotate gitea openclaw PAT (RCE incident 2026-09-02, revoke 49a5... -> 88b4...) 2026-09-02 10:22:54 +08:00
user.email 74cec3583d security: rotate openclaw Gitea PAT 2026-09-01 15:14:30 +08:00
user.email 67f4932ebd docs: point to ~/agent-secret-vault (unified home, ~/projects copy removed) 2026-08-13 15:56:54 +08:00
hermes 2e35c69e78 security: rotate KM Gitea API token (192.168.100.2:4000) 2026-08-13 15:42:00 +08:00
hermesandCommandCodeBot ba82787ba5 Ignore plaintext vault dumps
Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
2026-08-13 10:41:28 +08:00
Alice (OpenClaw) 4ca6a3611d docs: remove completed age migration section from flowchart 2026-08-06 16:55:58 +08:00
Alice (OpenClaw) f3965bd045 docs: update flowchart - mark age-to-ansible-vault migration as completed, update secret structure 2026-08-06 16:54:54 +08:00
Alice (OpenClaw) 2cd4ad0b11 security: remove plaintext vault.yml.text from repo 2026-08-06 16:48:23 +08:00
Alice (OpenClaw) b4d8f377a2 feat: add kumon_com_tw.cloudflare_r2 with bucket deyu-imgbed 2026-08-06 16:39:47 +08:00
Alice (OpenClaw) 956d2fd719 feat: add KM_gitea credentials to vault 2026-08-06 16:00:02 +08:00
Alice (OpenClaw) 1bc9c81bf8 feat: sync full vault content from vault.yml.text
- Merged all secrets from vault.yml.text into vault.yml
- Includes: openclaw_alice (http_nodes, ssh_nodes, cowbay_provider, infra), gitea
- Encrypted with ansible-vault
2026-08-06 15:50:59 +08:00
Alice (OpenClaw) c8e8f60039 docs: add flowchart for vault setup and usage workflow 2026-08-06 15:33:02 +08:00
Alice (OpenClaw) b98aa2898a feat: add kumon.com.tw cloudflare_r2 credentials to vault 2026-08-06 15:31:52 +08:00
Alice (OpenClaw) 0c4799aae3 chore: convert vault.yml from age to ansible-vault encryption
- vault.yml was age-encrypted but scripts use ansible-vault commands
- Converted to ansible-vault format so vault.sh and get-secret.sh work
- Added encryption format change log to docs/secret-vault.md
- Verified: vault.sh view and get-secret.sh both working
2026-08-06 15:26:11 +08:00
hermes b0abb74c66 Add google_ai_studio API key to vault 2026-06-25 11:52:11 +08:00
hermes 2c7a4e7c3c add bynara router provider credentials 2026-06-24 11:34:20 +08:00
hermes 351e735a43 Add Twinkle Hub MCP secret 2026-06-03 08:12:57 +08:00
hermes f6891c5be5 Sync vault from vault.yml.text 2026-05-22 16:36:44 +08:00
7 changed files with 806 additions and 504 deletions
+2
View File
@@ -13,6 +13,8 @@ secrets/vault-pass.txt
# Placeholder marker generated when password archive is absent
secrets/vault-pass.txt.zip.PLACEHOLDER
# Plaintext vault dumps must never be committed
secrets/*.text
# Local installer env overrides with real secrets
install.local.env
*.secret.env
+12 -12
View File
@@ -11,8 +11,8 @@
## 目標路徑
- Repo:`~/projects/agent-secret-vault`
- Vault 檔:`~/projects/agent-secret-vault/secrets/vault.yml`
- Repo:`~/agent-secret-vault`
- Vault 檔:`~/agent-secret-vault/secrets/vault.yml`
- Vault password file:`~/.config/vault-pass.txt`
- 可覆寫環境變數:`VAULT_PASS_FILE=/custom/path`
@@ -45,8 +45,8 @@ cd agent-secret-vault
若 clone 失敗,建立 placeholder 讓後續步驟可明確回報缺什麼:
```bash
mkdir -p ~/projects/agent-secret-vault/{scripts,secrets,docs}
cat > ~/projects/agent-secret-vault/README.PLACEHOLDER.md <<'PLACEHOLDER'
mkdir -p ~/agent-secret-vault/{scripts,secrets,docs}
cat > ~/agent-secret-vault/README.PLACEHOLDER.md <<'PLACEHOLDER'
# Placeholder
agent-secret-vault repo 尚未成功 clone。
@@ -68,7 +68,7 @@ install.env # 安裝用 placeholder
安裝前必須先設定 `install.env`(或指定 `INSTALL_ENV_FILE`),不要跳過這一步:
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
cp -n install.env.example install.env
editor install.env
```
@@ -114,7 +114,7 @@ INSTALL_ENV_FILE=install.local.env ./scripts/install-vault-pass.sh
執行 installer 前再次確認 env,然後安裝:
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
./scripts/install-vault-pass.sh --check-env
./scripts/install-vault-pass.sh
```
@@ -151,8 +151,8 @@ installer 會先判斷 `~/.config/vault-pass.txt` 是否已存在:
建立 placeholder,不要自行編造密碼:
```bash
mkdir -p ~/projects/agent-secret-vault/secrets
cat > ~/projects/agent-secret-vault/secrets/vault-pass.txt.zip.PLACEHOLDER <<'PLACEHOLDER'
mkdir -p ~/agent-secret-vault/secrets
cat > ~/agent-secret-vault/secrets/vault-pass.txt.zip.PLACEHOLDER <<'PLACEHOLDER'
Missing file: secrets/vault-pass.txt.zip
Purpose: password-protected archive containing vault-pass.txt
Action: ask human maintainer to provide this archive or use installer method 1/2/3.
@@ -202,7 +202,7 @@ VAULT_PASS_CONTENT="..." \
## 4. 驗證安裝
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
ansible-vault view secrets/vault.yml --vault-password-file ~/.config/vault-pass.txt >/dev/null
```
@@ -211,7 +211,7 @@ ansible-vault view secrets/vault.yml --vault-password-file ~/.config/vault-pass.
## 5. 讀取單一 secret
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
./scripts/get-secret.sh <dot.path>
```
@@ -227,7 +227,7 @@ cd ~/projects/agent-secret-vault
## 6. Worker 需要 env 時
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
umask 077
./scripts/render-env.sh gitea > /tmp/gitea.env
set -a
@@ -243,7 +243,7 @@ rm -f /tmp/gitea.env
只有在人類明確要求更新 secrets 時才做:
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
git pull --ff-only
./scripts/vault.sh edit
ansible-vault view secrets/vault.yml --vault-password-file ~/.config/vault-pass.txt >/dev/null
+3 -3
View File
@@ -4,7 +4,7 @@
## 基本資訊
- vault 位置:`~/projects/agent-secret-vault/secrets/vault.yml`
- vault 位置:`~/agent-secret-vault/secrets/vault.yml`
- vault password 位置:`~/.config/vault-pass.txt`
- 加密格式:ansible-vault(AES256)
@@ -13,7 +13,7 @@
### 方法 1:用 vault.sh 腳本(推薦)
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
# 檢視 vault 內容
./scripts/vault.sh view
@@ -56,7 +56,7 @@ rm /tmp/gitea.env
解決:
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
./scripts/vault.sh init
```
+73
View File
@@ -0,0 +1,73 @@
# Agent Secret Vault 流程圖
## 安裝流程
```mermaid
flowchart TD
A[開始] --> B[git clone repo]
B --> C{vault-pass.txt 存在?}
C -->|是| D[驗證 vault 可解密]
C -->|否| E[選擇安裝方式]
E --> E1[建立新密碼]
E --> E2[手動輸入]
E --> E3[從 URL 下載]
E --> E4[從 zip 解壓]
E1 --> F[產生 vault-pass.txt]
E2 --> F
E3 --> F
E4 --> F
F --> D
D -->|成功| G[安裝完成]
D -->|失敗| H[檢查 vault-pass.txt 內容]
H --> F
```
## 日常使用流程
```mermaid
flowchart TD
A[開始] --> B[cd agent-secret-vault]
B --> C{要做什么?}
C -->|查看 vault| D[./scripts/vault.sh view]
C -->|讀取單一 secret| E[./scripts/get-secret.sh key.path]
C -->|編輯 vault| F[./scripts/vault.sh edit]
C -->|更新 secret| G[git pull → edit → git push]
F --> H[編輯完成]
H --> I[git add secrets/vault.yml]
I --> J[git commit]
J --> K[git push]
```
## Secret 結構
```mermaid
flowchart LR
Vault[vault.yml] --> OPEN[openclaw_alice]
Vault --> KM[KM_gitea]
Vault --> GITEA[gitea]
Vault --> KUMON[kumon_com_tw]
OPEN --> HTTP[http_nodes]
OPEN --> SSH[ssh_nodes]
OPEN --> COWBAY[cowbay_provider]
OPEN --> INFRA[infra]
HTTP --> BYNARA[bynara]
HTTP --> GOOGLE[google_ai_studio]
HTTP --> NPM[NPM]
HTTP --> LINEAR[linear]
HTTP --> TAVILY[tavily]
HTTP --> MORE[...共 16 個]
KUMON --> R2[cloudflare_r2]
R2 --> BUCKET[bucket: deyu-imgbed]
R2 --> ACC[account_id]
R2 --> AK[access_key_id]
R2 --> EP[endpoint]
R2 --> SK[secret_access_key]
```
+4 -4
View File
@@ -62,7 +62,7 @@ installer 會先檢查:
維護者若要讓其他 agent / 機器安裝,先在已可解密的機器上執行:
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
./scripts/create-vault-pass-archive.sh
git add secrets/vault-pass.txt.zip
git commit -m "Add vault password archive"
@@ -76,7 +76,7 @@ git push
安裝流程要求先填 repo 內的 env 檔:
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
cp -n install.env.example install.env
editor install.env
./scripts/install-vault-pass.sh --check-env
@@ -121,14 +121,14 @@ VAULT_PASS_ZIP_PASSWORD_FILE=/secure/path/zip-password.txt \
### 查看 vault
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
./scripts/vault.sh view
```
### 編輯 vault
```bash
cd ~/projects/agent-secret-vault
cd ~/agent-secret-vault
git pull --ff-only
./scripts/vault.sh edit
git add secrets/vault.yml
+27
View File
@@ -12,6 +12,33 @@
- `vault-pass.txt` 只放在本機,不進 git
- 解密後的暫存 plaintext 檔不要提交
## 加密格式變更紀錄
### 2026-08-06:從 age 轉換為 ansible-vault
**原因**:repo 內的 scripts(`vault.sh`、`get-secret.sh`)全部使用 `ansible-vault` 命令,但 `vault.yml` 原本是 age 加密格式,導致 scripts 無法正常解密。
**問題**:
- age 加密的 vault.yml 開頭為 `age-encryption.org/v1`
- ansible-vault 加密的 vault.yml 開頭為 `$ANSIBLE_VAULT;1.1;AES256`
- 兩者格式不相容,ansible-vault 無法解密 age 格式的檔案
**修改內容**:
1. 使用 age 私鑰(`~/.config/openclaw/age.key`)解密 vault.yml
2. 使用 ansible-vault + vault-pass.txt 重新加密 vault.yml
3. 驗證 `vault.sh view` 和 `get-secret.sh` 正常運作
**驗證結果**:
```bash
./scripts/vault.sh view # ✅ 正常顯示 vault 內容
./scripts/get-secret.sh http_nodes.bynara.base_url # ✅ 正常讀取單一 secret
```
**影響**:
- vault.yml 現在使用 ansible-vault 格式,所有 scripts 可直接使用
- age 私鑰不再需要(除非未來有其他 age 加密需求)
- vault password file(`~/.config/vault-pass.txt`)仍然是唯一的解密鑰匙
## 常用指令
初始化:
```bash
+685 -485
View File
File diff suppressed because it is too large Load Diff