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
yum update 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.
/srv/pufferpanel/logs
/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.
grep '^listen *=' /etc/php-fpm.d/www.conf
grep '^listen *=' /etc/php5/fpm/pool.d/www.conf
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.
nano /etc/apache2/sites-available/pufferpanel.conf
<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
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
panel.example.com
with your domain)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.
/etc/pufferd/config.json
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.
puffrfish |
Founder Community Liaison |
|
Joshua Taylor |
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.