[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article:windrose:windrose-server-setup":3},{"id":4,"slug":5,"title":6,"excerpt":7,"seoTitle":8,"seoDescription":9,"canonicalUrl":10,"publicPath":11,"gameId":12,"gameName":13,"articleType":14,"primaryTopic":15,"publishedAt":16,"updatedAt":17,"readingTimeMinutes":18,"wordCount":19,"noindex":20,"coverImage":21,"ratingSummary":31,"blocks":33},4,"windrose-server-setup","Windrose Server Setup: How to Host Your Own Server","Learn how to set up your own Windrose dedicated server using SteamCMD, create an update script, and find your invite code.","Windrose Server Setup Guide | Host Your Own Server","Step-by-step Windrose server setup guide using SteamCMD. Learn how to install the server, run an update batch file, and find your invite code.","https:\u002F\u002Fservervote.com\u002Fgame\u002Fwindrose\u002Farticles\u002Fwindrose-server-setup","\u002Fgame\u002Fwindrose\u002Farticles\u002Fwindrose-server-setup","windrose","Windrose","guide","server setup","2026-04-22 10:27:11","2026-04-23 10:32:00",7,1403,false,{"id":4,"r2_key":22,"filename":23,"mime_type":24,"bytes":25,"width":26,"height":26,"alt_text":27,"caption":26,"uploaded_by_user_id":28,"created_at":29,"public_url":30},"articles\u002F2026\u002F04\u002F1776836083556-5o5z7zo4-windrose-screenshot.jpg","windrose_screenshot.jpg","image\u002Fjpeg",80180,null,"a basic camp in windrose",1,"2026-04-22 05:34:44","https:\u002F\u002Fservervote.com\u002Fapi\u002Fcontent\u002Fassets\u002F4\u002Ffile",{"averageRating":32,"ratingCount":28},5,[34,40,53,58,66,70,76,97,159,187,233,245],{"id":35,"type":36,"sortOrder":37,"payload":38},417,"rich_text",0,{"markdown":39},"## Windrose Server Setup: Get Your Own Server Running\n\nWant to host your own [Windrose](\u002Fgame\u002Fwindrose) server? This quick-start guide walks you through the basics so you can get online fast.\n\nWindrose provides an invite code, you don't need to open ports with port-forwarding. \n\n### What you need\n\n- At least 35 GB of free disk space\n- 8GB RAM\n- [SteamCMD](\u002Farticles\u002Fsteamcmd-setup-guide)\n- A folder ready for your Windrose server files\n\nIf you do not already have SteamCMD, download it first. [A dedicated SteamCMD setup guide is available here.](\u002Farticles\u002Fsteamcmd-setup-guide)\n",{"id":41,"type":42,"sortOrder":28,"payload":43},418,"batch_builder",{"title":44,"description":45,"label":46,"helperText":47,"appId":48,"defaultSteamCmdPath":49,"defaultInstallDir":50,"defaultStartScript":51,"defaultUpdateOnStart":52,"defaultAutoRestart":20},"Step 1: Generate your Windrose batch file","Replace the example SteamCMD and Server files paths. Then set your options like Auto restart or Update on start. Click Copy and save it in a new text file. Save the text file as `Update.bat`.","Batch file","","4129620","D:\\Tools\\SteamCMD\\steamcmd.exe","D:\\GameServers\\Windrose","StartServerForeground.bat",true,{"id":54,"type":36,"sortOrder":55,"payload":56},419,2,{"markdown":57},"### Step 2: Start the server\n\nRun `Update.bat`. SteamCMD will download or update the server files, then start the server process.\n\n### Step 3: Find your invite code\n\nOnce the server finishes starting, check the server console for your connection details. You should see output similar to this:\n\n```\n= Server Connection Info ========================================================\n\nInviteCode : bd0ca3e1\nPassword :\n\n=================================================================================\n```\n\nYour `InviteCode` is what players use to connect to your server.",{"id":59,"type":60,"sortOrder":61,"payload":62},420,"callout",3,{"level":63,"title":64,"markdown":65},"success","You now have a Windrose server!","If you want to set more advanced settings, continue reading.",{"id":67,"type":36,"sortOrder":4,"payload":68},421,{"markdown":69},"## Advanced setup\n\nOnce your Windrose server is running, the next step is understanding the files that control how it behaves.\n\nWindrose splits server configuration across two JSON files:\n\n- `ServerDescription.json` for server-wide settings\n- `WorldDescription.json` for per-world settings\n\nThe server creates default versions of these files on first launch. Start the server once, shut it down cleanly, then edit the generated files while the server is offline.\n\n### Config file roles\n\n- `ServerDescription.json`\n  Common server settings stored in a single file in the root folder.\n\n- `WorldDescription.json`\n  World-specific settings stored per world.",{"id":71,"type":60,"sortOrder":32,"payload":72},422,{"level":73,"title":74,"markdown":75},"warning","Important note","Only edit these files while the server is shut down. Windrose may automatically adjust some values if it detects configuration issues.",{"id":77,"type":78,"sortOrder":79,"payload":80},423,"comparison_table",6,{"eyebrow":47,"title":81,"markdown":82,"columns":83,"rows":87,"highlightedColumn":96},"Windrose configuration files","Use this as the quick reference for which file to edit.",[84,85,86],"File","Location","What it controls",[88,92],[89,90,91],"**ServerDescription.json**","Root server folder","Server-wide settings like invite code, password, selected world, region, and direct connection options",[93,94,95],"**WorldDescription.json**","\u003Croot>\u002FR5\u002FSaved\u002FSaveProfiles\u002FDefault\u002FRocksDB\u002F\u003Cgame version>\u002FWorlds\u002F\u003Cworld id>\u002FWorldDescription.json","World-specific settings like world name, preset, and custom difficulty parameters",99,{"id":98,"type":78,"sortOrder":18,"payload":99},424,{"eyebrow":47,"title":100,"markdown":101,"columns":102,"rows":106,"highlightedColumn":96},"ServerDescription.json fields","`ServerDescription.json` is the main file for server identity, access, region handling, and connection behavior.\n",[103,104,105],"Field","What it does","Notes",[107,111,115,119,123,127,131,135,139,143,147,151,155],[108,109,110],"PersistentServerId","Unique identifier for your server","Do not edit this value. The official guide notes this may change in future builds.",[112,113,114],"InviteCode","Code players use to find and join your server","Must be at least 6 characters. Allowed characters: 0-9, a-z, A-Z. Case-sensitive.",[116,117,118],"IsPasswordProtected","Controls whether the server requires a password","Set to true when a password is present. Set to false when the password field is empty. Incorrect combinations may cause problems.",[120,121,122],"Password","Server password","Used when password protection is enabled.",[124,125,126],"ServerName","Display name for your server","Useful if you want to distinguish your server from others with similar invite codes.",[128,129,130],"WorldIslandId","Chooses which world the server loads on startup","Must match the corresponding world value in a WorldDescription.json file.",[132,133,134],"MaxPlayerCount","Maximum simultaneous players","Controls how many players can join at once.",[136,137,138],"UserSelectedRegion","Connection service region","Supported values: SEA, CIS, EU. EU currently covers both EU and NA. Leave blank for automatic latency-based selection.",[140,141,142],"P2pProxyAddress","IP address used for listening sockets","Networking-related setting.",[144,145,146],"UseDirectConnection","Enables direct client connections instead of relay-only behavior","true = create direct sockets. false = use ICE\u002FP2P behavior.",[148,149,150],"DirectConnectionServerAddress","Address for direct connection","Reserved for future use and currently not used.",[152,153,154],"DirectConnectionServerPort","Port used for direct connection","Must be open for both TCP and UDP when UseDirectConnection is true.",[156,157,158],"DirectConnectionProxyAddress","Lets you select a specific network interface on the host","Default is 0.0.0.0.",{"id":160,"type":78,"sortOrder":161,"payload":162},425,8,{"eyebrow":47,"title":163,"markdown":164,"columns":165,"rows":166,"highlightedColumn":96},"WorldDescription.json fields","You can create as many worlds as you need. The first world is generated automatically on first server start.\n\nThe `WorldIslandId` selected in `ServerDescription.json` must match the correct world entry here.\n",[103,104,105],[167,171,175,179,183],[168,169,170],"IslandId","Unique world ID","Must match the folder name.",[172,173,174],"WorldName","Name of the world","Useful if you keep multiple worlds.",[176,177,178],"CreationTime","Internal creation timestamp","Usually not something you need to edit manually.",[180,181,182],"WorldPresetType","Base world difficulty preset","Easy, Medium, or Hard. Custom values force the server to show Custom on next launch.",[184,185,186],"WorldSettings","Detailed world parameter groups","Contains grouped bool, float, and tag values. Usually empty unless you use a custom preset.",{"id":188,"type":78,"sortOrder":189,"payload":190},426,9,{"eyebrow":47,"title":191,"markdown":192,"columns":193,"rows":197,"highlightedColumn":96},"Custom preset parameters","If you want to move beyond the standard presets, these are the main custom parameters worth knowing about.\n\nIt is usually easier to set these in-game first, then copy the resulting values into your config manually. Official values and ranges may change in future Windrose builds.\n",[194,195,196],"Parameter","Default","What it changes",[198,202,206,210,213,216,219,222,225,229],[199,200,201],"CoopQuests","true","If one player completes a co-op quest, it completes for all active players.",[203,204,205],"EasyExplore","false","Disables map markers. Despite the name, this actually makes exploration harder and is the in-game “Immersive exploration” option.",[207,208,209],"MobHealthMultiplier","1.0","Enemy health. Range: 0.2 to 5.0",[211,208,212],"MobDamageMultiplier","Enemy damage. Range: 0.2 to 5.0",[214,208,215],"ShipHealthMultiplier","Enemy ship health. Range: 0.4 to 5.0",[217,208,218],"ShipDamageMultiplier","Enemy ship damage. Range: 0.2 to 2.5",[220,208,221],"BoardingDifficultyMultiplier","How many enemy sailors you need to overcome when boarding. Range: 0.2 to 5.0",[223,208,224],"Coop_StatsCorrectionModifier","Scales enemy health and posture by player count. Range: 0.0 to 2.0",[226,227,228],"Coop_ShipStatsCorrectionModifier","0.0","Scales enemy ship health by player count. Range: 0.0 to 2.0",[230,231,232],"CombatDifficulty","Normal","Boss aggression. Options: Easy, Normal, Hard",{"id":234,"type":235,"sortOrder":236,"payload":237},427,"faq",10,{"items":238},[239,242],{"question":240,"answer":241},"Why does Windrose not require Port-Forwarding?","Windrose uses a relay system built on Epic Online Services (EOS). This lets players connect to your server without needing your IP address or setting up port forwarding.\n\nWhen a player enters an invite code, EOS sits in the middle and tries to create a direct connection using NAT punch-through. If that works, the player connects straight to your server. If it fails, which can happen with strict routers, CGNAT, or disabled UPnP, the connection is routed through EOS instead.\n\nIn that case, EOS handles the traffic using its global relay network, often hosted on AWS. This is why your server still works even when UPnP or port forwarding is not configured. The relay removes the need for manual setup, but it can introduce extra latency, especially if the relay server is not close to the player or host.\n\nIf you want the best performance, you can enable direct IP connections by turning on UseDirectConnection in the server config and opening the required ports. That allows players to connect directly when possible, while the relay system still provides a fallback so everyone can join without extra setup.",{"question":243,"answer":244},"Need more information?","[Official Windrose Website](https:\u002F\u002Fplaywindrose.com)\n[Official Windrose Discord](https:\u002F\u002Fdiscord.gg\u002Fwindrose)\n[Official Windrose Dedicated Server Setup Guide](https:\u002F\u002Fplaywindrose.com\u002Fdedicated-server-guide)\n\n[Windrose on Steam](https:\u002F\u002Fstore.steampowered.com\u002Fapp\u002F3041230\u002FWindrose)\n[Windrose on Epic Games](https:\u002F\u002Fstore.epicgames.com\u002Fen-US\u002Fp\u002Fwindrose-831c86)",{"id":246,"type":247,"sortOrder":248,"payload":249},428,"closing_panel",11,{"title":250,"body":47,"authorName":251,"authorRole":252,"contactLabel":253,"contactHref":254,"issueLabel":255,"issueHref":256,"primaryCtaLabel":257,"primaryCtaHref":258,"secondaryCtaLabel":259,"secondaryCtaHref":260,"showRating":52},"Thanks for reading","Eps","Editorial Team","Contact us","\u002Fcontact","Report an issue","\u002Feditorial-policy","Browse more guides","\u002Fguides","See all articles","\u002Farticles"]