--- title: VPS running Linux. description: Setup of ThemeParkPanel if using a VPS running Linux. published: true date: 2022-08-28T19:14:05.111Z tags: editor: markdown dateCreated: 2022-08-28T19:14:05.111Z --- # 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. ```shell # 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**. ![screenshot_114.png](/screenshot_114.png =25%x) 2. Go to the `/var/www/themeparkpanel` directory and upload the files of **the SSH zip**. 3. Run the following command to fix the file permissions: ```shell chmod -R 755 storage/* bootstrap/cache/ ``` ## 3. Creating the MySQL database 1. Run the following command to enter the MariaDB console. ```shell mysql -u root -p ``` And enter the following SQL commands in sequence. ```sql # 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 ``` 2. 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`. ```yml [mysqld] # Replace the 127.0.0.1 with 0.0.0.0 bind-address=0.0.0.0 ``` 3. Run the following command to restart the MariaDB server. ```shell 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. ```shell # 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. # Tabs {.tabset} ## Without SSL *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.htm 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. ```shell # 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 ``` ## With SSL *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. ```shell # 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 ```