Instalasi Crater Invoice

Crater adalah aplikasi invoice berbasis PHP framework Laravel dengan target pengguna individu atau usaha kecil menengah. Crater merupakan aplikasi open source dan dapat diiinstall di server sendiri (self-hosted).

Fitur Crater

Fitur yang terdapat di dalam aplikasi Crater:

  • Invoice: membuat dan mengirim tagihan ke klien
  • Estimate: membuat estimasi atau penawaran harga
  • Track Payment: melacak transaksi dan pembayaran
  • Exprenses: mencatat dan melacak pengeluaran
  • Reports: membuat laporan tagihan
  • Taxes: mengatur jenis pajak
  • Mobile App: tersedia versi mobile Android dan iOS

Instalasi Web Server (LAMP)

Update repository

sudo apt update

Upgrade

sudo apt upgrade

Install apache

sudo apt instal apche2

Install PHP beserta modul/extensi yang dibutuhkan

sudo apt install libapache2-mod-php php-common php-bcmath php-mbstring php-mysql php-tokenizer php-zip php-curl php-json -y

Membuat virtulhost crater.farizanwar.my.id

sudo nano /etc/apache2/sites-available/crater.farizanwar.my.id.conf

Masukkan baris konfigurasi berikut

*Catatan: Virtual Host dokumen root diarahkan ke direktori /public

<VirtualHost *:80>
    ServerName crater.farizanwar.my.id
    DocumentRoot /var/www/crater.farizanwar.my.id/public

    <Directory /var/www/crater.farizanwar.my.id/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/apache2/crater.farizanwar.my.id_error.log
    CustomLog /var/log/apache2/crater.farizanwar.my.id_access.log combined
</VirtualHost>

Mengaktifkan virtualhost, modul rewrite, dan restart apache

a2ensite crater.farizanwar.my.id

Mengaktifkan modul rewrite

a2enmod rewrite

Restart Apache

systemctl restart apche2

Install SSL

apt install python3-certbot-apache

Request SSL

crater

Jika muncul pertanyaan

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel):

Masukkan email untuk notifikasi expired SSL

Jika muncul pertanyaan

lease read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017-w-v1.3-notice.pdf.
You must agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o:

Jawab y

Jika muncul pertanyaan

Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o:

Jawab n

Jika muncul pertanyaan

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: crater.farizanwar.my.id
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

Jawab 1

Jika muncul

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/crater.farizanwar.my.id/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/crater.farizanwar.my.id/privkey.pem
This certificate expires on 2022-12-08.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for crater.farizanwar.my.id to /etc/apache2/sites-available/crater.farizanwar.my.id-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://crater.farizanwar.my.id

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le

Berarti request SSL sudah berhasil

Atau jika ingin lebih cepat dan ringkas bisa menggunakan perintah berikut

certbot --non-interactive -m [email protected] --agree-tos --no-eff-email --apache -d crater.farizanwar.my.id --redirect

Instalasi dan konfigurasi database MariaDB

sudo apt install mariadb-server

Konfigurasi dan mengamankan instalasi MariaDB

mysql_secure_installation
Enter current password for root (enter for none): ENTER
Switch to unix_socket authentication [Y/n] ENTER/Y

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] ENTER/Y

New password: MASUKKAN_PASSWORD
Re-enter new password: ULANGI_PASSWORD
Remove anonymous users? [Y/n] ENTER/Y
Disallow root login remotely? [Y/n] ENTER/Y
Remove test database and access to it? [Y/n] ENTER/Y
Reload privilege tables now? [Y/n] ENTER/Y

Membuat database, gunakan user root untuk masuk kedalam mysql

mysql
create database crater;

Membuat user untuk mengelola database crater

create user 'user'@'localhost' identified by 'password';

Mengizinkan user untuk mengelola database crater

grant all privileges on crater.* to 'user'@'localhost';

Flush !!!

flush privileges;

Keluar dari mysql

quit;

Instalasi crater

Install zip dan uzip untuk kebutuhan ekstrak file source code

apt install zip unzip

Download source code crater, untuk versi terbaru lihat disini

wget https://craterapp.com/downloads/file/6.0.6

Ekstrak source code crater

unzip 6.0.6

