> For the complete documentation index, see [llms.txt](https://docs.iynxdev.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iynxdev.com/getting-started/basic-setup-guide.md).

# Basic Setup Guide

## <mark style="color:blue;">Hosting Options</mark>

{% hint style="info" %}
**There is no such thing as absolutely free hosting!**

Either your information is the payment, or your feature set is extremely limited! Be careful for scams, obscure hosting plans, or sneaky payment systems and plans!
{% endhint %}

#### <mark style="color:orange;">Self Hosting</mark>

If you're looking to host a tiny instance, or something that's not critical to keep online all the time, you're more than welcome to run it on your local machine!

#### <mark style="color:orange;">VPS/KVM/VDS Systems</mark>

There's many services that host systems that you could use for this! Hostinger, DigitalOcean, Contabo, etc.! These are much more in depth due to you needing knowledge of how to manage the system.

#### <mark style="color:orange;">Pterodactyl Panel</mark>

The most "plug and play" out of them all! This is the most popular option since this panel lets you do anything from Console Management, File Management, and more! Something like SparkedHost comes to mind!<br>

## <mark style="color:blue;">Configuration</mark>

{% hint style="info" %}
This configuration happens in the <mark style="color:green;">**`common.json`**</mark> file stored at the root of the bot directory.
{% endhint %}

{% hint style="warning" %}
**You may need to enable&#x20;*****Developer Mode*** **if you haven't already for this process!**

To **enable** it, go to: *Discord Settings* > *Advanced* > *Developer Mode*
{% endhint %}

#### <mark style="color:orange;">**1. Get your License!**</mark>

All customers need to have a license! This is to allow your bot to communicate with our API and support neat features like global bans, Lavalink services, and some other things! Plus, it helps us protect our product.

If you need a license, open a ticket in our [Support Server](https://discord.iynxdev.com/)!<br>

#### <mark style="color:orange;">**2. FOR PTERODACTYL ONLY: Change your .json file format!**</mark>

Pterodactyl does not support colored .json5 files within your editor. Due to this make sure to set json5 to false if your host is running pterodactyl.<br>

#### <mark style="color:orange;">**3. Set your Bot Token!**</mark>

For this, you'll have to look in the Discord Developer Portal!

<mark style="color:purple;">For new bots</mark>, first create a new application, then navigate to Bot and click Reset Token to generate your bot token. While you are at the dev portal, don't forget to invite the bot to your server if you haven't already, preferably with Administrator permissions. Finally, enable the required privileged intents under *Bot* > *Privileged Gateway Intents* (Presence, Server Members, and Message Content).

<mark style="color:purple;">For those with an older version of Athena</mark>, you can just copy over your current token into the new configuration file.

If you need help finding how to make one, [I'll link that video here](https://www.youtube.com/watch?v=dHuWTYRrhDc)!<br>

#### <mark style="color:orange;">**4. Set your MongoDB URI!**</mark>

This is what lets your bot save data! [The process for that is shown in this video](https://www.youtube.com/watch?v=XARrj4hJSD0)!<br>

#### <mark style="color:orange;">**5. Set your Discord Bot ID!**</mark>

Without this, your bot doesn't know which account to interface with.

You need to have Discord's Developer Mode enabled if you haven't yet! It's pretty simple to get it, just right click your bot user in your server and 'Copy ID'.<br>

#### <mark style="color:orange;">**6. Set your Discord Server ID!**</mark>

This is the Server your bot is in! (Right-click your server icon to get it)<br>

#### <mark style="color:orange;">7. Set your server name!</mark>

This is for your bot's reference in regards to your server name in it's messages.<br>

#### <mark style="color:orange;">8. Set your server color!</mark>

This just makes your embeds correlate to the color you wanted to see the most, so choose whatever you want here.<br>

#### <mark style="color:orange;">9. Set your language!</mark>

This is the language the bot responds in on Discord.

* English: <mark style="color:green;">**`en`**</mark>
* German: <mark style="color:green;">**`de`**</mark>
* Spanish: <mark style="color:green;">**`es`**</mark>
* French: <mark style="color:green;">**`fr`**</mark>
* Portugese: <mark style="color:green;">**`pt`**</mark>
* Dutch: <mark style="color:green;">**`nl`**</mark>
* Turkish: <mark style="color:green;">**`tr`**</mark>
* Russian: <mark style="color:green;">**`ru`**</mark>
* Polish: <mark style="color:green;">**`pl`**</mark>

#### <mark style="color:orange;">10. Set your timezone!</mark>

This is the timezone the bot will use for time-based operations and logging. Use [standard timezone identifiers](https://docs.oracle.com/cd/E72987_01/wcs/tag-ref/MISC/TimeZones.html) (e.g., "Europe/Berlin", "America/New\_York").<br>

***

After everything is done, it should look something similar to below!

<pre class="language-json"><code class="lang-json"><strong>{
</strong>    "general": {
        "license": "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX",
        "json5": false,
        "lang": "en",
        "timezone": "Europe/Berlin"
    },
    "bot": {
        "mongodb_uri": "URI KEY HERE",
        "discord_bot_token": "BOT TOKEN HERE",
        "discord_bot_id": "BOT ID HERE",
        "discord_guild_id": "SERVER ID HERE",
        "server_name": "SERVER NAME HERE",
        "server_color": "YOUR FAVORITE COLOR IN HEX HERE"
    },
    "dashboard": {
        "enabled": false,
        "port": 3222,
        "discord_client_oauth_secret": "",
        "dashboard_base_url": "",
        "web_api_base_url": "",
        "whitelisted_user_ids": [],
        "disable_dashboard_configuration": true,
        "sync_dashboard_configs_to_file": false,
        "low_ram_mode": false
    },
    "console": {
        "logs_include_date": true,
        "logs_to_file": true,
        "logs_include_dashboard_output": true,
        "maximum_log_file_count": 20
    },
    "util": {
        "register_commands": true,
        "prevent_duplicated_message": false,
        "backup_configs_on_startup": false,
        "maximum_config_backup_count": 10,
        "auto_restart": true,
        "auto_restart_every": "7d",
        "debug": false,
        "developer_mode": false
    },
    "updater": {
        "auto_update": true,
        "create_system_backup_before_update": true,
        "maximum_backup_count": 10,
        "plugin_bypass": [],
        "delay_restart_in_seconds": 60,
        "dev_builds": false
    }
}
</code></pre>

{% hint style="success" %}
**Congrats! You're all set on this part!**

But we're not done yet!
{% endhint %}

***

## <mark style="color:blue;">Installing Dependencies</mark>

### <mark style="color:yellow;">Pterodactyl Setup</mark>

{% hint style="info" %}
If you're hosting your **own** Pterodactyl panel, you can use [**the official AthenaBot egg**](https://github.com/gsrvtech/gameserver-templates/tree/main/bots/athenabot). Any standard Node.js egg that supports `Node.js v22+` is also compatible. In addition, the AthenaBot download includes a *pterodactyl-eggs* folder containing two ready to use egg files.

\
**ATTENTION:** Based on user reports, **gsrvtech**'s egg may not be compatible with all pterodactyl setups. If you experience any issues, we recommend using the standard Node.js eggs included with the AthenaBot download instead.
{% endhint %}

{% hint style="warning" %}
Make sure to select [Node v22 (LTS)](https://nodejs.org/en/download/package-manager) or above in your panel!
{% endhint %}

### <mark style="color:yellow;">Self-Host/Non-Pterodactyl Setup</mark>

{% hint style="info" %}
AthenaBot is developed in **JavaScript** and requires [Node v22 / v24 LTS](https://nodejs.org/en/download/package-manager) to run. You can download it from the official `Node.js` website.
{% endhint %}

#### <mark style="color:orange;">Linux (Ubuntu/Debian) Manual Installation</mark>

* [ ] <mark style="color:purple;">**Open a terminal**</mark> in your Athena bot folder.
* [ ] <mark style="color:purple;">**Run**</mark> <mark style="color:green;">**`sudo apt-get update`**</mark>
* [ ] <mark style="color:purple;">**Run**</mark> <mark style="color:green;">**`sudo apt-get install -y build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev`**</mark> to install Canvas/native build requirements.
* [ ] <mark style="color:purple;">**Run**</mark> <mark style="color:green;">**`npm install`**</mark> to install Node packages.
* [ ] <mark style="color:purple;">**Start the bot**</mark> using <mark style="color:green;">**`node index.js`**</mark>

#### <mark style="color:orange;">Windows Manual Installation</mark>

* [ ] <mark style="color:purple;">**Open CMD or PowerShell**</mark> in your Athena bot folder.
* [ ] <mark style="color:purple;">**Run**</mark> <mark style="color:green;">**`npm install`**</mark> to install Node packages.
* [ ] <mark style="color:purple;">**If Canvas fails to install**</mark>, install <mark style="color:green;">**Visual Studio Build Tools (Desktop development with C++)**</mark> and <mark style="color:green;">**Python 3**</mark>, then run <mark style="color:green;">**`npm install`**</mark> again.
* [ ] <mark style="color:purple;">**Start the bot**</mark> using <mark style="color:green;">**`node index.js`**</mark>

{% hint style="info" %}
**For Bot Persistence even after closing the CMD Prompt window:**

<mark style="color:purple;">**Linux:**</mark>

Install PM2 once with <mark style="color:green;">**`npm install pm2 -g`**</mark>, then use <mark style="color:green;">**`pm2 start index.js --name Athena`**</mark> to keep your bot alive.

And use <mark style="color:green;">**`pm2 stop Athena`**</mark> to turn it back off!\
\ <mark style="color:purple;">**Windows:**</mark>

PM2 is primarily documented here for Linux hosts. For Windows, use the startup batch script *windows start.bat* provided in the download (or Windows Task Scheduler) for persistence.

This script allows you to keep AthenaBot online even after restarts. The batch script was made by <mark style="color:red;">**@.dodgeman**</mark> (334154279029833728)
{% endhint %}

## <mark style="color:blue;">Finalizing Setup</mark>

{% hint style="info" %}
If you edit Athena files **locally** in `Visual Studio Code`, install the <mark style="color:green;">**JSON5 Syntax**</mark> extension so your <mark style="color:green;">**`.json5`**</mark> config files are color highlighted and easier to read.

<img src="/files/HXNV2ZAgTgZTpcKTcYd6" alt="" data-size="original">
{% endhint %}

* [ ] <mark style="color:purple;">**Start the Bot!**</mark> This will create all necessary configuration files for you to edit!
* [ ] <mark style="color:purple;">**Configure everything!**</mark> All configuration files can be found in your ./*configuration* folder!
* [ ] <mark style="color:purple;">**Restart the Bot!**</mark>
* [ ] <mark style="color:purple;">**Enjoy!**</mark>

{% hint style="success" %}
If you'd also like to set up the **dashboard**, follow the [**Dashboard Setup Guide**](/getting-started/dashboard-setup.md).
{% endhint %}
