- Update System
apt-get update
apt-get upgrade
2. Install Web Server Nginx
apt-get install nginx

systemctl stop nginx.service
systemctl start nginx.service
systemctl enable nginx.service
3. Install Database Postgresql
Repositori Postgresql1314
apt install postgresql-common
sudo sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
apt update
apt install postgresql-14 postgresql-contrib-14 (install versi 14)
apt install postgresql-13 postgresql-contrib-13 (install versi 13)
sudo nano /etc/apt/sources.list.d/pgdg.list (memastikan repository postgre 13)
deb http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main
sudo apt-get update
sudo apt -y install postgresql-13 postgresql-client-13
apt-get install postgresql postgresql-contrib
untuk memastikannya jalankan jalannya koneksi ke database, jalankan perintah ini :
pg_isready
Jika muncul : /var/run/postgresql:5432 – accepting connections . Maka koneksi database sukses. Selanjutnya, untuk mengecek status database baik, jalankan perintah berikut :
systemctl status postgresql
systemctl start postgresql
systemctl restart postgresql
systemctl reload postgresql
Selanjutnya silahkan jalankan perintah berikut ini untuk mengamankan Postgresql, buat password baru :
passwd postgres
Selanjutnya buat user pada database dan amankan dengan password yang kuat, dengan perintah berikut :
su – postgres
psql -c “ALTER USER postgres WITH PASSWORD ‘password'”;
nano /etc/postgresql/13/main/pg_hba.conf
Cari baris berikut dan ubah metode otentikasi menjadi md5seperti yang ditunjukkan pada gambar.

systemctl restart postgresql
4. Install PHP 8.1-FPM dan Module Yang Dibutuhkan
install php8.1
nano /etc/apt/sources.list.d/php.list (Buat repository)
deb https://packages.sury.org/php/ bookworm main
apt update
sudo apt-get install php8.1-fpm
apt-get install aspell graphviz clamav php8.1-common php8.1-mbstring php8.1-xmlrpc php8.1-soap php8.1-gd php8.1-xml php8.1-intl php8.1-pgsql php8.1-cli php8.1-ldap php8.1-zip php8.1-curl
apt-get install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo deb https://packages.sury.org/php/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/php8.0.list
apt-get update
apt-get upgrade
apt-get install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo deb https://packages.sury.org/php/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/php7.4.list
apt-get update
apt-get upgrade
apt-get install php7.4-fpm
apt-get install aspell graphviz clamav php7.4-common php7.4-mbstring php7.4-xmlrpc php7.4-soap php7.4-gd php7.4-xml php7.4-intl php7.4-pgsql php7.4-cli php7.4-ldap php7.4-zip php7.4-curl
nano /etc/php/7.4/fpm/php.ini
nano /etc/php/8.1/fpm/php.ini
file_uploads = On
allow_url_fopen = On
memory_limit = 128M
upload_max_filesize = 8M
max_execution_time = 60
post_max_size = 8M
cgi.fix_pathinfo = 0
5. Membuat Database Moodle
su – postgres
psql
CREATE USER moodleuser WITH PASSWORD ‘password’;
CREATE DATABASE moodle;
GRANT ALL PRIVILEGES ON DATABASE moodle to moodleuser;
\q
untuk membuat database dengan utf8
CREATE DATABASE moodle WITH ENCODING ‘UTF8’ TEMPLATE=template0;
6. Install Moodle
cd /tmp
wget https://download.moodle.org/download.php/direct/stable38/moodle-latest-38.tgz
tar -zxvf moodle-latest-38.tgz
mv moodle /var/www/html/moodle
cd
mkdir /var/moodledata
chown -R www-data /var/www/html/moodle
chmod -R 777 /var/www/html/moodle
chown -R www-data /var/moodledata
chmod -R 777 /var/moodledata
sudo reboot
7. Konfigurasi Situs Moodle di Nginx
nano /etc/nginx/nginx.conf
[…]
keepalive_timeout 2;
[…]
nano /etc/nginx/sites-available/moodle
server {
listen 80;
listen [::]:80;
root /var/www/html/moodle;
index index.php index.html index.htm;
server_name 192.168.0.200;
location / {
try_files $uri $uri/ =404;
}
location /dataroot/ {
internal;
alias /var/moodledata/;
}
location ~ [^/]\.php(/|$) {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Berikutnya aktifkan moodle di nginx dengan mengkopi/menduplikat /etc/nginx/sites-available/moodle ke /etc/nginx/sites-enabled, melalui perintah :
ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nano /var/www/html/moodle/info.php
<?php
phpinfo();
systemctl restart nginx.service
Sekarang kita cek info php, dengan mengetikkan http://192.168.0.200/info.php

Jika ketarangan pada baris Server API menunjukkan FPM/FastCGI maka instalasi PHP7.4-FPM sudah benar dan berjalan dengan baik.
8. Jalankan Moodle
Langkah terakhir adalah memeriksa keberhasilan Install Moodle 3.8 di Debian 10 Menggunakan Nginx, Postgresql, PHP7.4-FPM. Untuk memanggil moodle, buka browser dan ketikkan alamat http://alamatIPServer/. Karena pada server yang telah kita bangun memakai IP Server 192.168.0.200 maka alamat IP yang kita ketikkan di url address browser adalah http://192.168.0.200/ , dan hasilnya adalah seperti ini, dan tekan next :

Contoh penggunaan Moodle pada : lms.uncen.ac.id
sumber : https://www.sudutbaca.com/cara-install-moodle-di-debian-10-menggunakan-nginx-postgresql-php7-4-fpm/
https://kifarunix.com/install-postgresql-15-on-debian/#list-databases-in-postgre-sql