SBDocs/themepark/setup/linux.md

5.8 KiB

sidebar_label sidebar_position
VPS running Linux 2

import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

VPS running Linux

This guide will guide you through the installation of ThemeParkPanel on an VPS running Linux.

It assumes you are on the Ubuntu distro. If you are on another distro, some commands my vary.

1. Webserver setup (LEMP)

We are going to use Nginx and MariaDB for this installation. Run the following commands in sequence.

# Add 'add-apt-repository` command
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg

# Install the required repositories
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

# Update repositories list
apt update

# Install dependencies
apt -y install php8.1 php8.1-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} openssl git unzip mariadb-server nginx

# Install composer
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

# Create panel directory
mkdir -p /var/www/themeparkpanel

2. Uploading the files

You need remote file transfer software to upload the files to your VPS. You can use for example Filezilla or WinSCP. This guide assumes you have WinSCP.

  1. Click on New Site. Then enter your SSH details. Then click on Login.

Upload in WinSCP

  1. Go to the /var/www/themeparkpanel directory and upload the files of the SSH zip.
  2. Run the following command to fix the file permissions:
chmod -R 755 storage/* bootstrap/cache/

3. Creating the MySQL database

  1. Run the following command to enter the MariaDB console.
mysql -u root -p

And enter the following SQL commands in sequence.

# Make sure to replace 'yourPassword' with a secure password
CREATE USER 'themeparkpanel'@'%' IDENTIFIED BY 'yourPassword';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'themeparkpanel'@'%' WITH GRANT OPTION;
exit
  1. Open the /etc/mysql/mariadb.conf.d/50-server.cnf file and replace the value of the bind-address setting with 0.0.0.0.
[ mysqld ]
  # Replace the 127.0.0.1 with 0.0.0.0
  bind-address=0.0.0.0
  1. Run the following command to restart the MariaDB server.
systemctl restart mariadb

4. Configuration of the panel

  1. Copy the .env.example file to .env (using cp .env.example .env) and open the .env file.
    • Change APP_URL to the URL of your panel
    • At DB_ change the credentials to the database details created above.
    • At MAIL_ change the credentials to the credentials of an email account.
  2. Run the followings command in sequence to proceed the installation.
# Install dependencies
composer install --no-dev --optimize-autoloader

# Generate the key
php artisan key:generate --force

# Populate the database
php artisan migrate --force

# Fix file permissions for the panel
chown -R www-data:www-data /var/www/themeparkpanel/*

5. Configuration of the webserver

Choose if you want to add SSL encryption to your panel or not.

*We include an example configuration to serve our panel. Make sure to replace `%DOMAIN` with the full domain, and `%PATH%` with the full installation path (probably `/var/www/themeparkpanel`).*
1. Create `/etc/nginx/sites-available/themeparkpanel.conf` and put the following content in it.

```nginx

server { listen 80; listen [::]:80;

    root /var/www/themeparkpanel/public;
    
    server_name %DOMAIN%;
    index index.php index.html index.nginx-debian.html;

    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
            deny all;
    }

    location ~ /.well-known {
            allow all;
    }

}


2. Run the following commands.

```bash
# Link the configuration to the enabled directory
sudo ln -s /etc/nginx/sites-available/themeparkpanel.conf /etc/nginx/sites-enabled/themeparkpanel.conf

# Restart Nginx
systemctl restart nginx
*We include an example configuration to serve our panel. Make sure to replace `%DOMAIN` with the full domain, and `%PATH%` with the full installation path (probably `/var/www/themeparkpanel`).*
1. Create `/etc/nginx/sites-available/themeparkpanel.conf` and put the following content in it.

```nginx

server { listen 80; listen [::]:80;

    server_name %DOMAIN%;
    return 301 https://$server_name$request_uri;

}

server { listen 443 ssl http2; listen [::]:443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/%DOMAIN%/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/%DOMAIN%/privkey.pem;

    root /var/www/themeparkpanel/public;

    index index.php index.html;

    server_name %DOMAIN%;

    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
            deny all;
    }

    location ~ /.well-known {
            allow all;
    }

}


2. Create your SSL certificate. You can use for example Certbot to do this for you.

3. Run the following commands.

```bash
# Link the configuration to the enabled directory
sudo ln -s /etc/nginx/sites-available/themeparkpanel.conf /etc/nginx/sites-enabled/themeparkpanel.conf

# Restart Nginx
systemctl restart nginx