Nginx with SSL Configuration
Remove default configuration
Firstly, let's remove the default NGINX configuration from your server.
rm /etc/nginx/sites-available/default; rm /etc/nginx/sites-enabled/default
After we've done that, we can make our configuration for Jexactyl to run.
Create configuration file
!> Make sure to replace <domain>
with your own domain in this config file.
Please also note that this configuration is for NGINX with SSL enabled.
If you want to use Apache as a webserver, or do not want to use SSL, please refer
to the other webserver instructions.
Make a file called panel.conf
in /etc/nginx/sites-available
and insert the following:
server {
listen 80;
server_name <domain>;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name <domain>;
root /var/www/jexactyl/public;
index index.php;
access_log /var/log/nginx/jexactyl.app-access.log;
error_log /var/log/nginx/jexactyl.app-error.log error;
# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
# SSL Configuration
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
ssl_prefer_server_ciphers on;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Frame-Options DENY;
add_header Referrer-Policy same-origin;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Enabling Configuration
Firstly, let's link the file we've made to the directory which NGINX uses for configs.
ln -s /etc/nginx/sites-available/panel.conf /etc/nginx/sites-enabled/panel.conf
Then, we can test our nginx configuration to make sure it's working and valid:
nginx -t
Finally, we can restart the NGINX server process to make our Panel available on the domain.
systemctl restart nginx
Congrats! Jexactyl is installed and should be functioning normally. If you encounter any issues, please let us know on our Discord.