Skip to main content

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.

File Structure

One of the most common reasons a bot fails to start is an incorrect file structure. The Pterodactyl panel expects your main entry file to be at the root level of the file manager — not nested inside subfolders.

The Golden Rule

Your main file (bot.py, index.js, main.py, etc.) must be at the root of the file manager. If it’s inside a subfolder, the server won’t find it and your bot won’t start.

Correct vs. Incorrect Structure

Correct

Your entry file and dependency files sit directly at the root:
/
├── bot.py              <-- entry file at root
├── requirements.txt
├── .env
├── cogs/
│   ├── moderation.py
│   └── fun.py
└── utils/
    └── helpers.py
/
├── index.js            <-- entry file at root
├── package.json
├── .env
├── commands/
│   ├── ping.js
│   └── help.js
└── events/
    └── ready.js

Incorrect

The entry file is buried inside a subfolder — this will not work:
/
└── my-bot/              <-- extra folder wrapping everything
    ├── bot.py
    ├── requirements.txt
    └── cogs/
        └── moderation.py
/
└── src/                 <-- entry file nested in src/
    ├── index.js
    ├── commands/
    └── events/
In both cases, the startup command (python bot.py or node index.js) will fail because the file isn’t where the server expects it.

Why Does This Happen?

This usually happens when you upload a zip archive that was created from a parent folder. For example, if you zip a folder called my-bot/, the archive will contain:
my-bot/
├── bot.py
├── requirements.txt
└── ...
When you unarchive it on the server, everything ends up inside my-bot/ instead of at the root.

How to Fix It

If your files are already in a subfolder on the server

1

Open the File Manager

Go to your server on panel.breezehost.xyz and click the Files tab.
2

Navigate into the subfolder

Click into the subfolder that contains your bot files (e.g., my-bot/).
3

Select all files

Select all the files and folders inside.
4

Move them to root

Use the Move option and set the destination to / (the root directory).
5

Delete the empty folder

Go back to root and delete the now-empty subfolder.

When creating zip archives

To avoid this problem in the first place, zip the contents of your project folder, not the folder itself: On Windows: Open your project folder, select all files inside, right-click > Compress to ZIP file. On macOS: Open your project folder, select all files inside, right-click > Compress. On Linux / terminal:
# Correct — zip the contents, not the folder
cd my-bot
zip -r ../my-bot.zip .

# Incorrect — this creates a nested folder in the zip
zip -r my-bot.zip my-bot/
The key difference: navigate into your project folder first, then zip everything from there. Don’t zip the folder from outside it.

What About Subfolders for Cogs, Commands, etc.?

Subfolders are perfectly fine for organizing your code — the rule only applies to your main entry file and dependency files (requirements.txt, package.json, .env). These must be at the root. Your cogs, commands, events, utilities, and any other modules can be organized in whatever subfolder structure you prefer:
/
├── bot.py              <-- root
├── requirements.txt    <-- root
├── .env                <-- root
├── cogs/               <-- subfolder is fine
│   ├── moderation.py
│   ├── music.py
│   └── economy.py
├── utils/              <-- subfolder is fine
│   ├── database.py
│   └── helpers.py
└── data/               <-- subfolder is fine
    └── config.yaml

Checklist

Before starting your server, verify:
  • Your main file (bot.py, index.js, etc.) is at the root of the file manager
  • requirements.txt (Python) or package.json (JavaScript) is at the root
  • Your .env or config file is at the root
  • The startup command in Settings > Startup matches the filename of your root-level entry file
  • No unnecessary parent folder is wrapping your entire project