Vận hành hằng ngày
Trang này hướng dẫn giữ sống 11 container production, cấu hình biến môi trường bắt buộc và thứ tự bật cờ an toàn. Đọc khi bạn trực vận hành và cần checklist hằng ngày sau mọi lần deploy.
Đối tượng: SRE / deployer / Arkon admin — người dựng và giữ sống 11 containers production. Phạm vi: hạ tầng +
Employee.role=admin(ALL_PERMISSIONS),org:settings:manage,org:employees:manage,org:audit:read. Nguồn chi tiết: Cài đặt · Vận hành & backup.
Trách nhiệm của bạn
- Giữ sống:
agentjira_server(127.0.0.1:8080, loopback only) +agentjira_clientnginx (:8081, mặt tiền duy nhất) +agentjira_db+arkon_api(:5055) +arkon_frontend(:3119) +arkon_postgres(pgvector) +arkon_redis+arkon_minio(:9002/:9003) + workers. - Giữ 3 chốt an toàn: Cloudflare Access JWT (server verify RS256, bỏ qua
x-forwarded-role) · nginx stripX-Forwarded-*ở client · server bind loopback. - Quản trị Arkon hệ thống: Employees + MCP token, Model Catalog, audit log, backup 3 stores.
Từng là lỗ hổng approve giả mạo (P0-A/B): ai chạm được port đó kèm header giả là approve được. Chi tiết: Kiến trúc tổng thể.
[preflight] WARN sau MỌI deployCác lỗi cấu hình ở đây đều chết âm thầm: Wiki tắt lặng, Planner lỗi, provisioning 500.
Ba biến bắt buộc ở MỌI môi trường có Arkon trong container
| Biến | Vì sao |
|---|---|
ARKON_SSO_SHARED_SECRET (AgentJira) = SSO_SHARED_SECRET (Arkon) | POST /api/auth/sso chỉ tin loopback hoặc secret này; ngay cả npm run dev trên host qua cổng published cũng thành IP gateway bridge — thiếu → provisioning 403 → tạo Space 500 |
ARKON_ENCRYPTION_KEY | Mã hoá MCP token persona at-rest; production thiếu thì từ chối boot |
MINIO_ENDPOINT không dấu _ | Dấu _ vào Host header → MinIO InvalidRequest, mọi upload/ảnh wiki chết; dùng alias minio:9000 |
./scripts/dev.sh init sinh + đồng bộ 2 giá trị đầu; deps up/up tự kiểm tra mỗi lần chạy.
Cấu hình bắt buộc production
Server từ chối boot nếu thiếu:
ARKON_ENCRYPTION_KEY;ARKON_SSO_SHARED_SECRET(+SSO_SHARED_SECRETbên Arkon);CF_ACCESS_AUD+CF_ACCESS_TEAM_DOMAINhoặcTRUST_PROXY_IDENTITY=1+TRUSTED_PROXY_IPS.
Nên đặt thêm:
| Biến | Thiếu thì sao |
|---|---|
ALLOWED_HOSTS | WS 403 → Board mất realtime |
ARKON_API_URL | Mặc định về loopback = chính server → Wiki chết lặng |
AGENTBOARD_LLM_MODE=live + key + model | Planner lỗi mọi ý tưởng |
AGENTBOARD_BOOTSTRAP_OWNERS | Không ai quản trị được Space nào (fail-closed) |
ALLOWED_REPO_ROOTS | Agent chạm được $HOME, /tmp |
Thứ tự bật cờ 0B/0C trên production
Bật từng cái một và xác minh, đừng bật cả loạt ở lần deploy đầu:
- Trước:
AGENTBOARD_COMMAND_PALETTE+AGENTBOARD_MENTION_SUBTASK(chỉ client/sinh task, rủi ro thấp nhất). - Sau khi quan sát ổn:
AGENTBOARD_WS_TOPICS(đòi thêmAGENT_BOARD_PUBLIC_URL+ host trongALLOWED_HOSTS, sai là server từ chối boot) vàAGENTBOARD_AUTO_RETRO(mỗi Epic là một lần gọi LLM). - Sau mọi sửa env, verify từ trong container — không tin file
.env:
docker exec agentjira_server printenv | grep AGENTBOARD_
curl -s localhost:8081/api/features # phải phản ánh đúng ý định
- Sau đổi role Space (khi
AGENTBOARD_ARKON_RBAC_SYNC=1), đợi 1 nhịp reconciler (AGENTBOARD_ARKON_RBAC_RECONCILE_MS, mặc định 15 phút) trước khi kết luận đồng bộ hỏng.
Mã preflight bạn sẽ gặp (chỉ in khi NODE_ENV=production):
LLM_REPLAY_IN_PRODUCTION— Planner đangreplay, mọi ý tưởng thật đều lỗi cache miss.LLM_LIVE_WITHOUT_KEY/LLM_LIVE_WITHOUT_MODEL— bậtlivenhưng thiếu key hoặc model.LLM_OPENROUTER_MODEL_UNVERIFIED— model OpenRouter chưa nằm trong allowlist structured outputs.ARKON_URL_UNSET/ARKON_URL_LOOPBACK— Wiki chết lặng, xem Sự cố & checklist go-live.ALLOWED_HOSTS_LOCALHOST_ONLY— WS 403, Board mất realtime.WS_TOPICS_WITHOUT_PUBLIC_URL/PUBLIC_URL_NOT_IN_ALLOWED_HOSTS— fatal khiAGENTBOARD_WS_TOPICS=1, server từ chối boot.ARKON_ENCRYPTION_KEY_UNSET— vault token coi như không mã hoá.
Gặp lỗi? Xem Sự cố & checklist go-live và Xử lý sự cố.
Deploy / rollback / backup (tóm tắt)
- Deploy app: CI (
cd.yml, pushmain) hoặc tay (ssh,docker compose.prod.yml up -d). Rollback theo runbook. - Deploy docs độc lập: site
:8082chạydocker-compose.docs.ymlriêng — sửa docs → merge main → CD tự build-push +pull/upchỉ file docs, không restart stack app. Tay:docker compose -f docker-compose.docs.yml pull && up -d+curl -fsS :8082. Chi tiết: Cài đặt. - Sau deploy: đọc
[preflight]→ kiểm health 4 mặt (:8081,:8080loopback,:3119,:5055) → thử approve 1 task mẫu. - Backup 3 stores độc lập:
agentjira_db+arkon_postgres+arkon_minio. Lệnh đầy đủ ở runbook §5. Nhớ luân chuyển secret và git locking theo runbook.
Quản trị người dùng, token, audit
- Board: bootstrap owner qua
AGENTBOARD_BOOTSTRAP_OWNERS(idempotent — vừa init vừa break-glass). Space không member → inaccessible + warn (chủ ý). - Arkon:
POST /api/employees {name,email,password,role,global_role,department_ids[]}(cầnorg:employees:manage); reconcile dept quaPUT /api/employees/{id},POST/DELETE /{id}/departments; cấp tokenPOST/DELETE /api/employees/{id}/token; user tự phục vụ ở/profile. Token HMAC-SHA256,MCP_TOKEN_PEPPERbắt buộc. - Audit:
GET /api/audit/log(filter principal/action/decision/resource) + riêngmcp_query_log. Theo dõiaudit.deniedtăng đột biến trên Dashboard.
Đọc tiếp: Model Catalog & OpenRouter · Sự cố & checklist go-live.
Gặp lỗi? Xem Xử lý sự cố.