PufferPanel - Open Source Game Server Management

Installing PufferPanel

The PufferPanel 1.x release series is outdated and only gets security updates at this point, as such it is strongly recommended to install the latest version of PufferPanel instead

If you absolutely need to install a 1.x release you will only receive support regarding security issues, instructions can be found here

Supported Games

A complete and up-to-date list of all supported games can be found at https://github.com/PufferPanel/templates

The following are some of the most popular games supported by PufferPanel

Minecraft

  • Minecraft (Vanilla)

  • Spigot

  • CraftBukkit (by Spigot)

  • MinecraftForge

  • SpongeForge

  • BungeeCord

  • PocketMine-MP

SRCDS/SteamCMD

  • Generic SRCDS/SteamCMD template (works with some but not all games installable via SteamCMD)

  • Team Fortress 2

  • Counter Strike: Global Offensive

  • Garry’s Mod

Upgrading PufferPanel

Note

The following guides assume that your are running at least PufferPanel/pufferd 1.2.0

Upgrading the Panel

To upgrade PufferPanel to the latest version of v1.2.x, please run the following commands as the root user, or run sudo -i to become root:

cd /srv
curl -L -o pufferpanel.tar.gz https://git.io/fNZYg
tar -xf pufferpanel.tar.gz

Upgrading pufferd

To upgrade pufferd to the latest version of v1.2.x, please run the following commands as the root user, or run sudo -i to become root:

apt-get update
apt-get upgrade pufferd

Using Docker with PufferPanel

Using Docker on an OpenVZ VPS

Some VPS providers use a technology called OpenVZ for their virtualization.

Only OpenVZ kernel version 042stab105.4 or higher support Docker. You can check your kernel version by running uname -a

We recommend using a KVM VPS or dedicated server if you are planning to use Docker.

If you don’t know if your VPS is OpenVZ or not, run test -e /proc/user_beancounters && echo This VPS is OpenVZ and see if the message “This VPS is OpenVZ” prints out.

First, install Docker on the node. Please follow Docker’s installation instructions located at https://docs.docker.com/get-docker/

Next, add the docker group (if not there) and add pufferd as a user of this group.

sudo groupadd --force --system docker
sudo usermod -a -G docker pufferd

Restart pufferd.

systemctl restart pufferd

Frequently Asked Questions

Q: Billing module?

The development team takes the stance that any user who wishes to make money off of selling servers should be using software which has paid support or a similar guarantee to get support if and when there are issues. We also believe that such users should also use a panel which has been through numerous security audits to protect both their own information and that of their customers.

As such, we do not believe we are the best software for such a service. We do not over-sell ourselves and will not risk our own users for the sake of making money, or those that use our software in any form to make money.

While a module may occur in the future, the current panel code is not suitable for supporting such a feature.

Q: Where are my logs?

Pufferpanel stores logs in 2 different places.

The panel stores it’s log in /srv/pufferpanel/logs
The daemon (pufferd) stores it’s logs in /var/log/pufferd

Q: I got a 401 error in my log!

Because pufferd has to authenticate with a secret token to the panel, it stores this token in a config. Reinstalls of the panel will cause this token to be incorrect, so you will have to manually get the token.

You can uninstall the daemon, then use the “auto-deploy” to re-deploy the daemon again.

If you are not able to reinstall the daemon, you can manually get this token by using the following command:

mysql -u root -p -e "select name, daemon_secret from pufferpanel.nodes"

Copy the “daemon_secret” from this into the /etc/pufferd/config.json file, then restart pufferd.

Q: How can I remove the captcha?

Log onto the machine that is running Pufferpanel and run the following command:

mysql -u root -p -e "update pufferpanel.acp_settings set setting_val = NULL where setting_ref like 'captcha%'"

nginx Configuration

Generating the Configuration Automatically

If the PufferPanel installer did not automatically create the needed configuration files for nginx, use the following commands as root to automatically generate them

cd /srv/pufferpanel
./pufferpanel addnginx

Otherwise, follow the instructions below to manually create the configuration.

Creating the Configuration Manually

This documentation will assume you have nginx installed. If you do not, please consult nginx’s documentation on how to install.

You will need to locate where your nginx server configs are (generally /etc/nginx). In there, will be either a conf.d or a sites-enabled folder. In one of those folders, create a pufferpanel.conf file and add the following (replacing panel.examplehost.com with the IP address or domain to access the panel on).

Note

This configuration assumes that you have PHP listening using a unix socket. Most configurations will default to using a socket, although some configure it with a TCP connection. To determine if this is the case run the command below.

