[{"data":1,"prerenderedAt":488},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-surrealdb-setup":145,"-getting-started-surrealdb-setup-surround":483},[4,27,41,93],{"title":5,"path":6,"stem":7,"children":8,"icon":26},"Getting Started","\u002Fgetting-started","1.getting-started\u002F0.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Framework Architecture","\u002Fgetting-started\u002Farchitecture","1.getting-started\u002F1.architecture",{"title":15,"path":16,"stem":17},"Module Reference","\u002Fgetting-started\u002Fmodule-reference","1.getting-started\u002F2.module-reference",{"title":19,"path":20,"stem":21},"Development Guide","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F3.development",{"title":23,"path":24,"stem":25},"SurrealDB Setup","\u002Fgetting-started\u002Fsurrealdb-setup","1.getting-started\u002F4.surrealdb-setup","i-lucide-rocket",{"title":28,"path":29,"stem":30,"children":31},"Forge Server Extension","\u002Fserver-extension","2.server-extension\u002F0.index",[32,33,37],{"title":28,"path":29,"stem":30},{"title":34,"path":35,"stem":36},"Forge Server API Reference","\u002Fserver-extension\u002Fapi-reference","2.server-extension\u002F1.api-reference",{"title":38,"path":39,"stem":40},"Forge Server Usage Examples","\u002Fserver-extension\u002Fusage-examples","2.server-extension\u002F2.usage-examples",{"title":42,"path":43,"stem":44,"children":45,"icon":92},"Server Modules","\u002Fserver-modules","3.server-modules\u002F0.index",[46,48,52,56,60,64,68,72,76,80,84,88],{"title":47,"path":43,"stem":44},"Server Module Guides",{"title":49,"path":50,"stem":51},"Actor Usage Guide","\u002Fserver-modules\u002Factor","3.server-modules\u002F1.actor",{"title":53,"path":54,"stem":55},"Store Usage Guide","\u002Fserver-modules\u002Fstore","3.server-modules\u002F10.store",{"title":57,"path":58,"stem":59},"Task Usage Guide","\u002Fserver-modules\u002Ftask","3.server-modules\u002F11.task",{"title":61,"path":62,"stem":63},"Bank Usage Guide","\u002Fserver-modules\u002Fbank","3.server-modules\u002F2.bank",{"title":65,"path":66,"stem":67},"CAD Usage Guide","\u002Fserver-modules\u002Fcad","3.server-modules\u002F3.cad",{"title":69,"path":70,"stem":71},"Economy Usage Guide","\u002Fserver-modules\u002Feconomy","3.server-modules\u002F4.economy",{"title":73,"path":74,"stem":75},"Garage Usage Guide","\u002Fserver-modules\u002Fgarage","3.server-modules\u002F5.garage",{"title":77,"path":78,"stem":79},"Locker Usage Guide","\u002Fserver-modules\u002Flocker","3.server-modules\u002F6.locker",{"title":81,"path":82,"stem":83},"Organization Usage Guide","\u002Fserver-modules\u002Forganization","3.server-modules\u002F7.organization",{"title":85,"path":86,"stem":87},"Owned Storage Usage Guide","\u002Fserver-modules\u002Fowned-storage","3.server-modules\u002F8.owned-storage",{"title":89,"path":90,"stem":91},"Phone Usage Guide","\u002Fserver-modules\u002Fphone","3.server-modules\u002F9.phone","i-lucide-layers-3",{"title":94,"path":95,"stem":96,"children":97,"icon":144},"Client Addons","\u002Fclient-addons","4.client-addons\u002F0.index",[98,100,104,108,112,116,120,124,128,132,136,140],{"title":99,"path":95,"stem":96},"Client Usage Guide",{"title":101,"path":102,"stem":103},"Client Main Usage Guide","\u002Fclient-addons\u002Fmain","4.client-addons\u002F1.main",{"title":105,"path":106,"stem":107},"Client Phone Usage Guide","\u002Fclient-addons\u002Fphone","4.client-addons\u002F10.phone",{"title":109,"path":110,"stem":111},"Client Store Usage Guide","\u002Fclient-addons\u002Fstore","4.client-addons\u002F11.store",{"title":113,"path":114,"stem":115},"Client Common Usage Guide","\u002Fclient-addons\u002Fcommon","4.client-addons\u002F2.common",{"title":117,"path":118,"stem":119},"Client Actor Usage Guide","\u002Fclient-addons\u002Factor","4.client-addons\u002F3.actor",{"title":121,"path":122,"stem":123},"Client Bank Usage Guide","\u002Fclient-addons\u002Fbank","4.client-addons\u002F4.bank",{"title":125,"path":126,"stem":127},"Client CAD Usage Guide","\u002Fclient-addons\u002Fcad","4.client-addons\u002F5.cad",{"title":129,"path":130,"stem":131},"Client Garage Usage Guide","\u002Fclient-addons\u002Fgarage","4.client-addons\u002F6.garage",{"title":133,"path":134,"stem":135},"Client Locker Usage Guide","\u002Fclient-addons\u002Flocker","4.client-addons\u002F7.locker",{"title":137,"path":138,"stem":139},"Client Notifications Usage Guide","\u002Fclient-addons\u002Fnotifications","4.client-addons\u002F8.notifications",{"title":141,"path":142,"stem":143},"Client Organization Usage Guide","\u002Fclient-addons\u002Forganization","4.client-addons\u002F9.organization","i-lucide-monitor-smartphone",{"id":146,"title":23,"body":147,"description":157,"extension":477,"links":478,"meta":479,"navigation":480,"path":24,"seo":481,"stem":25,"__hash__":482},"docs\u002F1.getting-started\u002F4.surrealdb-setup.md",{"type":148,"value":149,"toc":471},"minimark",[150,154,158,163,168,171,174,199,202,225,251,279,282,291,306,353,356,368,385,391,395,398,400,423,426,449,457,467],[151,152,23],"h1",{"id":153},"surrealdb-setup",[155,156,157],"p",{},"Forge uses SurrealDB for durable storage. The Rust server extension connects to\nSurrealDB on startup and applies Forge schema modules automatically, so setup\ncomes down to running a reachable database and matching the Forge config.",[159,160,162],"h2",{"id":161},"choose-the-right-path","Choose the Right Path",[164,165,167],"h3",{"id":166},"developer-or-server-operator","Developer or Server Operator",[155,169,170],{},"Use this path if you are building Forge, running a local test server, or\nhosting the live Arma server.",[155,172,173],{},"Official SurrealDB resources:",[175,176,177,187],"ul",{},[178,179,180],"li",{},[181,182,186],"a",{"href":183,"rel":184},"https:\u002F\u002Fsurrealdb.com\u002Finstall",[185],"nofollow","SurrealDB install page",[178,188,189],{},[181,190,193,194,198],{"href":191,"rel":192},"https:\u002F\u002Fsurrealdb.com\u002Fdocs\u002Freference\u002Fcli\u002Fsurrealdb-cli\u002Fcommands\u002Fstart",[185],"SurrealDB CLI ",[195,196,197],"code",{},"start"," reference",[155,200,201],{},"Install SurrealDB with the official method for your platform:",[203,204,209],"pre",{"className":205,"code":206,"language":207,"meta":208,"style":208},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Windows\niwr https:\u002F\u002Fwindows.surrealdb.com -useb | iex\n","powershell","",[195,210,211,219],{"__ignoreMap":208},[212,213,216],"span",{"class":214,"line":215},"line",1,[212,217,218],{},"# Windows\n",[212,220,222],{"class":214,"line":221},2,[212,223,224],{},"iwr https:\u002F\u002Fwindows.surrealdb.com -useb | iex\n",[203,226,230],{"className":227,"code":228,"language":229,"meta":208,"style":208},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# macOS\nbrew install surrealdb\u002Ftap\u002Fsurreal\n","bash",[195,231,232,238],{"__ignoreMap":208},[212,233,234],{"class":214,"line":215},[212,235,237],{"class":236},"sHwdD","# macOS\n",[212,239,240,244,248],{"class":214,"line":221},[212,241,243],{"class":242},"sBMFI","brew",[212,245,247],{"class":246},"sfazB"," install",[212,249,250],{"class":246}," surrealdb\u002Ftap\u002Fsurreal\n",[203,252,254],{"className":227,"code":253,"language":229,"meta":208,"style":208},"# Linux\ncurl -sSf https:\u002F\u002Finstall.surrealdb.com | sh\n",[195,255,256,261],{"__ignoreMap":208},[212,257,258],{"class":214,"line":215},[212,259,260],{"class":236},"# Linux\n",[212,262,263,266,269,272,276],{"class":214,"line":221},[212,264,265],{"class":242},"curl",[212,267,268],{"class":246}," -sSf",[212,270,271],{"class":246}," https:\u002F\u002Finstall.surrealdb.com",[212,273,275],{"class":274},"sMK4o"," |",[212,277,278],{"class":242}," sh\n",[155,280,281],{},"For Forge, start a persistent local database instead of the default in-memory\nmode:",[203,283,285],{"className":205,"code":284,"language":207,"meta":208,"style":208},"surreal start surrealkv:\u002F\u002Fforge.db --bind 127.0.0.1:8000 --user root --pass root\n",[195,286,287],{"__ignoreMap":208},[212,288,289],{"class":214,"line":215},[212,290,284],{},[155,292,293,294,297,298,301,302,305],{},"Then copy ",[195,295,296],{},"arma\u002Fserver\u002Fextension\u002Fconfig.example.toml"," to ",[195,299,300],{},"config.toml"," next to\n",[195,303,304],{},"forge_server_x64.dll"," and keep the values aligned with the database you\nstarted:",[203,307,311],{"className":308,"code":309,"language":310,"meta":208,"style":208},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[surreal]\nendpoint = \"127.0.0.1:8000\"\nnamespace = \"forge\"\ndatabase = \"main\"\nusername = \"root\"\npassword = \"root\"\nconnect_timeout_ms = 5000\n","toml",[195,312,313,318,323,329,335,341,347],{"__ignoreMap":208},[212,314,315],{"class":214,"line":215},[212,316,317],{},"[surreal]\n",[212,319,320],{"class":214,"line":221},[212,321,322],{},"endpoint = \"127.0.0.1:8000\"\n",[212,324,326],{"class":214,"line":325},3,[212,327,328],{},"namespace = \"forge\"\n",[212,330,332],{"class":214,"line":331},4,[212,333,334],{},"database = \"main\"\n",[212,336,338],{"class":214,"line":337},5,[212,339,340],{},"username = \"root\"\n",[212,342,344],{"class":214,"line":343},6,[212,345,346],{},"password = \"root\"\n",[212,348,350],{"class":214,"line":349},7,[212,351,352],{},"connect_timeout_ms = 5000\n",[155,354,355],{},"After that:",[357,358,359,362,365],"ol",{},[178,360,361],{},"Start the Arma server with the Forge extension enabled.",[178,363,364],{},"Let the extension connect and apply the Forge schema modules.",[178,366,367],{},"Verify the connection state:",[203,369,373],{"className":370,"code":371,"language":372,"meta":208,"style":208},"language-sqf shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\"forge_server\" callExtension [\"status\", []];\n\"forge_server\" callExtension [\"surreal:status\", []];\n","sqf",[195,374,375,380],{"__ignoreMap":208},[212,376,377],{"class":214,"line":215},[212,378,379],{},"\"forge_server\" callExtension [\"status\", []];\n",[212,381,382],{"class":214,"line":221},[212,383,384],{},"\"forge_server\" callExtension [\"surreal:status\", []];\n",[155,386,387,388,390],{},"If you change the endpoint, namespace, database, username, or password in\nSurrealDB, change the same values in Forge's ",[195,389,300],{},".",[164,392,394],{"id":393},"mission-designer-or-community-managerleader","Mission Designer or Community Manager\u002FLeader",[155,396,397],{},"Use this path if you mostly need to inspect, query, or adjust data for a test\nor live server and you are not changing Forge source code.",[155,399,173],{},[175,401,402,409,416],{},[178,403,404],{},[181,405,408],{"href":406,"rel":407},"https:\u002F\u002Fsurrealdb.com\u002Fdocs\u002Fexplore\u002Fsurrealist\u002Finstallation",[185],"Surrealist installation",[178,410,411],{},[181,412,415],{"href":413,"rel":414},"https:\u002F\u002Fapp.surrealdb.com",[185],"Surrealist web app",[178,417,418],{},[181,419,422],{"href":420,"rel":421},"https:\u002F\u002Fsurrealdb.com\u002Fdocs\u002Fexplore\u002Fsurrealist\u002Fconcepts\u002Flocal-database-serving",[185],"Surrealist local database serving",[155,424,425],{},"Recommended approach:",[357,427,428,440,443],{},[178,429,430,431,435,436,439],{},"Install ",[432,433,434],"strong",{},"Surrealist Desktop",". It is the better fit for Forge because the\nofficial docs note that the web app can be limited when connecting to\n",[195,437,438],{},"localhost"," or non-HTTPS endpoints.",[178,441,442],{},"Connect Surrealist to the same database Forge uses.",[178,444,445,446,448],{},"Use the values from the server's ",[195,447,300],{},":",[203,450,455],{"className":451,"code":453,"language":454,"meta":208},[452],"language-text","Endpoint: http:\u002F\u002F127.0.0.1:8000\nNamespace: forge\nDatabase: main\nUsername: root\nPassword: root\n","text",[195,456,453],{"__ignoreMap":208},[155,458,459,460,463,464,390],{},"If you need your own local sandbox instead of connecting to an existing Forge\nserver, install SurrealDB first and follow the developer\u002Fserver-operator path\nabove. Surrealist Desktop can also launch a local database for you after the\n",[195,461,462],{},"surreal"," executable is installed and available on your ",[195,465,466],{},"PATH",[468,469,470],"style",{},"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 .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":208,"searchDepth":221,"depth":221,"links":472},[473],{"id":161,"depth":221,"text":162,"children":474},[475,476],{"id":166,"depth":325,"text":167},{"id":393,"depth":325,"text":394},"md",null,{},true,{"title":23,"description":157},"Mzg_hZr3MJToQo6L-0UrTXsAtDW3i2aJ-CYUHBu0nB8",[484,486],{"title":19,"path":20,"stem":21,"description":485,"children":-1},"This guide covers the usual path for adding or changing a Forge module.",{"title":28,"path":29,"stem":30,"description":487,"children":-1},"Forge Server is an arma-rs extension for Arma 3 server-side persistence and\ndomain services. It exposes game-facing commands and stores durable state in\nSurrealDB.",1776806627742]