.container.window
/ Hero Section
.text-center.mb-5
h1.mb-3.text-primary Server Setup Guide
p.lead.mb-4 Install ESM on your Arma 3 server for Discord integration and management tools
.d-flex.justify-content-center.gap-4.mb-4
.d-flex.align-items-center
.badge.bg-info.rounded-circle.me-2 i
small.text-muted Setup time: 10-20 minutes
.d-flex.align-items-center
.badge.bg-success.rounded-circle.me-2 ✓
small.text-muted Works on Windows & Linux
/ Overview Cards
.row.g-3.justify-content-center.mb-5
.col-lg-2.col-md-3.col-6
.text-center.py-3
i.bi.bi-discord.text-primary.fs-2.mb-2
h6.text-primary Discord
small.text-muted 2 min
.col-lg-2.col-md-3.col-6
.text-center.py-3
i.bi.bi-speedometer2.text-success.fs-2.mb-2
h6.text-success Dashboard
small.text-muted 5 min
.col-lg-2.col-md-3.col-6
.text-center.py-3
i.bi.bi-server.text-warning.fs-2.mb-2
h6.text-warning Installation
small.text-muted 8 min
.col-lg-2.col-md-3.col-6
.text-center.py-3
i.bi.bi-check-circle.text-info.fs-2.mb-2
h6.text-info Testing
small.text-muted 2 min
.row.g-5
/ Main Content
.col-lg-8.order-2.order-lg-1
/ Upgrade Warning Card
.card.border-warning.bg-warning.bg-opacity-10.mb-5
.card-body
.d-flex.align-items-start
.text-warning.fs-1.me-3 ⚠️
div
h4.mb-2.text-warning Upgrading from v1?
p.mb-3 ESM v2 uses a completely different architecture. You'll need to follow specific upgrade steps.
.collapse#upgrade_steps
.card.bg-dark.border-secondary.mb-3
.card-body
h6.text-warning.mb-3 Migration Steps
ol.mb-0.text-muted
li Remove your existing <code>@ESM</code> directory completely
li Update dashboard settings to v2 and download new <code>esm.key</code>
li Execute <code>02.sql</code> on your MySQL server
li Follow the fresh installation steps below
button.btn.btn-outline-warning.btn-sm[
data-controller="collapse-toggle"
data-action="click->collapse-toggle#toggle"
data-collapse-toggle-target-value="#upgrade_steps"
data-collapse-toggle-show-value="#{params.key?(:migrating)}"
data-collapse-toggle-default-text-value="Show Migration Guide"
data-collapse-toggle-active-text-value="Hide Migration Guide"
]
| Show Migration Guide
/ Step 1: Discord Setup
.card.mb-5.border-start.border-primary.border-4
.card-header.bg-primary.bg-opacity-10
h3.mb-0.text-primary
i.bi.bi-discord.me-2
| Discord Setup
.card-body
p.mb-4 Get ESM connected to your Discord server and register your accounts.
.row.g-4
.col-md-6
.card.bg-dark.border-secondary.h-100
.card-body.text-center.py-4
i.bi.bi-discord.text-primary.fs-1.mb-3
h5.text-primary.mb-3 Invite ESM Bot
p.small.text-muted.mb-3 Add the bot to your Discord server
= link_to invite_path, target: "_blank", class: "btn btn-primary w-100"
i.bi.bi-plus-circle.me-2
| Invite Bot
.col-md-6
.card.bg-dark.border-secondary.h-100
.card-body.text-center.py-4
i.bi.bi-person-check.text-success.fs-1.mb-3
h5.text-success.mb-3 Link Accounts
p.small.text-muted.mb-3 Connect Steam and Discord
= link_to register_path, target: "_blank", class: "btn btn-success w-100"
i.bi.bi-link.me-2
| Register
.alert.alert-info.border-info.bg-info.bg-opacity-10.mt-4.mb-0
h6.text-info.mb-2 What happens next?
ul.small.mb-0
li ESM will send a welcome message with your <strong>Community ID</strong>
li Disable Player Mode: #{command_usage(:mode, arguments: {community_id: "YOUR_ID", player_mode_enabled: false})}
li You can always get the registration link with #{command_usage(:register, show_arguments: false)}
/ Step 2: Dashboard Configuration
.card.mb-5.border-start.border-success.border-4
.card-header.bg-success.bg-opacity-10
h3.mb-0.text-success
i.bi.bi-speedometer2.me-2
| Dashboard Configuration
.card-body
p.mb-4 Set up your server details and download the required authentication files.
.row.g-4
.col-lg-8
h6.text-success.mb-3
i.bi.bi-list-ol.me-2
| Setup Steps
.list-group.list-group-flush.bg-transparent
.list-group-item.bg-transparent.border-success.border-opacity-25.py-3
.d-flex.align-items-center
.badge.bg-success.rounded-circle.me-3 1
div
h6.text-light.mb-1 Open Web Dashboard
p.small.text-muted.mb-0 Log in and select your Discord community
.list-group-item.bg-transparent.border-success.border-opacity-25.py-3
.d-flex.align-items-center
.badge.bg-success.rounded-circle.me-3 2
div
h6.text-light.mb-1 Add Your Server
p.small.text-muted.mb-0 Fill in server IP, port, and display name
.list-group-item.bg-transparent.border-success.border-opacity-25.py-3
.d-flex.align-items-center
.badge.bg-success.rounded-circle.me-3 3
div
h6.text-light.mb-1 Download Authentication File
p.small.text-muted.mb-0 Save the <code>esm.key</code> file for installation
.col-lg-4.d-flex.align-items-center.justify-content-center
= link_to communities_path, target: "_blank", class: "btn btn-success btn-lg"
i.bi.bi-speedometer2.me-2
| Open Dashboard
/ Step 3: Server Installation
.card.mb-5.border-start.border-warning.border-4
.card-header.bg-warning.bg-opacity-10
h3.mb-0.text-warning
i.bi.bi-server.me-2
| Server Installation
.card-body
p.mb-4 Install the @esm mod and configure your server to connect to ESM.
/ Download Section
.card.bg-primary.bg-opacity-10.border-primary.mb-4
.card-body
.row.g-3
.col-12.col-lg-9
h6.text-primary.mb-1
i.bi.bi-download.me-2
| Download @esm v2
p.small.text-muted.mb-0 Get the latest cross-platform version
.col-12.col-lg-3
= link_to latest_download_path, target: "_blank", class: "btn btn-primary btn-lg w-100"
i.bi.bi-download.me-2
| Download
/ Installation Steps
.row.g-3
.col-md-6
.card.bg-dark.border-secondary.h-100
.card-body
h6.text-light.mb-3
i.bi.bi-folder.text-info.me-2
| Extract & Place Files
ul.small.text-muted.mb-0
li Extract <code>@esm</code> to your server directory
li Place alongside <code>@Exile</code> or <code>@ExileServer</code>
li Place your <code>esm.key</code> file inside <code>@esm</code> directory
li.text-warning
strong Linux servers:
|< Use lowercase directory names
.col-md-6
.card.bg-dark.border-secondary.h-100
.card-body
h6.text-light.mb-3
i.bi.bi-gear.text-warning.me-2
| Configure Server
ul.small.text-muted.mb-0
li Add <code>@esm</code> to your startup parameters
li Execute <code>01.sql</code> on your MySQL database
li Execute <code>02.sql</code> on your MySQL database
li Start your server
.card.bg-dark.border-secondary.mt-4
.card-body
h6.text-light.mb-2
i.bi.bi-terminal.me-2
| Example Startup Parameter
pre.bg-body.p-2.rounded.mb-0
| -servermod="@ExileServer;@infiSTAR;@esm"
/ Step 4: Test Everything
.card.mb-5.border-start.border-info.border-4
.card-header.bg-info.bg-opacity-10
h3.mb-0.text-info
i.bi.bi-check-circle.me-2
| Test Everything
.card-body
p.mb-4 Verify your installation is working correctly.
.card.bg-dark.border-info.mb-4
.card-body
h6.text-info.mb-3
i.bi.bi-list-check.me-2
| Server Status Check
p.small.text-muted.mb-3
| Send #{command_usage(:servers, show_arguments: false)} to ESM in Discord
.alert.alert-success.border-success.bg-success.bg-opacity-10.mb-0
.d-flex.flex-column.flex-md-row.align-items-md-center
.d-flex.align-items-center.mb-1.mb-md-0
i.bi.bi-check-circle.text-success.me-2
strong.text-success Expected Result:
span.text-muted.ms-md-2 Your server should show as "online"
.card.bg-dark.border-info.mb-4
.card-body
h6.text-info.mb-3
i.bi.bi-code.me-2
| Command Execution Test
p.small.text-muted.mb-3
| Try #{command_usage(:sqf, arguments: {execute: "systemTime"})} in Discord
.alert.alert-success.border-success.bg-success.bg-opacity-10.mb-0
.d-flex.flex-column.flex-md-row.align-items-md-center
.d-flex.align-items-center.mb-1.mb-md-0
i.bi.bi-check-circle.text-success.me-2
strong.text-success Expected Result:
span.text-muted.ms-md-2 Should return the current server time
.alert.alert-warning.border-warning.bg-warning.bg-opacity-10.mt-4.mb-0
h6.text-warning.mb-2
i.bi.bi-exclamation-triangle.me-2
| Troubleshooting
p.small.mb-0
|> If either test fails, check <code>@esm/log/esm.log</code> for errors.
|> Join our
= link_to "Discord support", join_path, class: "text-warning"
| for help.
/ Success Section
.card.border-success.bg-success.bg-opacity-10
.card-body.text-center.py-5
i.bi.bi-check-circle.text-success.display-3.mb-4
h2.text-success.mb-3 You're All Set!
p.lead.mb-4
| ESM is now running on your server. Your players can use Discord commands, get notifications, and manage territories remotely.
.row.g-3.justify-content-center
.col-auto
= link_to commands_docs_path, class: "btn btn-success"
i.bi.bi-book.me-2
| Browse Commands
.col-auto
= link_to communities_path, class: "btn btn-outline-success", target: "_blank"
i.bi.bi-speedometer2.me-2
| Web Dashboard
/ Sidebar
.col-lg-4.order-1.order-lg-2
/ What's New Card
.card.bg-info.bg-opacity-10.border-info.mb-4
.card-header.border-info
h6.mb-0.text-info
i.bi.bi-stars.me-2
| What's New in v2?
.card-body
ul.small.mb-0
li Cross-platform Windows & Linux support
li Rust-based architecture for better performance
li Enhanced log searching with regex patterns
li Improved XM8 notification system
/ Requirements Card
.card.bg-secondary.bg-opacity-10.border-secondary.mb-4
.card-header.border-secondary
h6.mb-0.text-light
i.bi.bi-list-check.me-2
| Requirements
.card-body
ul.small.mb-0
li Arma 3 Dedicated Server
li MySQL Database (ExtDB2/3)
li Discord server with admin permissions
li Ability to upload server mods and extensions
/ File Reference Card
.card.bg-info.bg-opacity-10.border-info.mb-4
.card-header.border-info
h6.mb-0.text-info
i.bi.bi-files.me-2
| Important Files
.card-body
h6.text-info.mb-2 Download from Dashboard:
ul.small.mb-3
li <code>esm.key</code> - Server authentication
li <code>config.yml</code> - Advanced settings (optional)
h6.text-info.mb-2 Run on MySQL:
ul.small.mb-0
li <code>01.sql</code> - Core database structure
li <code>02.sql</code> - V2 compatibility updates
/ Need Help Card
.card.bg-warning.bg-opacity-10.border-warning
.card-header.border-warning
h6.mb-0.text-warning
i.bi.bi-question-circle.me-2
| Need Help?
.card-body
p.small.mb-3
|> Having issues? Check <code>@esm/log/esm.log</code> first, then join our
= link_to "Discord support server", join_path, class: "text-warning"
| for assistance.
.d-grid
= link_to join_path, class: "btn btn-outline-warning btn-sm"
i.bi.bi-discord.me-2
| Get Support