CentOS: grep '^listen *=' /etc/php-fpm.d/www.conf
Ubuntu 14.04: grep '^listen *=' /etc/php5/fpm/pool.d/www.conf
Ubuntu 16.04/18.04: grep '^listen =' /etc/php/*/fpm/pool.d/www.conf

Should this be 127.0.0.1:9000, you should replace the unix:/var/run/php/php7.2-fpm.sock below with 127.0.0.1:9000;

server {
    listen 80;
    root /srv/pufferpanel/;
    index index.php;

    server_name panel.examplehost.com;

    client_max_body_size 20m;
    client_body_timeout 120s;

    location / {
        try_files /public/router.php =404;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index router.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

    location /assets {
        try_files /app/$uri =404;
    }
}

#server {
#    listen 443;
#    root /srv/pufferpanel/;
#    index index.php;
#
#    server_name panel.examplehost.com;
#
#    ssl on;
#    ssl_certificate     /etc/nginx/ssl/<server>.crt;
#    ssl_certificate_key /etc/nginx/ssl/<server>.key;
#
#    location / {
#        try_files /public/router.php =404;
#        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
#        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
#        fastcgi_index router.php;
#        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#        include /etc/nginx/fastcgi_params;
#    }
#
#    location /assets {
#        try_files /app/$uri =404;
#    }

Afterwards, use service nginx restart to restart nginx and apply this change.

Note

This file does not permit HTTPS access to your panel directly. If you wish to use HTTPS, uncomment the second server block and point the ssl_certificate and ssl_certificate_key to those for your server. If you use Cloudflare for HTTPS support, this should not be uncommented.

Apache Configuration

Generating the Configuration Automatically

If the PufferPanel installer did not automatically create the needed configuration files for Apache, use the following commands as root to automatically generate them

cd /srv/pufferpanel
./pufferpanel addapache

Otherwise, follow the instructions below to manually create the configuration.

Creating the Configuration Manually

CAUTION

This documentation is incomplete and may not be completely accurate. Please consult the Apache documentation for any problems using this.

This documentation assumes you have Apache/Httpd installed. If you do not, please consult apache’s documentation or the many tutorials on installing a LAMP server.

First, you must locate your root configuration for Apache/Httpd (generally /etc/httpd/httpd.config or /etc/apache2/apache2.conf). In that file, change/append the following.

DocumentRoot /srv/pufferpanel/public
<Directory "/srv/pufferpanel/public">
    AllowOverride All
    Order Allow,Deny
    Allow from all
    Require all granted
</Directory>

Next, you must edit your vhost config most likely located at /etc/apache2/sites-available/000-default.conf if you aren’t running any other sites, or you create another conf like pufferpanel.conf and save it there if you run multiple websites.

To create the conf file, you can just nano /etc/apache2/sites-available/pufferpanel.conf
Then insert the following code into the file and save:
<VirtualHost *:80>
    #ServerName www.example.com
    DocumentRoot /srv/pufferpanel/public
</VirtualHost>

If you are running multiple sites and the above code is in pufferpanel.conf, you MUST uncomment the ServerName line and set it to the domain you will use to connect to the panel. If you only run one site, the above code should replace everything in your 000-default.conf file.

Note

If you are receiving “500 Bad Request” error, make sure to enable mod rewrite!
Type sudo a2enmod rewrite in your terminal following it with sudo service apache2 restart

Using LetsEncrypt with PufferPanel

LetsEncrypt provides free SSL certificates and are great way to enhance the security of your PufferPanel installation

For the purposes of this guide, replace “panel.example.com” with your PufferPanel installation’s domain name.

Warning

Enabling SSL on the panel will require that you update your pufferd configs to point to the updated URL. Refer to the directions below to do this.

Modify nginx config file

Find your pufferpanel.conf configuration file located in either /etc/nginx/sites-available or /etc/nginx/conf.d

Add the following location block to your nginx config file

location /.well-known/acme-challenge/ {
    try_files $uri =404;
}

Here is some context for where you should place it

    location / {
        try_files /public/router.php =404;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php7.2-fpm.sock;
        fastcgi_index router.php;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

    location /.well-known/acme-challenge/ {
        try_files $uri =404;
    }

    location /assets {
        try_files /app/\$uri =404;
    }
}

Make sure to reload nginx

systemctl restart nginx

Grab the LetsEncrypt client

sudo -i #(or su root)
apt install -y certbot

Now generate the certificates

certbot certonly --webroot -w /srv/pufferpanel/ -d panel.exemple.com #news
certbot renew --webroot -w /srv/pufferpanel/ -d panel.exemple.com #Renew
Go back to your pufferpanel.conf and update the server block with the directives below (make sure to replace panel.example.com with your domain)
If a directive already exists in your server block, replace it with the one below
listen 443;
ssl_certificate /etc/letsencrypt/live/panel.exemple.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/panel.exemple.com/privkey.pem;

Updating pufferd configs

Once your panel is using HTTPS, you will need to update your pufferd configs to use the new URL.

Update the following file, changing http to https where appropriate:
/etc/pufferd/config.json
Restart the pufferd service
sudo service pufferd restart

Enabling HTTPS on pufferd

Copy the full chain certificate and the private key files from LetsEncrypt into pufferd.

cp /etc/letsencrypt/live/panel.example.com/fullchain.pem /etc/pufferd/https.pem
cp /etc/letsencrypt/live/panel.example.com/privkey.pem /etc/pufferd/https.key

Change the owner and group of the files

chown pufferd:pufferd /etc/pufferd/https.pem
chown pufferd:pufferd /etc/pufferd/https.key

Restart the pufferd service

sudo service pufferd restart

Next, update the node through the panel to have the private IP set to be your domain.

Finding Your Logs

PufferPanel and pufferd are 2 different pieces of software which make up the panel. As a result, there are several locations in which your logs will reside.

PufferPanel Logs

The PufferPanel logs are located by default next to the rest of your panel files. If you followed the installation steps defined, this would be located at /srv/pufferpanel/logs. Otherwise, it is the logs folder where your panel was installed at.

SENSITIVE INFORMATION

Unless otherwise asked by a developer, DO NOT share the .html located in this directory. They contain information which can be used to access your panel and/or your account. ONLY provide the .log files.

pufferd Logs

As pufferd is designed to work with your system and follow more standardized practices, the pufferd logs are located in /var/log/pufferd by default. These logs are broken up based on date the process was started.

What is PufferPanel?

PufferPanel is a web-based Game Server Management System created by players for players. PufferPanel allows you to run multiple different game servers all from one central location, and give other users their own servers, or access to your own servers.

Open Source

PufferPanel has been and will always be committed to being free and open-source software. All of our projects are available on our GitHub Account and we welcome any user to submit ideas or code. Being licensed under appropriate licenses means that you are welcome to run PufferPanel in a commercial (for-profit) environment or make any changes to the system that you see fit.

Why Create PufferPanel

We set out to create PufferPanel to fill a hole in the Game Server industry. There are very few free and open-source game management panels out there, and we wanted to be the one. There are many users who simply cannot afford to shell out money on expensive management panels just to run a few personal servers, or to get access to a system that restricts them from making modifications to the system. PufferPanel changes all of this by providing a simple interface that can support multiple game types and keeps things simple and non-bloated.

Why Use PufferPanel

PufferPanel offers you a no-hassle solution for managing your game servers at both a personal and a commercial level. By keeping all of our code open-source we allow anyone to submit ideas and features directly to the panel. In addition, you can browse through everything and submit bug reports and fixes as you find and patch them without having to wait on someone else to fix and release a new version.

Best of all? It’s free.

The Development Team

Help wanted

Interested in being a part of the PufferPanel team? Have experience with Go, HTML5/CSS3, or just good at helping users? We would love to work with you, please contact us on Discord.

PufferPanel started out as a custom solution for a small Minecraft Host, but quickly evolved into the open source community that is is today. That would not have been possible without the help from our team of developers and contributors.

http://gravatar.com/avatar/b1941b2071903182dcc47598d8d10fad

puffrfish

GitHub

Founder

Community Liaison

http://gravatar.com/avatar/edde31fa49f872ee344765c6707f5291

Joshua Taylor

GitHub

Head Developer

SourceDS - Autoupdate

Setting up your Source Server (such as Team Fortress 2) to auto-update is a simple task within PufferPanel.

The first step is to add some additional startup parameters for the server, shown below (replacing SERVER with the UUID for your server). To do so, edit the [Server].json File and add the line to the arguments section. Verify that the “-norestart” argument is the last argument, otherwise the Server keeps restarting when pressing “Stop” in the PufferPanel.

-autoupdate -steam_dir steamcmd -steamcmd_script /var/lib/pufferpanel/servers/[SERVER]/steamcmd/autoupdate.txt

In the /var/lib/pufferpanel/servers/[SERVER]/steamcmd/autoupdate.txt file we need to add the following code, replacing <APP_ID> with the application ID for the game.

login anonymous
force_install_dir ..
app_update <APP_ID>
quit

After this, simply restart your server and it should begin checking for updates whenever you start the server.

Warning

Some games may require additional parameters in the autoupdate.txt file.