Deploy Pterodactyl Wings using Docker.
- Docker & Docker Compose 20.10+
- Linux host (tested on Ubuntu 20.04+, Debian 11+)
- At least 2GB RAM (4GB+ recommended for multiple servers)
- Open ports:
2022(SFTP),8080(Wings API),80(Certbot validation) - Network access to Pterodactyl Panel
git clone https://github.com/chlewtf/dockerized-pterodactyl-wings
cd dockerized-pterodactyl-wingsBefore running the containers, ensure your domain points to your server:
# Example: Point wings.example.com to your server IP
# Update your DNS A record accordingly# Build and start all services
docker-compose up -d
# View logs
docker-compose logs -f wings
docker-compose logs -f certbotThe Wings configuration should be placed at /srv/wings/config/config.yml:
# Create the config directory if it doesn't exist
mkdir -p /srv/wings/config
# Edit your config.yml
nano /srv/wings/config/config.ymlExample minimal config:
debug: false
uuid: "your-wings-uuid"
token_id: "your-token-id"
token: "your-token"
api:
host: 0.0.0.0
port: 8080
system:
username: pterodactyl
groupname: pterodactyl
data:
path: /srv/wings-data| Container Path | Host Path | Purpose |
|---|---|---|
/srv/wings/config |
/srv/wings/config |
Wings configuration |
/srv/wings-data |
/srv/wings-data |
Server instance data |
/tmp/pterodactyl |
/tmp/pterodactyl |
Temporary files |
/var/run/docker.sock |
/var/run/docker.sock |
Docker API access |
/etc/letsencrypt |
./certbot/conf |
SSL certificates |
Health Check: curl http://localhost:8080/api/system
Connection:
sftp -P 2022 username@your-wings-hostAutomatically renews SSL/TLS certificates every 12 hours using Let's Encrypt.
Manual Renewal:
docker-compose exec certbot certbot renewModify the docker-compose.yml file:
services:
wings:
build:
args:
wings_ver: v1.11.12 # Change this version
sftp_ver: v1.0.5 # Change this versionThen rebuild:
docker-compose down
docker-compose up -d --build# Real-time logs
docker-compose logs -f wings
# SFTP logs
docker-compose logs -f wings | grep sftp-server- Check configuration:
docker-compose logs wings - Verify
/srv/wings/config/config.ymlexists and is valid YAML - Ensure Docker socket is mounted:
ls -la /var/run/docker.sock - Check panel authentication token is correct
# Check certificate status
docker-compose exec certbot certbot certificates
# Force renewal
docker-compose exec certbot certbot renew --force-renewalIf port 8080 or 2022 is already in use, modify docker-compose.yml:
ports:
- "8081:8080" # Map to different host port
- "2023:2022"Run with appropriate privileges:
sudo docker-compose up -dEnsure Wings can reach your Pterodactyl Panel:
docker-compose exec wings curl -I https://your-panel-domain/api/systemTo completely remove all containers and data:
./wipe.shOr manually:
docker-compose down -v
rm -rf /srv/wings /srv/wings-data /tmp/pterodactyl ./certbot/confThe setup uses a dedicated Docker network (pterodactyl) for inter-container communication. For multi-host setups, consider using Docker Swarm or Kubernetes.
- Pterodactyl Docs: https://pterodactyl.io/wings
- Issues: Report bugs on GitHub
- Questions: Check existing documentation or open a discussion
- Contributions: PRs welcome!
Licensed under MIT. Chle & Contributors. All rights reserved.