Setelah di ekstrak akan muncul 2 folder __MACOSX dan crater

Pindahkan folder crater ke document root yang sudah ditentukan pada saat membuat virtual host (/var/www/crater/farizanwar.my.id)

mv crater/ /var/www/crater.farizanwar.my.id

Ubah kepemilikan direktori crater.farizanwra.my.id

chown -R www-data:www-data /var/www/crater.farizanwar.my.id/

Ubah izin direktori framework

chmod 775 /var/www/crater.farizanwar.my.id/storage/framework/

Ubah izin direkori logs

chmod 775 /var/www/crater.farizanwar.my.id/storage/logs/

Ubah izin direktori cache

chmod 775 /var/www/crater.farizanwar.my.id/bootstrap/cache/

Installation wizard

Buka halaman crater menggunakan browser crater.farizanwar.my.id lalu klik Check Requirements untuk memeriksa apakah server sudah memenuhi persyaratan untuk menjalankan Crater.

Jika semua syarat terpenuhi akan muncul warna hijau, klik Continue

Memeriksa permissions (ijin akses) folder, Jika semua sudah terpenuhi akan muncul warna hijau. klik Continue

Konfigurasi URL dan database

Verifikasi domain Verify Now

Konfigurasi email untuk mengirim email tagihan ke pelanggan

Contoh

Buat akun beserta informasinya

Masukkan informasi perusahaan

Pilih preferernsi perusahaan seperti mata uang, waktu, dll

Recurring Invoice

Shared Hosting (Cpanel)

Pergi ke menu cron atau dalam bahasa indonesia tugas terjadwal

Pada kolom perintah isikan perintah berikut:

cd /home/namausercpanel/direktoricrater && php artisan schedule:run >> /dev/null 2>&1

Hasil nya dalah

VPS/Dedicated Linux Server

Gunakan crontab untuk membuat waktu terjadwal

Pastikan kamu menggunakan user yang berhak menjalankan perintah itu (root)

sudo crontab -e

Lalu masukkan perintah berikut di paling bawah

* * * * * cd /var/www/lokasicrater && php artisan schedule:run >> /dev/null 2>&1

Sehingga menjadi seperti berikut

  GNU nano 5.4               /tmp/crontab.aIVt98/crontab                        
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
* * * * * cd /var/www/lokasicrater && php artisan schedule:run >> /dev/null 2>&1

Troubleshoot

Tidak dapat tersambung ke database

Jika ketika instalasi menemukan masalah tidak dapat tersambung ke database padahal user dan password nya sudah benar kita hanya perlu mengubah parameter 127.0.0.1 menjadi localhost

Mengatasi CRSF token mismatch (Domain verification)

Untuk menyelesaikan masalah ini kita hanya perlu membuka tab samaran baru atau akses dari browsser lain

Mengubah Konfigruasi email

Untuk mengkonfigurasi email melalui antarmuka web terkadang tidak bisa dilakukan, mungkin itu bug dari aplikasi crater
Untuk mengatasi kita harus mengkonfigurasi ulang secara manualdengan cara mengubah isi dari file .env

nano /var/www/lokasicrater/.env

Lalu ubah parameter ini dengan konfigurasi yang baru

MAIL_DRIVER=smtp
MAIL_HOST=mail.domainkamu.com
MAIL_PORT=465
MAIL_USERNAME=[email protected]
MAIL_PASSWORD="p4$$w0rdK^m0e"
MAIL_ENCRYPTION=ssl

Mengatasi email SMTP tidak bekerja

Pastikan username password dan port yang kamu gunakan benar dan sesuai dengan yang diberikan penyedia layanan email

Untuk password email yang mengandung karakter khusus seperti (#*!&%$) kamu harus diapit dengan string atau tanda , jadi seperti ini

nano /var/www/lokasicrater/.env
MAIL_DRIVER=smtp
MAIL_HOST=mail.domainkamu.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD="p4$$w0rdK^m0e"
MAIL_ENCRYPTION=ssl

Jika email masih tidak bekerja mungkin kamu harus mengubah parameter MAIL_ENCRYPTION= menjadi ssl atau tls

Tested on: Ubuntu 20.04
Sumber/referensi: https://musaamin.web.id/install-crater-invoice-app-ubuntu2004/