> For the complete documentation index, see [llms.txt](https://bothosting-net.gitbook.io/bot-hosting.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bothosting-net.gitbook.io/bot-hosting.net/guides/set-up-a-server.md).

# Set Up a Server

### Before you start

* Create an account first — [Create an Account](/bot-hosting.net/guides/create-an-account.md)
* Create a server first — [Create a Server](/bot-hosting.net/guides/create-a-server.md)

### Set up your deployment

{% hint style="warning" %}
The new panel does not include shell access.

The console also does not support install commands.

Do not run `npm install discord.js` or `pip install discord.py` there.
{% endhint %}

<figure><img src="/files/NBwCPk8ncrRw7hWanLDd" alt=""><figcaption></figcaption></figure>

After you create the deployment, open its panel.

Use the tabs at the top to manage files, startup settings, and access details.

If you created the deployment from GitHub, a ZIP file, a backup, or a template, some files may already be there.

***

### Upload your files

{% hint style="info" %}
You only need one upload method.

If you already uploaded a ZIP archive, selected a backup, or cloned a GitHub repository, and you already have all required files, you can skip this section.
{% endhint %}

Choose one method:

* **Files** — Upload files directly in the **Files** tab.
* **SFTP** — Manage files from your computer with an SFTP client. Use the credentials in the **SFTP** tab. You can also follow [Connect to your server's files with SFTP](/bot-hosting.net/legacy/sftp-connection.md).

<figure><img src="/files/apNtx5XCtvxGNyn2XPXH" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Always keep a copy of the original files on your device, in cloud storage, or in a Git repository.

If your account or deployment is deleted, those files are lost too.
{% endhint %}

If you upload from **Files**, follow these steps:

1. Open **Files**.
2. Upload your archive or project files.
3. Extract the archive if you uploaded one.

<figure><img src="/files/UGSuitH4Ab7Vt1ubeLZh" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}

* If you use Node.js, do not upload `node_modules`.

  Upload `package.json` instead.
* If you use Python, do not upload `.cache` or `.local`.

  Upload `requirements.txt` instead.
* Compressed files such as `.zip` or `.gz` are usually the easiest option.
  {% endhint %}

<figure><img src="/files/cN1MlLNsdEw1BcepAVTk" alt=""><figcaption></figcaption></figure>

Archives often extract into a new folder.

Move the project files out of that folder so the main files stay in the root directory.

<figure><img src="/files/xH5tHLkVJ19mqMIvgZtv" alt=""><figcaption></figcaption></figure>

You can drag files out one by one.

You can also select multiple files and move them together.

<figure><img src="/files/D04a88VlnCZM5hpSBCCw" alt=""><figcaption></figcaption></figure>

Delete the archive and extra folder after the move to free up space.

***

### Review startup settings

Open **Startup** before you start the deployment.

Check `Entry File (STARTUP_FILE)`.

It must point to the main file that starts your app.

{% hint style="info" %}
If the startup file is inside a folder, enter its full relative path.
{% endhint %}

<figure><img src="/files/qX8GkjVdUxz2Catw5gPd" alt=""><figcaption></figcaption></figure>

***

### Install dependencies

For Node.js and Python, the deployment reads dependency files during startup.

#### Node.js

Use `package.json` or the **Packages** tab.

**Using package.json**:

The deployment installs packages from the names and versions listed there.

You can upload the file from your local project, or create one with the [npm package.json guide](https://docs.npmjs.com/creating-a-package-json-file).

```diff
- npm install package (not supported here)
+ package
```

**Using the Packages tab**:

<figure><img src="/files/IyMAKyk8z2tvO4wVKJol" alt=""><figcaption></figcaption></figure>

Enter the package name in the field, select it from the list, then click **Add**.

Repeat until you add every package you need.

**Common Node.js errors**

* `Error: Cannot find module 'package'`

  The package is missing from `package.json`, or installation failed earlier.
* `npm error 404 Not Found - GET https://registry.npmjs.org/`

  The package name is invalid, misspelled, or unavailable.

#### Python

Use `requirements.txt`.

The deployment installs packages from that file when it starts.

Format the file with the [requirements.txt reference](https://pip.pypa.io/en/stable/reference/requirements-file-format/).

```diff
- pip install package (not supported here)
+ package
```

**Common Python errors**

* `ModuleNotFoundError: No module named 'discord'`

  The package is missing from `requirements.txt`, or installation failed earlier.
* `ERROR: Could not find a version that satisfies the requirement package (from versions: none)`

  The package name is invalid, misspelled, or unavailable.

### Start the deployment

Once your files and startup settings are ready, start the deployment and check the console output.

If startup fails, check the file path, dependency files, and package names first.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://bothosting-net.gitbook.io/bot-hosting.net/guides/set-up-a-server.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
