# Wings

## Generate your Wings configuration file

1. Navigate to your panel URL
2. Log in with administrator credentials
3. Click on the profile picture in the top right, then select admin
4. On the left, click on Nodes
5. Click on the + in the top right hand corner

   | Field Name           | Data                       |
   | -------------------- | -------------------------- |
   | Domain Name          | the URL for the Wings node |
   | Port                 | 443                        |
   | Display Name         | Whatever you want!         |
   | Communicate over SSL | HTTPS Reverse Proxy        |
   | Port                 | 8080                       |
6. Click on the next arrow and set the below

   | Field Name   | Data                                                                                          |
   | ------------ | --------------------------------------------------------------------------------------------- |
   | Upload Limit | 99 (this limit is set by Cloudflare Zero Trust free)                                          |
   | SFTP Port    | The SFTP port you selected earlier                                                            |
   | SFTP Alias   | <p>The domain your players will join<br><em>SFTP does not have the 99mb upload limit</em></p> |
7. Set your memory, disk and CPU allocations if wanted
8. Click on the + symbol in the bottom right to create the config file
9. Click on the 'Auto Deploy Command' button and take note of
   1. Token
   2. Node ID
10. Close the auto deploy command panel, then click on Save
11. On the left, click on Nodes

{% hint style="success" %}
You will see your node listed with an orange / red heart
{% endhint %}

## Deploy the Compose File

1. Combine the [Shared env file](/guides/installation-guides/pelican/shared-env-file.md) with below and fill the blanks

```dotenv
# --- Wings Configuration ---
NODE_SUBDOMAIN=
PANEL_TOKEN=
NODE_ID=
SFTP_PORT=

# --- Crowdsec Configuration ---
CROWDSEC_KEY=AGreatSpotToPutAUniquePassphrase123
CROWDSEC_PORT=8080

# --- Domain addresses ---
JOIN_SUBDOMAIN=join
```

{% @github-files/github-code-block url="<https://github.com/trentnbauer/HomelabPublic/blob/main/docker-compose/pelican-wings.yml>" %}

## Confirm the config has applied

### Check the logs for you init-wings container and look for

```bash
Successfully configured wings.
```

#### Common errors

```bash
panic: invalid character '<' looking for beginning of value
```

Your Dockflare container has not generated the public bypass app for the wings address. Assuming that Dockflare is OK (refer to its logs),

1. Stop the Wings stack
2. Delete the dockflare volume
3. Start the stack

Unable to resolve or DNS error

1. Wait half an hour for DNS to update
2. Start the init container

You may need to do this a few times

### Open your Wings container and look for

<pre class="language-log"><code class="lang-log">                     ____
__ Pelican _____/___/_______ _______ ______
\_____\    \/\/    /   /       /  __   /   ___/
   \___\          /   /   /   /  /_/  /___   /
        \___/\___/___/___/___/___    /______/
                            /_______/ 1.0.0-beta21
Copyright © 2018 - 2026 Dane Everitt &#x26; Contributors
Website:  https://pelican.dev
 Source:  https://github.com/pelican-dev/wings
License:  https://github.com/pelican-dev/wings/blob/main/LICENSE
This software is made available under the terms of the MIT license.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
<strong> INFO: [Jan 17 10:43:55.736] loading configuration from file config_file=/etc/pelican/config.yml
</strong><strong> INFO: [Jan 17 10:43:55.745] configured wings with system timezone timezone=Australia/Melbourne
</strong><strong> INFO: [Jan 17 10:43:55.746] configured system user successfully gid=988 uid=988 username=pelican
</strong><strong> INFO: [Jan 17 10:43:55.748] fetching list of servers from API
</strong></code></pre>

{% hint style="danger" %}
Wait 10-15 minutes for Wings and the Panel to sync - Your node WILL show as is disconnected for this time.\
Go have a coffee, take the dog for a walk. Do something else for a bit.
{% endhint %}

### If the health is still red

Refer to [Pterodactyl / Pelican](/guides/troubleshooting/pterodactyl-pelican.md#wings-errors) and come back here once sorted

## Add Ports to the server

1. Log into the administrator panel with the administrator account
2. Click on Nodes
3. Click on the edit pen next to your node
4. Scroll down to allocations and click on the + symbol
   1. Play / Join subdomain

      |            |                                                                                                                                                                             |
      | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | IP Address | 0.0.0.0                                                                                                                                                                     |
      | Alias      | <p>the domain players will use to join your server. If defaults, play.yourdomain.com<br><br><em>This address:port will be shown to anyone with access to the panel</em></p> |
      | Port       | The port ranges you chose earlier, eg 6600-7700                                                                                                                             |
   2. Internal port range

      |            |                                                 |
      | ---------- | ----------------------------------------------- |
      | IP Address | 0.0.0.0                                         |
      | Alias      | Internal                                        |
      | Port       | The port ranges you chose earlier, eg 8600-8700 |
5. Click on Create
6.


---

# Agent Instructions: 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:

```
GET https://www.trentbauer.com/guides/installation-guides/pelican/wings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
