> ## Documentation Index
> Fetch the complete documentation index at: https://docs.breezehost.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Uploading Files

> Upload your bot files to Breeze Hosting using the file manager, SFTP, or zip archives.

# Uploading Files

There are several ways to get your bot's code onto your Breeze Hosting server. Choose whichever method works best for your workflow.

## Method 1: Pterodactyl File Manager

The built-in file manager is the easiest way to upload files directly from your browser.

<Steps>
  <Step title="Open the File Manager">
    Go to your server on [panel.breezehost.xyz](https://panel.breezehost.xyz) and click the **Files** tab.
  </Step>

  <Step title="Upload Files">
    Click the **Upload** button in the top-right corner. You can select individual files or multiple files at once.
  </Step>

  <Step title="Verify Location">
    Make sure files land at the root level. If you need to upload into a specific folder, navigate into that folder first before clicking Upload.
  </Step>
</Steps>

**Best for**: Quick updates, small files, single-file changes.

**Limitations**: The file manager has an upload size limit per file. For larger uploads, use SFTP or the zip method below.

***

## Method 2: Upload & Unarchive a Zip

This is the fastest way to upload an entire project at once. Upload a `.zip` archive and extract it directly on the server.

### Uploading and Extracting

<Steps>
  <Step title="Create a Zip Archive">
    On your local machine, zip your bot's files. **Important**: zip the contents of your project folder, not the folder itself. See [File Structure](/bot-hosting/file-structure) for details on why this matters.

    **Windows**: Open your project folder, select all files, right-click > **Compress to ZIP file**

    **macOS**: Open your project folder, select all files, right-click > **Compress**

    **Linux / terminal**:

    ```bash theme={null}
    cd my-bot
    zip -r ../my-bot.zip .
    ```
  </Step>

  <Step title="Upload the Zip">
    In the Pterodactyl file manager, click **Upload** and select your `.zip` file.
  </Step>

  <Step title="Unarchive the Zip">
    Once uploaded, right-click (or click the three dots) on the `.zip` file and select **Unarchive**. The panel will extract all files into the current directory.
  </Step>

  <Step title="Delete the Zip">
    After extraction, delete the `.zip` file from the server — you don't need it taking up space.
  </Step>

  <Step title="Verify File Structure">
    Check that your main entry file (`bot.py`, `index.js`, etc.) is at the root level and not nested inside a subfolder. If it's nested, see [File Structure](/bot-hosting/file-structure) for how to fix it.
  </Step>
</Steps>

<Warning>
  **Common mistake**: If you zip the folder itself (instead of the contents), you'll end up with everything inside a subfolder after extraction. Your bot won't start because the entry file isn't at root. Always zip from **inside** the project folder.
</Warning>

### Supported Archive Formats

The Pterodactyl panel supports unarchiving:

* `.zip`
* `.tar.gz`
* `.tar`

### Replacing Existing Files

When unarchiving, files with the same name will be **overwritten**. This makes zip uploads a convenient way to push updates — just zip your latest code and unarchive it over the existing files.

<Tip>
  If you want a clean slate before re-uploading, select all files in the file manager (except your `.env` or config file with your bot token) and delete them before unarchiving the new zip.
</Tip>

***

## Method 3: SFTP

SFTP (Secure File Transfer Protocol) gives you a direct connection to your server's filesystem from your local machine. It's the most flexible option and works well for larger projects.

### Connecting via SFTP

<Steps>
  <Step title="Get Your SFTP Credentials">
    On your server's page in the Pterodactyl panel, go to **Settings**. You'll find your SFTP connection details:

    * **Host**: The SFTP server address
    * **Port**: Usually `2022`
    * **Username**: Your panel username + server ID
    * **Password**: Your panel account password
  </Step>

  <Step title="Connect with an SFTP Client">
    Use an SFTP client to connect. Popular options:

    * **FileZilla** (Windows / macOS / Linux) — free
    * **WinSCP** (Windows) — free
    * **Cyberduck** (macOS / Windows) — free

    Enter the host, port, username, and password from the previous step.
  </Step>

  <Step title="Upload Your Files">
    Navigate to the root directory on the remote side and drag your bot files over. Your SFTP client will handle the transfer.
  </Step>
</Steps>

**Best for**: Large projects, frequent updates, managing many files at once, or when the web upload has size limits.

***

## Which Method Should I Use?

| Method           | Best For                                       | Speed  | Ease     |
| ---------------- | ---------------------------------------------- | ------ | -------- |
| **File Manager** | Quick single-file edits and small uploads      | Fast   | Easiest  |
| **Zip Upload**   | Uploading an entire project at once            | Fast   | Easy     |
| **SFTP**         | Large projects, frequent updates, full control | Medium | Moderate |

## Tips

* **Don't upload `node_modules/`** (JavaScript) — the server installs dependencies from `package.json` automatically on startup. Uploading `node_modules` wastes space and can cause compatibility issues.
* **Don't upload Python virtual environments** (`venv/`, `.venv/`) — the server installs packages from `requirements.txt` on startup.
* **Keep your `.env` safe** — if you're doing a full re-upload, make sure you don't accidentally overwrite or delete your `.env` file containing your bot token. Consider backing it up first.
* **Use `.gitignore` as a guide** — anything in your `.gitignore` probably shouldn't be uploaded to the server either.
