Tutorial ini akan menunjukkan cara menginstal ProjectSend di Ubuntu 20.04 LTS dengan server web Nginx.
Apa itu ProjectSend?
ProjectSend adalah solusi berbagi file yang di-hosting-sendiri dengan sumber terbuka dan gratis. Fitur ProjectSend:
- Statistik waktu nyata
- Buat grup klien
- pendaftaran mandiri dan login sosial
- Templat email khusus
Prasyarat
ProjectSend ditulis dalam bahasa pemrograman PHP. Untuk mengikuti tutorial ini, Anda harus terlebih dahulu menginstal LEMP stack di Ubuntu 20.04 . Jika Anda belum melakukannya, silakan lihat tutorial berikut.
- Cara Memasang LEMP Stack (Nginx, MariaDB, PHP7.4-FPM) di Ubuntu 20.04
Anda dapat menginstal ProjectSend di server rumah Anda atau VPS (server pribadi virtual). Anda juga memerlukan nama domain, sehingga nantinya Anda dapat mengaktifkan HTTPS untuk mengenkripsi lalu lintas HTTP. Saya mendaftarkan nama domain saya dari NameCheap karena harganya rendah dan mereka memberikan perlindungan privasi whois gratis seumur hidup. ProjectSend dapat diinstal tanpa nama domain, tetapi sangat tidak masuk akal jika Anda tidak mengenkripsi koneksi HTTP untuk mencegah pengintaian. Saya sarankan membeli nama domain, jika Anda benar-benar ingin mengotak-atik perangkat lunak server dan menggunakannya secara maksimal.
Sekarang mari kita instal ProjectSend.
Langkah 1:Unduh ProjectSend di Ubuntu 20.04
Masuk ke server Ubuntu 20.04 Anda. Kemudian unduh arsip zip ProjectSend ke server Anda. Versi stabil terbaru adalah r1295 pada saat penulisan ini. Anda mungkin perlu mengubah nomor versi. Buka https://www.projectsend.org/#download untuk melihat versi terbaru.
Anda dapat menjalankan perintah berikut untuk mengunduhnya di server Anda.
wget -O projectsend.zip https://www.projectsend.org/download/387/
Setelah diunduh, ekstrak arsip dengan unzip
.
sudo apt install unzip sudo mkdir -p /usr/share/nginx/projectsend/ sudo unzip projectsend.zip -d /usr/share/nginx/projectsend/
-d
opsi menentukan direktori target. File web ProjectSend akan diekstraksi ke /usr/share/nginx/projectsend/
. Kemudian kita perlu mengubah pemilik direktori ini menjadi www-data
sehingga server web (Nginx) dapat menulis ke direktori ini.
sudo chown www-data:www-data /usr/share/nginx/projectsend/ -R
Langkah 2:Buat Database dan Pengguna untuk ProjectSend di Server Database MariaDB
Masuk ke server database MariaDB dengan perintah berikut. Karena MariaDB sekarang menggunakan unix_socket
plugin untuk otentikasi login pengguna, tidak perlu memasukkan kata sandi root MariaDB. Kita hanya perlu mengawali mysql
perintah dengan sudo
.
sudo mysql
Kemudian buat database untuk ProjectSend. Tutorial ini menamai projectend database. Anda dapat menggunakan nama apa pun yang Anda suka.
create database projectsend;
Buat pengguna basis data. Sekali lagi, Anda dapat menggunakan nama pilihan Anda untuk pengguna ini. Ganti your-password
dengan kata sandi pilihan Anda.
create user projectsenduser@localhost identified by 'your-password';
Berikan pengguna ini semua hak istimewa di projectsend
basis data.
grant all privileges on projectsend.* to projectsenduser@localhost;
Hapus hak istimewa dan keluar.
flush privileges; exit;
Langkah 3:Konfigurasikan ProjectSend
Buka includes
direktori.
cd /usr/share/nginx/projectsend/includes/
Salin contoh file konfigurasi dan ganti namanya menjadi sys.config.php
.
sudo cp sys.config.sample.php sys.config.php
Sekarang edit file konfigurasi baru dengan editor teks baris perintah seperti Nano.
sudo nano sys.config.php
Temukan baris berikut dan ganti teks merah dengan nama database, nama pengguna, dan kata sandi yang Anda buat di langkah 2.
/** Database name */ define('DB_NAME', 'database'); /** Database host (in most cases it's localhost) */ define('DB_HOST', 'localhost'); /** Database username (must be assigned to the database) */ define('DB_USER', 'username'); /** Database password */ define('DB_PASSWORD', 'password');
Simpan dan tutup file. Untuk menyimpan file di editor teks Nano, tekan Ctrl+O
, lalu tekan Enter
untuk mengkonfirmasi. Selanjutnya, tekan Ctrl+X
untuk keluar.
Langkah 4:Buat File Konfigurasi Nginx untuk ProjectSend
Buat projectsend.conf
file di /etc/nginx/conf.d/
direktori, dengan editor teks baris perintah seperti Nano.
sudo nano /etc/nginx/conf.d/projectsend.conf
Salin dan tempel teks berikut ke dalam file. Ganti projectsend.example.com
dengan sub-domain pilihan Anda sendiri. Jangan lupa untuk membuat catatan DNS A untuk sub-domain ini di editor zona DNS Anda. Jika Anda tidak memiliki nama domain asli, saya sarankan pergi ke NameCheap untuk membelinya. Harganya rendah dan mereka memberikan perlindungan privasi whois gratis seumur hidup.
server { listen 80; listen [::]:80; server_name projectsend.example.com; # Add headers to serve security related headers add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy no-referrer; # Path to the root of your installation root /usr/share/nginx/projectsend/; index index.php index.html; access_log /var/log/nginx/projectsend.access; error_log /var/log/nginx/projectsend.error; location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /.well-known/acme-challenge { allow all; } # set max upload size client_max_body_size 512M; fastcgi_buffers 64 4K; # Disable gzip to avoid the removal of the ETag header gzip off; # Uncomment if your server is build with the ngx_pagespeed module # This module is currently not supported. #pagespeed off; error_page 403 /core/templates/403.php; error_page 404 /core/templates/404.php; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; try_files $fastcgi_script_name =404; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; #Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; fastcgi_param front_controller_active true; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; } location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ { try_files $uri /index.php$uri$is_args$args; # Optional: Don't log access to other assets access_log off; } }
Simpan dan tutup file. (Untuk menyimpan file di editor teks Nano, tekan Ctrl+O
, lalu tekan Enter
untuk mengkonfirmasi. Untuk keluar, tekan Ctrl+X
.)
Kemudian uji konfigurasi Nginx.
sudo nginx -t
Jika pengujian berhasil, muat ulang Nginx agar perubahan diterapkan.
sudo systemctl reload nginx
Langkah 5:Instal dan Aktifkan Modul PHP
Jalankan perintah berikut untuk menginstal modul PHP yang diperlukan atau direkomendasikan oleh ProjectSend.
sudo apt install imagemagick php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
Langkah 6:Aktifkan HTTPS
Sekarang Anda dapat mengakses wizard penginstalan web ProjectSend di browser web Anda dengan memasukkan nama domain untuk penginstalan ProjectSend Anda.
projectsend.example.com/install/index.php
Jika halaman web tidak dapat dimuat, Anda mungkin perlu membuka port 80 di firewall.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Dan juga port 443.
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
Sebelum memasukkan informasi sensitif apa pun, kita harus mengaktifkan koneksi HTTPS aman di ProjectSend. Kami dapat memperoleh sertifikat TLS gratis dari Let's Encrypt. Instal klien Let's Encrypt (certbot) dari repositori Ubuntu 20.04.
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
adalah plugin Nginx. Selanjutnya, jalankan perintah berikut untuk mendapatkan sertifikat TLS gratis menggunakan plugin Nginx.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d projectsend.example.com
Dimana:
- –nginx :Gunakan autentikator dan penginstal Nginx
- –setuju-untuk :Setuju dengan persyaratan layanan Let's Encrypt
- –mengalihkan :Terapkan HTTPS dengan menambahkan 301 redirect.
- –hsts :Aktifkan Keamanan Transportasi Ketat HTTP. Ini bertahan dari serangan stripping SSL/TLS.
- –staple-ocsp :Aktifkan Stapel OCSP.
- –email :Email yang digunakan untuk pendaftaran dan kontak pemulihan.
- -d flag diikuti oleh daftar nama domain, dipisahkan dengan koma. Anda dapat menambahkan hingga 100 nama domain.
Anda akan ditanya apakah Anda ingin menerima email dari EFF (Electronic Frontier Foundation). Setelah memilih Y atau T, sertifikat TLS Anda akan otomatis diperoleh dan dikonfigurasi untuk Anda, yang ditunjukkan oleh pesan di bawah ini.
Langkah 7:Selesaikan Instalasi di Browser Web Anda
Sekarang Anda dapat mengakses wizard pemasangan web ProjectSend menggunakan koneksi HTTPS.
https://projectsend.example.com/install/index.php
Untuk menyelesaikan penginstalan, Anda harus memberinya nama situs dan membuat akun admin.
Klik tombol Install
, Anda akan dapat masuk ke antarmuka Web ProjectSend.
Cara Menyiapkan Pemberitahuan Email ProjectSend
Jika instans ProjectSend Anda akan digunakan oleh lebih dari satu orang, server ProjectSend harus dapat mengirim email transaksional, seperti email pengaturan ulang kata sandi. Buka Opsi -> Pemberitahuan Email . Anda akan menemukan pengaturan server email. Ada empat mode pengiriman:
- Email PHP (dasar)
- SMTP
- Gmail
- Kirim email
Anda dapat memilih sendmail
mode jika host ProjectSend Anda menjalankan server SMTP. Kosongkan bidang lainnya.
Jika Anda ingin menggunakan server SMTP yang berjalan di host lain, pilih SMTP
mode dan masukkan alamat server SMTP dan kredensial login seperti di bawah ini. Pilih STARTTLS untuk enkripsi.
Untuk cara setting email server silahkan simak tutorial berikut ini. Catatan bahwa saya sangat merekomendasikan menjalankan server email iRedMail pada OS bersih yang baru. Menginstal iRedMail pada OS yang memiliki aplikasi web lain dapat gagal, dan kemungkinan merusak aplikasi yang ada.
- Cara menyiapkan server email berfitur lengkap dengan mudah di Ubuntu 20.04 dengan iRedMail
Langkah 8:Tingkatkan Batas Memori PHP
Batas memori PHP default adalah 128MB. ProjectSend merekomendasikan 512MB untuk kinerja yang lebih baik. Untuk mengubah batas memori PHP, edit php.ini berkas.
sudo nano /etc/php/7.4/fpm/php.ini
Temukan baris berikut. (baris 409)
memory_limit = 128M
Ubah nilainya.
memory_limit = 512M
Simpan dan tutup file. Atau, Anda dapat menjalankan perintah berikut untuk mengubah nilai tanpa membuka file secara manual.
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/fpm/php.ini
Kemudian muat ulang PHP-FPM layanan agar perubahan diterapkan.
sudo systemctl reload php7.4-fpm
Langkah 9:Tingkatkan Batas Ukuran File Unggah
Batas ukuran file unggahan maksimum default yang ditetapkan oleh Nginx adalah 1MB. Untuk mengizinkan pengunggahan file besar ke server ProjectSend Anda, edit file konfigurasi Nginx untuk ProjectSend.
sudo nano /etc/nginx/conf.d/projectsend.conf
Kami telah menetapkan ukuran file maksimum dalam file ini, seperti yang ditunjukkan oleh
client_max_body_size 512M;
Anda dapat mengubahnya jika mau, seperti 1G.
client_max_body_size 1024M;
Simpan dan tutup file. Kemudian muat ulang Nginx agar perubahan diterapkan.
sudo systemctl reload nginx
PHP juga menetapkan batas ukuran file unggahan. Ukuran file maksimum default untuk mengunggah adalah 2MB. Untuk meningkatkan batas ukuran upload, edit file konfigurasi PHP.
sudo nano /etc/php/7.4/fpm/php.ini
Temukan baris berikut (baris 846).
upload_max_filesize = 2M
Ubah nilainya seperti di bawah ini:
upload_max_filesize = 1024M
Simpan dan tutup file. Atau, Anda dapat menjalankan perintah berikut untuk mengubah nilai tanpa membuka file secara manual.
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini
Kemudian restart PHP-FPM.
sudo systemctl restart php7.4-fpm
Menambahkan Entri DNS Lokal
Disarankan untuk mengedit /etc/hosts
file di server ProjectSend Anda dan tambahkan entri berikut, sehingga ProjectSend sendiri tidak perlu menanyakan DNS publik, yang dapat meningkatkan stabilitas secara keseluruhan. Jika server ProjectSend Anda tidak dapat menyelesaikan projectsend.example.com
hostname, maka Anda mungkin mengalami 504 gateway time out kesalahan.
127.0.0.1 localhost projectsend.example.com
Alamat IP di /etc/hosts
file dapat memiliki beberapa nama host, jadi jika Anda memiliki aplikasi lain yang diinstal pada kotak yang sama, Anda juga dapat menambahkan nama host atau sub-domain lain pada baris yang sama seperti ini:
127.0.0.1 localhost focal ubuntu projectsend.example.com nextcloud.example.com
Kiat Pemecahan Masalah
Jika Anda menemukan kesalahan, Anda dapat memeriksa salah satu file log berikut untuk mencari tahu apa yang salah.
- Log kesalahan Nginx:
/var/log/nginx/error.log
- Log kesalahan Nginx untuk host virtual ProjectSend:
/var/log/nginx/projectsend.error