From 3e2f017a19a937af8de7ddfd8238149f760079c6 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 28 Aug 2022 19:14:06 +0000 Subject: [PATCH] docs: create themepark/setup/linux --- themepark/setup/linux.md | 218 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 themepark/setup/linux.md diff --git a/themepark/setup/linux.md b/themepark/setup/linux.md new file mode 100644 index 0000000..1a4f7a8 --- /dev/null +++ b/themepark/setup/linux.md @@ -0,0 +1,218 @@ +--- +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 +``` \ No newline at end of file