[{"data":1,"prerenderedAt":6391},["ShallowReactive",2],{"published-article-paths":3,"search-navigation":348,"\u002Fid\u002Farticle\u002Fsync-obsidian-across-devices":421,"\u002Fid\u002Farticle\u002Fsync-obsidian-across-devices-surround":1944},[4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346],{"path":5},"\u002Fde\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":7},"\u002Fde\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":9},"\u002Fde\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":11},"\u002Fde\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":13},"\u002Fde\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":15},"\u002Fde\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":17},"\u002Fde\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":19},"\u002Fde\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":21},"\u002Fde\u002Farticle\u002Fsetup-antigravity-2",{"path":23},"\u002Fde\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":25},"\u002Fde\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":27},"\u002Fde\u002Farticle\u002Fsync-obsidian-across-devices",{"path":29},"\u002Fde\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":31},"\u002Fde\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":33},"\u002Fde\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":35},"\u002Fde\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":37},"\u002Fen\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":39},"\u002Fen\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":41},"\u002Fen\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":43},"\u002Fen\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":45},"\u002Fen\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":47},"\u002Fen\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":49},"\u002Fen\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":51},"\u002Fen\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":53},"\u002Fen\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":55},"\u002Fen\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":57},"\u002Fen\u002Farticle\u002Fsetup-antigravity-2",{"path":59},"\u002Fen\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":61},"\u002Fen\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":63},"\u002Fen\u002Farticle\u002Fsync-obsidian-across-devices",{"path":65},"\u002Fen\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":67},"\u002Fen\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":69},"\u002Fen\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":71},"\u002Fen\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":73},"\u002Fes\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":75},"\u002Fes\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":77},"\u002Fes\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":79},"\u002Fes\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":81},"\u002Fes\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":83},"\u002Fes\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":85},"\u002Fes\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":87},"\u002Fes\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":89},"\u002Fes\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":91},"\u002Fes\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":93},"\u002Fes\u002Farticle\u002Fsetup-antigravity-2",{"path":95},"\u002Fes\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":97},"\u002Fes\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":99},"\u002Fes\u002Farticle\u002Fsync-obsidian-across-devices",{"path":101},"\u002Fes\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":103},"\u002Fes\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":105},"\u002Fes\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":107},"\u002Fes\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":109},"\u002Ffr\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":111},"\u002Ffr\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":113},"\u002Ffr\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":115},"\u002Ffr\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":117},"\u002Ffr\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":119},"\u002Ffr\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":121},"\u002Ffr\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":123},"\u002Ffr\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":125},"\u002Ffr\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":127},"\u002Ffr\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":129},"\u002Ffr\u002Farticle\u002Fsetup-antigravity-2",{"path":131},"\u002Ffr\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":133},"\u002Ffr\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":135},"\u002Ffr\u002Farticle\u002Fsync-obsidian-across-devices",{"path":137},"\u002Ffr\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":139},"\u002Ffr\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":141},"\u002Ffr\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":143},"\u002Ffr\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":145},"\u002Fid\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":147},"\u002Fid\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":149},"\u002Fid\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":151},"\u002Fid\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":153},"\u002Fid\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":155},"\u002Fid\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":157},"\u002Fid\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":159},"\u002Fid\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":161},"\u002Fid\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":163},"\u002Fid\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":165},"\u002Fid\u002Farticle\u002Fsetup-antigravity-2",{"path":167},"\u002Fid\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":169},"\u002Fid\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":171},"\u002Fid\u002Farticle\u002Fsync-obsidian-across-devices",{"path":173},"\u002Fid\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":175},"\u002Fid\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":177},"\u002Fid\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":179},"\u002Fid\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":181},"\u002Fja\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":183},"\u002Fja\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":185},"\u002Fja\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":187},"\u002Fja\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":189},"\u002Fja\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":191},"\u002Fja\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":193},"\u002Fja\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":195},"\u002Fja\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":197},"\u002Fja\u002Farticle\u002Fsetup-antigravity-2",{"path":199},"\u002Fja\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":201},"\u002Fja\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":203},"\u002Fja\u002Farticle\u002Fsync-obsidian-across-devices",{"path":205},"\u002Fja\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":207},"\u002Fja\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":209},"\u002Fja\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":211},"\u002Fja\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":213},"\u002Fpt\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":215},"\u002Fpt\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":217},"\u002Fpt\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":219},"\u002Fpt\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":221},"\u002Fpt\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":223},"\u002Fpt\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":225},"\u002Fpt\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":227},"\u002Fpt\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":229},"\u002Fpt\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":231},"\u002Fpt\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":233},"\u002Fpt\u002Farticle\u002Fsetup-antigravity-2",{"path":235},"\u002Fpt\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":237},"\u002Fpt\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":239},"\u002Fpt\u002Farticle\u002Fsync-obsidian-across-devices",{"path":241},"\u002Fpt\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":243},"\u002Fpt\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":245},"\u002Fpt\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":247},"\u002Fpt\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":249},"\u002Ftw\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":251},"\u002Ftw\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":253},"\u002Ftw\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":255},"\u002Ftw\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":257},"\u002Ftw\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":259},"\u002Ftw\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":261},"\u002Ftw\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":263},"\u002Ftw\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":265},"\u002Ftw\u002Farticle\u002Fsetup-antigravity-2",{"path":267},"\u002Ftw\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":269},"\u002Ftw\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":271},"\u002Ftw\u002Farticle\u002Fsync-obsidian-across-devices",{"path":273},"\u002Ftw\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":275},"\u002Ftw\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":277},"\u002Ftw\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":279},"\u002Ftw\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":281},"\u002Fvi\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":283},"\u002Fvi\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":285},"\u002Fvi\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":287},"\u002Fvi\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":289},"\u002Fvi\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":291},"\u002Fvi\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"path":293},"\u002Fvi\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":295},"\u002Fvi\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":297},"\u002Fvi\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":299},"\u002Fvi\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"path":301},"\u002Fvi\u002Farticle\u002Fsetup-antigravity-2",{"path":303},"\u002Fvi\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":305},"\u002Fvi\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":307},"\u002Fvi\u002Farticle\u002Fsync-obsidian-across-devices",{"path":309},"\u002Fvi\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":311},"\u002Fvi\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":313},"\u002Fvi\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":315},"\u002Fvi\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"path":317},"\u002Fzh\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"path":319},"\u002Fzh\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"path":321},"\u002Fzh\u002Farticle\u002Fcentralised-the-skills-for-agents",{"path":323},"\u002Fzh\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"path":325},"\u002Fzh\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"path":327},"\u002Fzh\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"path":329},"\u002Fzh\u002Farticle\u002Fself-hosted-travel-planner-trek",{"path":331},"\u002Fzh\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"path":333},"\u002Fzh\u002Farticle\u002Fsetup-antigravity-2",{"path":335},"\u002Fzh\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"path":337},"\u002Fzh\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"path":339},"\u002Fzh\u002Farticle\u002Fsync-obsidian-across-devices",{"path":341},"\u002Fzh\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"path":343},"\u002Fzh\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"path":345},"\u002Fzh\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"path":347},"\u002Fzh\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",[349,353,357,361,365,369,373,377,381,385,389,393,397,401,405,409,413,417],{"title":350,"path":351,"stem":352},"AI Agent Skills: What They Are & How to Create Them","\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them","en\u002Farticle\u002Fai-agent-skills-what-they-are-how-to-create-them",{"title":354,"path":355,"stem":356},"Bringing Buzz to DeepSeek Harness: Taught to Speak Nostr","\u002Farticle\u002Fbringing-buzz-to-deepseek-harness","en\u002Farticle\u002Fbringing-buzz-to-deepseek-harness",{"title":358,"path":359,"stem":360},"Solving AI Agent Skills Fragmentation with npx skills","\u002Farticle\u002Fcentralised-the-skills-for-agents","en\u002Farticle\u002Fcentralised-the-skills-for-agents",{"title":362,"path":363,"stem":364},"How to Expose Hermes Agent Privately with Cloudflare WARP","\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp","en\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",{"title":366,"path":367,"stem":368},"How AI Agent Skills Replace Nuxt App Scaffolding Scripts","\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts","en\u002Farticle\u002Fhow-ai-agent-skills-replace-nuxt-app-scaffolding-scripts",{"title":370,"path":371,"stem":372},"Stop Exposing Your Vault: Secure NodeWarden with Cloudflare","\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare","en\u002Farticle\u002Fhow-to-secure-nodewarden-at-cloudflare",{"title":374,"path":375,"stem":376},"How to Deploy Hermes Agent on a Linux VPS","\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server","en\u002Farticle\u002Fhow-to-setup-hermes-on-remote-server",{"title":378,"path":379,"stem":380},"Self-Host Your Travel Itineraries with TREK and Docker","\u002Farticle\u002Fself-hosted-travel-planner-trek","en\u002Farticle\u002Fself-hosted-travel-planner-trek",{"title":382,"path":383,"stem":384},"Self-Host Block's Buzz: Shared AI Agent Workspace","\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues","en\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",{"title":386,"path":387,"stem":388},"How to Self-Host a BitWarden Compatible Server Nodewarden","\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare","en\u002Farticle\u002Fself-hosting-nodewarden-at-cloudflare",{"title":390,"path":391,"stem":392},"Google Antigravity 2 Hands-On: Setup & First Impressions","\u002Farticle\u002Fsetup-antigravity-2","en\u002Farticle\u002Fsetup-antigravity-2",{"title":394,"path":395,"stem":396},"NetSuite AI Connector Guide: MCP Setup & Use Cases","\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude","en\u002Farticle\u002Fsetup-netsuite-mcp-on-chatgpt-claude",{"title":398,"path":399,"stem":400},"Switch Between Multiple Cloudflare WARP Orgs on Mac","\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac","en\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",{"title":402,"path":403,"stem":404},"How to Sync Obsidian Vaults Across Devices Securely","\u002Farticle\u002Fsync-obsidian-across-devices","en\u002Farticle\u002Fsync-obsidian-across-devices",{"title":406,"path":407,"stem":408},"Testing Claude Fable 5: A Financial Analysis Review","\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis","en\u002Farticle\u002Ftesting-claude-fable-5-in-financial-analysis",{"title":410,"path":411,"stem":412},"Guide to Browser and Scheduler in Antigravity 2","\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2","en\u002Farticle\u002Fuse-browser-and-scheduler-in-antigravity-2",{"title":414,"path":415,"stem":416},"Build a Persistent AI Memory System on Cloudflare","\u002Farticle\u002Fuse-cloudflare-as-ai-memory","en\u002Farticle\u002Fuse-cloudflare-as-ai-memory",{"title":418,"path":419,"stem":420},"Antigravity 2 in Action: AI Agents, Skills, and MCP","\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2","en\u002Farticle\u002Fwhat-can-we-do-with-antigravity-2",{"id":422,"title":423,"author":424,"body":425,"category":1918,"date":1920,"description":1921,"extension":1922,"image":1923,"imageAlt":1924,"isPublished":738,"meta":1925,"minRead":1164,"navigation":738,"path":171,"seo":1934,"stem":1936,"tags":1937,"updatedAt":1942,"__hash__":1943},"article\u002Fid\u002Farticle\u002Fsync-obsidian-across-devices.md","Cara sinkronisasi vault Obsidian antar perangkat aman","",{"type":426,"value":427,"toc":1896},"minimark",[428,432,438,449,458,478,483,492,497,502,518,534,537,542,547,554,559,563,568,643,650,682,686,694,702,709,776,779,798,805,817,821,825,836,841,852,874,879,893,898,904,909,924,927,932,935,940,944,949,963,967,981,992,996,1001,1004,1014,1047,1051,1058,1210,1243,1248,1269,1280,1285,1289,1299,1372,1376,1381,1419,1550,1557,1563,1570,1576,1579,1585,1591,1605,1616,1623,1629,1636,1773,1779,1784,1787,1792,1795,1799,1804,1809,1815,1826,1836,1840,1851,1856,1862,1865,1869,1892],[429,430,431],"p",{},"Obsidian adalah aplikasi manajemen pengetahuan lokal-first (mengutamakan penyimpanan lokal). Setiap catatan adalah berkas markdown di perangkat Anda dan sepenuhnya berada di bawah kendali Anda. Namun, sering kali kita menginginkan vault yang sama di laptop, ponsel, dan perangkat lain, atau dapat mengaksesnya dari jarak jauh melalui browser web.",[433,434],"img",{"src":435,"alt":436,"style":437},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-multi-device-sync-illustration.webp","Ilustrasi vault Obsidian yang disinkronkan di berbagai perangkat","max-width: 667px; width: 100%; height: auto;",[429,439,440,441,448],{},"Sejumlah solusi sinkronisasi tersedia untuk Obsidian, tetapi semuanya memiliki kompromi terkait penanganan konflik, enkripsi, atau kedaulatan data. ",[442,443,447],"a",{"href":444,"rel":445},"https:\u002F\u002Fgithub.com\u002Fhjinco\u002Fsynch",[446],"nofollow","Synch"," adalah aplikasi sumber terbuka (open-source) yang menyinkronkan vault Obsidian Anda dengan enkripsi ujung-ke-ujung (end-to-end encryption) dan penanganan konflik otomatis pada server mandiri (self-hosted).",[429,450,451,452,457],{},"Meskipun pendekatan lokal-first dari Obsidian bekerja dengan sempurna di sebagian besar waktu, kita mungkin masih perlu mengakses vault kita dari jarak jauh melalui browser web pada beberapa kesempatan. ",[442,453,456],{"href":454,"rel":455},"https:\u002F\u002Fgithub.com\u002FNystik-gh\u002Fignis",[446],"Ignis"," adalah aplikasi sumber terbuka yang menjalankan Obsidian di dalam browser web dalam format yang sangat mirip dengan aslinya, memungkinkan Anda untuk membaca dan mengedit vault Anda dari mana saja.",[429,459,460,461,464,465,467,468,471,472,477],{},"Dalam panduan ini, kita akan menyiapkan ",[462,463,447],"strong",{}," dan ",[462,466,456],{}," pada sebuah ",[462,469,470],{},"VPS"," (Virtual Private Server), menampungnya secara aman di dalam jaringan pribadi ",[462,473,474],{},[442,475,476],{"href":363},"Cloudflare Zero Trust"," daripada mengeksposnya ke internet terbuka.",[433,479],{"src":480,"alt":481,"style":482},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-sync-cloudflare-zero-trust-architecture.webp","Diagram arsitektur sinkronisasi Obsidian menggunakan Cloudflare Zero Trust","max-width: 671px; width: 100%; height: auto;",[484,485],"article-card",{"description":486,"image":487,"image-alt":488,"label":489,"min-read":490,"title":491,"to":363},"Pelajari cara mengekspos dan mengakses Hermes Agent Anda secara global dan aman menggunakan Cloudflare WARP dan Zero Trust tanpa membuka port firewall masuk.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002FEN-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp","Mengekspos Hermes Agent secara aman ke jaringan pribadi menggunakan Cloudflare Zero Trust dan terowongan WARP","Panduan terkait","8","Cara Mengekspos Hermes Agent Secara Privat dengan Cloudflare WARP",[493,494,496],"h2",{"id":495},"sinkronisasi-vault-obsidian-yang-aman-dengan-synch","Sinkronisasi Vault Obsidian yang Aman dengan Synch",[429,498,499,501],{},[462,500,447],{}," menyediakan fitur-fitur berikut:",[503,504,505,509,512,515],"ul",{},[506,507,508],"li",{},"Menyinkronkan vault Anda segera setelah perubahan terdeteksi",[506,510,511],{},"Mengenkripsi data vault sebelum diunggah",[506,513,514],{},"Memungkinkan pemulihan dari riwayat versi",[506,516,517],{},"Menyertakan penanganan konflik otomatis",[429,519,520,522,523,526,527,530,531,533],{},[462,521,447],{}," menghasilkan ",[462,524,525],{},"kunci vault"," 32-byte acak di perangkat Anda, yang digunakan untuk mengenkripsi data vault Anda. Saat Anda membuat vault jarak jauh, Anda memilih ",[462,528,529],{},"kata sandi vault","; kata sandi ini digunakan untuk melindungi ",[462,532,525],{}," sehingga kunci tersebut dapat disimpan dengan aman di server dan dibuka di perangkat lain.",[429,535,536],{},"Harap dicatat bahwa penyelesaian konflik ditangani di perangkat klien Anda, bukan di server. Jika dua perangkat mengedit catatan yang sama secara bersamaan, server akan menyimpan versi mana pun yang tiba lebih dulu dan menandai perangkat lainnya sebagai usang (out of date). Perangkat yang usang tersebut kemudian secara otomatis menggabungkan versi yang lebih baru dengan perubahan lokalnya sebelum mengunggah catatan hasil penggabungan akhir.",[538,539,541],"h3",{"id":540},"menyiapkan-synch-di-vps-anda","Menyiapkan Synch di VPS Anda",[543,544,546],"h4",{"id":545},"membuat-nama-domain","Membuat Nama Domain",[429,548,549,550,553],{},"Buat catatan A (A record) di Cloudflare dan atur status proksinya ke ",[462,551,552],{},"Hanya DNS"," (DNS only - melewati CDN Cloudflare).",[433,555],{"src":556,"alt":557,"style":558},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fcloudflare-dns-a-record-synch-server.webp","Mengonfigurasi data DNS A untuk server Synch di Cloudflare","max-width: 538px; width: 100%; height: auto;",[543,560,562],{"id":561},"menginstal-synch-docker-di-ubuntu","Menginstal Synch Docker di Ubuntu",[564,565,567],"h5",{"id":566},"mengklon-repositori","Mengklon Repositori",[569,570,574],"pre",{"className":571,"code":572,"language":573,"meta":424,"style":424},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone https:\u002F\u002Fgithub.com\u002Fhjinco\u002Fsynch.git       \n        \n# Masuk ke folder API\ncd synch\u002Fapps\u002Fapi\n        \n# Salin berkas lingkungan contoh:\ncp .env.example .env\n","bash",[575,576,577,597,603,610,620,625,631],"code",{"__ignoreMap":424},[578,579,582,586,590,593],"span",{"class":580,"line":581},"line",1,[578,583,585],{"class":584},"sBMFI","git",[578,587,589],{"class":588},"sfazB"," clone",[578,591,592],{"class":588}," https:\u002F\u002Fgithub.com\u002Fhjinco\u002Fsynch.git",[578,594,596],{"class":595},"sTEyZ","       \n",[578,598,600],{"class":580,"line":599},2,[578,601,602],{"class":595},"        \n",[578,604,606],{"class":580,"line":605},3,[578,607,609],{"class":608},"sHwdD","# Masuk ke folder API\n",[578,611,613,617],{"class":580,"line":612},4,[578,614,616],{"class":615},"s2Zo4","cd",[578,618,619],{"class":588}," synch\u002Fapps\u002Fapi\n",[578,621,623],{"class":580,"line":622},5,[578,624,602],{"class":595},[578,626,628],{"class":580,"line":627},6,[578,629,630],{"class":608},"# Salin berkas lingkungan contoh:\n",[578,632,634,637,640],{"class":580,"line":633},7,[578,635,636],{"class":584},"cp",[578,638,639],{"class":588}," .env.example",[578,641,642],{"class":588}," .env\n",[564,644,646,647],{"id":645},"mengedit-nilai-env","Mengedit Nilai ",[575,648,649],{},".env",[503,651,652,658,676],{},[506,653,654,657],{},[575,655,656],{},"PUBLIC_URL=synch.pafor.me",": Masukkan nama domain publik server Synch Anda (nama domain yang dibuat pada langkah sebelumnya).",[506,659,660,464,663,666,667,671,672,675],{},[575,661,662],{},"BETTER_AUTH_SECRET",[575,664,665],{},"SYNC_TOKEN_SECRET",": Hasilkan kunci aman menggunakan ",[442,668,670],{"href":669},"\u002Fid\u002Ftools\u002Fsecret-key-hex","alat kunci rahasia online"," ini atau dengan menjalankan ",[575,673,674],{},"openssl rand -hex 32"," dua kali di terminal Anda.",[506,677,678,681],{},[575,679,680],{},"AUTH_ALLOWED_EMAILS",": Daftar alamat email yang diizinkan untuk mendaftar dan membuat akun, dipisahkan dengan koma.",[564,683,685],{"id":684},"menambahkan-domain-ke-caddyfile","Menambahkan Domain ke Caddyfile",[429,687,688,689,693],{},"Detail tentang bagaimana modul DNS Cloudflare diintegrasikan dengan Caddy dan dijalankan di dalam kontainer dapat ditemukan di ",[442,690,692],{"href":691},"\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues#_4-enable-https-with-caddy","artikel Buzz self-hosting"," kami.",[484,695],{"description":696,"image":697,"image-alt":698,"label":699,"min-read":700,"title":701,"to":691},"Pelajari cara mengonfigurasi Caddy untuk menyediakan sertifikat SSL\u002FTLS secara otomatis menggunakan tantangan DNS Cloudflare dalam wadah Docker.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002FEN-Self-Hosting-Buzz-As-The-Workspace-Where-AI-Agents-Become-Colleagues.webp","Mengonfigurasi Caddy dengan token API Cloudflare DNS untuk pembuatan sertifikat SSL\u002FTLS otomatis di ruang kerja mandiri","Panduan self-hosting","12","Self-Host Buzz dari Block: Ruang Kerja Bersama Agen AI Anda",[429,703,704,705,708],{},"Sertakan arahan ",[575,706,707],{},"SYNCH_DOMAIN"," di Caddyfile Anda, yang mengarah ke port 8787 (port yang digunakan oleh kontainer Synch):",[569,710,714],{"className":711,"code":712,"language":713,"meta":424,"style":424},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}\n}\n\n{$SYNCH_DOMAIN} {\n  encode zstd gzip\n  reverse_proxy host.docker.internal:8787\n}\n","json",[575,715,716,722,730,734,740,754,759,771],{"__ignoreMap":424},[578,717,718],{"class":580,"line":581},[578,719,721],{"class":720},"sMK4o","{\n",[578,723,724,727],{"class":580,"line":599},[578,725,726],{"class":595},"  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN",[578,728,729],{"class":720},"}\n",[578,731,732],{"class":580,"line":605},[578,733,729],{"class":595},[578,735,736],{"class":580,"line":612},[578,737,739],{"emptyLinePlaceholder":738},true,"\n",[578,741,742,745,748,751],{"class":580,"line":622},[578,743,744],{"class":720},"{",[578,746,747],{"class":595},"$SYNCH_DOMAIN",[578,749,750],{"class":720},"}",[578,752,753],{"class":720}," {\n",[578,755,756],{"class":580,"line":627},[578,757,758],{"class":595},"  encode zstd gzip\n",[578,760,761,764,767],{"class":580,"line":633},[578,762,763],{"class":595},"  reverse_proxy host.docker.internal",[578,765,766],{"class":720},":",[578,768,770],{"class":769},"sbssI","8787\n",[578,772,774],{"class":580,"line":773},8,[578,775,729],{"class":720},[429,777,778],{},"Jalankan kontainer:",[569,780,782],{"className":571,"code":781,"language":573,"meta":424,"style":424},"docker compose up -d\n",[575,783,784],{"__ignoreMap":424},[578,785,786,789,792,795],{"class":580,"line":581},[578,787,788],{"class":584},"docker",[578,790,791],{"class":588}," compose",[578,793,794],{"class":588}," up",[578,796,797],{"class":588}," -d\n",[429,799,800,801,804],{},"Jalankan perintah ",[575,802,803],{},"curl"," berikut untuk memeriksa ketersediaannya:",[569,806,808],{"className":571,"code":807,"language":573,"meta":424,"style":424},"curl https:\u002F\u002Fsynch.pafor.me\u002Fhealth\n",[575,809,810],{"__ignoreMap":424},[578,811,812,814],{"class":580,"line":581},[578,813,803],{"class":584},[578,815,816],{"class":588}," https:\u002F\u002Fsynch.pafor.me\u002Fhealth\n",[538,818,820],{"id":819},"menghubungkan-obsidian-ke-server-synch-anda","Menghubungkan Obsidian ke Server Synch Anda",[543,822,824],{"id":823},"menginstal-plugin-synch-di-obsidian","Menginstal Plugin Synch di Obsidian",[429,826,827,828,831,832,835],{},"Buka Pengaturan Obsidian, navigasikan ke ",[462,829,830],{},"Community plugins"," (Plugin komunitas), lalu klik tombol ",[462,833,834],{},"'Browse'"," (Telusuri):",[433,837],{"src":838,"alt":839,"style":840},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-community-plugins-browse.webp","Menjelajahi plugin komunitas dalam pengaturan Obsidian","max-width: 523px; width: 100%; height: auto;",[429,842,843,844,847,848],{},"Cari dan instal ",[462,845,846],{},"'Synchrun'",":\n",[433,849],{"src":850,"alt":851,"style":558},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-install-synchrun-plugin.webp","Menginstal plugin Synchrun di Obsidian",[429,853,854,855,857,858,861,862,865,866,869,870,873],{},"Setelah ",[462,856,846],{}," terinstal, buka pengaturan plugin dan aktifkan ",[462,859,860],{},"'Use a self-hosted server'"," (Gunakan server mandiri). Kemudian, masukkan ",[575,863,864],{},"https:\u002F\u002Fsynch.pafor.me"," di bidang ",[462,867,868],{},"'Server URL'"," dan klik ",[462,871,872],{},"'Save'"," (Simpan).",[433,875],{"src":876,"alt":877,"style":878},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-synchrun-plugin-settings-self-hosted.webp","Mengonfigurasi URL server mandiri pada pengaturan plugin Synchrun","max-width: 525px; width: 100%; height: auto;",[429,880,881,882,885,886,889,890,892],{},"Klik tombol ",[462,883,884],{},"'Sign in on this device'"," (Masuk di perangkat ini) di bawah ",[462,887,888],{},"'Account'"," (Akun). Selanjutnya, daftar akun menggunakan alamat email yang Anda tentukan dalam daftar ",[575,891,680],{},"; Anda kemudian akan diarahkan ke halaman otorisasi berikut:",[433,894],{"src":895,"alt":896,"style":897},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynchrun-account-authorization-page.webp","Halaman otorisasi akun untuk Synchrun","max-width: 494px; width: 100%; height: auto;",[429,899,881,900,903],{},[462,901,902],{},"'Allow Obsidian sign-in'"," (Izinkan masuk Obsidian):",[433,905],{"src":906,"alt":907,"style":908},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynchrun-allow-obsidian-signin.webp","Mengizinkan masuk (login) Obsidian untuk Synch","max-width: 498px; width: 100%; height: auto;",[429,910,881,911,914,915,918,919],{},[462,912,913],{},"'Return to Obsidian'"," (Kembali ke Obsidian), lalu klik ",[462,916,917],{},"'Create vault'"," (Buat vault):\n",[433,920],{"src":921,"alt":922,"style":923},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-synchrun-create-remote-vault.webp","Membuat vault jarak jauh baru di Synchrun","max-width: 496px; width: 100%; height: auto;",[429,925,926],{},"Masukkan nama dan kata sandi yang aman untuk membuat vault jarak jauh Anda.",[433,928],{"src":929,"alt":930,"style":931},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-synchrun-vault-password-setup.webp","Menyiapkan kata sandi aman untuk vault jarak jauh Obsidian","max-width: 500px; width: 100%; height: auto;",[429,933,934],{},"Proses sinkronisasi akan segera dimulai dan mungkin memerlukan beberapa waktu tergantung pada ukuran vault Anda. Setelah selesai, total penggunaan penyimpanan Anda akan ditampilkan.",[433,936],{"src":937,"alt":938,"style":939},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-synchrun-sync-completed-storage.webp","Sinkronisasi selesai menunjukkan total penyimpanan yang digunakan","max-width: 508px; width: 100%; height: auto;",[493,941,943],{"id":942},"akses-obsidian-berbasis-browser-dengan-ignis","Akses Obsidian Berbasis Browser dengan Ignis",[429,945,946,948],{},[462,947,456],{}," menggantikan API Electron milik Obsidian dengan API Web, yang memungkinkan kode JavaScript milik Obsidian dijalankan langsung di dalam browser web standar. Semua berkas markdown dan lampiran Anda disimpan langsung di sistem berkas server host.",[429,950,951,952,464,957,962],{},"Namun, ada beberapa batasan dibandingkan dengan aplikasi desktop Obsidian mandiri. Fitur atau plugin tertentu yang memerlukan API Electron atau Node.js—yang tidak memiliki padanan langsung di lingkungan browser—tidak akan berfungsi. Silakan merujuk ke panduan Ignis ",[442,953,956],{"href":954,"rel":955},"https:\u002F\u002Fignis.thiefling.com\u002Fdocs\u002Fusing\u002Flimitations\u002F",[446],"Limitations",[442,958,961],{"href":959,"rel":960},"https:\u002F\u002Fignis.thiefling.com\u002Fdocs\u002Fusing\u002Fplugin-compatibility\u002F",[446],"Plugin compatibility"," untuk daftar kompatibilitas terperinci.",[538,964,966],{"id":965},"penyiapan-ignis","Penyiapan Ignis",[429,968,969,970,972,973,976,977,980],{},"Kita akan menginstal ",[462,971,456],{}," di VPS kita menggunakan Docker, memasangnya ke folder lokal ",[575,974,975],{},".\u002Fvaults",". Direktori vault ini akan disinkronkan menggunakan ",[462,978,979],{},"Synch CLI"," untuk menarik pembaruan catatan dari vault jarak jauh yang kita siapkan sebelumnya.",[429,982,983,984,986,987,991],{},"Karena ",[462,985,456],{}," tidak memiliki autentikasi bawaan, ia harus diamankan di balik jaringan pribadi ",[462,988,989],{},[442,990,476],{"href":363},".",[543,993,995],{"id":994},"membuat-catatan-dns","Membuat Catatan DNS",[433,997],{"src":998,"alt":999,"style":1000},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fcloudflare-dns-a-record-ignis.webp","Mengonfigurasi data DNS A untuk web client Ignis di Cloudflare","max-width: 552px; width: 100%; height: auto;",[543,1002,685],{"id":1003},"menambahkan-domain-ke-caddyfile-1",[429,1005,1006,1007,1010,1011,766],{},"Tambahkan ",[575,1008,1009],{},"obsidian.pafor.me"," ke Caddyfile Anda dengan cara yang sama seperti ",[575,1012,1013],{},"synch.pafor.me",[569,1015,1017],{"className":711,"code":1016,"language":713,"meta":424,"style":424},"{$OBSIDIAN_DOMAIN} {\n  encode zstd gzip\n  reverse_proxy host.docker.internal:9898\n}\n",[575,1018,1019,1030,1034,1043],{"__ignoreMap":424},[578,1020,1021,1023,1026,1028],{"class":580,"line":581},[578,1022,744],{"class":720},[578,1024,1025],{"class":595},"$OBSIDIAN_DOMAIN",[578,1027,750],{"class":720},[578,1029,753],{"class":720},[578,1031,1032],{"class":580,"line":599},[578,1033,758],{"class":595},[578,1035,1036,1038,1040],{"class":580,"line":605},[578,1037,763],{"class":595},[578,1039,766],{"class":720},[578,1041,1042],{"class":769},"9898\n",[578,1044,1045],{"class":580,"line":612},[578,1046,729],{"class":720},[543,1048,1050],{"id":1049},"menjalankan-ignis-menggunakan-docker","Menjalankan Ignis menggunakan Docker",[429,1052,1053,1054,1057],{},"Simpan yml docker compose berikut sebagai ",[575,1055,1056],{},"ignis-docker-compose.yml"," di VPS:",[569,1059,1063],{"className":1060,"code":1061,"language":1062,"meta":424,"style":424},"language-yml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","services:\n  ignis:\n    image: nobbe\u002Fignis:latest\n    ports:\n      - \"9898:8080\"\n    environment:\n      # sesuaikan ini dengan pengguna host Anda (jalankan: id)\n      - PUID=1000\n      - PGID=1000\n      - WS_ORIGINS=https:\u002F\u002Fobsidian.pafor.me\n    volumes:\n      - .\u002Fvaults:\u002Fvaults\n      - .\u002Fdata:\u002Fapp\u002Fdata\n      - obsidian-app:\u002Fapp\u002Fobsidian-app\n    restart: unless-stopped\n\nvolumes:\n  obsidian-app:\n","yml",[575,1064,1065,1073,1080,1090,1097,1111,1118,1123,1130,1138,1146,1154,1162,1170,1178,1189,1194,1202],{"__ignoreMap":424},[578,1066,1067,1071],{"class":580,"line":581},[578,1068,1070],{"class":1069},"swJcz","services",[578,1072,847],{"class":720},[578,1074,1075,1078],{"class":580,"line":599},[578,1076,1077],{"class":1069},"  ignis",[578,1079,847],{"class":720},[578,1081,1082,1085,1087],{"class":580,"line":605},[578,1083,1084],{"class":1069},"    image",[578,1086,766],{"class":720},[578,1088,1089],{"class":588}," nobbe\u002Fignis:latest\n",[578,1091,1092,1095],{"class":580,"line":612},[578,1093,1094],{"class":1069},"    ports",[578,1096,847],{"class":720},[578,1098,1099,1102,1105,1108],{"class":580,"line":622},[578,1100,1101],{"class":720},"      -",[578,1103,1104],{"class":720}," \"",[578,1106,1107],{"class":588},"9898:8080",[578,1109,1110],{"class":720},"\"\n",[578,1112,1113,1116],{"class":580,"line":627},[578,1114,1115],{"class":1069},"    environment",[578,1117,847],{"class":720},[578,1119,1120],{"class":580,"line":633},[578,1121,1122],{"class":608},"      # sesuaikan ini dengan pengguna host Anda (jalankan: id)\n",[578,1124,1125,1127],{"class":580,"line":773},[578,1126,1101],{"class":720},[578,1128,1129],{"class":588}," PUID=1000\n",[578,1131,1133,1135],{"class":580,"line":1132},9,[578,1134,1101],{"class":720},[578,1136,1137],{"class":588}," PGID=1000\n",[578,1139,1141,1143],{"class":580,"line":1140},10,[578,1142,1101],{"class":720},[578,1144,1145],{"class":588}," WS_ORIGINS=https:\u002F\u002Fobsidian.pafor.me\n",[578,1147,1149,1152],{"class":580,"line":1148},11,[578,1150,1151],{"class":1069},"    volumes",[578,1153,847],{"class":720},[578,1155,1157,1159],{"class":580,"line":1156},12,[578,1158,1101],{"class":720},[578,1160,1161],{"class":588}," .\u002Fvaults:\u002Fvaults\n",[578,1163,1165,1167],{"class":580,"line":1164},13,[578,1166,1101],{"class":720},[578,1168,1169],{"class":588}," .\u002Fdata:\u002Fapp\u002Fdata\n",[578,1171,1173,1175],{"class":580,"line":1172},14,[578,1174,1101],{"class":720},[578,1176,1177],{"class":588}," obsidian-app:\u002Fapp\u002Fobsidian-app\n",[578,1179,1181,1184,1186],{"class":580,"line":1180},15,[578,1182,1183],{"class":1069},"    restart",[578,1185,766],{"class":720},[578,1187,1188],{"class":588}," unless-stopped\n",[578,1190,1192],{"class":580,"line":1191},16,[578,1193,739],{"emptyLinePlaceholder":738},[578,1195,1197,1200],{"class":580,"line":1196},17,[578,1198,1199],{"class":1069},"volumes",[578,1201,847],{"class":720},[578,1203,1205,1208],{"class":580,"line":1204},18,[578,1206,1207],{"class":1069},"  obsidian-app",[578,1209,847],{"class":720},[503,1211,1212,1223,1236],{},[506,1213,1214,1215,1218,1219,1222],{},"Gunakan port ",[575,1216,1217],{},"9898"," pada host, karena ",[575,1220,1221],{},"8080"," biasanya digunakan oleh layanan lain.",[506,1224,800,1225,1228,1229,464,1232,1235],{},[575,1226,1227],{},"id"," di VPS Anda untuk memverifikasi ",[575,1230,1231],{},"UID",[575,1233,1234],{},"GID"," pengguna host Anda untuk memastikan izin sistem berkas yang benar.",[506,1237,1238,1239,1242],{},"Atur ",[575,1240,1241],{},"WS_ORIGINS"," hanya untuk mengizinkan koneksi WebSocket yang berasal dari nama domain spesifik Anda.",[429,1244,1245,1246,766],{},"Jalankan docker ",[462,1247,456],{},[569,1249,1251],{"className":571,"code":1250,"language":573,"meta":424,"style":424},"docker compose -f ignis-docker-compose.yml up -d\n",[575,1252,1253],{"__ignoreMap":424},[578,1254,1255,1257,1259,1262,1265,1267],{"class":580,"line":581},[578,1256,788],{"class":584},[578,1258,791],{"class":588},[578,1260,1261],{"class":588}," -f",[578,1263,1264],{"class":588}," ignis-docker-compose.yml",[578,1266,794],{"class":588},[578,1268,797],{"class":588},[429,1270,1271,1272,1275,1276,1279],{},"Saat Anda menavigasi ke domain Anda di browser web, ",[462,1273,1274],{},"'Vault Manager'"," akan muncul. Ini akan kosong karena belum ada vault yang dikonfigurasi. Kita akan menyiapkan ",[462,1277,1278],{},"'Synch CLI'"," di bagian berikutnya untuk menyinkronkan konten dari vault jarak jauh kita.",[433,1281],{"src":1282,"alt":1283,"style":1284},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-vault-manager-empty.webp","Antarmuka Vault Manager kosong pada web client Ignis","max-width: 466px; width: 100%; height: auto;",[543,1286,1288],{"id":1287},"masalah-firewall","Masalah Firewall",[429,1290,1291,1292,1295,1296,766],{},"Secara default, Docker secara otomatis menyisipkan aturan DNAT dan FORWARD miliknya sendiri, yang merutekan lalu lintas publik secara langsung ke kontainer aktif. Ini melewati rantai ",[575,1293,1294],{},"INPUT"," standar Ubuntu UFW\u002Fiptables. Untuk memblokir lalu lintas publik eksternal dan menjaga agar kontainer tetap privat, tambahkan aturan berikut secara manual ke ",[575,1297,1298],{},"iptables",[569,1300,1302],{"className":571,"code":1301,"language":573,"meta":424,"style":424},"# Blokir semua lalu lintas publik eksternal\nsudo iptables -I DOCKER-USER -i ext_if -j DROP \n\n# Izinkan lalu lintas hanya dari IP privat klien Cloudflare WARP Anda\nsudo iptables -I DOCKER-USER -i ext_if -s 100.96.0.10 -j ACCEPT\n",[575,1303,1304,1309,1338,1342,1347],{"__ignoreMap":424},[578,1305,1306],{"class":580,"line":581},[578,1307,1308],{"class":608},"# Blokir semua lalu lintas publik eksternal\n",[578,1310,1311,1314,1317,1320,1323,1326,1329,1332,1335],{"class":580,"line":599},[578,1312,1313],{"class":584},"sudo",[578,1315,1316],{"class":588}," iptables",[578,1318,1319],{"class":588}," -I",[578,1321,1322],{"class":588}," DOCKER-USER",[578,1324,1325],{"class":588}," -i",[578,1327,1328],{"class":588}," ext_if",[578,1330,1331],{"class":588}," -j",[578,1333,1334],{"class":588}," DROP",[578,1336,1337],{"class":595}," \n",[578,1339,1340],{"class":580,"line":605},[578,1341,739],{"emptyLinePlaceholder":738},[578,1343,1344],{"class":580,"line":612},[578,1345,1346],{"class":608},"# Izinkan lalu lintas hanya dari IP privat klien Cloudflare WARP Anda\n",[578,1348,1349,1351,1353,1355,1357,1359,1361,1364,1367,1369],{"class":580,"line":622},[578,1350,1313],{"class":584},[578,1352,1316],{"class":588},[578,1354,1319],{"class":588},[578,1356,1322],{"class":588},[578,1358,1325],{"class":588},[578,1360,1328],{"class":588},[578,1362,1363],{"class":588}," -s",[578,1365,1366],{"class":769}," 100.96.0.10",[578,1368,1331],{"class":588},[578,1370,1371],{"class":588}," ACCEPT\n",[543,1373,1375],{"id":1374},"konfigurasi-synch-cli","Konfigurasi Synch CLI",[429,1377,1378,1380],{},[462,1379,979],{}," adalah alat tanpa kepala (headless tool) yang memungkinkan direktori vault Obsidian disinkronkan langsung di server jarak jauh tanpa memerlukan aplikasi desktop penuh untuk diinstal.",[429,1382,1383,1384,1386,1387,1390,1391,1394,1395,1398,1399,1402,1403,1406,1407,1410,1411,1414,1415,1418],{},"Bangun ",[462,1385,979],{}," dari repositori ",[575,1388,1389],{},"synch"," yang Anda klon. Membangun memerlukan ",[462,1392,1393],{},"Node.js >= 22.5"," (karena CLI bergantung pada ",[575,1396,1397],{},"node:sqlite"," dan API browser global seperti ",[575,1400,1401],{},"fetch",", ",[575,1404,1405],{},"WebSocket",", dan ",[575,1408,1409],{},"WebCrypto",") dan ",[462,1412,1413],{},"pnpm"," (karena repositori terstruktur sebagai ruang kerja pnpm menggunakan versi ",[575,1416,1417],{},"10.33.0","):",[569,1420,1422],{"className":571,"code":1421,"language":573,"meta":424,"style":424},"# Periksa versi\nnode --version   # harus >= 22.5\npnpm --version\n\n# Di root repositori\npnpm install\n\n# Bangun bundel CLI\npnpm -C apps\u002Fcli build\n\n# Setelah pembangunan berhasil, Anda akan memiliki `apps\u002Fcli\u002Fdist\u002Fsynch.js`. Jadikan dapat dieksekusi dan masukkan ke PATH Anda\nchmod +x apps\u002Fcli\u002Fdist\u002Fsynch.js\nln -sf \"$PWD\u002Fapps\u002Fcli\u002Fdist\u002Fsynch.js\" \"$HOME\u002F.local\u002Fbin\u002Fsynch\"\n\n# Verifikasi\nsynch --help\n",[575,1423,1424,1429,1440,1447,1451,1456,1463,1467,1472,1485,1489,1494,1505,1534,1538,1543],{"__ignoreMap":424},[578,1425,1426],{"class":580,"line":581},[578,1427,1428],{"class":608},"# Periksa versi\n",[578,1430,1431,1434,1437],{"class":580,"line":599},[578,1432,1433],{"class":584},"node",[578,1435,1436],{"class":588}," --version",[578,1438,1439],{"class":608},"   # harus >= 22.5\n",[578,1441,1442,1444],{"class":580,"line":605},[578,1443,1413],{"class":584},[578,1445,1446],{"class":588}," --version\n",[578,1448,1449],{"class":580,"line":612},[578,1450,739],{"emptyLinePlaceholder":738},[578,1452,1453],{"class":580,"line":622},[578,1454,1455],{"class":608},"# Di root repositori\n",[578,1457,1458,1460],{"class":580,"line":627},[578,1459,1413],{"class":584},[578,1461,1462],{"class":588}," install\n",[578,1464,1465],{"class":580,"line":633},[578,1466,739],{"emptyLinePlaceholder":738},[578,1468,1469],{"class":580,"line":773},[578,1470,1471],{"class":608},"# Bangun bundel CLI\n",[578,1473,1474,1476,1479,1482],{"class":580,"line":1132},[578,1475,1413],{"class":584},[578,1477,1478],{"class":588}," -C",[578,1480,1481],{"class":588}," apps\u002Fcli",[578,1483,1484],{"class":588}," build\n",[578,1486,1487],{"class":580,"line":1140},[578,1488,739],{"emptyLinePlaceholder":738},[578,1490,1491],{"class":580,"line":1148},[578,1492,1493],{"class":608},"# Setelah pembangunan berhasil, Anda akan memiliki `apps\u002Fcli\u002Fdist\u002Fsynch.js`. Jadikan dapat dieksekusi dan masukkan ke PATH Anda\n",[578,1495,1496,1499,1502],{"class":580,"line":1156},[578,1497,1498],{"class":584},"chmod",[578,1500,1501],{"class":588}," +x",[578,1503,1504],{"class":588}," apps\u002Fcli\u002Fdist\u002Fsynch.js\n",[578,1506,1507,1510,1513,1515,1518,1521,1524,1526,1529,1532],{"class":580,"line":1164},[578,1508,1509],{"class":584},"ln",[578,1511,1512],{"class":588}," -sf",[578,1514,1104],{"class":720},[578,1516,1517],{"class":595},"$PWD",[578,1519,1520],{"class":588},"\u002Fapps\u002Fcli\u002Fdist\u002Fsynch.js",[578,1522,1523],{"class":720},"\"",[578,1525,1104],{"class":720},[578,1527,1528],{"class":595},"$HOME",[578,1530,1531],{"class":588},"\u002F.local\u002Fbin\u002Fsynch",[578,1533,1110],{"class":720},[578,1535,1536],{"class":580,"line":1172},[578,1537,739],{"emptyLinePlaceholder":738},[578,1539,1540],{"class":580,"line":1180},[578,1541,1542],{"class":608},"# Verifikasi\n",[578,1544,1545,1547],{"class":580,"line":1191},[578,1546,1389],{"class":584},[578,1548,1549],{"class":588}," --help\n",[429,1551,1552,1553,1556],{},"Karena Synch CLI berjalan di VPS yang sama dengan vault jarak jauh Synch Anda, ia dapat terhubung ke server API lokal secara langsung. Jika Anda mengonfigurasi server yang berbeda, jalankan ",[575,1554,1555],{},"synch login --api-url \u003Cremote-synch-api-url>"," untuk menentukan endpoint API target Anda.",[429,1558,1559],{},[433,1560],{"alt":1561,"src":1562},"Menjalankan synch login dengan URL API khusus pada terminal","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynch-login-api-url-terminal.webp",[429,1564,1565,1566,1569],{},"Jalankan ",[575,1567,1568],{},"synch login"," di terminal Anda, dan Anda akan menerima URL autentikasi:",[429,1571,1572],{},[433,1573],{"alt":1574,"src":1575},"Tampilan terminal menunjukkan URL otentikasi untuk Synch CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynch-login-auth-url-terminal.webp",[429,1577,1578],{},"Masuk melalui halaman web menggunakan alamat email yang sama yang terdaftar dengan plugin Synchrun desktop Obsidian Anda.",[429,1580,1581],{},[433,1582],{"alt":1583,"src":1584},"Otentikasi berhasil melalui web login untuk Synch CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynch-web-login-success.webp",[429,1586,1565,1587,1590],{},[575,1588,1589],{},"synch vault connect --vault ~\u002Fvaults\u002F\u003Cnama-vault> --vault-id asadqe-7b29-4677-fsad-234asdafasd"," untuk menautkan direktori vault lokal Anda di VPS ke vault jarak jauh.",[429,1592,1593,1594,1597,1598,1601,1602,1418],{},"ID vault jarak jauh dapat ditemukan di dalam pengaturan plugin ",[462,1595,1596],{},"Synchrun"," dengan mengklik ",[462,1599,1600],{},"'Manage remote vaults'"," (Kelola vault jarak jauh). Ini akan menampilkan halaman web yang menunjukkan daftar vault jarak jauh Anda, masing-masing diidentifikasi oleh GUID unik (misalnya, ",[575,1603,1604],{},"123e4567-e89b-12d3-a456-426614174000",[429,1606,1607,1612],{},[433,1608],{"src":1609,"alt":1610,"style":1611},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynchrun-manage-remote-vaults.webp","Mengelola vault jarak jauh melalui plugin Synchrun","max-width: 582px; width: 100%; height: auto;",[433,1613],{"alt":1614,"src":1615},"Mencari ID vault jarak jauh yang unik di Synchrun","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynchrun-remote-vault-id.webp",[429,1617,1618,1619,1622],{},"Masukkan kata sandi vault Anda saat diminta untuk membuat tautan. Setelah terhubung, jalankan ",[575,1620,1621],{},"synch sync --vault ~\u002Fvaults\u002F\u003Cnama-vault>"," untuk melakukan sinkronisasi awal Anda. Sinkronisasi pertama ini mungkin memakan waktu cukup lama tergantung pada ukuran vault Anda.",[429,1624,1625],{},[433,1626],{"alt":1627,"src":1628},"Kemajuan awal sinkronisasi vault pada Synch CLI","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fsynch-cli-initial-sync-progress.webp",[429,1630,1631,1632,1635],{},"Untuk mengotomatiskan ini, siapkan dan aktifkan layanan systemd untuk menjalankan ",[575,1633,1634],{},"synch watch"," secara terus-menerus, memastikan perubahan disinkronkan secara instan saat boot:",[569,1637,1639],{"className":571,"code":1638,"language":573,"meta":424,"style":424},"sudo tee \u002Fetc\u002Fsystemd\u002Fsystem\u002Fsynch-watch.service \u003C\u003C'EOF'\n[Unit]\nDescription=Synch vault watcher\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nUser=\u003Cusername>\nExecStart=\u002Fhome\u002F\u003Cusername>\u002F.local\u002Fbin\u002Fsynch watch --vault \u002Fhome\u002F\u003Cusername>\u002Fvaults\u002F\u003Cvault-name>\nWorkingDirectory=\u002Fhome\u002F\u003Cusername>\u002Fvaults\nEnvironment=\"PATH=\u002Fhome\u002F\u003Cusername>\u002F.local\u002Fbin:\u002Fhome\u002F\u003Cusername>\u002F.cargo\u002Fbin:\u002Fusr\u002Flocal\u002Fsbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fsbin:\u002Fusr\u002Fbin:\u002Fsbin:\u002Fbin\"\nEnvironment=\"HOME=\u002Fhome\u002F\u003Cusername>\"\nRestart=always\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\nEOF\nsudo systemctl daemon-reload\nsudo systemctl enable --now synch-watch.service\n",[575,1640,1641,1657,1662,1667,1672,1677,1681,1686,1691,1696,1701,1706,1711,1716,1721,1726,1730,1735,1740,1746,1757],{"__ignoreMap":424},[578,1642,1643,1645,1648,1651,1654],{"class":580,"line":581},[578,1644,1313],{"class":584},[578,1646,1647],{"class":588}," tee",[578,1649,1650],{"class":588}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fsynch-watch.service",[578,1652,1653],{"class":720}," \u003C\u003C",[578,1655,1656],{"class":720},"'EOF'\n",[578,1658,1659],{"class":580,"line":599},[578,1660,1661],{"class":588},"[Unit]\n",[578,1663,1664],{"class":580,"line":605},[578,1665,1666],{"class":588},"Description=Synch vault watcher\n",[578,1668,1669],{"class":580,"line":612},[578,1670,1671],{"class":588},"After=network-online.target\n",[578,1673,1674],{"class":580,"line":622},[578,1675,1676],{"class":588},"Wants=network-online.target\n",[578,1678,1679],{"class":580,"line":627},[578,1680,739],{"emptyLinePlaceholder":738},[578,1682,1683],{"class":580,"line":633},[578,1684,1685],{"class":588},"[Service]\n",[578,1687,1688],{"class":580,"line":773},[578,1689,1690],{"class":588},"Type=simple\n",[578,1692,1693],{"class":580,"line":1132},[578,1694,1695],{"class":588},"User=\u003Cusername>\n",[578,1697,1698],{"class":580,"line":1140},[578,1699,1700],{"class":588},"ExecStart=\u002Fhome\u002F\u003Cusername>\u002F.local\u002Fbin\u002Fsynch watch --vault \u002Fhome\u002F\u003Cusername>\u002Fvaults\u002F\u003Cvault-name>\n",[578,1702,1703],{"class":580,"line":1148},[578,1704,1705],{"class":588},"WorkingDirectory=\u002Fhome\u002F\u003Cusername>\u002Fvaults\n",[578,1707,1708],{"class":580,"line":1156},[578,1709,1710],{"class":588},"Environment=\"PATH=\u002Fhome\u002F\u003Cusername>\u002F.local\u002Fbin:\u002Fhome\u002F\u003Cusername>\u002F.cargo\u002Fbin:\u002Fusr\u002Flocal\u002Fsbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fsbin:\u002Fusr\u002Fbin:\u002Fsbin:\u002Fbin\"\n",[578,1712,1713],{"class":580,"line":1164},[578,1714,1715],{"class":588},"Environment=\"HOME=\u002Fhome\u002F\u003Cusername>\"\n",[578,1717,1718],{"class":580,"line":1172},[578,1719,1720],{"class":588},"Restart=always\n",[578,1722,1723],{"class":580,"line":1180},[578,1724,1725],{"class":588},"RestartSec=5\n",[578,1727,1728],{"class":580,"line":1191},[578,1729,739],{"emptyLinePlaceholder":738},[578,1731,1732],{"class":580,"line":1196},[578,1733,1734],{"class":588},"[Install]\n",[578,1736,1737],{"class":580,"line":1204},[578,1738,1739],{"class":588},"WantedBy=multi-user.target\n",[578,1741,1743],{"class":580,"line":1742},19,[578,1744,1745],{"class":720},"EOF\n",[578,1747,1749,1751,1754],{"class":580,"line":1748},20,[578,1750,1313],{"class":584},[578,1752,1753],{"class":588}," systemctl",[578,1755,1756],{"class":588}," daemon-reload\n",[578,1758,1760,1762,1764,1767,1770],{"class":580,"line":1759},21,[578,1761,1313],{"class":584},[578,1763,1753],{"class":588},[578,1765,1766],{"class":588}," enable",[578,1768,1769],{"class":588}," --now",[578,1771,1772],{"class":588}," synch-watch.service\n",[429,1774,1775,1776,1778],{},"Buka ",[575,1777,1009],{}," di browser web Anda. Anda akan menemukan bahwa antarmuka pengguna dan tata letaknya hampir identik dengan aplikasi desktop:",[433,1780],{"src":1781,"alt":1782,"style":1783},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-web-interface-desktop-view.webp","Antarmuka web Ignis menampilkan vault Obsidian di desktop","max-width: 593px; width: 100%; height: auto;",[429,1785,1786],{},"Mengklik ikon pengaturan mengungkapkan bahwa hampir semua konfigurasi inti masih utuh, meskipun plugin komunitas Anda perlu diinstal ulang:",[433,1788],{"src":1789,"alt":1790,"style":1791},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-settings-community-plugins.webp","Pengaturan plugin komunitas di antarmuka web Ignis","max-width: 597px; width: 100%; height: auto;",[429,1793,1794],{},"Untuk menguji penyiapan, Anda dapat menambahkan catatan baru melalui antarmuka web:",[433,1796],{"src":1797,"alt":1798,"style":1791},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-create-new-note-web.webp","Membuat catatan markdown baru menggunakan antarmuka web Ignis",[429,1800,1801,1802,991],{},"Catatan tersebut segera disinkronkan kembali ke aplikasi desktop Obsidian Anda. Perhatikan bahwa folder kosong tidak muncul di ",[462,1803,456],{},[433,1805],{"src":1806,"alt":1807,"style":1808},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fobsidian-desktop-synced-note.webp","Catatan yang baru dibuat sukses disinkronkan ke aplikasi desktop Obsidian","max-width: 502px; width: 100%; height: auto;",[429,1810,1811,1812,1814],{},"Melihat ",[575,1813,1009],{}," di browser web seluler:",[429,1816,1817,1822],{},[433,1818],{"src":1819,"alt":1820,"style":1821},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-mobile-view-sidebar.webp","Navigasi menu bilah sisi web client Ignis pada perangkat seluler","max-width: 269px; width: 100%; height: auto;",[433,1823],{"src":1824,"alt":1825,"style":1821},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002Fignis-mobile-view-editor.webp","Editor catatan markdown dari web client Ignis pada perangkat seluler",[429,1827,1828,1829,1831,1832,1835],{},"Saat Anda menghapus catatan di ",[462,1830,456],{},", catatan tersebut dipindahkan dengan aman ke folder ",[575,1833,1834],{},"~\u002Fvaults\u002F\u003Cnama-vault>\u002F.trash"," vault lokal Anda.",[493,1837,1839],{"id":1838},"pemikiran-akhir-tentang-vault-yang-di-host-sendiri","Pemikiran Akhir tentang Vault yang Di-host Sendiri",[429,1841,1842,1843,464,1845,1847,1848,1850],{},"Bersama-sama, ",[462,1844,447],{},[462,1846,456],{}," membuat vault Obsidian utama Anda tersedia dengan mulus di semua perangkat Anda, sepenuhnya di-host pada infrastruktur di bawah kendali langsung Anda. Menempatkan layanan ini di dalam jaringan pribadi ",[462,1849,476],{}," memastikan bahwa catatan pribadi Anda sepenuhnya terlindungi dari internet publik.",[429,1852,1853,1855],{},[462,1854,456],{}," tidak dimaksudkan untuk sepenuhnya menggantikan aplikasi desktop Obsidian asli. Sebaliknya, ia berfungsi sebagai klien web ringan dan sementara untuk mengakses dan mengedit vault Anda saat Anda berada jauh dari komputer utama Anda. Untuk penulisan sehari-hari dan pengelolaan vault yang ekstensif, aplikasi Obsidian asli tetap menjadi pilihan yang paling nyaman.",[429,1857,1858,1859,1861],{},"Karena Synch menggunakan enkripsi ujung-ke-ujung, kata sandi vault jarak jauh Anda harus sangat aman untuk melindungi dari serangan tebakan brutal (brute-force). Sangat penting bagi Anda untuk tidak pernah kehilangan kata sandi ini—server tidak menyimpan ",[462,1860,525],{}," yang tidak terenkripsi, dan jika terlupa, data Anda sama sekali tidak akan dapat dipulihkan. Selain itu, pastikan instance VPS Anda, bersama dengan snapshot atau cadangan otomatis apa pun, diamankan dan dipelihara dengan benar.",[429,1863,1864],{},"Meskipun riwayat versi terenkripsi dari Synch dan alat pemulihan berkas yang dihapus mencakup sebagian besar kehilangan yang tidak disengaja, menyimpan cadangan terpisah dan independen dari vault Obsidian Anda tetap sangat disarankan.",[493,1866,1868],{"id":1867},"referensi","Referensi",[503,1870,1871,1878,1885],{},[506,1872,1873],{},[442,1874,1877],{"href":1875,"rel":1876},"https:\u002F\u002Fsynch.run\u002Fself-hosting-docker\u002F",[446],"Synch Deploy dengan Docker Compose",[506,1879,1880],{},[442,1881,1884],{"href":1882,"rel":1883},"https:\u002F\u002Fignis.thiefling.com\u002Fdocs\u002Fserver\u002Fdeploy\u002F",[446],"Ignis Deploy dengan Docker",[506,1886,1887],{},[442,1888,1891],{"href":1889,"rel":1890},"https:\u002F\u002Fsynch.run\u002Fblog\u002Fencryption-and-decryption\u002F",[446],"Bagaimana cara kerja enkripsi ujung-ke-ujung di Synch?",[1893,1894,1895],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":424,"searchDepth":599,"depth":605,"links":1897},[1898,1907,1916,1917],{"id":495,"depth":599,"text":496,"children":1899},[1900,1904],{"id":540,"depth":605,"text":541,"children":1901},[1902,1903],{"id":545,"depth":612,"text":546},{"id":561,"depth":612,"text":562},{"id":819,"depth":605,"text":820,"children":1905},[1906],{"id":823,"depth":612,"text":824},{"id":942,"depth":599,"text":943,"children":1908},[1909],{"id":965,"depth":605,"text":966,"children":1910},[1911,1912,1913,1914,1915],{"id":994,"depth":612,"text":995},{"id":1003,"depth":612,"text":685},{"id":1049,"depth":612,"text":1050},{"id":1287,"depth":612,"text":1288},{"id":1374,"depth":612,"text":1375},{"id":1838,"depth":599,"text":1839},{"id":1867,"depth":599,"text":1868},[1919],"productivity","2026-09-15","Sinkronkan vault Obsidian antar perangkat Anda dan akses catatan di web secara aman menggunakan Synch & Ignis self-hosted di dalam Cloudflare Zero Trust privat.","md","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSync%20Obsidian%20Across%20Devices\u002FID-Sync-Obsidian-Across-Devices.webp","Sinkronisasi aman vault Obsidian di beberapa perangkat menggunakan Synch mandiri dan web client Ignis dalam jaringan pribadi Cloudflare Zero Trust",{"schemaOrg":1926,"robots":1931,"sitemap":1932},[1927,1929],{"@type":1928,"headline":423,"description":1921,"image":1923},"Article",{"@type":1930,"name":423,"description":1921,"image":1923},"HowTo","index, follow",{"lastmod":1933},"2026-09-16",{"title":1935,"description":1921,"ogTitle":423,"ogDescription":1921,"twitterTitle":423,"twitterDescription":1921},"Sinkronisasi Obsidian self-hosted aman dengan Synch & Ignis","id\u002Farticle\u002Fsync-obsidian-across-devices",[1938,1939,1940,1941],"Self-hosting","Obsidian","Sync","Zero Trust",null,"9Can2wM6cs-QbSlkrLrcjEMJNA45Jugpea-xFOP69mw",{"surround":1945,"related":5060},[1946,4139],{"id":1947,"title":701,"author":424,"body":1948,"category":4099,"date":4102,"description":4103,"extension":1922,"image":4104,"imageAlt":4105,"isPublished":738,"meta":4106,"minRead":1191,"navigation":738,"path":161,"seo":4130,"stem":4132,"tags":4133,"updatedAt":1942,"__hash__":4138},"article\u002Fid\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues.md",{"type":426,"value":1949,"toc":4069},[1950,1953,1959,1965,1969,1972,2010,2014,2020,2058,2062,2066,2080,2087,2092,2096,2100,2115,2121,2170,2196,2200,2208,2214,2218,2221,2431,2435,2475,2481,2488,2496,2545,2551,2577,2581,2585,2612,2638,2643,2685,2694,2966,2970,3013,3018,3025,3029,3033,3057,3060,3066,3069,3073,3081,3087,3090,3096,3102,3131,3137,3143,3146,3152,3156,3159,3162,3165,3171,3174,3180,3186,3192,3197,3201,3212,3219,3225,3228,3234,3238,3245,3251,3258,3262,3270,3334,3347,3402,3405,3476,3482,3498,3504,3508,3554,3560,3563,3569,3572,3578,3582,3599,3615,3621,3719,3722,3728,3739,3788,3794,3800,3813,3829,3832,3838,3842,3849,3871,3881,3979,3990,3996,4003,4009,4012,4018,4021,4027,4031,4034,4036,4066],[429,1951,1952],{},"Fragmentasi konteks adalah kendala yang membuat frustrasi saat bekerja dengan beberapa agen AI. Dengan percakapan yang tersebar di berbagai alat, Anda akhirnya bertindak sebagai perute manusia (human router) dengan menyalin percakapan dari Claude Code untuk ditempelkan ke Gemini CLI, lalu menyalin dari Gemini CLI untuk ditempelkan ke Hermes Agent. Friksi ini meningkat ketika ada rekan manusia dalam tim yang sama.",[429,1954,1955],{},[433,1956],{"alt":1957,"src":1958},"Antarmuka pengguna ruang kerja kolaboratif Buzz yang menampilkan saluran obrolan dan agen AI yang aktif","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-workspace-interface.webp",[429,1960,1961,1964],{},[462,1962,1963],{},"Buzz",", sebuah ruang kerja kolaborasi sumber terbuka (open-source), menyatukan tim manusia dan agen AI ke dalam satu lingkungan yang terpadu. Di sini, rekan manusia dan agen AI berbagi riwayat tugas dan proyek yang sama, menyerahkan pekerjaan satu sama lain secara mulus.",[493,1966,1968],{"id":1967},"apa-itu-buzz-dari-block-ruang-kerja-kolaboratif-agen-ai","Apa itu Buzz dari Block? Ruang Kerja Kolaboratif Agen AI",[429,1970,1971],{},"Buzz adalah ruang kerja kolaborasi sumber terbuka dari Block (perusahaan milik Jack Dorsey) tempat manusia dan agen AI berbagi saluran dan proyek yang sama. Buzz menawarkan fitur-fitur utama berikut:",[503,1973,1974,1980,1986,1992,1998,2004],{},[506,1975,1976,1979],{},[462,1977,1978],{},"Konteks bersama:"," Saluran (channels) adalah tempat manusia dan agen berkolaborasi satu sama lain. Semua riwayat percakapan dan proyek terkandung di dalam saluran tersebut.",[506,1981,1982,1985],{},[462,1983,1984],{},"Komunikasi antar-agen:"," Agen dapat berkomunikasi satu sama lain, bahkan di mesin yang berbeda. Agen dapat me-@mention agen lain untuk menyerahkan pekerjaan atau memeriksa silang kode.",[506,1987,1988,1991],{},[462,1989,1990],{},"Aktivasi berbasis sebutan (mention-driven):"," Agen hanya bertindak ketika di-@mention, jika tidak, mereka akan tetap diam. Saat disebut, agen membaca konteks yang relevan di saluran tersebut dan mulai bekerja.",[506,1993,1994,1997],{},[462,1995,1996],{},"Sistem identitas terpadu:"," Manusia dan agen menggunakan sistem identitas yang sama, yang diautentikasi melalui kunci kriptografi.",[506,1999,2000,2003],{},[462,2001,2002],{},"Perintah yang didelegasikan:"," Anda dapat memberikan izin kepada rekan manusia untuk memerintah agen Anda, memungkinkan seluruh tim untuk memberi instruksi dan memanfaatkan asisten digital satu sama lain.",[506,2005,2006,2009],{},[462,2007,2008],{},"Server mandiri (self-hosted):"," Karena Anda meng-host server sendiri, data Anda tetap sepenuhnya berada di bawah kendali Anda. Anda memilih siapa yang bergabung dan menetapkan aturan operasional Anda sendiri.",[493,2011,2013],{"id":2012},"arsitektur-buzz-yang-kriptografis-dan-didukung-nostr","Arsitektur Buzz yang Kriptografis dan Didukung Nostr",[429,2015,2016],{},[433,2017],{"alt":2018,"src":2019},"Diagram arsitektur kriptografis berbasis Nostr dari ruang kerja kolaborasi Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-nostr-cryptographic-architecture.webp",[503,2021,2022,2028,2034,2040,2046,2052],{},[506,2023,2024,2027],{},[462,2025,2026],{},"Relay Nostr bertindak sebagai server:"," Pesan, alur kerja, repositori, dan peristiwa lainnya ditandatangani secara kriptografis, diverifikasi, dan disimpan di server relay Nostr. Protokol Nostr secara native mendukung komunikasi melalui WebSockets dan REST API.",[506,2029,2030,2033],{},[462,2031,2032],{},"Identitas kriptografis terpadu:"," Manusia dan agen mengautentikasi menggunakan kunci kriptografis mereka sendiri. Identitas ini tetap berada di sisi klien (client-side) dan tidak pernah disimpan di server.",[506,2035,2036,2039],{},[462,2037,2038],{},"Keanggotaan agen kelas satu:"," Setiap agen memiliki identitas, keanggotaan saluran, dan jejak auditnya sendiri. Agen terhubung ke ruang kerja menggunakan Agent Communication Protocol (ACP).",[506,2041,2042,2045],{},[462,2043,2044],{},"Repositori Git terdesentralisasi:"," Repositori kode disimpan pada penyimpanan objek yang kompatibel dengan S3, sedangkan tugas, pull request, dan ulasan kode dilacak dalam log aktivitas Nostr. Oleh karena itu, repositori Git Buzz di-host di relay Nostr, bukan di GitHub.",[506,2047,2048,2051],{},[462,2049,2050],{},"Aplikasi Buzz adalah klien Nostr:"," Buzz terpisah dari relay Nostr; ini adalah aplikasi klien desktop\u002Fseluler yang terhubung ke URL relay.",[506,2053,2054,2057],{},[462,2055,2056],{},"Stack infrastruktur:"," Database PostgreSQL menangani penyimpanan peristiwa dan pencarian teks lengkap, Redis mengelola pesan pub\u002Fsub, dan MinIO yang kompatibel dengan S3 digunakan untuk penyimpanan media.",[493,2059,2061],{"id":2060},"cara-self-host-relay-buzz-block-di-linux-vps","Cara Self-Host Relay Buzz Block di Linux VPS",[538,2063,2065],{"id":2064},"_0-prasyarat","0. Prasyarat",[503,2067,2068,2071,2074,2077],{},[506,2069,2070],{},"Sebuah Linux VPS",[506,2072,2073],{},"Domain yang mengarah ke server Anda",[506,2075,2076],{},"Docker dan plugin Docker Compose",[506,2078,2079],{},"Akun Cloudflare (paket gratis)",[429,2081,2082,2083,2086],{},"Dalam panduan ini, kita akan menjalankan relay Nostr di Ubuntu VPS di balik jaringan privat ",[442,2084,2085],{"href":363},"Cara Mengekspos Hermes Agent secara Privat dengan WARP",". Stack-nya adalah empat layanan dalam Docker Compose — relay, PostgreSQL, Redis, dan MinIO — ditambah Caddy untuk HTTPS.",[484,2088],{"description":2089,"image":2090,"image-alt":2091,"label":489,"min-read":490,"title":2085,"to":363},"Pelajari cara mengekspos dan mengakses Hermes Agent Anda secara aman secara global menggunakan Cloudflare WARP dan Zero Trust tanpa membuka port firewall masuk.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002FID-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp","Mengekspos Hermes Agent secara aman ke jaringan privat menggunakan Cloudflare Zero Trust dan terowongan WARP",[538,2093,2095],{"id":2094},"_1-dns-cloudflare-dan-token-api","1. DNS Cloudflare dan Token API",[543,2097,2099],{"id":2098},"membuat-token-api-cloudflare","Membuat Token API Cloudflare",[2101,2102,2103,2110],"ol",{},[506,2104,2105,2106,2109],{},"Klik pada ",[462,2107,2108],{},"Profile"," di sudut kanan atas dari menu dropdown ikon pengguna.",[506,2111,2105,2112,991],{},[462,2113,2114],{},"API Tokens",[429,2116,2117],{},[433,2118],{"alt":2119,"src":2120},"Halaman profil pengguna Cloudflare yang menampilkan menu pembuatan Token API","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fcloudflare-profile-api-tokens.webp",[2101,2122,2123,2129,2135,2155,2160,2164,2167],{"start":605},[506,2124,2125,2126,991],{},"Klik ",[462,2127,2128],{},"Create Token",[506,2130,2131,2132,991],{},"Gunakan templat ",[462,2133,2134],{},"Edit zone DNS",[506,2136,2137,2138],{},"Konfigurasikan templat sebagai berikut:\n",[503,2139,2140,2146],{},[506,2141,2142,2145],{},[462,2143,2144],{},"Permissions",": Zone — DNS — Edit",[506,2147,2148,2151,2152],{},[462,2149,2150],{},"Zone Resources",": Include — Specific zone — ",[575,2153,2154],{},"example.com",[506,2156,2125,2157,991],{},[462,2158,2159],{},"Continue to summary",[506,2161,2125,2162,991],{},[462,2163,2128],{},[506,2165,2166],{},"Salin token yang dihasilkan karena tidak akan ditampilkan lagi setelah halaman ditutup.",[506,2168,2169],{},"Uji token yang dihasilkan di terminal Anda untuk memastikan token berfungsi:",[569,2171,2173],{"className":571,"code":2172,"language":573,"meta":424,"style":424},"curl \"https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fuser\u002Ftokens\u002Fverify\" -H \"Authorization: Bearer YOUR_TOKEN_HERE\"\n",[575,2174,2175],{"__ignoreMap":424},[578,2176,2177,2179,2181,2184,2186,2189,2191,2194],{"class":580,"line":581},[578,2178,803],{"class":584},[578,2180,1104],{"class":720},[578,2182,2183],{"class":588},"https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Fuser\u002Ftokens\u002Fverify",[578,2185,1523],{"class":720},[578,2187,2188],{"class":588}," -H",[578,2190,1104],{"class":720},[578,2192,2193],{"class":588},"Authorization: Bearer YOUR_TOKEN_HERE",[578,2195,1110],{"class":720},[543,2197,2199],{"id":2198},"catatan-dns","Catatan DNS",[503,2201,2202],{},[506,2203,2204,2205,991],{},"Buat catatan A dan atur ke ",[462,2206,2207],{},"DNS only",[429,2209,2210],{},[433,2211],{"alt":2212,"src":2213},"Mengonfigurasi catatan DNS A untuk domain Buzz di dasbor Cloudflare dengan status proksi diatur ke DNS saja","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fcloudflare-dns-a-record-configuration.webp",[538,2215,2217],{"id":2216},"_2-menginstal-docker-di-ubuntu","2. Menginstal Docker di Ubuntu",[429,2219,2220],{},"Jalankan perintah berikut untuk menginstal Docker di Ubuntu:",[569,2222,2224],{"className":571,"code":2223,"language":573,"meta":424,"style":424},"# Add Docker's official GPG key and set up the Docker repository\ncurl -fsSL https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu\u002Fgpg | sudo gpg --dearmor -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg\n\n# Add the official Docker repository\necho \"deb [arch=amd64 signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg] https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu $(lsb_release -cs) stable\" | sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list > \u002Fdev\u002Fnull\n\n# Update package list\nsudo apt update\n\n# Install Docker Engine, Docker Community Edition, and containerd runtime\nsudo apt install docker-ce docker-ce-cli containerd.io -y\n\n# Start automatically when the system boots\nsudo systemctl enable docker\n\n# Verify docker is installed\ndocker --version\n\nsudo apt install -y docker-compose-plugin\n\n# Verify the compose plugin is installed\ndocker compose version\n\n",[575,2225,2226,2231,2259,2263,2268,2310,2314,2319,2329,2333,2338,2359,2363,2368,2379,2383,2388,2394,2398,2412,2416,2421],{"__ignoreMap":424},[578,2227,2228],{"class":580,"line":581},[578,2229,2230],{"class":608},"# Add Docker's official GPG key and set up the Docker repository\n",[578,2232,2233,2235,2238,2241,2244,2247,2250,2253,2256],{"class":580,"line":599},[578,2234,803],{"class":584},[578,2236,2237],{"class":588}," -fsSL",[578,2239,2240],{"class":588}," https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu\u002Fgpg",[578,2242,2243],{"class":720}," |",[578,2245,2246],{"class":584}," sudo",[578,2248,2249],{"class":588}," gpg",[578,2251,2252],{"class":588}," --dearmor",[578,2254,2255],{"class":588}," -o",[578,2257,2258],{"class":588}," \u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg\n",[578,2260,2261],{"class":580,"line":605},[578,2262,739],{"emptyLinePlaceholder":738},[578,2264,2265],{"class":580,"line":612},[578,2266,2267],{"class":608},"# Add the official Docker repository\n",[578,2269,2270,2273,2275,2278,2281,2284,2287,2290,2293,2295,2297,2299,2301,2304,2307],{"class":580,"line":622},[578,2271,2272],{"class":615},"echo",[578,2274,1104],{"class":720},[578,2276,2277],{"class":588},"deb [arch=amd64 signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fdocker-archive-keyring.gpg] https:\u002F\u002Fdownload.docker.com\u002Flinux\u002Fubuntu ",[578,2279,2280],{"class":720},"$(",[578,2282,2283],{"class":584},"lsb_release",[578,2285,2286],{"class":588}," -cs",[578,2288,2289],{"class":720},")",[578,2291,2292],{"class":588}," stable",[578,2294,1523],{"class":720},[578,2296,2243],{"class":720},[578,2298,2246],{"class":584},[578,2300,1647],{"class":588},[578,2302,2303],{"class":588}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fdocker.list",[578,2305,2306],{"class":720}," >",[578,2308,2309],{"class":588}," \u002Fdev\u002Fnull\n",[578,2311,2312],{"class":580,"line":627},[578,2313,739],{"emptyLinePlaceholder":738},[578,2315,2316],{"class":580,"line":633},[578,2317,2318],{"class":608},"# Update package list\n",[578,2320,2321,2323,2326],{"class":580,"line":773},[578,2322,1313],{"class":584},[578,2324,2325],{"class":588}," apt",[578,2327,2328],{"class":588}," update\n",[578,2330,2331],{"class":580,"line":1132},[578,2332,739],{"emptyLinePlaceholder":738},[578,2334,2335],{"class":580,"line":1140},[578,2336,2337],{"class":608},"# Install Docker Engine, Docker Community Edition, and containerd runtime\n",[578,2339,2340,2342,2344,2347,2350,2353,2356],{"class":580,"line":1148},[578,2341,1313],{"class":584},[578,2343,2325],{"class":588},[578,2345,2346],{"class":588}," install",[578,2348,2349],{"class":588}," docker-ce",[578,2351,2352],{"class":588}," docker-ce-cli",[578,2354,2355],{"class":588}," containerd.io",[578,2357,2358],{"class":588}," -y\n",[578,2360,2361],{"class":580,"line":1156},[578,2362,739],{"emptyLinePlaceholder":738},[578,2364,2365],{"class":580,"line":1164},[578,2366,2367],{"class":608},"# Start automatically when the system boots\n",[578,2369,2370,2372,2374,2376],{"class":580,"line":1172},[578,2371,1313],{"class":584},[578,2373,1753],{"class":588},[578,2375,1766],{"class":588},[578,2377,2378],{"class":588}," docker\n",[578,2380,2381],{"class":580,"line":1180},[578,2382,739],{"emptyLinePlaceholder":738},[578,2384,2385],{"class":580,"line":1191},[578,2386,2387],{"class":608},"# Verify docker is installed\n",[578,2389,2390,2392],{"class":580,"line":1196},[578,2391,788],{"class":584},[578,2393,1446],{"class":588},[578,2395,2396],{"class":580,"line":1204},[578,2397,739],{"emptyLinePlaceholder":738},[578,2399,2400,2402,2404,2406,2409],{"class":580,"line":1742},[578,2401,1313],{"class":584},[578,2403,2325],{"class":588},[578,2405,2346],{"class":588},[578,2407,2408],{"class":588}," -y",[578,2410,2411],{"class":588}," docker-compose-plugin\n",[578,2413,2414],{"class":580,"line":1748},[578,2415,739],{"emptyLinePlaceholder":738},[578,2417,2418],{"class":580,"line":1759},[578,2419,2420],{"class":608},"# Verify the compose plugin is installed\n",[578,2422,2424,2426,2428],{"class":580,"line":2423},22,[578,2425,788],{"class":584},[578,2427,791],{"class":588},[578,2429,2430],{"class":588}," version\n",[538,2432,2434],{"id":2433},"_3-kloning-dan-konfigurasi","3. Kloning dan Konfigurasi",[569,2436,2438],{"className":571,"code":2437,"language":573,"meta":424,"style":424},"git clone https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz.git\n\ncd buzz\u002Fdeploy\u002Fcompose\ncp .env.example .env\nnano .env\n",[575,2439,2440,2449,2453,2460,2468],{"__ignoreMap":424},[578,2441,2442,2444,2446],{"class":580,"line":581},[578,2443,585],{"class":584},[578,2445,589],{"class":588},[578,2447,2448],{"class":588}," https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz.git\n",[578,2450,2451],{"class":580,"line":599},[578,2452,739],{"emptyLinePlaceholder":738},[578,2454,2455,2457],{"class":580,"line":605},[578,2456,616],{"class":615},[578,2458,2459],{"class":588}," buzz\u002Fdeploy\u002Fcompose\n",[578,2461,2462,2464,2466],{"class":580,"line":612},[578,2463,636],{"class":584},[578,2465,639],{"class":588},[578,2467,642],{"class":588},[578,2469,2470,2473],{"class":580,"line":622},[578,2471,2472],{"class":584},"nano",[578,2474,642],{"class":588},[429,2476,2477,2478,2480],{},"Edit ",[575,2479,649],{}," dalam beberapa kelompok:",[503,2482,2483],{},[506,2484,2485],{},[462,2486,2487],{},"Domain:",[569,2489,2494],{"className":2490,"code":2492,"language":2493},[2491],"language-text","BUZZ_DOMAIN=buzz.pafor.me\nRELAY_URL=wss:\u002F\u002Fbuzz.pafor.me\nBUZZ_PAIRING_RELAY_URL=wss:\u002F\u002Fbuzz.pafor.me\u002Fpair\nBUZZ_MEDIA_BASE_URL=https:\u002F\u002Fbuzz.pafor.me\u002Fmedia\nBUZZ_MEDIA_SERVER_DOMAIN=buzz.pafor.me\nBUZZ_CORS_ORIGINS=https:\u002F\u002Fbuzz.pafor.me\n","text",[575,2495,2492],{"__ignoreMap":424},[503,2497,2498,2508],{},[506,2499,2500,2503,2504,2507],{},[462,2501,2502],{},"Kunci pemilik:"," ",[575,2505,2506],{},"RELAY_OWNER_PUBKEY"," memerlukan kunci publik hex 64-karakter Anda. Buat identitas di aplikasi desktop terlebih dahulu ('Create a new identity key' → salin ID publik Anda, yang dalam format npub), lalu konversikan ke hex.",[506,2509,2510,2513],{},[462,2511,2512],{},"Rahasia (Secrets):",[503,2514,2515,2525,2539],{},[506,2516,2517,2518,2521,2522,2524],{},"Hasilkan rahasia menggunakan ",[442,2519,2520],{"href":669},"alat kustom online"," ini atau dengan ",[575,2523,674],{}," (jalankan tujuh kali)",[506,2526,2527,2528,2531,2532,1402,2535,2538],{},"Ganti setiap placeholder ",[575,2529,2530],{},"CHANGE_ME",": ",[575,2533,2534],{},"BUZZ_RELAY_PRIVATE_KEY",[575,2536,2537],{},"BUZZ_GIT_HOOK_HMAC_SECRET",", kata sandi Postgres\u002FRedis\u002FTypesense, dan kunci akses\u002Frahasia S3.",[506,2540,2541,2542,991],{},"Placeholder yang tersisa adalah penyebab paling umum dari loop mulai ulang kontainer; verifikasi milik Anda dengan ",[575,2543,2544],{},"grep CHANGE_ME .env",[569,2546,2549],{"className":2547,"code":2548,"language":2493},[2491],"    BUZZ_RELAY_PRIVATE_KEY=CHANGE_ME_64_HEX_PRIVATE_KEY\n    BUZZ_GIT_HOOK_HMAC_SECRET=CHANGE_ME_RANDOM_64_HEX\n    POSTGRES_PASSWORD=CHANGE_ME_RANDOM_PASSWORD\n    REDIS_PASSWORD=CHANGE_ME_RANDOM_PASSWORD\n    TYPESENSE_API_KEY=CHANGE_ME_RANDOM_API_KEY\n    BUZZ_S3_ACCESS_KEY=CHANGE_ME_RANDOM_ACCESS_KEY\n    BUZZ_S3_SECRET_KEY=CHANGE_ME_RANDOM_SECRET_KEY\n",[575,2550,2548],{"__ignoreMap":424},[503,2552,2553],{},[506,2554,2555,2558],{},[462,2556,2557],{},"Lainnya:",[503,2559,2560,2566],{},[506,2561,1006,2562,2565],{},[575,2563,2564],{},"CLOUDFLARE_API_TOKEN"," sebagai variabel lingkungan dan tetapkan token API yang dibuat sebelumnya. Ini diperlukan untuk Caddy.",[506,2567,2568,2569,1402,2571,1406,2574,991],{},"Buzz dikirimkan dengan default terbuka — siapa pun yang mengetahui URL relay Anda dapat mengautentikasi dan bergabung. Atur ",[575,2570,2506],{},[575,2572,2573],{},"BUZZ_REQUIRE_RELAY_MEMBERSHIP=true",[575,2575,2576],{},"BUZZ_REQUIRE_AUTH_TOKEN=true",[538,2578,2580],{"id":2579},"_4-mengaktifkan-https-dengan-caddy","4. Mengaktifkan HTTPS dengan Caddy",[543,2582,2584],{"id":2583},"membangun-image-caddy-kustom-dengan-modul-dns-cloudflare","Membangun Image Caddy Kustom dengan Modul DNS Cloudflare",[503,2586,2587,2598,2609],{},[506,2588,2589,2590,2593,2594,2597],{},"Kita menyiapkan DNS-01 dengan Cloudflare untuk Caddy. DNS-01 bekerja dengan meminta plugin menulis catatan TXT ",[575,2591,2592],{},"_acme-challenge.buzz.pafor.me"," ke ",[462,2595,2596],{},"DNS publik",";",[506,2599,2600,2601,2604,2605,2608],{},"Let's Encrypt kemudian mencari catatan tersebut dari internet publik untuk memverifikasi kontrol domain. Ini berarti ",[575,2602,2603],{},"pafor.me"," harus berupa zona publik di akun Cloudflare Anda — bukan hanya nama host privat yang hanya ada di DNS privat Zero Trust \u002F WARP. Jika ",[575,2606,2607],{},"buzz.pafor.me"," hanya diselesaikan secara privat dan tidak ada zona publik, DNS-01 akan gagal, sehingga memerlukan pendekatan yang berbeda.",[506,2610,2611],{},"Tambahkan berikut ini ke Caddyfile:",[569,2613,2615],{"className":1060,"code":2614,"language":1062,"meta":424,"style":424},"{\n  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}\n}\n",[575,2616,2617,2621,2634],{"__ignoreMap":424},[578,2618,2619],{"class":580,"line":581},[578,2620,721],{"class":720},[578,2622,2623,2626,2629,2632],{"class":580,"line":599},[578,2624,2625],{"class":588},"  acme_dns cloudflare",[578,2627,2628],{"class":720}," {",[578,2630,2631],{"class":588},"env.CLOUDFLARE_API_TOKEN",[578,2633,729],{"class":720},[578,2635,2636],{"class":580,"line":605},[578,2637,729],{"class":720},[503,2639,2640],{},[506,2641,2642],{},"Buat Dockerfile.caddy dengan konten berikut, yang diperlukan oleh compose.caddy.yml:",[569,2644,2646],{"className":1060,"code":2645,"language":1062,"meta":424,"style":424},"FROM caddy:2-builder AS builder\n\nRUN xcaddy build \\\n    --with github.com\u002Fcaddy-dns\u002Fcloudflare\n\nFROM caddy:2-alpine\n\nCOPY --from=builder \u002Fusr\u002Fbin\u002Fcaddy \u002Fusr\u002Fbin\u002Fcaddy\n",[575,2647,2648,2653,2657,2662,2667,2671,2676,2680],{"__ignoreMap":424},[578,2649,2650],{"class":580,"line":581},[578,2651,2652],{"class":588},"FROM caddy:2-builder AS builder\n",[578,2654,2655],{"class":580,"line":599},[578,2656,739],{"emptyLinePlaceholder":738},[578,2658,2659],{"class":580,"line":605},[578,2660,2661],{"class":588},"RUN xcaddy build \\\n",[578,2663,2664],{"class":580,"line":612},[578,2665,2666],{"class":588},"    --with github.com\u002Fcaddy-dns\u002Fcloudflare\n",[578,2668,2669],{"class":580,"line":622},[578,2670,739],{"emptyLinePlaceholder":738},[578,2672,2673],{"class":580,"line":627},[578,2674,2675],{"class":588},"FROM caddy:2-alpine\n",[578,2677,2678],{"class":580,"line":633},[578,2679,739],{"emptyLinePlaceholder":738},[578,2681,2682],{"class":580,"line":773},[578,2683,2684],{"class":588},"COPY --from=builder \u002Fusr\u002Fbin\u002Fcaddy \u002Fusr\u002Fbin\u002Fcaddy\n",[503,2686,2687],{},[506,2688,2689,2690,2693],{},"Modifikasi ",[575,2691,2692],{},"compose.caddy.yml"," untuk menggunakan image dengan modul Cloudflare dan meneruskan token API Cloudflare:",[569,2695,2697],{"className":1060,"code":2696,"language":1062,"meta":424,"style":424},"services:\n  relay:\n    ports: !reset []\n\n  caddy:\n    build:\n      context: .\n      dockerfile: Dockerfile.caddy\n    image: buzz-caddy:cloudflare\n    depends_on:\n      relay:\n        condition: service_healthy\n    environment:\n      BUZZ_DOMAIN: ${BUZZ_DOMAIN:?set BUZZ_DOMAIN}\n      CLOUDFLARE_API_TOKEN: ${CLOUDFLARE_API_TOKEN:?set CLOUDFLARE_API_TOKEN}\n    ports:\n      - \"${CADDY_HTTP_PORT:-80}:80\"\n      - \"${CADDY_HTTPS_PORT:-443}:443\"\n    volumes:\n      - .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile:ro\n      - buzz-caddy-data:\u002Fdata\n      - buzz-caddy-config:\u002Fconfig\n    restart: unless-stopped\n    networks:\n      - buzz-net\n\nvolumes:\n  buzz-caddy-data:\n    labels:\n      com.buzz.volume: caddy-data\n  buzz-caddy-config:\n    labels:\n      com.buzz.volume: caddy-config\n",[575,2698,2699,2705,2712,2725,2729,2736,2743,2753,2763,2772,2779,2786,2796,2802,2812,2822,2828,2839,2850,2856,2863,2870,2877,2886,2894,2902,2907,2914,2922,2930,2941,2949,2956],{"__ignoreMap":424},[578,2700,2701,2703],{"class":580,"line":581},[578,2702,1070],{"class":1069},[578,2704,847],{"class":720},[578,2706,2707,2710],{"class":580,"line":599},[578,2708,2709],{"class":1069},"  relay",[578,2711,847],{"class":720},[578,2713,2714,2716,2718,2722],{"class":580,"line":605},[578,2715,1094],{"class":1069},[578,2717,766],{"class":720},[578,2719,2721],{"class":2720},"spNyl"," !reset",[578,2723,2724],{"class":720}," []\n",[578,2726,2727],{"class":580,"line":612},[578,2728,739],{"emptyLinePlaceholder":738},[578,2730,2731,2734],{"class":580,"line":622},[578,2732,2733],{"class":1069},"  caddy",[578,2735,847],{"class":720},[578,2737,2738,2741],{"class":580,"line":627},[578,2739,2740],{"class":1069},"    build",[578,2742,847],{"class":720},[578,2744,2745,2748,2750],{"class":580,"line":633},[578,2746,2747],{"class":1069},"      context",[578,2749,766],{"class":720},[578,2751,2752],{"class":769}," .\n",[578,2754,2755,2758,2760],{"class":580,"line":773},[578,2756,2757],{"class":1069},"      dockerfile",[578,2759,766],{"class":720},[578,2761,2762],{"class":588}," Dockerfile.caddy\n",[578,2764,2765,2767,2769],{"class":580,"line":1132},[578,2766,1084],{"class":1069},[578,2768,766],{"class":720},[578,2770,2771],{"class":588}," buzz-caddy:cloudflare\n",[578,2773,2774,2777],{"class":580,"line":1140},[578,2775,2776],{"class":1069},"    depends_on",[578,2778,847],{"class":720},[578,2780,2781,2784],{"class":580,"line":1148},[578,2782,2783],{"class":1069},"      relay",[578,2785,847],{"class":720},[578,2787,2788,2791,2793],{"class":580,"line":1156},[578,2789,2790],{"class":1069},"        condition",[578,2792,766],{"class":720},[578,2794,2795],{"class":588}," service_healthy\n",[578,2797,2798,2800],{"class":580,"line":1164},[578,2799,1115],{"class":1069},[578,2801,847],{"class":720},[578,2803,2804,2807,2809],{"class":580,"line":1172},[578,2805,2806],{"class":1069},"      BUZZ_DOMAIN",[578,2808,766],{"class":720},[578,2810,2811],{"class":588}," ${BUZZ_DOMAIN:?set BUZZ_DOMAIN}\n",[578,2813,2814,2817,2819],{"class":580,"line":1180},[578,2815,2816],{"class":1069},"      CLOUDFLARE_API_TOKEN",[578,2818,766],{"class":720},[578,2820,2821],{"class":588}," ${CLOUDFLARE_API_TOKEN:?set CLOUDFLARE_API_TOKEN}\n",[578,2823,2824,2826],{"class":580,"line":1191},[578,2825,1094],{"class":1069},[578,2827,847],{"class":720},[578,2829,2830,2832,2834,2837],{"class":580,"line":1196},[578,2831,1101],{"class":720},[578,2833,1104],{"class":720},[578,2835,2836],{"class":588},"${CADDY_HTTP_PORT:-80}:80",[578,2838,1110],{"class":720},[578,2840,2841,2843,2845,2848],{"class":580,"line":1204},[578,2842,1101],{"class":720},[578,2844,1104],{"class":720},[578,2846,2847],{"class":588},"${CADDY_HTTPS_PORT:-443}:443",[578,2849,1110],{"class":720},[578,2851,2852,2854],{"class":580,"line":1742},[578,2853,1151],{"class":1069},[578,2855,847],{"class":720},[578,2857,2858,2860],{"class":580,"line":1748},[578,2859,1101],{"class":720},[578,2861,2862],{"class":588}," .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile:ro\n",[578,2864,2865,2867],{"class":580,"line":1759},[578,2866,1101],{"class":720},[578,2868,2869],{"class":588}," buzz-caddy-data:\u002Fdata\n",[578,2871,2872,2874],{"class":580,"line":2423},[578,2873,1101],{"class":720},[578,2875,2876],{"class":588}," buzz-caddy-config:\u002Fconfig\n",[578,2878,2880,2882,2884],{"class":580,"line":2879},23,[578,2881,1183],{"class":1069},[578,2883,766],{"class":720},[578,2885,1188],{"class":588},[578,2887,2889,2892],{"class":580,"line":2888},24,[578,2890,2891],{"class":1069},"    networks",[578,2893,847],{"class":720},[578,2895,2897,2899],{"class":580,"line":2896},25,[578,2898,1101],{"class":720},[578,2900,2901],{"class":588}," buzz-net\n",[578,2903,2905],{"class":580,"line":2904},26,[578,2906,739],{"emptyLinePlaceholder":738},[578,2908,2910,2912],{"class":580,"line":2909},27,[578,2911,1199],{"class":1069},[578,2913,847],{"class":720},[578,2915,2917,2920],{"class":580,"line":2916},28,[578,2918,2919],{"class":1069},"  buzz-caddy-data",[578,2921,847],{"class":720},[578,2923,2925,2928],{"class":580,"line":2924},29,[578,2926,2927],{"class":1069},"    labels",[578,2929,847],{"class":720},[578,2931,2933,2936,2938],{"class":580,"line":2932},30,[578,2934,2935],{"class":1069},"      com.buzz.volume",[578,2937,766],{"class":720},[578,2939,2940],{"class":588}," caddy-data\n",[578,2942,2944,2947],{"class":580,"line":2943},31,[578,2945,2946],{"class":1069},"  buzz-caddy-config",[578,2948,847],{"class":720},[578,2950,2952,2954],{"class":580,"line":2951},32,[578,2953,2927],{"class":1069},[578,2955,847],{"class":720},[578,2957,2959,2961,2963],{"class":580,"line":2958},33,[578,2960,2935],{"class":1069},[578,2962,766],{"class":720},[578,2964,2965],{"class":588}," caddy-config\n",[543,2967,2969],{"id":2968},"memulai-kontainer-docker","Memulai kontainer Docker",[569,2971,2973],{"className":571,"code":2972,"language":573,"meta":424,"style":424},"docker compose -f compose.yml -f compose.caddy.yml up -d\n\n#Check the Docker status\ndocker compose ps\n",[575,2974,2975,2995,2999,3004],{"__ignoreMap":424},[578,2976,2977,2979,2981,2983,2986,2988,2991,2993],{"class":580,"line":581},[578,2978,788],{"class":584},[578,2980,791],{"class":588},[578,2982,1261],{"class":588},[578,2984,2985],{"class":588}," compose.yml",[578,2987,1261],{"class":588},[578,2989,2990],{"class":588}," compose.caddy.yml",[578,2992,794],{"class":588},[578,2994,797],{"class":588},[578,2996,2997],{"class":580,"line":599},[578,2998,739],{"emptyLinePlaceholder":738},[578,3000,3001],{"class":580,"line":605},[578,3002,3003],{"class":608},"#Check the Docker status\n",[578,3005,3006,3008,3010],{"class":580,"line":612},[578,3007,788],{"class":584},[578,3009,791],{"class":588},[578,3011,3012],{"class":588}," ps\n",[433,3014],{"src":3015,"alt":3016,"style":3017},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fdocker-compose-ps-status-terminal.webp","Jendela terminal yang menampilkan kontainer yang berjalan untuk layanan Buzz melalui docker compose ps","max-width: 700px; width: 100%; height: auto;",[429,3019,3020,3021,3024],{},"Buka browser web Anda dan navigasikan ke ",[575,3022,3023],{},"http:\u002F\u002Fbuzz.pafor.me"," untuk memverifikasi bahwa relay berjalan.",[433,3026],{"src":3027,"alt":3028,"style":931},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-relay-running-browser-verification.webp","Verifikasi browser yang menunjukkan respons sukses dari relay Buzz Block yang di-self-host",[538,3030,3032],{"id":3031},"langkah-5-cadangkan-back-up-sejak-hari-pertama","Langkah 5: Cadangkan (Back up) sejak hari pertama",[569,3034,3036],{"className":571,"code":3035,"language":573,"meta":424,"style":424},"mkdir -p \u002Fbuzz_backups\ncrontab -e\n",[575,3037,3038,3049],{"__ignoreMap":424},[578,3039,3040,3043,3046],{"class":580,"line":581},[578,3041,3042],{"class":584},"mkdir",[578,3044,3045],{"class":588}," -p",[578,3047,3048],{"class":588}," \u002Fbuzz_backups\n",[578,3050,3051,3054],{"class":580,"line":599},[578,3052,3053],{"class":584},"crontab",[578,3055,3056],{"class":588}," -e\n",[429,3058,3059],{},"Tambahkan tugas cron dump database harian:",[569,3061,3064],{"className":3062,"code":3063,"language":2493},[2491],"0 3 * * * cd \u002Fhome\u002F\u003Cuser>\u002Fbuzz\u002Fdeploy\u002Fcompose && docker compose exec -T postgres pg_dump -U buzz buzz > \u002Fbuzz_backups\u002Fbuzz-$(date +\\%Y\\%m\\%d).sql\n",[575,3065,3063],{"__ignoreMap":424},[429,3067,3068],{},"Catatan: Perlakukan BUZZ_RELAY_PRIVATE_KEY sebagai permanen. Peristiwa yang ditandatangani olehnya akan gagal verifikasi jika kuncinya berubah; database yang dipulihkan yang dipasangkan dengan kunci baru tidak akan dianggap sebagai relay yang sama.",[493,3070,3072],{"id":3071},"menyiapkan-klien-desktop-buzz-dan-identitas-nostr","Menyiapkan Klien Desktop Buzz dan Identitas Nostr",[429,3074,3075,3076,3080],{},"Unduh aplikasi desktop Buzz dari ",[442,3077,3078],{"href":3078,"rel":3079},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Freleases",[446]," dan jalankan. Isi detail profil hingga Anda mencapai halaman \"Join or create a community\".",[429,3082,3083],{},[433,3084],{"alt":3085,"src":3086},"Layar pengaturan awal Klien Desktop Buzz untuk bergabung atau membuat komunitas","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-setup-community.webp",[429,3088,3089],{},"Klik \"Join a community\" dan salin kunci publik Anda.",[429,3091,3092],{},[433,3093],{"alt":3094,"src":3095},"Tampilan klien Buzz yang menunjukkan identitas kunci publik sebelum bergabung dengan komunitas","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-join-community-public-key.webp",[429,3097,3098,3099,3101],{},"Jalankan perintah berikut di ",[462,3100,470],{}," untuk menambahkan diri Anda sebagai anggota pertama:",[569,3103,3105],{"className":571,"code":3104,"language":573,"meta":424,"style":424},"docker compose exec relay buzz-admin add-member --pubkey npub1yourkeyhere\n",[575,3106,3107],{"__ignoreMap":424},[578,3108,3109,3111,3113,3116,3119,3122,3125,3128],{"class":580,"line":581},[578,3110,788],{"class":584},[578,3112,791],{"class":588},[578,3114,3115],{"class":588}," exec",[578,3117,3118],{"class":588}," relay",[578,3120,3121],{"class":588}," buzz-admin",[578,3123,3124],{"class":588}," add-member",[578,3126,3127],{"class":588}," --pubkey",[578,3129,3130],{"class":588}," npub1yourkeyhere\n",[429,3132,1006,3133,3136],{},[575,3134,3135],{},"wss:\u002F\u002Fbuzz.pafor.me"," as the community URL and click \"Next\".",[429,3138,3139],{},[433,3140],{"alt":3141,"src":3142},"Memasukkan URL relay komunitas yang di-self-host di aplikasi desktop Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-input-community-url.webp",[429,3144,3145],{},"Masukkan nama dan klik tombol Next.",[429,3147,3148],{},[433,3149],{"alt":3150,"src":3151},"Layar konfigurasi profil di aplikasi Buzz untuk memasukkan nama tampilan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-profile-name-input.webp",[538,3153,3155],{"id":3154},"saluran-channels-dan-agen","Saluran (Channels) dan Agen",[429,3157,3158],{},"Saluran adalah grup tugas atau grup proyek. Buat saluran per tugas atau proyek dan masukkan manusia serta agen ke dalamnya.",[429,3160,3161],{},"Semua hal dalam saluran dibagikan secara otomatis, menghilangkan kebutuhan untuk memberikan pengarahan kepada setiap anggota secara individual. Setiap agen dapat disebut menggunakan @ dan membaca pesan yang relevan. Selain itu, agen dapat me-@mention satu sama lain.",[429,3163,3164],{},"Mari kirim DM ke agen yang telah dikonfigurasi sebelumnya",[429,3166,3167],{},[433,3168],{"alt":3169,"src":3170},"Mengirim pesan langsung ke agen AI di klien desktop kolaboratif Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-dm-agent.webp",[429,3172,3173],{},"Mari buat saluran dan tambahkan beberapa agen ke dalamnya",[429,3175,3176],{},[433,3177],{"alt":3178,"src":3179},"Membuat saluran tugas atau proyek baru di dalam aplikasi desktop Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-create-channel-dialog.webp",[429,3181,3182],{},[433,3183],{"alt":3184,"src":3185},"Menambahkan anggota manusia dan agen AI ke saluran yang baru dibuat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-add-agents-to-channel.webp",[429,3187,3188],{},[433,3189],{"alt":3190,"src":3191},"Tampilan saluran aktif yang menampilkan riwayat obrolan terkonsolidasi dan tugas proyek","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-channel-view.webp",[433,3193],{"src":3194,"alt":3195,"style":3196},"https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-channel-active-agents.webp","Tampilan detail agen AI aktif yang terintegrasi ke dalam saluran proyek kolaboratif","max-width: 367px; width: 100%; height: auto;",[538,3198,3200],{"id":3199},"mengaktifkan-runtime-agen","Mengaktifkan Runtime Agen",[429,3202,3203,3204,3207,3208,3211],{},"Runtime default mengandalkan deteksi otomatis yang mencari biner peluncur (misalnya ",[575,3205,3206],{},"hermes-acp",") di direktori standar seperti ",[575,3209,3210],{},"~\u002F.local\u002Fbin",". Jika suatu alat diinstal di lokasi non-standar, Buzz tidak dapat menyelesaikannya.",[429,3213,3214,3215,3218],{},"Untuk Kimi Code, ID agennya adalah kimi, dan Buzz mencari binernya di ",[575,3216,3217],{},"~\u002F.local\u002Fbin\u002Fkimi",". Tautan simbolis (symbolic link) dapat melakukannya:",[569,3220,3223],{"className":3221,"code":3222,"language":2493},[2491],"ln -s kimi-cli \u002FUsers\u002F\u003Cuser>\u002F.local\u002Fbin\u002Fkimi\n",[575,3224,3222],{"__ignoreMap":424},[429,3226,3227],{},"Kimi Code sekarang muncul di bawah runtime Agen.",[429,3229,3230],{},[433,3231],{"alt":3232,"src":3233},"Pengaturan aplikasi Buzz yang menampilkan runtime Agen AI yang dikonfigurasi termasuk Kimi","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-settings-agent-runtimes-list.webp",[538,3235,3237],{"id":3236},"proyek-dan-repositori","Proyek dan Repositori",[429,3239,3240,3241,3244],{},"Aktifkan fitur '",[462,3242,3243],{},"Projects","' di Settings → Experiments terlebih dahulu:",[429,3246,3247],{},[433,3248],{"alt":3249,"src":3250},"Mengaktifkan fitur eksperimental Projects di tab pengaturan Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-settings-experiments-projects.webp",[429,3252,3253,3254,3257],{},"Saat ini, proyek harus dibuat menggunakan ",[575,3255,3256],{},"buzz-cli"," (meskipun pembuatan proyek langsung dari UI direnkanakan untuk rilis mendatang).",[543,3259,3261],{"id":3260},"menginstal-buzz-cli","Menginstal buzz-cli",[429,3263,3264,3265,3267,3268,766],{},"Jalankan perintah berikut untuk menginstal ",[575,3266,3256],{}," di ",[462,3269,470],{},[569,3271,3273],{"className":571,"code":3272,"language":573,"meta":424,"style":424},"sudo apt install cargo\ncd ~\u002Fbuzz\ncargo install --path crates\u002Fbuzz-cli\necho 'export PATH=\"$HOME\u002F.cargo\u002Fbin:$PATH\"' >> ~\u002F.bashrc && source ~\u002F.bashrc\n",[575,3274,3275,3286,3293,3306],{"__ignoreMap":424},[578,3276,3277,3279,3281,3283],{"class":580,"line":581},[578,3278,1313],{"class":584},[578,3280,2325],{"class":588},[578,3282,2346],{"class":588},[578,3284,3285],{"class":588}," cargo\n",[578,3287,3288,3290],{"class":580,"line":599},[578,3289,616],{"class":615},[578,3291,3292],{"class":588}," ~\u002Fbuzz\n",[578,3294,3295,3298,3300,3303],{"class":580,"line":605},[578,3296,3297],{"class":584},"cargo",[578,3299,2346],{"class":588},[578,3301,3302],{"class":588}," --path",[578,3304,3305],{"class":588}," crates\u002Fbuzz-cli\n",[578,3307,3308,3310,3313,3316,3319,3322,3325,3328,3331],{"class":580,"line":612},[578,3309,2272],{"class":615},[578,3311,3312],{"class":720}," '",[578,3314,3315],{"class":588},"export PATH=\"$HOME\u002F.cargo\u002Fbin:$PATH\"",[578,3317,3318],{"class":720},"'",[578,3320,3321],{"class":720}," >>",[578,3323,3324],{"class":588}," ~\u002F.bashrc",[578,3326,3327],{"class":720}," &&",[578,3329,3330],{"class":615}," source",[578,3332,3333],{"class":588}," ~\u002F.bashrc\n",[429,3335,3336,3337,3340,3341,3343,3344,3346],{},"Hasilkan sepasang kunci privat dan publik menggunakan ",[442,3338,2520],{"href":3339},"\u002Fid\u002Ftools\u002Fnostr-key-generator"," atau ",[575,3342,3256],{},". Pasangan ini adalah identitas ",[575,3345,3256],{}," di relay Nostr.",[569,3348,3350],{"className":571,"code":3349,"language":573,"meta":424,"style":424},"docker run --rm --entrypoint \u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-admin ghcr.io\u002Fblock\u002Fbuzz:main generate-key\n\n# Use the generated Public Key\ndocker compose exec relay buzz-admin add-member --pubkey generated_Public_key\n",[575,3351,3352,3374,3378,3383],{"__ignoreMap":424},[578,3353,3354,3356,3359,3362,3365,3368,3371],{"class":580,"line":581},[578,3355,788],{"class":584},[578,3357,3358],{"class":588}," run",[578,3360,3361],{"class":588}," --rm",[578,3363,3364],{"class":588}," --entrypoint",[578,3366,3367],{"class":588}," \u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-admin",[578,3369,3370],{"class":588}," ghcr.io\u002Fblock\u002Fbuzz:main",[578,3372,3373],{"class":588}," generate-key\n",[578,3375,3376],{"class":580,"line":599},[578,3377,739],{"emptyLinePlaceholder":738},[578,3379,3380],{"class":580,"line":605},[578,3381,3382],{"class":608},"# Use the generated Public Key\n",[578,3384,3385,3387,3389,3391,3393,3395,3397,3399],{"class":580,"line":612},[578,3386,788],{"class":584},[578,3388,791],{"class":588},[578,3390,3115],{"class":588},[578,3392,3118],{"class":588},[578,3394,3121],{"class":588},[578,3396,3124],{"class":588},[578,3398,3127],{"class":588},[578,3400,3401],{"class":588}," generated_Public_key\n",[429,3403,3404],{},"Mengonfigurasi CLI:",[569,3406,3408],{"className":571,"code":3407,"language":573,"meta":424,"style":424},"# Copy the Secret key as the BUZZ_PRIVATE_KEY\necho 'export BUZZ_PRIVATE_KEY=\"nsec1...\"'  >> \u002Fhome\u002F\u003Cuser>\u002F.bashrc\n\necho 'export BUZZ_RELAY_URL=\"wss:\u002F\u002Fbuzz.pafor.me\"'  >> \u002Fhome\u002F\u003Cuser>\u002F.bashrc\n",[575,3409,3410,3415,3447,3451],{"__ignoreMap":424},[578,3411,3412],{"class":580,"line":581},[578,3413,3414],{"class":608},"# Copy the Secret key as the BUZZ_PRIVATE_KEY\n",[578,3416,3417,3419,3421,3424,3426,3429,3432,3435,3438,3441,3444],{"class":580,"line":599},[578,3418,2272],{"class":615},[578,3420,3312],{"class":720},[578,3422,3423],{"class":588},"export BUZZ_PRIVATE_KEY=\"nsec1...\"",[578,3425,3318],{"class":720},[578,3427,3428],{"class":720},"  >>",[578,3430,3431],{"class":588}," \u002Fhome\u002F",[578,3433,3434],{"class":720},"\u003C",[578,3436,3437],{"class":588},"use",[578,3439,3440],{"class":595},"r",[578,3442,3443],{"class":720},">",[578,3445,3446],{"class":588},"\u002F.bashrc\n",[578,3448,3449],{"class":580,"line":605},[578,3450,739],{"emptyLinePlaceholder":738},[578,3452,3453,3455,3457,3460,3462,3464,3466,3468,3470,3472,3474],{"class":580,"line":612},[578,3454,2272],{"class":615},[578,3456,3312],{"class":720},[578,3458,3459],{"class":588},"export BUZZ_RELAY_URL=\"wss:\u002F\u002Fbuzz.pafor.me\"",[578,3461,3318],{"class":720},[578,3463,3428],{"class":720},[578,3465,3431],{"class":588},[578,3467,3434],{"class":720},[578,3469,3437],{"class":588},[578,3471,3440],{"class":595},[578,3473,3443],{"class":720},[578,3475,3446],{"class":588},[429,3477,3478,3479,3481],{},"Jalankan perintah berikut untuk memverifikasi bahwa ",[575,3480,3256],{}," dikonfigurasi dengan benar:",[569,3483,3485],{"className":571,"code":3484,"language":573,"meta":424,"style":424},"buzz channels list\n",[575,3486,3487],{"__ignoreMap":424},[578,3488,3489,3492,3495],{"class":580,"line":581},[578,3490,3491],{"class":584},"buzz",[578,3493,3494],{"class":588}," channels",[578,3496,3497],{"class":588}," list\n",[429,3499,3500],{},[433,3501],{"alt":3502,"src":3503},"Eksekusi perintah terminal yang memverifikasi konfigurasi buzz-cli dengan mencantumkan saluran aktif","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-cli-channels-list-terminal.webp",[543,3505,3507],{"id":3506},"membuat-proyek-dengan-buzz-cli","Membuat Proyek dengan buzz-cli",[569,3509,3511],{"className":571,"code":3510,"language":573,"meta":424,"style":424},"# --channel refers to the UUID of the channel\nbuzz repos create --id TestKOA --name 'Display Name' --channel \"bd92b3d1-8fac-441c-a9ac-2b2f3aac5c5b\"\n",[575,3512,3513,3518],{"__ignoreMap":424},[578,3514,3515],{"class":580,"line":581},[578,3516,3517],{"class":608},"# --channel refers to the UUID of the channel\n",[578,3519,3520,3522,3525,3528,3531,3534,3537,3539,3542,3544,3547,3549,3552],{"class":580,"line":599},[578,3521,3491],{"class":584},[578,3523,3524],{"class":588}," repos",[578,3526,3527],{"class":588}," create",[578,3529,3530],{"class":588}," --id",[578,3532,3533],{"class":588}," TestKOA",[578,3535,3536],{"class":588}," --name",[578,3538,3312],{"class":720},[578,3540,3541],{"class":588},"Display Name",[578,3543,3318],{"class":720},[578,3545,3546],{"class":588}," --channel",[578,3548,1104],{"class":720},[578,3550,3551],{"class":588},"bd92b3d1-8fac-441c-a9ac-2b2f3aac5c5b",[578,3553,1110],{"class":720},[429,3555,3556,3557,3559],{},"Proyek hanya dapat dihapus oleh pemiliknya. Karena proyek \"Display Name\" dibuat oleh ",[575,3558,3256],{}," yang tidak memiliki perintah penghapusan, proyek tersebut tidak dapat dihapus dengan cara ini.",[429,3561,3562],{},"Periksa kembali aplikasi desktop Buzz untuk memverifikasi bahwa proyek telah dibuat.",[429,3564,3565],{},[433,3566],{"alt":3567,"src":3568},"Tampilan proyek aplikasi desktop Buzz yang mengonfirmasi keberhasilan pembuatan proyek","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-project-view.webp",[429,3570,3571],{},"Setelah proyek tersedia di Projects, proyek tambahan dapat ditambahkan menggunakan tombol \"+\" di sudut kanan atas.",[429,3573,3574],{},[433,3575],{"alt":3576,"src":3577},"Menambahkan proyek pengembang baru menggunakan ikon plus di klien desktop Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-add-project-button.webp",[543,3579,3581],{"id":3580},"menghubungkan-repositori-git-yang-ada","Menghubungkan Repositori Git yang Ada",[429,3583,3584,3585,3588,3589,3592,3593,3598],{},"Instal ",[575,3586,3587],{},"git-credential-nostr"," pada mesin tempat repositori git berada. Ini memerlukan ",[462,3590,3591],{},"git 2.46+"," dan toolchain Rust. Silakan rujuk ",[442,3594,3597],{"href":3595,"rel":3596},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Ftree\u002Fmain\u002Fcrates\u002Fgit-credential-nostr",[446],"Readme"," ini:",[569,3600,3602],{"className":571,"code":3601,"language":573,"meta":424,"style":424},"cargo install --path crates\u002Fgit-credential-nostr\n",[575,3603,3604],{"__ignoreMap":424},[578,3605,3606,3608,3610,3612],{"class":580,"line":581},[578,3607,3297],{"class":584},[578,3609,2346],{"class":588},[578,3611,3302],{"class":588},[578,3613,3614],{"class":588}," crates\u002Fgit-credential-nostr\n",[429,3616,3617,3618,3620],{},"Siapkan ",[575,3619,3587],{}," untuk otorisasi relay Buzz:",[569,3622,3624],{"className":571,"code":3623,"language":573,"meta":424,"style":424},"# 1. Register the helper and enable per-path credentials.\ngit config --global credential.helper nostr\ngit config --global credential.useHttpPath true\n\n# 2. Store your nsec in a key file (must be 0600). Replace \"nsec1...\" with your private key\nmkdir -p ~\u002F.nostr\necho \"nsec1...\" > ~\u002F.nostr\u002Fkey && chmod 600 ~\u002F.nostr\u002Fkey\ngit config --global nostr.keyfile ~\u002F.nostr\u002Fkey\n",[575,3625,3626,3631,3647,3661,3665,3670,3679,3706],{"__ignoreMap":424},[578,3627,3628],{"class":580,"line":581},[578,3629,3630],{"class":608},"# 1. Register the helper and enable per-path credentials.\n",[578,3632,3633,3635,3638,3641,3644],{"class":580,"line":599},[578,3634,585],{"class":584},[578,3636,3637],{"class":588}," config",[578,3639,3640],{"class":588}," --global",[578,3642,3643],{"class":588}," credential.helper",[578,3645,3646],{"class":588}," nostr\n",[578,3648,3649,3651,3653,3655,3658],{"class":580,"line":605},[578,3650,585],{"class":584},[578,3652,3637],{"class":588},[578,3654,3640],{"class":588},[578,3656,3657],{"class":588}," credential.useHttpPath",[578,3659,3660],{"class":720}," true\n",[578,3662,3663],{"class":580,"line":612},[578,3664,739],{"emptyLinePlaceholder":738},[578,3666,3667],{"class":580,"line":622},[578,3668,3669],{"class":608},"# 2. Store your nsec in a key file (must be 0600). Replace \"nsec1...\" with your private key\n",[578,3671,3672,3674,3676],{"class":580,"line":627},[578,3673,3042],{"class":584},[578,3675,3045],{"class":588},[578,3677,3678],{"class":588}," ~\u002F.nostr\n",[578,3680,3681,3683,3685,3688,3690,3692,3695,3697,3700,3703],{"class":580,"line":633},[578,3682,2272],{"class":615},[578,3684,1104],{"class":720},[578,3686,3687],{"class":588},"nsec1...",[578,3689,1523],{"class":720},[578,3691,2306],{"class":720},[578,3693,3694],{"class":588}," ~\u002F.nostr\u002Fkey",[578,3696,3327],{"class":720},[578,3698,3699],{"class":584}," chmod",[578,3701,3702],{"class":769}," 600",[578,3704,3705],{"class":588}," ~\u002F.nostr\u002Fkey\n",[578,3707,3708,3710,3712,3714,3717],{"class":580,"line":773},[578,3709,585],{"class":584},[578,3711,3637],{"class":588},[578,3713,3640],{"class":588},[578,3715,3716],{"class":588}," nostr.keyfile",[578,3718,3705],{"class":588},[429,3720,3721],{},"Crea un repositorio en el relay de Buzz:",[569,3723,3726],{"className":3724,"code":3725,"language":2493},[2491],"buzz repos create --id koa-email-routing --name \"KOA Email Routing\" --clone \"https:\u002F\u002Fbuzz.pafor.me\u002Fgit\u002F\u003Cpub_key>\u002Fkoa-email-routing\" --nostr-relay \"wss:\u002F\u002Fbuzz.pafor.me\"\n",[575,3727,3725],{"__ignoreMap":424},[429,3729,3730,3731,3734,3735,3738],{},"Pada ",[575,3732,3733],{},"git push"," pertama Anda, Anda akan menemui kesalahan ",[575,3736,3737],{},"remote: missing Authorization header",". Untuk mengatasi ini, Anda perlu mengikat ID repositori ke saluran Buzz, karena keanggotaan saluran menentukan izin menulis Git (ACLs):",[569,3740,3742],{"className":571,"code":3741,"language":573,"meta":424,"style":424},"buzz repos bind --id koa-email-routing --channel \u003CCHANNEL_UUID>\n\n# push the code again\ngit push\n",[575,3743,3744,3772,3776,3781],{"__ignoreMap":424},[578,3745,3746,3748,3750,3753,3755,3758,3760,3763,3766,3769],{"class":580,"line":581},[578,3747,3491],{"class":584},[578,3749,3524],{"class":588},[578,3751,3752],{"class":588}," bind",[578,3754,3530],{"class":588},[578,3756,3757],{"class":588}," koa-email-routing",[578,3759,3546],{"class":588},[578,3761,3762],{"class":720}," \u003C",[578,3764,3765],{"class":588},"CHANNEL_UUI",[578,3767,3768],{"class":595},"D",[578,3770,3771],{"class":720},">\n",[578,3773,3774],{"class":580,"line":599},[578,3775,739],{"emptyLinePlaceholder":738},[578,3777,3778],{"class":580,"line":605},[578,3779,3780],{"class":608},"# push the code again\n",[578,3782,3783,3785],{"class":580,"line":612},[578,3784,585],{"class":584},[578,3786,3787],{"class":588}," push\n",[429,3789,3790,3791,3793],{},"Memeriksa proyek di aplikasi desktop Buzz menunjukkan hal berikut, karena aplikasi memerlukan ",[462,3792,3591],{}," — meluncurkan aplikasi secara langsung mungkin mendeteksi versi Git yang lebih lama:",[429,3795,3796],{},[433,3797],{"alt":3798,"src":3799},"Klien Buzz menampilkan kesalahan pemuatan Git karena versi Git lokal yang kedaluwarsa di bawah 2.46","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-git-version-error.webp",[429,3801,3802,3803,3806,3807,3812],{},"Ekspor PATH via ",[575,3804,3805],{},"launchctl setenv PATH \"\u002Fopt\u002Fhomebrew\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin:\u002Fusr\u002Fsbin:\u002Fsbin\""," di profil shell dan luncurkan aplikasi Buzz dari shell. Rujuk ke ",[442,3808,3811],{"href":3809,"rel":3810},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz\u002Fissues\u002F5348",[446],"issue"," ini.",[569,3814,3816],{"className":571,"code":3815,"language":573,"meta":424,"style":424},"open -a Buzz\n",[575,3817,3818],{"__ignoreMap":424},[578,3819,3820,3823,3826],{"class":580,"line":581},[578,3821,3822],{"class":584},"open",[578,3824,3825],{"class":588}," -a",[578,3827,3828],{"class":588}," Buzz\n",[429,3830,3831],{},"Periksa kembali Projects di aplikasi Buzz, detail repositori sekarang telah dimuat.",[429,3833,3834],{},[433,3835],{"alt":3836,"src":3837},"Antarmuka desktop Buzz dengan detail repositório Git dan log komit yang berhasil dimuat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-repository-details-loaded.webp",[493,3839,3841],{"id":3840},"menyinkronkan-agen-ai-dengan-aplikasi-seluler-buzz-via-kode-qr","Menyinkronkan Agen AI dengan Aplikasi Seluler Buzz via Kode QR",[429,3843,3844,3845,3848],{},"Penyandingan aplikasi seluler Buzz hanya menerima protokol HTTPS dan ",[575,3846,3847],{},"buzz-pair-relay"," tidak dimulai secara default di VPS.",[569,3850,3852],{"className":571,"code":3851,"language":573,"meta":424,"style":424},"cd ~\u002Fbuzz\ncargo install --path crates\u002Fbuzz-pair-relay\n",[575,3853,3854,3860],{"__ignoreMap":424},[578,3855,3856,3858],{"class":580,"line":581},[578,3857,616],{"class":615},[578,3859,3292],{"class":588},[578,3861,3862,3864,3866,3868],{"class":580,"line":599},[578,3863,3297],{"class":584},[578,3865,2346],{"class":588},[578,3867,3302],{"class":588},[578,3869,3870],{"class":588}," crates\u002Fbuzz-pair-relay\n",[429,3872,3873,3874,3877,3878,3880],{},"Add the following to ",[575,3875,3876],{},"compose.yml"," to start the ",[575,3879,3847],{}," service:",[569,3882,3884],{"className":1060,"code":3883,"language":1062,"meta":424,"style":424},"  pair:\n    image: ${BUZZ_IMAGE:-ghcr.io\u002Fblock\u002Fbuzz:main}\n    entrypoint: [\"\u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-pair-relay\"]\n    environment:\n      BUZZ_PAIR_RELAY_BIND_ADDR: 0.0.0.0:5000\n    ports:\n      - \"${BUZZ_PAIR_RELAY_PORT:-5000}:5000\"\n    restart: unless-stopped\n    networks:\n      [buzz-net]\n",[575,3885,3886,3893,3902,3922,3928,3938,3944,3955,3963,3969],{"__ignoreMap":424},[578,3887,3888,3891],{"class":580,"line":581},[578,3889,3890],{"class":1069},"  pair",[578,3892,847],{"class":720},[578,3894,3895,3897,3899],{"class":580,"line":599},[578,3896,1084],{"class":1069},[578,3898,766],{"class":720},[578,3900,3901],{"class":588}," ${BUZZ_IMAGE:-ghcr.io\u002Fblock\u002Fbuzz:main}\n",[578,3903,3904,3907,3909,3912,3914,3917,3919],{"class":580,"line":605},[578,3905,3906],{"class":1069},"    entrypoint",[578,3908,766],{"class":720},[578,3910,3911],{"class":720}," [",[578,3913,1523],{"class":720},[578,3915,3916],{"class":588},"\u002Fusr\u002Flocal\u002Fbin\u002Fbuzz-pair-relay",[578,3918,1523],{"class":720},[578,3920,3921],{"class":720},"]\n",[578,3923,3924,3926],{"class":580,"line":612},[578,3925,1115],{"class":1069},[578,3927,847],{"class":720},[578,3929,3930,3933,3935],{"class":580,"line":622},[578,3931,3932],{"class":1069},"      BUZZ_PAIR_RELAY_BIND_ADDR",[578,3934,766],{"class":720},[578,3936,3937],{"class":588}," 0.0.0.0:5000\n",[578,3939,3940,3942],{"class":580,"line":627},[578,3941,1094],{"class":1069},[578,3943,847],{"class":720},[578,3945,3946,3948,3950,3953],{"class":580,"line":633},[578,3947,1101],{"class":720},[578,3949,1104],{"class":720},[578,3951,3952],{"class":588},"${BUZZ_PAIR_RELAY_PORT:-5000}:5000",[578,3954,1110],{"class":720},[578,3956,3957,3959,3961],{"class":580,"line":773},[578,3958,1183],{"class":1069},[578,3960,766],{"class":720},[578,3962,1188],{"class":588},[578,3964,3965,3967],{"class":580,"line":1132},[578,3966,2891],{"class":1069},[578,3968,847],{"class":720},[578,3970,3971,3974,3977],{"class":580,"line":1140},[578,3972,3973],{"class":720},"      [",[578,3975,3976],{"class":588},"buzz-net",[578,3978,3921],{"class":720},[429,3980,1006,3981,464,3984,3987,3988,766],{},[575,3982,3983],{},"BUZZ_PAIRING_RELAY_URL",[575,3985,3986],{},"BUZZ_PAIR_RELAY_PORT"," ke file ",[575,3989,649],{},[569,3991,3994],{"className":3992,"code":3993,"language":2493},[2491],"BUZZ_PAIRING_RELAY_URL=wss:\u002F\u002Fbuzz.pafor.me\u002Fpair\nBUZZ_PAIR_RELAY_PORT=5000\n",[575,3995,3993],{"__ignoreMap":424},[429,3997,3998,3999,4002],{},"Buka bagian '",[462,4000,4001],{},"Mobile","' di Pengaturan desktop Buzz:",[429,4004,4005],{},[433,4006],{"alt":4007,"src":4008},"Dialog pengaturan di aplikasi Buzz yang menampilkan tab konfigurasi perangkat seluler","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-settings-mobile-tab.webp",[429,4010,4011],{},"Klik \"Start pairing\" — kode QR akan dihasilkan; pindai kode QR ini dengan aplikasi Buzz di perangkat seluler. Pendaftaran akan disandingkan setelah Anda mengklik \"Code Match\".",[429,4013,4014],{},[433,4015],{"alt":4016,"src":4017},"Menghasilkan kode QR penyandingan aman di klien desktop untuk sinkronisasi seluler Buzz","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-desktop-client-pairing-qr-code.webp",[429,4019,4020],{},"Agen di aplikasi seluler Buzz hanya tersedia jika mereka berjalan di aplikasi desktop Buzz. Mesin desktop harus tetap menyala agar agen dapat bekerja.",[429,4022,4023],{},[433,4024],{"alt":4025,"src":4026},"Antarmuka aplikasi seluler Buzz yang menampilkan agen pendamping AI aktif yang disinkronkan","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002Fbuzz-mobile-app-active-agents.webp",[493,4028,4030],{"id":4029},"pemikiran-akhir","Pemikiran Akhir",[429,4032,4033],{},"Meskipun Buzz masih terlalu dini untuk lingkungan produksi skala besar dengan beberapa bug dan batasan antarmuka pengguna (UI), ini adalah pengalaman yang menarik bagi tim kecil dan pengembang solo. Buzz menawarkan pratinjau tentang bagaimana rasanya ruang kerja kolaboratif yang mengutamakan AI.",[493,4035,1868],{"id":1867},[503,4037,4038,4045,4052,4059],{},[506,4039,4040],{},[442,4041,4044],{"href":4042,"rel":4043},"https:\u002F\u002Fgithub.com\u002Fblock\u002Fbuzz",[446],"Buzz releases",[506,4046,4047],{},[442,4048,4051],{"href":4049,"rel":4050},"https:\u002F\u002Fblock.xyz\u002Finside\u002Fintroducing-buzz-where-humans-and-agents-work-together",[446],"Introducing Buzz",[506,4053,4054],{},[442,4055,4058],{"href":4056,"rel":4057},"https:\u002F\u002Fwww.hostinger.com\u002Ftutorials\u002Fwhat-is-buzz",[446],"What is buzz",[506,4060,4061],{},[442,4062,4065],{"href":4063,"rel":4064},"https:\u002F\u002Fmiget.com\u002Fblog\u002Fhow-to-self-host-buzz",[446],"How to self-host Buzz (Miget)",[1893,4067,4068],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":424,"searchDepth":599,"depth":605,"links":4070},[4071,4072,4073,4087,4096,4097,4098],{"id":1967,"depth":599,"text":1968},{"id":2012,"depth":599,"text":2013},{"id":2060,"depth":599,"text":2061,"children":4074},[4075,4076,4080,4081,4082,4086],{"id":2064,"depth":605,"text":2065},{"id":2094,"depth":605,"text":2095,"children":4077},[4078,4079],{"id":2098,"depth":612,"text":2099},{"id":2198,"depth":612,"text":2199},{"id":2216,"depth":605,"text":2217},{"id":2433,"depth":605,"text":2434},{"id":2579,"depth":605,"text":2580,"children":4083},[4084,4085],{"id":2583,"depth":612,"text":2584},{"id":2968,"depth":612,"text":2969},{"id":3031,"depth":605,"text":3032},{"id":3071,"depth":599,"text":3072,"children":4088},[4089,4090,4091],{"id":3154,"depth":605,"text":3155},{"id":3199,"depth":605,"text":3200},{"id":3236,"depth":605,"text":3237,"children":4092},[4093,4094,4095],{"id":3260,"depth":612,"text":3261},{"id":3506,"depth":612,"text":3507},{"id":3580,"depth":612,"text":3581},{"id":3840,"depth":599,"text":3841},{"id":4029,"depth":599,"text":4030},{"id":1867,"depth":599,"text":1868},[4100,4101,3491],"collaboration","ai-agents","2026-09-08","Pelajari cara self-host relay Buzz Block pada Linux VPS di balik Cloudflare. Kelola ruang kerja berbasis Nostr tempat kolaborasi manusia dan agen AI.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSelf-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues\u002FID-Self-Hosting-Buzz-As-The-Workspace-Where-AI-Agents-Become-Colleagues.webp","Kartu teknologi premium 16:9 dengan aksen biru tua dan oranye yang mengilustrasikan cara self-host relay Buzz Block pada Ubuntu VPS, menampilkan panel bergaya glassmorphism bersih dengan tipografi terpusat.",{"schemaOrg":4107,"robots":1931,"sitemap":4128},[4108,4110],{"@type":4109,"headline":701,"description":4103,"image":4104},"TechArticle",{"@type":1930,"name":701,"description":4103,"image":4104,"step":4111},[4112,4116,4119,4122,4125],{"@type":4113,"name":4114,"text":4115},"HowToStep","Langkah 1: Pengaturan Cloudflare","Buat Token API Cloudflare dan konfigurasikan pengaturan DNS.",{"@type":4113,"name":4117,"text":4118},"Langkah 2: Instal Docker","Siapkan dan instal Docker Engine di VPS Ubuntu.",{"@type":4113,"name":4120,"text":4121},"Langkah 3: Kloning dan Konfigurasi","Kloning repositori dan konfigurasikan variabel compose.",{"@type":4113,"name":4123,"text":4124},"Langkah 4: Integrasi Caddy","Bangun Caddy kustom dengan modul tantangan DNS Cloudflare.",{"@type":4113,"name":4126,"text":4127},"Langkah 5: Cadangan Otomatis","Konfigurasikan cron job untuk mencadangkan PostgreSQL secara otomatis.",{"lastmod":4129},"2026-09-03",{"title":4131,"description":4103,"ogTitle":701,"ogDescription":4103,"twitterTitle":701,"twitterDescription":4103},"Cara Install dan Self-Host Relay Buzz Block di VPS Ubuntu","id\u002Farticle\u002Fself-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues",[4134,4135,1963,4136,4137],"Nostr","Docker","Caddy","Cloudflare","lAxLGSDiA8d43UunUr_JbjVjtCsvGEe0ttXN_h25Swk",{"id":4140,"title":2085,"author":424,"body":4141,"category":5015,"date":5017,"description":5018,"extension":1922,"image":2090,"imageAlt":2091,"isPublished":738,"meta":5019,"minRead":773,"navigation":738,"path":151,"seo":5053,"stem":5055,"tags":5056,"updatedAt":5052,"__hash__":5059},"article\u002Fid\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp.md",{"type":426,"value":4142,"toc":4997},[4143,4157,4167,4171,4174,4186,4190,4198,4202,4206,4256,4260,4391,4395,4429,4433,4436,4500,4503,4539,4542,4569,4573,4583,4587,4626,4714,4718,4723,4740,4749,4819,4824,4869,4873,4918,4933,4937,4980,4984,4994],[429,4144,4145,4146,4149,4150,4153,4154,4156],{},"Sebuah tantangan umum muncul ketika Anda ingin mengakses ",[462,4147,4148],{},"Hermes Agent"," Anda dari perangkat lain seperti laptop, tablet, atau ponsel tanpa mengeksposnya ke internet publik. Memanfaatkan ",[462,4151,4152],{},"Cloudflare WARP"," dengan ",[462,4155,476],{}," memungkinkan Anda untuk mengekspos Hermes Agent secara global tanpa membuka satu port masuk pun pada firewall Anda.",[429,4158,4159,4160,4163,4164,4166],{},"Jika Anda telah mengikuti panduan kami sebelumnya, '",[442,4161,4162],{"href":375},"Cara Menginstal dan Mendeploy Hermes Agent di VPS Linux","', maka Hermes Agent sudah berjalan 24\u002F7. Alih-alih berurusan dengan kerumitan VPN tradisional, kita akan menggunakan klien ",[462,4165,4152],{}," untuk mengekspos Hermes Agent ke jaringan privat melalui internet.",[493,4168,4170],{"id":4169},"memahami-arsitektur","Memahami Arsitektur",[429,4172,4173],{},"Komponen yang digunakan:",[2101,4175,4176,4181],{},[506,4177,4178,4180],{},[462,4179,476],{},": Dasbor di Cloudflare tempat Anda menentukan aturan perutean (routing) dan kebijakan akses.",[506,4182,4183,4185],{},[462,4184,4152],{},": Aplikasi klien yang diinstal pada perangkat Anda (VPS, laptop, ponsel). Aplikasi ini mencegat lalu lintas yang ditujukan ke jaringan privat Anda dan merutekannya dengan aman.",[538,4187,4189],{"id":4188},"prasyarat","Prasyarat",[503,4191,4192,4195],{},[506,4193,4194],{},"Hermes Agent yang sedang berjalan di VPS Anda.",[506,4196,4197],{},"Akun Cloudflare gratis.",[493,4199,4201],{"id":4200},"panduan-langkah-demi-langkah","Panduan Langkah demi Langkah",[538,4203,4205],{"id":4204},"langkah-1-siapkan-cloudflare-zero-trust","Langkah 1: Siapkan Cloudflare Zero Trust",[2101,4207,4208,4217,4224,4235,4242,4249],{},[506,4209,4210,4211,4216],{},"Masuk ke ",[442,4212,4215],{"href":4213,"rel":4214},"https:\u002F\u002Fdash.cloudflare.com\u002F",[446],"Dasbor Cloudflare"," Anda.",[506,4218,4219,4220],{},"Klik 'Zero Trust' dari menu sebelah kiri.\n",[433,4221],{"alt":4222,"src":4223},"Menu navigasi bilah sisi kiri dasbor Cloudflare dengan opsi Zero Trust","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-left-menu.webp",[506,4225,4226,4227,4230,4231],{},"Jika ini adalah pertama kalinya, Anda akan diminta untuk memilih paket (tingkat Gratis sudah sangat cukup untuk pengaturan ini) dan memberi nama tim Anda (misal, ",[575,4228,4229],{},"ai-team",").\n",[433,4232],{"alt":4233,"src":4234},"Menyiapkan akun Cloudflare Zero Trust untuk pertama kali dan memberi nama tim","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-team-setup.webp",[506,4236,4237,4238],{},"Klik 'Access' lalu 'Policies' untuk membuat kebijakan akses yang menentukan siapa saja yang memiliki akses ke jaringan tersebut.\n",[433,4239],{"alt":4240,"src":4241},"Halaman Kebijakan Akses Cloudflare Zero Trust yang menampilkan aturan akses yang baru dikonfigurasi","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-access-policies-page.webp",[506,4243,4244,4245],{},"Klik 'Create new policy'.\n",[433,4246],{"alt":4247,"src":4248},"Cloudflare Access policies page showing no policies added and a button to create a new policy.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-no-policies-create-button.png",[506,4250,4251,4252],{},"Pilih 'Emails' dan masukkan email Anda pada 'Policy rules'.\n",[433,4253],{"alt":4254,"src":4255},"Cloudflare Access policy rule configuration screen with an email address specified as the inclusion criteria.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FHow%20to%20secure%20NodeWarden%20at%20Cloudflare\u002Fcloudflare-access-policy-rule-email.png",[538,4257,4259],{"id":4258},"langkah-2-siapkan-klien-cloudflare-warp-di-vps","Langkah 2: Siapkan Klien Cloudflare WARP di VPS",[2101,4261,4262,4272,4278,4285,4288,4303,4306,4384],{},[506,4263,1565,4264,4267,4268,4271],{},[575,4265,4266],{},"sudo apt update"," and ",[575,4269,4270],{},"sudo apt install cloudflare-warp"," di terminal VPS Anda.",[506,4273,1565,4274,4277],{},[575,4275,4276],{},"warp-cli registration new \u003CTEAM-NAME>"," di terminal VPS Anda, perintah ini akan mencetak sebuah URL.",[506,4279,4280,4281,4284],{},"Salin URL yang dicetak, yang akan terlihat seperti ",[575,4282,4283],{},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fwarp",", lalu tempelkan ke browser Anda untuk otentikasi.",[506,4286,4287],{},"Karena otentikasi email digunakan dalam pengaturan kebijakan di atas, masukkan email Anda untuk mengotentikasi.",[506,4289,4290,4291,4294,4295,4298,4299,4302],{},"Di halaman '",[462,4292,4293],{},"Success","' (Sukses) pada browser, klik kanan lalu pilih '",[462,4296,4297],{},"Inspect","' pada tombol biru '",[462,4300,4301],{},"Open Cloudflare WARP","'.",[506,4304,4305],{},"Salin token panjang yang terdapat di dalam tautan tombol tersebut.",[506,4307,1565,4308,4311,4312,4315,4316],{},[575,4309,4310],{},"warp-cli --accept-tos registration token \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\""," di terminal VPS Anda untuk menghubungkannya dengan Cloudflare Zero Trust.",[4313,4314],"br",{},"Jika Anda menemui 'Error: Failed to communicate with the WARP API' di Ubuntu 26, jalankan perintah berikut:",[569,4317,4319],{"className":571,"code":4318,"language":573,"meta":424,"style":424},"sudo systemctl restart warp-svc.service\n\n# Check status\nsudo systemctl status warp-svc.service\n\n# Run the warp-cli registration token again\nwarp-cli --accept-tos registration token   \"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>\"\n",[575,4320,4321,4333,4337,4342,4353,4357,4362],{"__ignoreMap":424},[578,4322,4323,4325,4327,4330],{"class":580,"line":581},[578,4324,1313],{"class":584},[578,4326,1753],{"class":588},[578,4328,4329],{"class":588}," restart",[578,4331,4332],{"class":588}," warp-svc.service\n",[578,4334,4335],{"class":580,"line":599},[578,4336,739],{"emptyLinePlaceholder":738},[578,4338,4339],{"class":580,"line":605},[578,4340,4341],{"class":608},"# Check status\n",[578,4343,4344,4346,4348,4351],{"class":580,"line":612},[578,4345,1313],{"class":584},[578,4347,1753],{"class":588},[578,4349,4350],{"class":588}," status",[578,4352,4332],{"class":588},[578,4354,4355],{"class":580,"line":622},[578,4356,739],{"emptyLinePlaceholder":738},[578,4358,4359],{"class":580,"line":627},[578,4360,4361],{"class":608},"# Run the warp-cli registration token again\n",[578,4363,4364,4367,4370,4373,4376,4379,4382],{"class":580,"line":633},[578,4365,4366],{"class":584},"warp-cli",[578,4368,4369],{"class":588}," --accept-tos",[578,4371,4372],{"class":588}," registration",[578,4374,4375],{"class":588}," token",[578,4377,4378],{"class":720},"   \"",[578,4380,4381],{"class":588},"https:\u002F\u002F\u003Cteam>.cloudflareaccess.com\u002Fauth?token=\u003Ccopied_token>",[578,4383,1110],{"class":720},[506,4385,4386,4387],{},"Kembali to dasbor Cloudflare Zero Trust, lalu klik 'Devices' (Perangkat). Perangkat VPS Anda kini seharusnya sudah ditampilkan.\n",[433,4388],{"alt":4389,"src":4390},"Dasbor Perangkat Zero Trust mengonfirmasi bahwa VPS Linux telah terhubung","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-devices-vps-connected.webp",[538,4392,4394],{"id":4393},"langkah-3-siapkan-perutean-lalu-lintas","Langkah 3: Siapkan Perutean Lalu Lintas",[2101,4396,4397,4404,4411,4418],{},[506,4398,4399,4400],{},"Klik profil VPS Anda di dasbor Devices.\n",[433,4401],{"alt":4402,"src":4403},"Mengakses detail dan pengaturan split tunnel untuk perangkat VPS yang terdaftar","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-device-profile.webp",[506,4405,4406,4407],{},"Gulir ke bawah ke bagian 'Split Tunnels'.\n",[433,4408],{"alt":4409,"src":4410},"Bagian Split Tunnels di bawah pengaturan profil VPS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-split-tunnels-section.webp",[506,4412,4413,4414],{},"Klik tombol 'Manage' (Kelola) dan konfigurasikan pengaturannya seperti gambar di bawah ini. Ganti alamat IP jika perlu.\n",[433,4415],{"alt":4416,"src":4417},"Mengelola pengecualian IP dan nama host Split Tunnels di pengaturan Cloudflare","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-zero-trust-manage-split-tunnels.webp",[506,4419,4420,4421,4424,4425,4428],{},"Mengekspos ",[575,4422,4423],{},"address"," (alamat) dan ",[575,4426,4427],{},"host"," akan merutekan lalu lintas ke layanan Anda melalui jaringan privat yang sama.",[538,4430,4432],{"id":4431},"langkah-4-konfigurasi-firewall-di-vps","Langkah 4: Konfigurasi Firewall di VPS",[429,4434,4435],{},"Aktifkan firewall untuk mengizinkan subnet '100.96.0.0\u002F12' saja, dan memblokir seluruh akses masuk publik lainnya.",[569,4437,4439],{"className":571,"code":4438,"language":573,"meta":424,"style":424},"sudo ufw enable \nsudo ufw default allow outgoing \nsudo ufw default deny incoming\nsudo ufw allow in from 100.96.0.0\u002F12\n",[575,4440,4441,4452,4469,4483],{"__ignoreMap":424},[578,4442,4443,4445,4448,4450],{"class":580,"line":581},[578,4444,1313],{"class":584},[578,4446,4447],{"class":588}," ufw",[578,4449,1766],{"class":588},[578,4451,1337],{"class":595},[578,4453,4454,4456,4458,4461,4464,4467],{"class":580,"line":599},[578,4455,1313],{"class":584},[578,4457,4447],{"class":588},[578,4459,4460],{"class":588}," default",[578,4462,4463],{"class":588}," allow",[578,4465,4466],{"class":588}," outgoing",[578,4468,1337],{"class":595},[578,4470,4471,4473,4475,4477,4480],{"class":580,"line":605},[578,4472,1313],{"class":584},[578,4474,4447],{"class":588},[578,4476,4460],{"class":588},[578,4478,4479],{"class":588}," deny",[578,4481,4482],{"class":588}," incoming\n",[578,4484,4485,4487,4489,4491,4494,4497],{"class":580,"line":612},[578,4486,1313],{"class":584},[578,4488,4447],{"class":588},[578,4490,4463],{"class":588},[578,4492,4493],{"class":588}," in",[578,4495,4496],{"class":588}," from",[578,4498,4499],{"class":588}," 100.96.0.0\u002F12\n",[429,4501,4502],{},"Izinkan lalu lintas loopback untuk menghindari gangguan pada layanan lokal:",[569,4504,4506],{"className":571,"code":4505,"language":573,"meta":424,"style":424},"sudo ufw allow in on lo\nsudo ufw allow out on lo\n",[575,4507,4508,4524],{"__ignoreMap":424},[578,4509,4510,4512,4514,4516,4518,4521],{"class":580,"line":581},[578,4511,1313],{"class":584},[578,4513,4447],{"class":588},[578,4515,4463],{"class":588},[578,4517,4493],{"class":588},[578,4519,4520],{"class":588}," on",[578,4522,4523],{"class":588}," lo\n",[578,4525,4526,4528,4530,4532,4535,4537],{"class":580,"line":599},[578,4527,1313],{"class":584},[578,4529,4447],{"class":588},[578,4531,4463],{"class":588},[578,4533,4534],{"class":588}," out",[578,4536,4520],{"class":588},[578,4538,4523],{"class":588},[429,4540,4541],{},"Muat ulang firewall dan verifikasi statusnya:",[569,4543,4545],{"className":571,"code":4544,"language":573,"meta":424,"style":424},"sudo ufw reload \nsudo ufw status verbose\n",[575,4546,4547,4558],{"__ignoreMap":424},[578,4548,4549,4551,4553,4556],{"class":580,"line":581},[578,4550,1313],{"class":584},[578,4552,4447],{"class":588},[578,4554,4555],{"class":588}," reload",[578,4557,1337],{"class":595},[578,4559,4560,4562,4564,4566],{"class":580,"line":599},[578,4561,1313],{"class":584},[578,4563,4447],{"class":588},[578,4565,4350],{"class":588},[578,4567,4568],{"class":588}," verbose\n",[538,4570,4572],{"id":4571},"langkah-5-ekspos-hermes-agent-ke-jaringan-privat","Langkah 5: Ekspos Hermes Agent ke Jaringan Privat",[429,4574,4575,4576,4579,4580,991],{},"Kita akan mengekspos ",[462,4577,4578],{},"Hermes Agent Web Dashboard"," ke jaringan privat kita dan menggunakan penyedia otentikasi default, ",[462,4581,4582],{},"Nous Research",[543,4584,4586],{"id":4585},"siapkan-penyedia-otentikasi","Siapkan Penyedia Otentikasi",[2101,4588,4589,4598,4605,4612,4619],{},[506,4590,4591,4592,4597],{},"Kunjungi ",[442,4593,4596],{"href":4594,"rel":4595},"https:\u002F\u002Fportal.nousresearch.com",[446],"portal.nousresearch.com"," untuk mendaftarkan sebuah akun.",[506,4599,4600,4601],{},"Pilih 'Local Dashboards' (Dasbor Lokal).\n",[433,4602],{"alt":4603,"src":4604},"Memilih opsi Local Dashboards di portal Nous Research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-local-dashboards-selection.webp",[506,4606,4607,4608],{},"Klik 'Register Dashboard' (Daftarkan Dasbor).\n",[433,4609],{"alt":4610,"src":4611},"Mengklik tombol Register Dashboard untuk membuat entri dasbor baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-dashboard.webp",[506,4613,4614,4615],{},"Masukkan alamat IP jaringan privat VPS Anda sebagai 'Dashboard redirect URI' dan klik 'Save' (Simpan).\n",[433,4616],{"alt":4617,"src":4618},"Mendaftarkan alamat IP jaringan privat VPS sebagai redirect URI di portal Nous Research","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fnous-portal-register-redirect-uri.webp",[506,4620,4621,4622,4625],{},"Salin 'OAuth client ID' dan tempelkan ke dalam file ",[575,4623,4624],{},"config.yaml"," Anda:",[569,4627,4631],{"className":4628,"code":4629,"language":4630,"meta":424,"style":424},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dashboard:\n  theme: default\n  show_token_analytics: false\n  oauth:\n    client_id: agent:cmq02x7ha0002jk0ba3kfnb\n    portal_url: https:\u002F\u002Fportal.nousresearch.com\n  basic_auth:\n    username: ''\n    password_hash: ''\n","yaml",[575,4632,4633,4640,4650,4661,4668,4678,4688,4695,4705],{"__ignoreMap":424},[578,4634,4635,4638],{"class":580,"line":581},[578,4636,4637],{"class":1069},"dashboard",[578,4639,847],{"class":720},[578,4641,4642,4645,4647],{"class":580,"line":599},[578,4643,4644],{"class":1069},"  theme",[578,4646,766],{"class":720},[578,4648,4649],{"class":588}," default\n",[578,4651,4652,4655,4657],{"class":580,"line":605},[578,4653,4654],{"class":1069},"  show_token_analytics",[578,4656,766],{"class":720},[578,4658,4660],{"class":4659},"sfNiH"," false\n",[578,4662,4663,4666],{"class":580,"line":612},[578,4664,4665],{"class":1069},"  oauth",[578,4667,847],{"class":720},[578,4669,4670,4673,4675],{"class":580,"line":622},[578,4671,4672],{"class":1069},"    client_id",[578,4674,766],{"class":720},[578,4676,4677],{"class":588}," agent:cmq02x7ha0002jk0ba3kfnb\n",[578,4679,4680,4683,4685],{"class":580,"line":627},[578,4681,4682],{"class":1069},"    portal_url",[578,4684,766],{"class":720},[578,4686,4687],{"class":588}," https:\u002F\u002Fportal.nousresearch.com\n",[578,4689,4690,4693],{"class":580,"line":633},[578,4691,4692],{"class":1069},"  basic_auth",[578,4694,847],{"class":720},[578,4696,4697,4700,4702],{"class":580,"line":773},[578,4698,4699],{"class":1069},"    username",[578,4701,766],{"class":720},[578,4703,4704],{"class":720}," ''\n",[578,4706,4707,4710,4712],{"class":580,"line":1132},[578,4708,4709],{"class":1069},"    password_hash",[578,4711,766],{"class":720},[578,4713,4704],{"class":720},[543,4715,4717],{"id":4716},"siapkan-systemd-agar-dasbor-hermes-autostart","Siapkan Systemd agar Dasbor Hermes Autostart",[2101,4719,4720],{},[506,4721,4722],{},"Buat sebuah file layanan:",[569,4724,4728],{"className":4725,"code":4726,"language":4727,"meta":424,"style":424},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n","shell",[575,4729,4730],{"__ignoreMap":424},[578,4731,4732,4734,4737],{"class":580,"line":581},[578,4733,1313],{"class":584},[578,4735,4736],{"class":588}," nano",[578,4738,4739],{"class":588}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fhermes-dashboard.service\n",[2101,4741,4742],{"start":599},[506,4743,4744,4745,4748],{},"Tempelkan konfigurasi berikut, dan pastikan ",[575,4746,4747],{},"--host 0.0.0.0"," disertakan dalam perintah tersebut:",[569,4750,4754],{"className":4751,"code":4752,"language":4753,"meta":424,"style":424},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[Unit]\nDescription=Hermes Dashboard\nAfter=network.target\n\n[Service]\nUser=hermes\nWorkingDirectory=\u002Fhome\u002Fhermes\nExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\nRestart=always\nRestartSec=10\nEnvironment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n\n[Install]\nWantedBy=multi-user.target\n","ini",[575,4755,4756,4760,4765,4770,4774,4778,4783,4788,4793,4797,4802,4807,4811,4815],{"__ignoreMap":424},[578,4757,4758],{"class":580,"line":581},[578,4759,1661],{},[578,4761,4762],{"class":580,"line":599},[578,4763,4764],{},"Description=Hermes Dashboard\n",[578,4766,4767],{"class":580,"line":605},[578,4768,4769],{},"After=network.target\n",[578,4771,4772],{"class":580,"line":612},[578,4773,739],{"emptyLinePlaceholder":738},[578,4775,4776],{"class":580,"line":622},[578,4777,1685],{},[578,4779,4780],{"class":580,"line":627},[578,4781,4782],{},"User=hermes\n",[578,4784,4785],{"class":580,"line":633},[578,4786,4787],{},"WorkingDirectory=\u002Fhome\u002Fhermes\n",[578,4789,4790],{"class":580,"line":773},[578,4791,4792],{},"ExecStart=\u002Fhome\u002Fhermes\u002F.local\u002Fbin\u002Fhermes dashboard --host 0.0.0.0\n",[578,4794,4795],{"class":580,"line":1132},[578,4796,1720],{},[578,4798,4799],{"class":580,"line":1140},[578,4800,4801],{},"RestartSec=10\n",[578,4803,4804],{"class":580,"line":1148},[578,4805,4806],{},"Environment=PATH=\u002Fhome\u002Fhermes\u002F.local\u002Fbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fbin:\u002Fbin\n",[578,4808,4809],{"class":580,"line":1156},[578,4810,739],{"emptyLinePlaceholder":738},[578,4812,4813],{"class":580,"line":1164},[578,4814,1734],{},[578,4816,4817],{"class":580,"line":1172},[578,4818,1739],{},[2101,4820,4821],{"start":605},[506,4822,4823],{},"Aktifkan dan jalankan layanan:",[569,4825,4827],{"className":4725,"code":4826,"language":4727,"meta":424,"style":424},"sudo systemctl daemon-reload\nsudo systemctl enable hermes-dashboard\nsudo systemctl start hermes-dashboard\nsudo systemctl status hermes-dashboard\n",[575,4828,4829,4837,4848,4859],{"__ignoreMap":424},[578,4830,4831,4833,4835],{"class":580,"line":581},[578,4832,1313],{"class":584},[578,4834,1753],{"class":588},[578,4836,1756],{"class":588},[578,4838,4839,4841,4843,4845],{"class":580,"line":599},[578,4840,1313],{"class":584},[578,4842,1753],{"class":588},[578,4844,1766],{"class":588},[578,4846,4847],{"class":588}," hermes-dashboard\n",[578,4849,4850,4852,4854,4857],{"class":580,"line":605},[578,4851,1313],{"class":584},[578,4853,1753],{"class":588},[578,4855,4856],{"class":588}," start",[578,4858,4847],{"class":588},[578,4860,4861,4863,4865,4867],{"class":580,"line":612},[578,4862,1313],{"class":584},[578,4864,1753],{"class":588},[578,4866,4350],{"class":588},[578,4868,4847],{"class":588},[538,4870,4872],{"id":4871},"langkah-6-instal-klien-cloudflare-warp-di-desktop","Langkah 6: Instal Klien Cloudflare WARP di Desktop",[2101,4874,4875,4883,4886,4893,4900,4907],{},[506,4876,4877,4878,991],{},"Unduh klien Cloudflare WARP dari ",[442,4879,4882],{"href":4880,"rel":4881},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fwarp-client\u002Fget-started\u002F",[446],"portal Cloudflare",[506,4884,4885],{},"Buka dan luncurkan klien Cloudflare WARP setelah proses instalasi.",[506,4887,4888,4889],{},"Masuk (Log in) ketika diminta.\n",[433,4890],{"alt":4891,"src":4892},"Perintah login klien Cloudflare WARP pada komputer desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-prompt.webp",[506,4894,4895,4896],{},"Halaman 'Success' (Sukses) akan ditampilkan setelah login berhasil.\n",[433,4897],{"alt":4898,"src":4899},"Halaman web sukses otentikasi setelah masuk ke Cloudflare Zero Trust di desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-login-success.webp",[506,4901,4902,4903],{},"Klien WARP seharusnya sekarang menunjukkan bahwa ia terhubung ke tim Zero Trust Anda.\n",[433,4904],{"alt":4905,"src":4906},"Klien Cloudflare WARP desktop mengonfirmasi koneksi aktif ke jaringan privat","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-warp-desktop-client-connected.webp",[506,4908,4909,4910,4913,4914],{},"Buka browser web Anda dan masukkan IP privat Anda (misalnya, ",[575,4911,4912],{},"100.96.0.3","). Hermes Web Dashboard akan dimuat dengan sukses.\n",[433,4915],{"alt":4916,"src":4917},"Mengakses Dasbor Web Hermes Agent privat di browser pada desktop","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-desktop-view.webp",[4919,4920,4921],"blockquote",{},[429,4922,4923,4926,4927,4932],{},[462,4924,4925],{},"Kiat Pro untuk Pengguna macOS:"," Jika Anda menggunakan klien WARP untuk mengakses beberapa akun Cloudflare, lihat panduan cepat kami mengenai ",[462,4928,4929],{},[442,4930,4931],{"href":399},"Beralih di antara beberapa profil Cloudflare WARP pada macOS"," agar dapat beralih antar akun dengan mulus.",[538,4934,4936],{"id":4935},"langkah-7-instal-klien-cloudflare-warp-di-perangkat-ios","Langkah 7: Instal Klien Cloudflare WARP di Perangkat iOS",[2101,4938,4939,4945,4953,4961,4969],{},[506,4940,3584,4941,4944],{},[462,4942,4943],{},"Cloudflare One"," dari App Store.",[506,4946,4947,4948],{},"Buka aplikasi Cloudflare One dan masukkan nama tim Anda saat diminta.\n",[433,4949],{"alt":4950,"src":4951,"width":4952},"Memasukkan nama tim Cloudflare Zero Trust di aplikasi Cloudflare One di iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-team-name-prompt.webp",239,[506,4954,4955,4956],{},"Log in menggunakan alamat email yang sama dengan yang telah dikonfigurasi pada aturan kebijakan di atas.\n",[433,4957],{"alt":4958,"src":4959,"width":4960},"Perintah otentikasi email untuk Cloudflare Zero Trust di iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-email-login.webp",229,[506,4962,4963,4964],{},"Setelah terhubung, tampilannya akan seperti ini:\n",[433,4965],{"alt":4966,"src":4967,"width":4968},"Aplikasi Cloudflare One menampilkan status terhubung pada perangkat seluler iOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fcloudflare-one-ios-client-connected.webp",322,[506,4970,4971,4972,4974,4975],{},"Buka browser web Anda dan masukkan IP privat ",[575,4973,4912],{}," untuk mengakses Hermes Web Dashboard di perangkat seluler Anda.\n",[433,4976],{"alt":4977,"src":4978,"width":4979},"Mengakses antarmuka Dasbor Web Hermes Agent di browser ponsel seluler","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FExposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP\u002Fhermes-agent-dashboard-mobile-view.webp",345,[493,4981,4983],{"id":4982},"kesimpulan","Kesimpulan",[429,4985,4986,4987,4989,4990,4993],{},"Dengan ",[462,4988,476],{}," yang menangani kebijakan identitas dan klien ",[462,4991,4992],{},"WARP"," yang merutekan lalu lintas melalui terowongan terenkripsi, Hermes Agent Anda sekarang dapat diakses secara aman dari perangkat Anda secara global. Pengaturan ini meletakkan fondasi yang aman dan kuat untuk membangun serta mengakses infrastruktur AI privat yang sepenuhnya dapat diakses dari jarak jauh.",[1893,4995,4996],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":424,"searchDepth":599,"depth":605,"links":4998},[4999,5002,5014],{"id":4169,"depth":599,"text":4170,"children":5000},[5001],{"id":4188,"depth":605,"text":4189},{"id":4200,"depth":599,"text":4201,"children":5003},[5004,5005,5006,5007,5008,5012,5013],{"id":4204,"depth":605,"text":4205},{"id":4258,"depth":605,"text":4259},{"id":4393,"depth":605,"text":4394},{"id":4431,"depth":605,"text":4432},{"id":4571,"depth":605,"text":4572,"children":5009},[5010,5011],{"id":4585,"depth":612,"text":4586},{"id":4716,"depth":612,"text":4717},{"id":4871,"depth":605,"text":4872},{"id":4935,"depth":605,"text":4936},{"id":4982,"depth":599,"text":4983},[4101,5016],"security","2026-07-09","Pelajari cara mengekspos dan mengakses Hermes Agent Anda secara global dengan aman menggunakan Cloudflare WARP dan Zero Trust tanpa membuka port firewall masuk.",{"schemaOrg":5020,"robots":1931,"sitemap":5051},[5021],{"@type":1930,"headline":2085,"description":5018,"name":2085,"image":2090,"step":5022},[5023,5027,5031,5035,5039,5043,5047],{"@type":4113,"name":5024,"text":5025,"url":5026,"image":4223},"Siapkan Cloudflare Zero Trust","Masuk ke Dasbor Cloudflare Anda. Klik 'Zero Trust' dari menu sebelah kiri. Jika ini adalah pertama kalinya, Anda akan diminta untuk memilih paket (tingkat Gratis sudah sangat cukup untuk pengaturan ini) dan memberi nama tim Anda (misal, ai-team). Kli","#step-1",{"@type":4113,"name":5028,"text":5029,"url":5030,"image":4390},"Siapkan Klien Cloudflare WARP di VPS","Jalankan sudo apt update and sudo apt install cloudflare-warp di terminal VPS Anda. Jalankan warp-cli registration new \u003CTEAM-NAME> di terminal VPS Anda, perintah ini akan mencetak sebuah URL. Salin URL yang dicetak, yang akan terlihat seperti https:\u002F","#step-2",{"@type":4113,"name":5032,"text":5033,"url":5034,"image":4403},"Siapkan Perutean Lalu Lintas","Klik profil VPS Anda di dasbor Devices. Gulir ke bawah ke bagian 'Split Tunnels'. Klik tombol 'Manage' (Kelola) dan konfigurasikan pengaturannya seperti gambar di bawah ini. Ganti alamat IP jika perlu. Mengekspos address (alamat) dan host akan merute","#step-3",{"@type":4113,"name":5036,"text":5037,"url":5038},"Konfigurasi Firewall di VPS","Aktifkan firewall untuk mengizinkan subnet '100.96.0.0\u002F12' saja, dan memblokir seluruh akses masuk publik lainnya. bash Izinkan lalu lintas loopback untuk menghindari gangguan pada layanan lokal: bash Muat ulang firewall dan verifikasi statusnya: bas","#step-4",{"@type":4113,"name":5040,"text":5041,"url":5042},"Ekspos Hermes Agent ke Jaringan Privat","Kita akan mengekspos Hermes Agent Web Dashboard ke jaringan privat kita dan menggunakan penyedia otentikasi default, Nous Research.","#step-5",{"@type":4113,"name":5044,"text":5045,"url":5046,"image":4892},"Instal Klien Cloudflare WARP di Desktop","Unduh klien Cloudflare WARP dari portal Cloudflare. Buka dan luncurkan klien Cloudflare WARP setelah proses instalasi. Masuk (Log in) ketika diminta. Halaman 'Success' (Sukses) akan ditampilkan setelah login berhasil. Klien WARP seharusnya sekarang m","#step-6",{"@type":4113,"name":5048,"text":5049,"url":5050,"image":4951},"Instal Klien Cloudflare WARP di Perangkat iOS","Instal Cloudflare One dari App Store. Buka aplikasi Cloudflare One dan masukkan nama tim Anda saat diminta. Log in menggunakan alamat email yang sama dengan yang telah dikonfigurasi pada aturan kebijakan di atas. Setelah terhubung, tampilannya akan s","#step-7",{"lastmod":5052},"2026-09-28",{"title":5054,"description":5018,"ogTitle":2085,"ogDescription":5018,"twitterTitle":2085,"twitterDescription":5018},"Akses Aman Hermes Agent dengan Cloudflare Zero Trust","id\u002Farticle\u002Fexposing-hermes-agent-to-private-network-using-cloudflare-warp",[4152,1941,4148,5057,5058],"Jaringan privat","Tutorial","Wh3s_kiAj69-Gnv-QMhchTPh3C1rs2rSgTg22y7n9dE",[5061,5062,5860],{"id":4140,"title":2085,"author":424,"body":4141,"category":5015,"date":5017,"description":5018,"extension":1922,"image":2090,"imageAlt":2091,"isPublished":738,"meta":5019,"minRead":773,"navigation":738,"path":363,"seo":5053,"stem":5055,"tags":5056,"updatedAt":5052,"__hash__":5059},{"id":5063,"title":5064,"author":1942,"body":5065,"category":5843,"date":5845,"description":5846,"extension":1922,"image":5847,"imageAlt":5848,"isPublished":738,"meta":5849,"minRead":633,"navigation":738,"path":415,"seo":5854,"stem":5855,"tags":5856,"updatedAt":1942,"__hash__":5859},"article\u002Fid\u002Farticle\u002Fuse-cloudflare-as-ai-memory.md","Membangun Sistem Memori AI Persisten di Cloudflare",{"type":426,"value":5066,"toc":5825},[5067,5071,5074,5077,5081,5084,5098,5102,5109,5123,5126,5129,5173,5177,5258,5262,5288,5396,5407,5411,5416,5457,5481,5485,5490,5561,5566,5570,5603,5609,5648,5652,5684,5688,5696,5700,5730,5734,5774,5776,5779,5782,5785,5788,5822],[493,5068,5070],{"id":5069},"pentingnya-memori-ai-persisten-untuk-agen","Pentingnya Memori AI Persisten untuk Agen",[429,5072,5073],{},"Seiring dengan semakin terintegrasinya asisten AI ke dalam kehidupan kita sehari-hari, kita sering kali menghadapi masalah konteks kosong (blank context). Keputusan yang dibuat minggu lalu terlupakan, sehingga kita harus memasukkan detail tech stack yang sama dan mengatur preferensi pengguna berulang kali di setiap sesi baru.",[429,5075,5076],{},"Alih-alih memulai dari awal setiap kali, kita perlu membangun sistem memori yang terus berkembang, secara konsisten memahami keputusan pengguna, dan menghilangkan kebutuhan untuk mengulang konteks secara terus-menerus.",[493,5078,5080],{"id":5079},"sistem-memori-ai-mandiri-vs-bawaan","Sistem Memori AI Mandiri vs. Bawaan",[429,5082,5083],{},"Banyak agen AI dilengkapi dengan memori bawaan, tetapi kita jarang menggunakan satu agen saja untuk semua kebutuhan. Kita menggunakan Claude untuk merancang dan menyusun arsitektur proyek, Kimi untuk menulis kode, dan ChatGPT untuk riset mendalam. Konteks tidak dibagikan di antara agen-agen ini; semuanya tetap terisolasi di setiap alat secara terpisah.",[429,5085,5086,5087,5092,5093,5097],{},"Dari sudut pandang rekayasa perangkat lunak, kita tidak mempercayai kotak hitam (black box). Kita membutuhkan sistem memori AI yang dapat diobservasi, diaudit, dan berada di bawah kendali kita sepenuhnya. Proyek sumber terbuka ",[442,5088,5091],{"href":5089,"rel":5090},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fsecond-brain-cloudflare\u002Ftree\u002Fmain",[446],"Second Brain",", yang merupakan fork dari ",[442,5094,5095],{"href":5095,"rel":5096},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare",[446],", menyediakan sistem memori persisten dan mandiri (self-hosted) dengan dukungan Model Context Protocol (MCP). Agen AI apa pun yang kompatibel seperti Claude, ChatGPT, atau Kimi Code dapat berbagi konteks memori terpadu yang sama.",[493,5099,5101],{"id":5100},"cara-membangun-memori-ai-second-brain-di-cloudflare","Cara Membangun Memori AI Second Brain di Cloudflare",[429,5103,5104,5105,5108],{},"Sistem memori Second Brain diterapkan di atas ",[462,5106,5107],{},"Cloudflare Workers",", yang menyediakan infrastruktur serverless berlatensi sangat rendah yang terdistribusi secara global. Hal ini memungkinkan operasi pencarian memori (recall) dan penyimpanan berjalan hampir instan dalam logika berpikir AI.",[429,5110,5111,5112,5115,5116,5119,5120,5122],{},"Model embedding dari ",[462,5113,5114],{},"Workers AI"," digunakan untuk menghasilkan vektor. Embedding ini disimpan di ",[462,5117,5118],{},"Cloudflare Vectorize",", yang merupakan database vektor terdistribusi global yang sangat optimal. ",[462,5121,5118],{}," melakukan pencarian kemiripan kosinus (cosine similarity) untuk mengidentifikasi memori dengan relevansi semantik.",[429,5124,5125],{},"Second Brain juga dilengkapi dengan mekanisme deduplikasi dan penggabungan cerdas. Konten dengan kemiripan kurang dari 85% akan disimpan langsung; jika tidak, konten tersebut akan diblokir atau ditandai sebagai kandidat duplikat. Teks panjang yang melebihi 1.600 karakter akan dipotong berdasarkan batas kalimat atau baris baru, dengan tetap mempertahankan tumpang tindih (overlap) sebanyak 200 karakter untuk menjaga kontinuitas konteks. Setiap potongan kemudian divektorisasi untuk pencocokan presisi tinggi.",[429,5127,5128],{},"Alat-alat berikut diekspos sebagai antarmuka MCP untuk digunakan langsung oleh agen AI:",[503,5130,5131,5137,5143,5149,5155,5161,5167],{},[506,5132,5133,5136],{},[575,5134,5135],{},"remember",": Menyimpan ide, keputusan, preferensi, dan konteks proyek secara umum.",[506,5138,5139,5142],{},[575,5140,5141],{},"append",": Menambahkan pembaruan ke memori yang sudah ada.",[506,5144,5145,5148],{},[575,5146,5147],{},"update",": Mengganti memori yang ada secara keseluruhan.",[506,5150,5151,5154],{},[575,5152,5153],{},"recall",": Menemukan memori berdasarkan makna semantiknya, bukan kata kunci yang tepat.",[506,5156,5157,5160],{},[575,5158,5159],{},"list_recent",": Menampilkan memori yang baru disimpan.",[506,5162,5163,5166],{},[575,5164,5165],{},"forget",": Menghapus memori secara permanen.",[506,5168,5169,5172],{},[575,5170,5171],{},"link\u002Fconnections",": Menghubungkan memori yang saling berkaitan (fitur graf v2).",[538,5174,5176],{"id":5175},"menyiapkan-second-brain-di-cloudflare","Menyiapkan Second Brain di Cloudflare",[2101,5178,5179,5196,5203,5210,5217,5224,5235,5241,5244,5251],{},[506,5180,2125,5181,5184,5185,5190,5191,5195],{},[575,5182,5183],{},"Deploy to Cloudflare"," pada halaman ",[442,5186,5189],{"href":5187,"rel":5188},"https:\u002F\u002Fgithub.com\u002FTech-Voyage-Dev\u002Fsecond-brain-cloudflare",[446],"Github repo",". [[",[433,5192],{"alt":5193,"src":5194},"Halaman GitHub dengan tombol Deploy to Cloudflare yang disorot","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fdeploy-to-cloudflare-button.webp","]]",[506,5197,5198,5199],{},"Isi formulir Cloudflare Worker yang ditampilkan.\n",[433,5200],{"alt":5201,"src":5202},"Formulir konfigurasi deployment Cloudflare Workers","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-deployment-form.webp",[506,5204,5205,5206],{},"Masukkan '384' untuk Dimensions; pilih 'cosine' untuk Metric; lalu klik tombol Deploy.\n",[433,5207],{"alt":5208,"src":5209},"Tampilan pengaturan pembuatan database Cloudflare Vectorize","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-vectorize-configuration.webp",[506,5211,5212,5213],{},"Gambar berikut menunjukkan ringkasan dari Second Brain Anda di Cloudflare Worker:\n",[433,5214],{"alt":5215,"src":5216},"Dasbor ikhtisar dari worker Second Brain yang dideploy","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-second-brain-overview.webp",[506,5218,5219,5220],{},"Buka tab 'Settings', lalu klik ikon edit pada variabel 'AUTH_TOKEN' untuk membuat token keamanan:\n",[433,5221],{"alt":5222,"src":5223},"Pengaturan variabel Cloudflare Worker yang menyoroti AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-settings.webp",[506,5225,5226,5227,5231],{},"Klik tautan 'Rotate' untuk memasukkan nilai baru: ",[433,5228],{"alt":5229,"src":5230},"Tampilan modifikasi dan rotasi variabel AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-rotate.webp",[433,5232],{"alt":5233,"src":5234},"Memasukkan string acak yang dihasilkan ke kolom nilai AUTH_TOKEN","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fcloudflare-worker-auth-token-value-input.webp",[506,5236,800,5237,5240],{},[575,5238,5239],{},"openssl rand -base64 32"," di terminal macOS untuk menghasilkan nilai acak yang aman dan tempelkan di bidang input 'Value'.",[506,5242,5243],{},"Klik tombol 'Deploy' untuk menyimpan nilai baru dari variabel 'AUTH_TOKEN'.",[506,5245,5246,5247],{},"Buka URL worker Second Brain Anda di peramban web.\n",[433,5248],{"alt":5249,"src":5250},"Tampilan masuk Web UI Second Brain dengan input Bearer Token","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-login.webp",[506,5252,5253,5254,5257],{},"Masukkan 'AUTH_TOKEN' yang telah dibuat pada kolom input ",[575,5255,5256],{},"Bearer token"," dan klik tombol 'Connect' untuk masuk ke dashboard Web UI.",[538,5259,5261],{"id":5260},"mengintegrasikan-claude-desktop-via-mcp","Mengintegrasikan Claude Desktop via MCP",[2101,5263,5264,5271,5278],{},[506,5265,5266,5267],{},"Klik 'Customize' pada pengaturan Claude Desktop.\n",[433,5268],{"alt":5269,"src":5270},"Antarmuka Claude Desktop yang menunjuk ke tombol Customize","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-customize-button.webp",[506,5272,5273,5274],{},"Klik 'Developer' untuk membuka dan mengedit file konfigurasi server MCP secara manual:\n",[433,5275],{"alt":5276,"src":5277},"Menu pengaturan Developer Claude Desktop untuk mengakses konfigurasi MCP","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-developer-menu.webp",[506,5279,5280,5281,5284,5285,766],{},"Tambahkan blok kode berikut ke bagian ",[575,5282,5283],{},"mcpServers"," di file ",[575,5286,5287],{},"claude_desktop_config.json",[569,5289,5291],{"className":711,"code":5290,"language":713,"meta":424,"style":424},"    \"second-brain\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote\",\n        \"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\",\n        \"--header\",\n        \"Authorization: Bearer \u003Cyour-token>\"\n      ]\n    }\n",[575,5292,5293,5307,5329,5343,5355,5366,5377,5386,5391],{"__ignoreMap":424},[578,5294,5295,5298,5301,5303,5305],{"class":580,"line":581},[578,5296,5297],{"class":720},"    \"",[578,5299,5300],{"class":588},"second-brain",[578,5302,1523],{"class":720},[578,5304,2531],{"class":595},[578,5306,721],{"class":720},[578,5308,5309,5312,5315,5317,5319,5321,5324,5326],{"class":580,"line":599},[578,5310,5311],{"class":720},"      \"",[578,5313,5314],{"class":2720},"command",[578,5316,1523],{"class":720},[578,5318,766],{"class":720},[578,5320,1104],{"class":720},[578,5322,5323],{"class":588},"npx",[578,5325,1523],{"class":720},[578,5327,5328],{"class":720},",\n",[578,5330,5331,5333,5336,5338,5340],{"class":580,"line":605},[578,5332,5311],{"class":720},[578,5334,5335],{"class":2720},"args",[578,5337,1523],{"class":720},[578,5339,766],{"class":720},[578,5341,5342],{"class":720}," [\n",[578,5344,5345,5348,5351,5353],{"class":580,"line":612},[578,5346,5347],{"class":720},"        \"",[578,5349,5350],{"class":588},"mcp-remote",[578,5352,1523],{"class":720},[578,5354,5328],{"class":720},[578,5356,5357,5359,5362,5364],{"class":580,"line":622},[578,5358,5347],{"class":720},[578,5360,5361],{"class":588},"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp",[578,5363,1523],{"class":720},[578,5365,5328],{"class":720},[578,5367,5368,5370,5373,5375],{"class":580,"line":627},[578,5369,5347],{"class":720},[578,5371,5372],{"class":588},"--header",[578,5374,1523],{"class":720},[578,5376,5328],{"class":720},[578,5378,5379,5381,5384],{"class":580,"line":633},[578,5380,5347],{"class":720},[578,5382,5383],{"class":588},"Authorization: Bearer \u003Cyour-token>",[578,5385,1110],{"class":720},[578,5387,5388],{"class":580,"line":773},[578,5389,5390],{"class":720},"      ]\n",[578,5392,5393],{"class":580,"line":1132},[578,5394,5395],{"class":720},"    }\n",[429,5397,5398,5402,5403],{},[433,5399],{"alt":5400,"src":5401},"JSON konfigurasi MCP Claude Desktop yang berisi server Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-mcp-config-json.webp","\n4. Mulai ulang Claude Desktop dan periksa daftar 'Local MCP servers'. Statusnya harus menunjukkan 'running' (sedang berjalan).\n",[433,5404],{"alt":5405,"src":5406},"Claude Desktop menampilkan status berjalan untuk server MCP Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-mcp-status-running.webp",[538,5408,5410],{"id":5409},"mengintegrasikan-claude-code-via-mcp","Mengintegrasikan Claude Code via MCP",[503,5412,5413],{},[506,5414,5415],{},"Jalankan perintah berikut untuk menambahkan server MCP baru:",[569,5417,5419],{"className":4725,"code":5418,"language":4727,"meta":424,"style":424},"claude mcp add --transport http second-brain https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\n",[575,5420,5421],{"__ignoreMap":424},[578,5422,5423,5426,5429,5432,5435,5438,5441,5444,5446,5449,5452,5454],{"class":580,"line":581},[578,5424,5425],{"class":584},"claude",[578,5427,5428],{"class":588}," mcp",[578,5430,5431],{"class":588}," add",[578,5433,5434],{"class":588}," --transport",[578,5436,5437],{"class":588}," http",[578,5439,5440],{"class":588}," second-brain",[578,5442,5443],{"class":588}," https:\u002F\u002F",[578,5445,3434],{"class":720},[578,5447,5448],{"class":588},"your-worker-ur",[578,5450,5451],{"class":595},"l",[578,5453,3443],{"class":720},[578,5455,5456],{"class":588},"\u002Fmcp\n",[503,5458,5459,5465],{},[506,5460,5461,5462,991],{},"Claude Code akan mendeteksi bahwa endpoint memerlukan OAuth dan akan membuka halaman masuk di peramban web untuk memasukkan ",[575,5463,5464],{},"AUTH_TOKEN",[506,5466,5467,5468,5471,5472,5475,5476,991],{},"Buat file ",[575,5469,5470],{},"CLAUDE.md"," di folder ",[575,5473,5474],{},"~\u002F.claude"," dengan instruksi yang dijelaskan di ",[442,5477,5480],{"href":5478,"rel":5479},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fblob\u002Fmain\u002FAI_Instructions\u002FCLAUDE_INSTRUCTIONS.md",[446],"CLAUDE_INSTRUCTIONS.md",[538,5482,5484],{"id":5483},"mengintegrasikan-gemini-cli-via-mcp","Mengintegrasikan Gemini CLI via MCP",[2101,5486,5487],{},[506,5488,5489],{},"Tambahkan pengaturan server MCP berikut ke file '.\u002F.gemini\u002Fsettings.json' Anda:",[569,5491,5493],{"className":711,"code":5492,"language":713,"meta":424,"style":424},"    \"second-brain\": {\n      \"httpUrl\": \"https:\u002F\u002F\u003Cyour-worker-url>\u002Fmcp\",\n      \"oauth\": {\n        \"enabled\": true\n      }\n    }\n",[575,5494,5495,5507,5526,5539,5552,5557],{"__ignoreMap":424},[578,5496,5497,5499,5501,5503,5505],{"class":580,"line":581},[578,5498,5297],{"class":720},[578,5500,5300],{"class":588},[578,5502,1523],{"class":720},[578,5504,2531],{"class":595},[578,5506,721],{"class":720},[578,5508,5509,5511,5514,5516,5518,5520,5522,5524],{"class":580,"line":599},[578,5510,5311],{"class":720},[578,5512,5513],{"class":2720},"httpUrl",[578,5515,1523],{"class":720},[578,5517,766],{"class":720},[578,5519,1104],{"class":720},[578,5521,5361],{"class":588},[578,5523,1523],{"class":720},[578,5525,5328],{"class":720},[578,5527,5528,5530,5533,5535,5537],{"class":580,"line":605},[578,5529,5311],{"class":720},[578,5531,5532],{"class":2720},"oauth",[578,5534,1523],{"class":720},[578,5536,766],{"class":720},[578,5538,753],{"class":720},[578,5540,5541,5543,5546,5548,5550],{"class":580,"line":612},[578,5542,5347],{"class":720},[578,5544,5545],{"class":584},"enabled",[578,5547,1523],{"class":720},[578,5549,766],{"class":720},[578,5551,3660],{"class":720},[578,5553,5554],{"class":580,"line":622},[578,5555,5556],{"class":720},"      }\n",[578,5558,5559],{"class":580,"line":627},[578,5560,5395],{"class":720},[2101,5562,5563],{"start":599},[506,5564,5565],{},"Jalankan Gemini CLI.",[538,5567,5569],{"id":5568},"menguji-second-brain-di-agen-ai","Menguji Second Brain di Agen AI",[2101,5571,5572,5583,5596],{},[506,5573,5574,5575,5578,5579],{},"Saat mendefinisikan palet warna merek sederhana di ",[462,5576,5577],{},"Claude Desktop",", Second Brain tidak langsung dipanggil secara default.\n",[433,5580],{"alt":5581,"src":5582},"Pengujian pertama di Claude Desktop tanpa lapisan memori Second Brain yang aktif","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-first-run-brand-palette.webp",[506,5584,5585,5586,3267,5589,5591,5592],{},"Saat menggunakan kata kunci sederhana seperti 'remember', hanya alat bawaan lokal ",[575,5587,5588],{},"memory_user-edits",[462,5590,5577],{}," yang digunakan, bukan lapisan penyimpanan jarak jauh Second Brain.\n",[433,5593],{"alt":5594,"src":5595},"Claude Desktop beralih ke pengeditan pengguna bawaan lokal alih-alih Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-remember-built-in-tool-fallback.webp",[506,5597,5598,5599,5602],{},"Saat mengirim perintah berikut di ",[462,5600,5601],{},"Claude Code",", integrasi dengan Second Brain berhasil dipanggil:",[569,5604,5607],{"className":5605,"code":5606,"language":2493},[2491],"Remember Our brand palette uses `#1a1a2e` as primary, `#16213e` as secondary, and `#e94560` as accent. Never use pure black.\"\n",[575,5608,5606],{"__ignoreMap":424},[429,5610,5611,5615,5616,847,5619,5623,5624,5628,5629,5631,5632,5636,5637,5640,5641,5623,5645],{},[433,5612],{"alt":5613,"src":5614},"Jendela terminal Claude Code menampilkan pemicuan sukses dari MCP Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-code-second-brain-mcp-called.webp","\n4. Verifikasi pengaturan warna baru yang disimpan di ",[462,5617,5618],{},"Second Brain di Cloudflare",[433,5620],{"alt":5621,"src":5622},"Memverifikasi kode warna merek yang disimpan pada Web UI database Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-color-verification.webp","\n- ",[5625,5626,5627],"em",{},"Claude Code dapat berfungsi secara otomatis karena file instruksi CLAUDE_INSTRUCTIONS.md berisi aturan yang mengarah pada kata kunci 'Second Brain'.","\n5. Untuk menggunakan integrasi ini di ",[462,5630,5577],{},", kata kunci 'Second Brain' harus disebutkan secara eksplisit dalam prompt Anda untuk memaksa penyimpanan atau pembacaan di lapisan memori persisten ini.\n",[433,5633],{"alt":5634,"src":5635},"Memicu Second Brain di Claude Desktop dengan menyebutkan kata kunci secara eksplisit","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fclaude-desktop-second-brain-explicit-trigger.webp","\n6. Hal yang sama berlaku untuk ",[462,5638,5639],{},"Gemini CLI",", Anda harus menyebutkan kata kunci 'Second Brain' untuk mengaktifkan alat MCP Second Brain.\n",[433,5642],{"alt":5643,"src":5644},"Jendela terminal Gemini CLI mendemonstrasikan panggilan sukses ke MCP Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fgemini-cli-second-brain-trigger.webp",[5625,5646,5647],{},"Menambahkan instruksi serupa ke file GEMINI.md, seperti yang telah dilakukan pada CLAUDE_INSTRUCTIONS.md, akan mengaktifkan Second Brain di latar belakang tanpa harus menulis kata kunci secara manual.",[538,5649,5651],{"id":5650},"ekstensi-peramban-web","Ekstensi Peramban Web",[503,5653,5654,5657],{},[506,5655,5656],{},"Ekstensi tersedia untuk peramban web Chrome, Firefox, dan Microsoft Edge.",[506,5658,5659,5660],{},"Fitur ekstensi meliputi:\n",[503,5661,5662,5668,5674],{},[506,5663,5664,5667],{},[462,5665,5666],{},"Mengambil halaman saat ini"," — menyimpan judul dan URL halaman ke Second Brain.",[506,5669,5670,5673],{},[462,5671,5672],{},"Mengambil teks terpilih"," — pilih teks apa pun pada halaman sebelum mengklik ikon ekstensi; cuplikan tersebut akan disimpan bersama judul dan URL.",[506,5675,5676,5679,5680,5683],{},[462,5677,5678],{},"Menambahkan catatan cepat"," — ketik catatan atau gunakan ",[575,5681,5682],{},"#hashtags"," langsung di popup ekstensi sebelum menyimpan; hashtag akan diekstrak secara otomatis sebagai tag.",[538,5685,5687],{"id":5686},"sinkronisasi-pengetahuan-pribadi-dengan-plugin-obsidian","Sinkronisasi Pengetahuan Pribadi dengan Plugin Obsidian",[503,5689,5690,5693],{},[506,5691,5692],{},"Tersedia plugin Obsidian untuk menyinkronkan catatan dari Obsidian Vault Anda langsung ke Second Brain di Cloudflare.",[506,5694,5695],{},"Catatan dapat ditandai dengan tag khusus untuk disinkronkan ke penyimpanan persisten.",[543,5697,5699],{"id":5698},"menginstal-plugin-obsidian","Menginstal Plugin Obsidian",[2101,5701,5702,5709,5716,5723],{},[506,5703,5704,5705],{},"Buka Obsidian → Settings → Community Plugins\n",[433,5706],{"alt":5707,"src":5708},"Panel pengaturan Obsidian menavigasi ke bagian Community Plugins","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-settings-community-plugins.webp",[506,5710,5711,5712],{},"Klik tombol 'Browse'.\n",[433,5713],{"alt":5714,"src":5715},"Halaman pencarian plugin komunitas Obsidian menampilkan tombol Browse","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-community-plugins-browse.webp",[506,5717,5718,5719],{},"Cari 'Second Brain Sync'.\n",[433,5720],{"alt":5721,"src":5722},"Mencari plugin Second Brain Sync di toko plugin Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-community-plugins-search-second-brain.webp",[506,5724,5725,5726],{},"Klik tombol 'Install' lalu 'Enable'.\n",[433,5727],{"alt":5728,"src":5729},"Menginstal dan mengaktifkan plugin Second Brain Sync di Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-install-and-enable.webp",[543,5731,5733],{"id":5732},"mengonfigurasi-plugin-obsidian","Mengonfigurasi Plugin Obsidian",[2101,5735,5736,5739,5746,5753,5760,5767],{},[506,5737,5738],{},"Buka Obsidian → Settings → Second Brain Sync",[506,5740,5741,5742],{},"Masukkan 'URL' dan 'Auth token' Anda.\n",[433,5743],{"alt":5744,"src":5745},"Memasukkan URL Worker dan Token Otorisasi di pengaturan plugin Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-configuration-credentials.webp",[506,5747,5748,5749],{},"Klik tombol 'Test' untuk memverifikasi koneksi.\n",[433,5750],{"alt":5751,"src":5752},"Pengujian koneksi plugin Obsidian menunjukkan verifikasi sukses","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-connection-test-success.webp",[506,5754,5755,5756],{},"Konfigurasikan perilaku sinkronisasi. Atur tag sinkronisasi di 'Sync tag' dan aktifkan 'Auto-sync on save'.\n",[433,5757],{"alt":5758,"src":5759},"Mengonfigurasi Sync Tag dan mengaktifkan sinkronisasi otomatis saat menyimpan di Obsidian","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-plugin-sync-behavior-settings.webp",[506,5761,5762,5763],{},"Buat catatan di Obsidian dengan tag 'second-brain', sesuai dengan yang dikonfigurasi di 'Sync tag'.\n",[433,5764],{"alt":5765,"src":5766},"Membuat catatan Obsidian baru dengan tag second-brain untuk sinkronisasi","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fobsidian-note-with-sync-tag.webp",[506,5768,5769,5770],{},"Catatan tersebut kini telah disimpan dan disinkronkan ke Second Brain yang diterapkan di Cloudflare.\n",[433,5771],{"alt":5772,"src":5773},"Memverifikasi catatan Obsidian yang sukses disinkronkan pada Web UI Second Brain","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002Fsecond-brain-web-ui-synced-note-verification.webp",[493,5775,4983],{"id":4982},[429,5777,5778],{},"Second Brain menawarkan solusi sumber terbuka yang cerdas untuk mengatasi salah satu masalah paling membuat frustrasi dalam AI: ketiadaan memori persisten. Dengan memadukan proyek ini dengan infrastruktur Cloudflare yang skalabel, kita mendapatkan lapisan memori semantik mandiri yang terdistribusi secara global dengan latensi sangat rendah. Dukungan MCP yang tertanam di Second Brain membuat memori ini sepenuhnya portabel di berbagai agen AI.",[429,5780,5781],{},"Plugin Obsidian memperluas arsitektur ini dengan menghubungkan catatan pribadi di dalam vault dengan logika berpikir AI. Catatan mentah Anda diubah menjadi konteks terstruktur yang dapat dipahami dan dipanggil secara semantik oleh agen AI kapan saja.",[429,5783,5784],{},"Dengan menyatukan self-hosting, pencarian semantik vektor, dan standar integrasi berbasis MCP; Second Brain membuktikan dirinya bukan sekadar tempat penyimpanan memori, melainkan fondasi praktis untuk membangun ekosistem AI yang andal.",[493,5786,5787],{"id":1867},"Referensi:",[503,5789,5790,5796,5802,5809,5816],{},[506,5791,5792],{},[442,5793,5794],{"href":5794,"rel":5795},"https:\u002F\u002Fwww.thesecondbrain.dev\u002F",[446],[506,5797,5798],{},[442,5799,5800],{"href":5800,"rel":5801},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FHow-It-Works",[446],[506,5803,5804],{},[442,5805,5808],{"href":5806,"rel":5807},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FConnect-to-AI-Clients",[446],"Connect to AI Clients",[506,5810,5811],{},[442,5812,5815],{"href":5813,"rel":5814},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-cloudflare\u002Fwiki\u002FObsidian-Plugin",[446],"Second Brain Obsidian Plugin",[506,5817,5818],{},[442,5819,5820],{"href":5820,"rel":5821},"https:\u002F\u002Fgithub.com\u002Frahilp\u002Fsecond-brain-obsidian-plugin",[446],[1893,5823,5824],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":424,"searchDepth":599,"depth":605,"links":5826},[5827,5828,5829,5841,5842],{"id":5069,"depth":599,"text":5070},{"id":5079,"depth":599,"text":5080},{"id":5100,"depth":599,"text":5101,"children":5830},[5831,5832,5833,5834,5835,5836,5837],{"id":5175,"depth":605,"text":5176},{"id":5260,"depth":605,"text":5261},{"id":5409,"depth":605,"text":5410},{"id":5483,"depth":605,"text":5484},{"id":5568,"depth":605,"text":5569},{"id":5650,"depth":605,"text":5651},{"id":5686,"depth":605,"text":5687,"children":5838},[5839,5840],{"id":5698,"depth":612,"text":5699},{"id":5732,"depth":612,"text":5733},{"id":4982,"depth":599,"text":4983},{"id":1867,"depth":599,"text":5787},[5844,4101],"cloudflare","2026-08-07","Pelajari cara membangun sistem memori AI persisten dan mandiri di Cloudflare menggunakan Second Brain dan MCP. Berbagi konteks di Claude dan Obsidian.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FUse%20Cloudflare%20as%20AI%20memory\u002FID-Use-Cloudflare-as-AI-memory.webp","Sistem memori AI persisten dan mandiri yang dideploy di Cloudflare Workers dan Vectorize dengan dukungan MCP dan sinkronisasi Obsidian.",{"schemaOrg":5850,"robots":1931,"sitemap":5853},[5851],{"@type":4109,"headline":5852,"description":5846},"Sistem Memori AI Mandiri dengan Cloudflare & MCP",{"lastmod":5845},{"title":5852,"description":5846,"ogTitle":5064,"ogDescription":5846,"twitterTitle":5064,"twitterDescription":5846},"id\u002Farticle\u002Fuse-cloudflare-as-ai-memory",[4137,5857,5858,5091,1939],"MCP","Memori AI","9yZS7dESNmDcB1oP9vh_bLPfFb6ffNM8_A7ZXzmLTj8",{"id":5861,"title":4931,"author":424,"body":5862,"category":6376,"date":6377,"description":6378,"extension":1922,"image":6379,"imageAlt":6380,"isPublished":738,"meta":6381,"minRead":612,"navigation":738,"path":399,"seo":6385,"stem":6386,"tags":6387,"updatedAt":1942,"__hash__":6390},"article\u002Fid\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac.md",{"type":426,"value":5863,"toc":6369},[5864,5868,5871,5878,5882,5888,5891,5894,5898,5901,5908,5924,6218,6329,6331,6334,6336,6366],[493,5865,5867],{"id":5866},"apa-itu-cloudflare-warp","Apa Itu Cloudflare WARP?",[429,5869,5870],{},"Cloudflare WARP adalah aplikasi sisi klien (client-side) yang merutekan lalu lintas perangkat tertentu melalui jaringan global Cloudflare, bukan langsung menuju ke internet publik.",[429,5872,5873,5874,5877],{},"Aplikasi ini membuat terowongan terenkripsi yang dibangun di atas protokol ",[462,5875,5876],{},"WireGuard",", mengamankan lalu lintas dari perangkat ke pusat data Cloudflare terdekat. Kebijakan kemudian dapat dibuat di dasbor Cloudflare Anda untuk memfilter, mencatat (log), memeriksa, atau merutekan lalu lintas masuk ini.",[493,5879,5881],{"id":5880},"mengapa-kita-membutuhkan-cloudflare-warp","Mengapa Kita Membutuhkan Cloudflare WARP?",[429,5883,5884,5885,991],{},"Untuk mengekspos sumber daya internal dengan aman—seperti layanan web pribadi atau aplikasi SaaS—kepada karyawan, kontraktor, dan pemangku kepentingan lainnya, klien Cloudflare WARP digunakan sebagai titik penegakan sisi klien untuk ",[462,5886,5887],{},"Zero Trust Network Access (ZTNA)",[429,5889,5890],{},"Klien Cloudflare WARP diinstal di laptop atau ponsel pengguna. Aplikasi ini mengharuskan pengguna untuk melakukan autentikasi dan memenuhi pemeriksaan postur keamanan tertentu (seperti berasal dari rentang IP yang disetujui, menggunakan domain email terdaftar, atau menjalankan firewall aktif) sebelum memberikan akses.",[429,5892,5893],{},"Dengan menyalurkan lalu lintas perangkat langsung ke Cloudflare, identitas pengguna, perangkat, dan kebijakan diverifikasi sebelum permintaan sampai ke sumber daya internal. Hasilnya, sumber daya internal tidak pernah terekspos ke internet publik, dan setiap permintaan tercatat serta diaudit sepenuhnya.",[493,5895,5897],{"id":5896},"mendukung-beberapa-profil-warp-pada-satu-perangkat","Mendukung Beberapa Profil WARP pada Satu Perangkat",[429,5899,5900],{},"Ketika pengguna perlu beralih antara akun Cloudflare pribadi dan perusahaan, atau ketika administrator sistem mengelola beberapa penyewa (tenant), dukungan untuk beberapa profil WARP pada satu perangkat menjadi sangat krusial.",[429,5902,5903,5904,5907],{},"Untuk mencapai hal ini di macOS, kita dapat menggunakan file profil MDM ",[575,5905,5906],{},".mobileconfig"," untuk menentukan dan mendaftarkan lingkungan WARP yang berbeda.",[503,5909,5910,5921],{},[506,5911,5912,5920],{},[442,5913,5916,5917,5919],{"href":5914,"rel":5915},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fstatic\u002Fmdm\u002Fmultiple-orgs\u002FCloudflareWARP.mobileconfig",[446],"Download a sample ",[575,5918,5906],{}," file"," langsung dari Cloudflare.",[506,5922,5923],{},"Di bawah ini adalah contoh tampilan konfigurasi tersebut:",[569,5925,5929],{"className":5926,"code":5927,"language":5928,"meta":424,"style":424},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n\u003Cplist version=\"1.0\">\n\u003Cdict>\n  \u003Ckey>PayloadContent\u003C\u002Fkey>\n  \u003Carray>\n    \u003Cdict>\n      \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n      \u003Cstring>Warp Configuration\u003C\u002Fstring>\n      \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n      \u003Cstring>com.cloudflare.warp.CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n      \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n      \u003Cstring>Cloudflare Ltd.\u003C\u002Fstring>\n      \u003Ckey>PayloadType\u003C\u002Fkey>\n      \u003Cstring>com.cloudflare.warp\u003C\u002Fstring>\n      \u003Ckey>PayloadUUID\u003C\u002Fkey>\n      \u003Cstring>CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n      \u003Ckey>PayloadVersion\u003C\u002Fkey>\n      \u003Cinteger>1\u003C\u002Finteger>\n      \u003Ckey>configs\u003C\u002Fkey>\n      \u003Carray>\n        \u003Cdict>\n          \u003Ckey>organization\u003C\u002Fkey>\n          \u003Cstring>your-team-name-1\u003C\u002Fstring>\n          \u003Ckey>display_name\u003C\u002Fkey>\n          \u003Cstring>Team 1\u003C\u002Fstring>\n        \u003C\u002Fdict>\n        \u003Cdict>\n          \u003Ckey>organization\u003C\u002Fkey>\n          \u003Cstring>your-team-name-2\u003C\u002Fstring>\n          \u003Ckey>display_name\u003C\u002Fkey>\n          \u003Cstring>Team 2\u003C\u002Fstring>\n        \u003C\u002Fdict>\n      \u003C\u002Farray>\n    \u003C\u002Fdict>\n  \u003C\u002Farray>\n  \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n  \u003Cstring>Cloudflare WARP\u003C\u002Fstring>\n  \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n  \u003Cstring>cloudflare_warp\u003C\u002Fstring>\n  \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n  \u003Cstring>Cloudflare, Ltd.\u003C\u002Fstring>\n  \u003Ckey>PayloadRemovalDisallowed\u003C\u002Fkey>\n  \u003Cfalse\u002F>\n  \u003Ckey>PayloadScope\u003C\u002Fkey>\n  \u003Cstring>System\u003C\u002Fstring>\n  \u003Ckey>PayloadType\u003C\u002Fkey>\n  \u003Cstring>Configuration\u003C\u002Fstring>\n  \u003Ckey>PayloadUUID\u003C\u002Fkey>\n  \u003Cstring>2B7763B8-64F6-41EB-AA5E-7761651B8131\u003C\u002Fstring>\n  \u003Ckey>PayloadVersion\u003C\u002Fkey>\n  \u003Cinteger>1\u003C\u002Finteger>\n\u003C\u002Fdict>\n\u003C\u002Fplist>\n","xml",[575,5930,5931,5936,5941,5946,5951,5956,5961,5966,5971,5976,5981,5986,5991,5996,6001,6006,6011,6016,6021,6026,6031,6036,6041,6046,6051,6056,6061,6066,6070,6074,6079,6083,6088,6092,6098,6104,6110,6116,6122,6128,6134,6140,6146,6152,6158,6164,6170,6176,6182,6188,6194,6200,6206,6212],{"__ignoreMap":424},[578,5932,5933],{"class":580,"line":581},[578,5934,5935],{},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",[578,5937,5938],{"class":580,"line":599},[578,5939,5940],{},"\u003C!DOCTYPE plist PUBLIC \"-\u002F\u002FApple\u002F\u002FDTD PLIST 1.0\u002F\u002FEN\" \"http:\u002F\u002Fwww.apple.com\u002FDTDs\u002FPropertyList-1.0.dtd\">\n",[578,5942,5943],{"class":580,"line":605},[578,5944,5945],{},"\u003Cplist version=\"1.0\">\n",[578,5947,5948],{"class":580,"line":612},[578,5949,5950],{},"\u003Cdict>\n",[578,5952,5953],{"class":580,"line":622},[578,5954,5955],{},"  \u003Ckey>PayloadContent\u003C\u002Fkey>\n",[578,5957,5958],{"class":580,"line":627},[578,5959,5960],{},"  \u003Carray>\n",[578,5962,5963],{"class":580,"line":633},[578,5964,5965],{},"    \u003Cdict>\n",[578,5967,5968],{"class":580,"line":773},[578,5969,5970],{},"      \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n",[578,5972,5973],{"class":580,"line":1132},[578,5974,5975],{},"      \u003Cstring>Warp Configuration\u003C\u002Fstring>\n",[578,5977,5978],{"class":580,"line":1140},[578,5979,5980],{},"      \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n",[578,5982,5983],{"class":580,"line":1148},[578,5984,5985],{},"      \u003Cstring>com.cloudflare.warp.CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n",[578,5987,5988],{"class":580,"line":1156},[578,5989,5990],{},"      \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n",[578,5992,5993],{"class":580,"line":1164},[578,5994,5995],{},"      \u003Cstring>Cloudflare Ltd.\u003C\u002Fstring>\n",[578,5997,5998],{"class":580,"line":1172},[578,5999,6000],{},"      \u003Ckey>PayloadType\u003C\u002Fkey>\n",[578,6002,6003],{"class":580,"line":1180},[578,6004,6005],{},"      \u003Cstring>com.cloudflare.warp\u003C\u002Fstring>\n",[578,6007,6008],{"class":580,"line":1191},[578,6009,6010],{},"      \u003Ckey>PayloadUUID\u003C\u002Fkey>\n",[578,6012,6013],{"class":580,"line":1196},[578,6014,6015],{},"      \u003Cstring>CB8B22D4-50E1-48E8-8874-A7594627013A\u003C\u002Fstring>\n",[578,6017,6018],{"class":580,"line":1204},[578,6019,6020],{},"      \u003Ckey>PayloadVersion\u003C\u002Fkey>\n",[578,6022,6023],{"class":580,"line":1742},[578,6024,6025],{},"      \u003Cinteger>1\u003C\u002Finteger>\n",[578,6027,6028],{"class":580,"line":1748},[578,6029,6030],{},"      \u003Ckey>configs\u003C\u002Fkey>\n",[578,6032,6033],{"class":580,"line":1759},[578,6034,6035],{},"      \u003Carray>\n",[578,6037,6038],{"class":580,"line":2423},[578,6039,6040],{},"        \u003Cdict>\n",[578,6042,6043],{"class":580,"line":2879},[578,6044,6045],{},"          \u003Ckey>organization\u003C\u002Fkey>\n",[578,6047,6048],{"class":580,"line":2888},[578,6049,6050],{},"          \u003Cstring>your-team-name-1\u003C\u002Fstring>\n",[578,6052,6053],{"class":580,"line":2896},[578,6054,6055],{},"          \u003Ckey>display_name\u003C\u002Fkey>\n",[578,6057,6058],{"class":580,"line":2904},[578,6059,6060],{},"          \u003Cstring>Team 1\u003C\u002Fstring>\n",[578,6062,6063],{"class":580,"line":2909},[578,6064,6065],{},"        \u003C\u002Fdict>\n",[578,6067,6068],{"class":580,"line":2916},[578,6069,6040],{},[578,6071,6072],{"class":580,"line":2924},[578,6073,6045],{},[578,6075,6076],{"class":580,"line":2932},[578,6077,6078],{},"          \u003Cstring>your-team-name-2\u003C\u002Fstring>\n",[578,6080,6081],{"class":580,"line":2943},[578,6082,6055],{},[578,6084,6085],{"class":580,"line":2951},[578,6086,6087],{},"          \u003Cstring>Team 2\u003C\u002Fstring>\n",[578,6089,6090],{"class":580,"line":2958},[578,6091,6065],{},[578,6093,6095],{"class":580,"line":6094},34,[578,6096,6097],{},"      \u003C\u002Farray>\n",[578,6099,6101],{"class":580,"line":6100},35,[578,6102,6103],{},"    \u003C\u002Fdict>\n",[578,6105,6107],{"class":580,"line":6106},36,[578,6108,6109],{},"  \u003C\u002Farray>\n",[578,6111,6113],{"class":580,"line":6112},37,[578,6114,6115],{},"  \u003Ckey>PayloadDisplayName\u003C\u002Fkey>\n",[578,6117,6119],{"class":580,"line":6118},38,[578,6120,6121],{},"  \u003Cstring>Cloudflare WARP\u003C\u002Fstring>\n",[578,6123,6125],{"class":580,"line":6124},39,[578,6126,6127],{},"  \u003Ckey>PayloadIdentifier\u003C\u002Fkey>\n",[578,6129,6131],{"class":580,"line":6130},40,[578,6132,6133],{},"  \u003Cstring>cloudflare_warp\u003C\u002Fstring>\n",[578,6135,6137],{"class":580,"line":6136},41,[578,6138,6139],{},"  \u003Ckey>PayloadOrganization\u003C\u002Fkey>\n",[578,6141,6143],{"class":580,"line":6142},42,[578,6144,6145],{},"  \u003Cstring>Cloudflare, Ltd.\u003C\u002Fstring>\n",[578,6147,6149],{"class":580,"line":6148},43,[578,6150,6151],{},"  \u003Ckey>PayloadRemovalDisallowed\u003C\u002Fkey>\n",[578,6153,6155],{"class":580,"line":6154},44,[578,6156,6157],{},"  \u003Cfalse\u002F>\n",[578,6159,6161],{"class":580,"line":6160},45,[578,6162,6163],{},"  \u003Ckey>PayloadScope\u003C\u002Fkey>\n",[578,6165,6167],{"class":580,"line":6166},46,[578,6168,6169],{},"  \u003Cstring>System\u003C\u002Fstring>\n",[578,6171,6173],{"class":580,"line":6172},47,[578,6174,6175],{},"  \u003Ckey>PayloadType\u003C\u002Fkey>\n",[578,6177,6179],{"class":580,"line":6178},48,[578,6180,6181],{},"  \u003Cstring>Configuration\u003C\u002Fstring>\n",[578,6183,6185],{"class":580,"line":6184},49,[578,6186,6187],{},"  \u003Ckey>PayloadUUID\u003C\u002Fkey>\n",[578,6189,6191],{"class":580,"line":6190},50,[578,6192,6193],{},"  \u003Cstring>2B7763B8-64F6-41EB-AA5E-7761651B8131\u003C\u002Fstring>\n",[578,6195,6197],{"class":580,"line":6196},51,[578,6198,6199],{},"  \u003Ckey>PayloadVersion\u003C\u002Fkey>\n",[578,6201,6203],{"class":580,"line":6202},52,[578,6204,6205],{},"  \u003Cinteger>1\u003C\u002Finteger>\n",[578,6207,6209],{"class":580,"line":6208},53,[578,6210,6211],{},"\u003C\u002Fdict>\n",[578,6213,6215],{"class":580,"line":6214},54,[578,6216,6217],{},"\u003C\u002Fplist>\n",[503,6219,6220,6230,6241,6251,6257,6273,6285,6305,6320],{},[506,6221,6222,6223,464,6226,6229],{},"Ganti ",[575,6224,6225],{},"your-team-name-1",[575,6227,6228],{},"your-team-name-2"," dengan nama tim Cloudflare Zero Trust Anda masing-masing.",[506,6231,800,6232,6235,6236,5284,6239,991],{},[575,6233,6234],{},"uuidgen"," di Terminal Anda untuk menghasilkan UUID unik, lalu gunakan untuk mengganti nilai tempat penampung (placeholder) ",[575,6237,6238],{},"PayloadUUID",[575,6240,5906],{},[506,6242,6243,6244,6247,6248,6250],{},"Pastikan string ",[575,6245,6246],{},"PayloadIdentifier"," juga berisi ",[575,6249,6238],{}," yang diperbarui agar profil tetap berbeda.",[506,6252,6253,6254,6256],{},"Simpan file ",[575,6255,5906],{}," yang telah Anda edit.",[506,6258,1775,6259,6262,6263,6266,6267,6269],{},[462,6260,6261],{},"Pengaturan Sistem"," di Mac Anda, cari ",[462,6264,6265],{},"Profil"," (Profiles), lalu pilih.",[4313,6268],{},[433,6270],{"alt":6271,"src":6272},"Panel Profil di Pengaturan Sistem macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-system-settings-profiles.webp",[506,6274,2125,6275,6278,6279,6281],{},[462,6276,6277],{},"Instal, lihat, atau hapus..."," (Install, view or remove...) untuk mulai menambahkan profil konfigurasi baru Anda.",[4313,6280],{},[433,6282],{"alt":6283,"src":6284},"Tombol instal, lihat, atau hapus profil macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-profiles-view-remove.webp",[506,6286,6287,6288,6291,6292,6294,6295,6297,6301],{},"Klik ikon ",[462,6289,6290],{},"+"," (plus) di sudut kiri bawah dan pilih file ",[575,6293,5906],{}," yang telah Anda simpan.",[4313,6296],{},[433,6298],{"alt":6299,"src":6300},"Tombol plus (+) profil macOS untuk menambahkan profil baru","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-profiles-add-profile.webp",[433,6302],{"alt":6303,"src":6304},"Memilih file .mobileconfig di macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-select-mobileconfig-file.webp",[506,6306,6307,6308,869,6310,6313,6314,6316],{},"Pilih ",[462,6309,4152],{},[462,6311,6312],{},"Instal"," (Install) untuk menerapkan konfigurasi.",[4313,6315],{},[433,6317],{"alt":6318,"src":6319},"Mengonfirmasi instalasi profil Cloudflare WARP di macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fmacos-install-cloudflare-warp-profile.webp",[506,6321,6322,6323,6325],{},"Mulai ulang klien Cloudflare WARP Anda. Sekarang Anda akan melihat pengalih multi-profil di antarmuka pengguna:",[4313,6324],{},[433,6326],{"alt":6327,"src":6328},"Klien Cloudflare WARP dengan pengalih multi-profil di macOS","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002Fcloudflare-warp-multi-profile-switcher.webp",[493,6330,4983],{"id":4982},[429,6332,6333],{},"Klien Cloudflare WARP bertindak sebagai titik keamanan krusial pada perangkat pengguna, membuat Akses Jaringan Zero Trust (ZTNA) menjadi tangguh sekaligus sangat praktis. Menjaga sumber daya internal tetap terisolasi dari internet publik memastikan setiap upaya koneksi diautentikasi, dievaluasi, dan diaudit dengan aman.",[493,6335,1868],{"id":1867},[503,6337,6338,6345,6352,6359],{},[506,6339,6340],{},[442,6341,6344],{"href":6342,"rel":6343},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002Fdeployment\u002Fmdm-deployment\u002F#prepare-file-for-mdm-deployment",[446],"Managed Deployment Preparation",[506,6346,6347],{},[442,6348,6351],{"href":6349,"rel":6350},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002Fdeployment\u002Fmdm-deployment\u002Fswitch-organizations\u002F",[446],"Switch Between Zero Trust Organizations",[506,6353,6354],{},[442,6355,6358],{"href":6356,"rel":6357},"https:\u002F\u002Fblog.cloudflare.com\u002Fintroducing-warp-connector-paving-the-path-to-any-to-any-connectivity-2\u002F",[446],"Introducing WARP Connector: Paving the Path to Any-to-Any Connectivity",[506,6360,6361],{},[442,6362,6365],{"href":6363,"rel":6364},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fteam-and-resources\u002Fdevices\u002Fcloudflare-one-client\u002F",[446],"Cloudflare One Client Documentation",[1893,6367,6368],{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":424,"searchDepth":599,"depth":605,"links":6370},[6371,6372,6373,6374,6375],{"id":5866,"depth":599,"text":5867},{"id":5880,"depth":599,"text":5881},{"id":5896,"depth":599,"text":5897},{"id":4982,"depth":599,"text":4983},{"id":1867,"depth":599,"text":1868},[5016,5844],"2026-07-04","Konfigurasikan dan beralih antara beberapa organisasi Cloudflare WARP di macOS menggunakan file .mobileconfig. Panduan MDM lengkap untuk administrator TI.","https:\u002F\u002Finimages.techvoyage.dev\u002Farticles\u002FSwitch%20Between%20Multiple%20Cloudflare%20WARP%20Orgs%20on%20Mac\u002FID-Switch-Between-Multiple-Cloudflare-WARP-Orgs-on-Mac.webp","Konfigurasi Beberapa Profil Cloudflare WARP pada macOS",{"schemaOrg":6382,"robots":1931,"sitemap":6384},[6383],{"@type":1930,"headline":4931,"description":6378},{"lastmod":6377},{"title":6380,"description":6378,"ogTitle":4931,"ogDescription":6378,"twitterTitle":4931,"twitterDescription":6378},"id\u002Farticle\u002Fswitch-between-multiple-cloudflare-warp-orgs-on-mac",[6388,4152,6389,1941],"macOS","MDM","g75vUIN1mRvIdprX3WwNzBHE5-tIZ2ZSJhOV0EsNCBM",1792490011457]