Ikhwan Saputera

Setiap Waktu adalah Belajar, Setiap Tempat adalah Sekolah, Setiap Orang adalah Guru

Showing posts with label Server. Show all posts
Showing posts with label Server. Show all posts

Wednesday, July 24, 2024

Update Virtualbox 6 ke 7 di Ubuntu

Sebelumnya saya mengalami error seperti ini, padahal tadi malam saya gunakan baiknya saja, setelah membaca di sana sini dan searching saya menemukann bahwa hal ini karena versi ubuntu saya sudah ketinggalan versinya yakni versi 6. Dan Saya baru ingat sebelum tidur saya melakukan update ubuntu saya dengan perintah 

sudo apt-get update

Dan paginya ketika mau buka virtualbox terlihat gambar seperi diatas, baik ini tahapan updatenya


Tahap awal instal repositori VirtualBox di sistem Ubuntu atau Debian Anda jika belum ada;

echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | \
sudo tee /etc/apt/sources.list.d/virtualbox.list

Install VirtualBox repository signing key;

sudo apt install gnupg2

wget -qO- https://www.virtualbox.org/download/oracle_vbox_2016.asc | \
sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/virtualbox.gpg

Run system package cache update;

sudo apt update

Instal VirtualBox 7.x (VirtualBox 7.0 saat tulisan ini dibuat tersedia) menggunakan package manager.

sudo apt install virtualbox-7.0

Install VirtualBox Extension Pack for VirtualBox 7

Download VirtualBox 7.x extension pack and install;

wget -P /tmp https://download.virtualbox.org/virtualbox/7.0.2/Oracle_VM_VirtualBox_Extension_Pack-7.0.2.vbox-extpack

sudo vboxmanage extpack install --replace /tmp/Oracle_VM_VirtualBox_Extension_Pack-7.0.2.vbox-extpack

Launch VirtualBox 7.x on Ubuntu/Debian

Anda sekarang dapat menjalankan VirtualBox 7.x;

Contoh keluaran;

7.0.20r163906

Demikian pula, menjalankan manajer VirtualBox dan navigasikan ke  Help > About VirtualBox  untuk memeriksa versinya.

 Dan begitulah mudahnya mengupgrade VirtualBox 6.x ke VirtualBox 7.x di Ubuntu.


Sunday, February 11, 2024

Install Driver Wifi Linux Mint 21.3 di Axioo My Book 14 E


Setelah lama tidak mengulik Linux, tadi malam saya kembali merambah dunia Linux dengan mencoba Linux Mint. Saya memutuskan untuk mengunduh versi terbaru, yaitu Linux Mint 21.3, dan baru sempat menginstalnya pagi ini setelah proses pengunduhan semalam. Namun, setelah instalasi selesai, saya mengalami kendala yang cukup mengganggu. Saat mencoba mengaktifkan koneksi wifi, perangkat tidak mendeteksinya sama sekali. Kondisi ini menjadi masalah serius karena saya tidak memiliki akses internet melalui kabel, sehingga tidak bisa langsung melakukan pembaruan sistem menggunakan perintah "sudo apt-get" atau "update".

Hal ini sebernanya saya buat untuk pengingat dan sebagai catatan saya dan jika ingin teman-teman ingin mencoba silahkan mengikuti langkah-langkahnya.

Berikut langkah-langkah install nya 

  1. Dengan menggunakan laptop/komputer lain Donwload file Realtek 8723DU Wireless dan letakakan file tersebut sementera di Flasdisk kemudian pindahakan ke Folder Download pada laptop Linux mint yang baru kita install
  2. Ektrak file tersebut dengan perintah unzip namafile
  3.  Lanjut dengan perintah 

        cd rtl8723du

        make

        sudo make install

Dan terakhir restart laptop nya, semoga berhasil

Monday, November 14, 2022

Perbaiki Dual Boot Windows dan Ubuntu


Cara untuk meperbaiki dual boot yang tidak bekerja di Windows 10 UEFI. Yang mana pada saat startup tampilan pilihan os antara Ubuntu dan Windows menghilang, berikut adalah cara memperbaiknya baik ketika berada di OS Windows atau Ubuntu :


Ketikakan perintah berikut di Command promt windows dengan menjalakan As Administrator  dengan konfigurasi sebagi berikut. 


    1. Setup Ubuntu GRUB EFI to boot at boot manager:


       bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi 


    2. Setup Kali Linux GRUB EFI to boot at boot manager: 


  bcdedit /set {bootmgr} path \EFI\kali\grubx64.efi

Jika kita berada di OS Ubuntu dengan multi Hard Drive untuk memperbaiki dengan perintah sebagi berikut :



    1. Untuk memecahkan masalah Grub (harus melewati terminal)
          sudo grub-install /dev/sda
          sudo update-grub2
          reboot


    2. Command to install rEFInd: (harus melewati terminal) 


          sudo add-apt-repository ppa:rodsmith/refind && sudo apt update && sudo apt         install refind && sudo refind-mkdefault

Auto Mount Drive di Ubuntu Server 22.04 Saat Startup

Saat kita menyambungkan usb atau hardisk ekternal tidak secara default akan di baca oleh Linux OS (or Ubuntu Server) saat startup. Kita dapat menempelkan atau  mount mua dengan sangant mudah dengan menggunakan perintah mount dengan cara kita tidak perlu setiap kali start up me mount nya di terminal tetapi secara automatis ter enable saat startup. Jadi kita tidak perlu me mount drive lagi setelahr restart atau login ke Linux OS. Ini adalah tahapan auto mount drive saat startup.

 

1. Membuat Mount Point

Pertama kita perlu membuat suatu directori untuk tempat memempelkan/ titik tempel dari drive kita.

   sudo mkdir /media/USB1

 

2. Mendakat Drive UUID dan Type

Sekarang, kita memerlukan UUID dan tipe file system. Informasi ini kita butuhkan untuk melangkah ke tahap berikutnya, jadi kita  cari UUID drive dengan mengetikan perintah - 

 lsblk -o NAME,FSTYPE,UUID,MOUNTPOINTS

 atau

 lsblk -o NAME,FSTYPE,UUID

Tahap ini akan menghasilkan sesuatu kurang lebih seperti ini, yang mana kita butuhkan. Disini kita dapat mengetahui, sd2 is type exfat dan mount point. Jadi, kita memerlukan mount sda2 ini  /media/USB1. Yang mana UUID untuk ini adalah 632D-7154 and File System Type is exfat. Jadi, Copy UUID dan File System Type dari disk.

NAME   FSTYPE   UUID                                 MOUNTPOINTS
sda                                                  
├─sda1 vfat     67E3-17ED                            
└─sda2 exfat    632D-7155
sdb                                                  
├─sdb1 vfat     D7E2-9D99                            /boot/firmware
└─sdb2 ext4     b09bb4c8-de4d-4ce6-a93f-30c4c9241a60 /

3. Edit fstab

Untuk meng edit the fstab file jalalkan perintah berikut (catatan saya menggunakan nano disini namun terserah kebiasana anda menggunakan editor yang di sukai)

  sudo nano /etc/fstab

Anda akan melihat sesuatu seperti ini lebih kurangnya -

LABEL=writable  /       ext4    discard,errors=remount-ro       0 1
LABEL=system-boot       /boot/firmware  vfat    defaults        0       1

Disini kita hanya menambahkan baris perintah untuk drive kita, dengan format lebih kurang seperti berikut -

<file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=<UUID> <PATH_TO_MOUNT> <DRIVE_TYPE>  defaults        0       0
Jadi, ini adalah tambahan barinya untuk drive kita 
# USB1
UUID=632D-7155 /media/USB1   exfat    defaults        0       0

4. Test fstab

Sekarang kita perlu mencoba fstab sebelum reboot karena jikainvalid fstab tidak dapat terbaca disk. Jadi, akan lebih baik dengan menjalakan tes terlebih dahulu, dengan mengikuti perintah berikut untuk mengetahu ada peringatan atau masih adar error. Jangan reboot Ubuntu Server / Linux OS jika masih terdapat errors atau warnings.

  sudo findmnt --verify

5. Restart Ubuntu Server / Linux OS

Jika tahap di atas tidak terdapat error maka anda dapat melangkah ke tahap selanjutnya dengan me restart Ubuntu Server / Linux OS dengan perintah berikut -

 sudo reboot

6. Test Mount Point

Jalankan perintah seperti tahap 2 untuk mengecek drive kita apakah drive sudah ter mount.

 lsblk -o NAME,FSTYPE,UUID,MOUNTPOINTS

 atau

 lsblk -o NAME,FSTYPE,UUID

Hasilnya lebih kurang seperti ini

NAME   FSTYPE   UUID                                 MOUNTPOINTS
sda                                                  
├─sda1 vfat     67E3-17ED                            
└─sda2 exfat    632D-7155                            /media/USB1
sdb                                                  
├─sdb1 vfat     D7E2-9D99                            /boot/firmware
└─sdb2 ext4     b09bb4c8-de4d-4ce6-a93f-30c4c9241a60 / 
Here you can see, sda2 is now mounted to /media/USB1. 

Disini Anda dapat melihat, sda2 sudah termount di

/media/USB1

Saturday, February 12, 2022

APLIKASI PERSURATAN ( E-Persuratan versi 2.6 )


E-Persuratan hadir untuk membantu kebutuhan persuratan di kantor anda, mulai dari proses pencatatan surat masuk, surat keluar, pendistribusian surat (disposisi), hingga proses pencarian yang sangat mudah.


Dengan fitur yang telah disesuiakan dengan kebutuhan instansi maupun kantor swasta akan sangat membantu manajemen dan pengelolaan surat-surat yang sebelumnya dikelola secara manual menjadi secara digital.


Perpaduan logo surat digital dan cloud storage bermakna aplikasi E-Persuratan ini digunakan untuk membantu persuratan digital dan tanpa instalasi, dengan menggunakan penyimpanan terpusat dan untuk mengaksesnya dibutuhkan koneksi internet ataupun hanya secara Local Area Networtk (LAN).


Aplikasi E-Persuratan ini selain bekerja di lingkup kerja internet tentunya harus ada koneksi internet, juga bisa dilingkup intranet, tinggal menyesuaikan dengan kebutuhan ditempat anda.


Berikut ini fitur utama aplikasi E-Persuratan.


  1. Manajemen Surat Masuk

  2. Manajemen Surat Keluar

  3. Disposisi Surat

  4. Notifikasi Surat masuk dan Disposisi surat

  5. Manajemen User

  6. Report (Laporan surat masuk, surat keluar, disposisi surat dan arsip berkas / dokumen)

  7. Manajemen Arsip Berkas (untuk mengelola arsip berkas selain surat)

  8. Tracking surat (untuk melihat status / progres surat)


MENGAPA E-Persuratan ?

  1. Persuratan menjadi

  2. Lebih Efektif & Efisien

  3. Pencarian Lebih Mudah

Pergunakan semua kolom pencarian dan surat anda akan lebih spesifik ditemukan, karena E-Persuratan memiliki lebih dari satu kolom kata kunci pencarian

  1. Pelaporan Tepat dan Akurat

Kemudahan melaporkan persuratan untuk pimpinan, dengan SIPAS kami menyajikan pelaporan data secara grafik dan tabel

  1. Distribusi Lebih Cepat

Pendistribusian surat atau Disposisi langsung dilakukan melalui aplikasi tanpa perlu pengantar maupun buku agenda Disposisi

  1. Data Terpusat dan Paperless

Semua dokumen dan data persuratan anda sudah tersimpan aman dan terpusat di aplikasi

 

 


Tuesday, July 20, 2021

Google Drive menggunakan Online Gnome di Xfce, MATE, dan lainnya

Google Drive mempunya kelebihan dan kekurangan tersendiri. Dalam website profile aplikasi ini, setidaknya mereka menawarkan 4 kelebihan.

 1. Jumlah Memori Penyimpanan Cukup Besar (15 GB)

Dalam versi free, GDrive memberikan memori sebesar 15 GB yang dapat kita gunakan untuk menyimpan data-data. Kita hanya perlu melakukan upgrade akun jika menginginkan memori penyimpanan tambahan.

 2. Dapat Menyimpat Berbagai Data (Keep Any File)

Seperti dijabarkan sebelumnya, kita dapat menyimpan data dalam bentuk apapun ke GDrive, entah itu teks dokumen, gambar, audio dan file file lain.

3. Dapat Berbagi File (Share What you Want)

File-file yang tersimpan dapat kita bagikan pada teman-teman yang kita kehendaki, baik melalui whatsapp, facebook, messenger, easyShare ataupun pesan teks sms.

4. Data Tersimpan Aman (Safe and Secure)

Rasanya kita tidak perlu meragukan developer-developer yang bekerja di Google company. tentu mereka orang-orang terbaik yang memiliki kehandalan dalam hal teknologi dan keamanannya. Walaupun dalam dunia IT ada filosofi “tidak ada data yang aman”.

Berikut Cara Memasang Google Drive di Linux Mint

Memasang Google Drive di lingkungan desktop seperti Xfce, MATE, dan lainnya dapat menggunakan Gnome Online Accounts / Gnome Settings (Control Center). Sebelumnya anda perlu menginstal paket gnome-control-center dan gnome-online-accounts.

Buka terminal dan ketik perintah ini untuk menginstalnya:

 sudo apt install gnome-control-center gnome-online-accounts

Setelah menjalankan perintah diatas pengaturan Gnome tersembunyi dan tidak muncul di menu pada lingkungan desktop non-Gnome. Jadi jika anda menggunakan Xfce, MATE atau lingkungan desktop lain, tidak akan terlihat Pengaturan Gnome atau Pusat Kontrol Gnome di menu Anda.

Untuk menjalankannya, kita perlu menggunakan terminal dan menambahkan XDG_CURRENT_DESKTOP = GNOME sebelum dapat dieksekusi, seperti ini:

 XDG_CURRENT_DESKTOP=GNOME gnome-control-center

 Sekarang masuk ke Akun Online, klik Google dan tambahkan akun Google anda:

 
 
 

Akun Gnome Online di Linux Mint 20 MATE

Segera setelah menambahkan akun Google Anda ke Akun Online, anda akan melihat folder Google Drive Anda di file browser


 

Google Drive dipasang di Caja (pengelola file MATE default) menggunakan Gnome Online Accounts / Linux Mint 20 MATE
 

Wednesday, May 19, 2021

Cara Mengganti UUID dari Partitisi di Linux Filesystem

Ini adalah artikel singkat bagaimana cara mengganti UUID dari partisi di Linux system dengan sekenario  ketika Anda mempunyai dua UUID yang sama.

Kejadian ini sangat jarang terjadi namun tetap saja mungkin terjadi tidak ada salahnya kita mengetahui caranya.


Apa itu UUID

UUID adalah Universally Unique IDentifier dari partisi, ini adalah ID yang digunakan untuk membedakan antar partisi


Bagaimana mengetahui UUID dari File Sistem kita

Untuk mengetahui UUID di partisi dapat menggunakan peritah dibawah ini :

# blkid|grep UUID


Bagaimna Cara Untuk Mengganti UUID dari File System

Mengganti UUID dari filesistem sangat mudah dengan melakukan tune2fs,  untuk itulah toturial ini dibuat saya akan mencoba mengganti UUID di partisi yang kedua   /dev/sdb1   milik Anda mungkin berbeda, ini memastikan Anda mengubah UUID dari sistem file yang diinginkan.

Partisi harus dilepas sebelum menerapkan UUID baru:


# umount /dev/sdb1
# tune2fs -U random /dev/sdb1 
# blkid | grep sdb1
 

UUID telah berhasil diubah. Sekarang Anda dapat memasang kembali sistem file.


# mount /dev/sdb1

Anda juga dapat memperbarui / etc / fstab Anda jika perlu, dengan UUID baru.


Kesimpulan


Ini adalah tutorial singkat bagaimana mengubah UUID partisi Linux. Skenario untuk menggunakan ini sangat jarang dan kemungkinan besar Anda akan menggunakan ini di komputer lokal.


Tuesday, May 18, 2021

Bagaimana Memonitor Port TCP dan UDP secara Real-time

Istilah perangkat lunak, terutama pada tingkat sistem operasi, port adalah konstruksi logis yang mengidentifikasi proses / aplikasi tertentu atau jenis layanan jaringan dan setiap layanan jaringan yang berjalan pada sistem Opersasi Linux menggunakan protokol tertentu (yang paling umum adalah TCP (Transmission Control Protocol) dan UDP (User Datagram Protocol)) dan nomor port untuk berkomunikasi dengan proses atau layanan lainnya.

Dalam artikel singkat ini, saya akan menunjukkan kepada Anda cara membuat daftar dan memantau atau menonton port TCP dan UDP yang berjalan secara real-time dengan ringkasan soket pada sistem Operasi Linux.

Perintah untuk melihat daftar Semua Port Terbuka di Linux, untuk melihat daftar semua port terbuka di sistem Linux, Anda dapat menggunakan perintah netstat atau utilitas ss sebagai berikut.

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

Penting juga untuk menyebutkan bahwa perintah netstat tidak digunakan lagi dan sebagai gantinya perintah ss telah digunakan untuk menampilkan statistik jaringan yang lebih rinci.


Dari output perintah di atas, kolom Status menunjukkan apakah port dalam status mendengarkan (LISTEN) atau tidak.

Pada perintah di atas, di ikuti dengan :

    -t - mengaktifkan daftar port TCP.
    -u - mengaktifkan daftar port UDP.
    -l - hanya mencetak soket listening.
    -n - menunjukkan nomor port.
    -p - menunjukkan proses / nama program.

Memonitor Port Terbuka TCP dan UDP secara Real-Time

Namun, untuk melihat port TCP dan UDP secara real-time, Anda dapat menjalankan alat netstat atau ss dengan utilitas jam tangan seperti yang ditunjukkan.




Monday, April 12, 2021

Laravel 8 Jetstream Livewire CRUD (contoh)

Hai Para Developer,

Kali ini, saya akan menunjukkan kepada Anda livewire crud dengan jetstream di aplikasi laravel 8. Kita akan mempelajari contoh aplikasi laravel 8 jetstream livewire yang masih fress. Saya ingin berbagi dengan Anda bagaimana cara melakukan live-opeartion live dengan jetstream di aplikasi laravel 8.

Artikel ini akan memberi Anda contoh yang mudah dan sederhana dari contoh aplikasi laravel 8 jetstream livewire. Dalam contoh ini saya akan menunjukkan tahapan demi tahapan aplikasi laravel 8 livewire crud dengan modal tailwind css.

Laravel 8 jetstream dirancang oleh Tailwind CSS dan mereka menyediakan auth menggunakan livewire dan Inertia. saya akan menunjukkan cara membuat modul dengan livewire di auth jetstream default di laravel 8.

Di sini saya akan memberi Anda contoh lengkap untuk contoh aplikasi laravel 8 jetstream livewire. Jadi mari kita ikuti langkah demi langkah berikut:

 

Step 1 : Install Laravel 8 App

Pada langkah pertama, kita perlu mendapatkan aplikasi versi laravel baru menggunakan perintah di bawah ini. Jadi mari kita buka terminal dan jalankan perintah di bawah ini.

composer create-project --prefer-dist laravel/laravel blog

Step 2 : Create Jetstream Auth with Livewire:

Anda dapat mengikuti perintah di bawah ini yang diketikan pada terminak seperti bawah ini:

composer require laravel/jetstream

Berikutnya kita membuat authentifikasi dengan perintah yang mana ini merupakan dasar untuk login, register dan email verification, dan anda juga dapat menambahkan opsi kolaborasi dengan menambahkan parameter team. Berikut perintahnya :

php artisan jetstream:install livewire

Dan kemudian kita sertakan node js paket :

npm install

Dilajutkan dengan menjalakan node js :

npm run dev

Sekarang kita memerlukan migrasi dengan perintah sebagai berikut :

php artisan migrate

Step 3 : Create Migration and Model

Pada langkah ini, kita harus membuat migrasi untuk tabel blog menggunakan perintah di bawah artisan. Jadi mari kita buka terminal dan jalankan perintah di bawah ini:

php artisan make:migration create_blogs_table

database/migrations/2021_04_12_092627_create_blogs_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBlogsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('blogs', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->timestamps();

});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('blogs');
}
}

Kemudian jalankan perintah berikut :

php artisan migrate

Dilanjutkan  lagi dengan membuat model dengan perintah ini :

php artisan make:model Blog

App/Models/Blog.php

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Blog extends Model
{
use HasFactory;

protected $fillable = [
'title', 'body',
];

Step 4 : Create Blog Component

Pada langkah ini, kita harus membuat komponen livewire blog menggunakan perintah di bawah ini. Jadi mari kita buka terminal dan jalankan perintah bello:

php artisan make:livewire blogs

Sekarang mereka membuat dua file di dengan path:

app/Http/Livewire/Blogs.php

resources/views/livewire/blogs.blade.php

Step 5 : Update Component File

Di sini Kami akan menulis metode render (), create (), openModal (), closeModal (), resetInputFields (), store (), edit () dan delete () untuk aplikasi crud kita.

Jadi, mari, perbarui file berikut.

app/Http/Livewire/Blogs.php

<?php
namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Blog;

class Blogs extends Component
{
public $blogs, $title, $body, $blog_id;
public $isOpen = 0;


public function render()
{
$this->blogs = Blog::all();
return view('livewire.blogs');
}

public function create()

{
$this->resetInputFields();
$this->openModal();
}


/**
* The attributes that are mass assignable.
*
* @var array
*/

public function openModal()

{
$this->isOpen = true;
}


/**
* The attributes that are mass assignable.
*
* @var array
*/

public function closeModal()

{
$this->isOpen = false;
}



/**
* The attributes that are mass assignable.
*
* @var array
*/

private function resetInputFields(){

$this->title = '';
$this->body = '';
$this->blog_id = '';
}



/**

* The attributes that are mass assignable.
*
* @var array
*/

public function store()

{

$this->validate([

'title' => 'required',
'body' => 'required',
]);



Blog::updateOrCreate(['id' => $this->blog_id], [

'title' => $this->title,
'body' => $this->body
]);



session()->flash('message',

$this->blog_id ? 'Blog Updated Successfully.' : 'Blog Created Successfully.');
$this->closeModal();
$this->resetInputFields();
}

/**

* The attributes that are mass assignable.

*

* @var array

*/

public function edit($id)

{

$blog = Blog::findOrFail($id);
$this->blog_id = $id;
$this->title = $blog->title;
$this->body = $blog->body;
$this->openModal();

}



/**

* The attributes that are mass assignable.

*

* @var array

*/

public function delete($id)

{

Blog::find($id)->delete();
session()->flash('message', 'Blog Deleted Successfully.');

}

}
 

Step 6 : Update Blade Files

Di sini, kira akan memperbarui daftar file berikut untuk halaman create page, membuat halaman.Jadi, mari, perbarui file berikut.

resource/views/livewire/blogs.blade.php

<x-slot name="header"><h2 class="font-semibold text-xl text-gray-800 leading-tight">
Manage blogs (Laravel 8 Jetstream Livewire CRUD App Example - ikhwansaputera.blogspot.com)
</h2>
</x-slot>

<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-xl sm:rounded-lg px-4 py-4">
@if (session()->has('message'))
<div class="bg-teal-100 border-t-4 border-teal-500 rounded-b text-teal-900 px-4 py-3 shadow-md my-3" role="alert">
<div class="flex">

<div>
<p class="text-sm">{{ session('message') }}</p>
</div>
</div>
</div>
@endif
<button wire:click="create()" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded my-3">Create New Blog</button>
@if($isOpen)
@include('livewire.create')
@endif
<table class="table-fixed w-full">

<thead>
<tr class="bg-gray-100">
<th class="px-4 py-2 w-20">No.</th>
<th class="px-4 py-2">Title</th>
<th class="px-4 py-2">Body</th>
<th class="px-4 py-2">Action</th>
</tr>
</thead>
<tbody>
@foreach($blogs as $blog)
<tr>
<td class="border px-4 py-2">{{ $blog->id }}</td>
<td class="border px-4 py-2">{{ $blog->title }}</td>
<td class="border px-4 py-2">{{ $blog->body }}</td>
<td class="border px-4 py-2">
<button wire:click="edit({{ $blog->id }})" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Edit</button>
<button wire:click="delete({{ $blog->id }})" class="bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded">Delete</button>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>

resources/views/livewire/create.blade.php

 <div class="fixed z-10 inset-0 overflow-y-auto ease-out duration-400"><div class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
<div class="fixed inset-0 transition-opacity">
<div class="absolute inset-0 bg-gray-500 opacity-75"></div>
</div>
<!-- This element is to trick the browser into centering the modal contents. -->

<span class="hidden sm:inline-block sm:align-middle sm:h-screen"></span>?

<div class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" role="dialog" aria-modal="true" aria-labelledby="modal-headline">
<form>
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">

<div class="">
<div class="mb-4">
<label for="exampleFormControlInput1" class="block text-gray-700 text-sm font-bold mb-2">Title:</label>

<input type="text" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" id="exampleFormControlInput1" placeholder="Enter Title" wire:model="title">

@error('title') <span class="text-red-500">{{ $message }}</span>@enderror

</div>

<div class="mb-4">
<label for="exampleFormControlInput2" class="block text-gray-700 text-sm font-bold mb-2">Body:</label>

<textarea class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" id="exampleFormControlInput2" wire:model="body" placeholder="Enter Body"></textarea>

@error('body') <span class="text-red-500">{{ $message }}</span>@enderror

</div>
</div>
</div>

<div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">

<span class="flex w-full rounded-md shadow-sm sm:ml-3 sm:w-auto">
<button wire:click.prevent="store()" type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-green-600 text-base leading-6 font-medium text-white shadow-sm hover:bg-green-500 focus:outline-none focus:border-green-700 focus:shadow-outline-green transition ease-in-out duration-150 sm:text-sm sm:leading-5">

Save
</button>
</span>
<span class="mt-3 flex w-full rounded-md shadow-sm sm:mt-0 sm:w-auto">
<button wire:click="closeModal()" type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 px-4 py-2 bg-white text-base leading-6 font-medium text-gray-700 shadow-sm hover:text-gray-500 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue transition ease-in-out duration-150 sm:text-sm sm:leading-5">
Cancel

</button>
</span>
</div>
</form>
</div>
</div>
</div>

Step 7 : Add Route

Pada langkah ini, kita akan membuat rute untuk jetstream crud dengan livewire

routes/web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Livewire\Blogs;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
return view('welcome');
});

Route::get('blog', Blogs::class);

Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
 

Sekarang kita siap untuk menjalankan contoh aplikasi laravel 8 jetstream livewire crud jadi jalankan perintah di bawah ini untuk menjalankan dengan cepat dan mudah :

php artisan serve

Sekang Anda dapat membuka browser dengan alamat :

localhost:8000/blog

 Perlu saya ingatkan terlebih dahulu Anda register agar bisa menggunakan seperti gambar dibawah ini




 

 


Friday, April 09, 2021

Hal-Hal Yang Harus di Perhatikan Keamanan PHP Untuk Admin Sys

PHP adalah bahasa skrip sisi server sumber terbuka, dan digunakan secara luas. Server web Apache / Nginx / Lighttpd menyediakan akses ke file dan konten melalui protokol HTTP ATAU HTTPS. Bahasa skrip sisi server yang salah dikonfigurasi dapat menimbulkan berbagai macam masalah. Jadi, PHP harus digunakan dengan hati-hati. Berikut adalah dua puluh lima praktik terbaik keamanan php untuk sysadmin Linux dan Unix untuk mengkonfigurasi PHP dengan aman.

 

Praktik terbaik keamanan PHP

Contoh kiat keamanan untuk kesiapan PHP

  • DocumentRoot: / var / www / html
  • Server Web default: Apache (Anda dapat menggunakan Lighttpd atau Nginx sebagai ganti Apache)
  • File konfigurasi PHP default: /etc/php.ini atau /etc/php/7.0/fpm/php.ini
  • Direktori konfigurasi ekstensi PHP default: /etc/php.d/ ATAU /etc/php/7.0/fpm/conf.d/
  • Contoh file konfigurasi keamanan php kami: /etc/php.d/security.ini ATAU /etc/php/7.0/fpm/conf.d/99-security.conf (Anda perlu membuat file ini menggunakan editor teks)
  • Sistem operasi: RHEL / CentOS / Fedora Linux (instruksi harus bekerja dengan distribusi Linux lain seperti Debian / Ubuntu atau sistem operasi serupa Unix seperti OpenBSD / FreeBSD / HP-UX ).
  • Port TCP / UDP server PHP default: none 

Mari kita lihat beberapa teknis dilapangan untuk keamanan php.

1. Kenali Musuh Anda

Aplikasi berbasis PHP dapat menghadapi berbagai jenis serangan. Saya telah memperhatikan berbagai jenis serangan:

  1. XSS - Skrip lintas situs adalah kerentanan dalam aplikasi web php, yang dapat dimanfaatkan oleh penyerang untuk mencuri informasi pengguna. Anda dapat mengkonfigurasi Apache dan menulis skrip PHP yang lebih aman (memvalidasi semua input pengguna) untuk menghindari serangan xss.
  2. Injeksi SQL - Ini adalah kerentanan dalam lapisan database aplikasi php. Ketika input pengguna disaring dengan tidak benar, pernyataan SQL apa pun dapat dijalankan oleh aplikasi. Anda dapat mengkonfigurasi Apache dan menulis kode aman (memvalidasi dan meng-escape semua input pengguna) untuk menghindari serangan injeksi SQL. Praktik umum di PHP adalah melarikan diri parameter menggunakan fungsi yang disebut mysql_real_escape_string () sebelum mengirim kueri SQL.
    Spoofing
  3. Unggah file - Ini memungkinkan pengunjung Anda untuk menempatkan file (mengunggah file) di server Anda. Hal ini dapat mengakibatkan berbagai masalah keamanan seperti menghapus file Anda, menghapus database, mendapatkan detail pengguna, dan banyak lagi. Anda dapat menonaktifkan pengunggahan file menggunakan php atau menulis kode aman (seperti memvalidasi input pengguna dan hanya mengizinkan jenis file gambar seperti png atau gif).
  4. Termasuk file lokal dan jarak jauh - Penyerang dapat membuka file dari server jarak jauh dan menjalankan kode PHP apa pun. Ini memungkinkan mereka untuk mengupload file, menghapus file dan menginstal backdoors. Anda dapat mengkonfigurasi php untuk menonaktifkan eksekusi file jarak jauh.
  5. eval () - Evaluasi string sebagai kode PHP. Ini sering digunakan oleh penyerang untuk menyembunyikan kode dan alat mereka di server itu sendiri. Anda dapat mengkonfigurasi php untuk menonaktifkan eval ().
  6. Sea-surf Attack (Cross-site request forgery - CSRF) - Serangan ini memaksa pengguna akhir untuk melakukan tindakan yang tidak diinginkan pada aplikasi web di mana dia saat ini diautentikasi. Eksploitasi CSRF yang berhasil dapat membahayakan data dan operasi pengguna akhir jika digunakan oleh pengguna biasa. Jika pengguna akhir yang ditargetkan adalah akun administrator, ini dapat membahayakan seluruh aplikasi web.

    2. Temukan Modul PHP Built-in

    Untuk melihat kumpulan modul PHP yang dikompilasi, ketik perintah berikut:
    # php -m
    Contoh keluaran:
    [Modul PHP]
    apc
    bcmath
    bz2
    kalender
    Inti
    ctype
    keriting
    tanggal
    dom
    ereg
    exif
    fileinfo
    Saring
    ftp
    gd
    gettext
    gmp
    hash
    iconv
    imap
    json
    libxml
    mbstring.dll
    memcache
    mysql.dll
    mysqli.dll
    openssl
    pcntl
    pcre
    PDO
    pdo_mysql
    pdo_sqlite
    Phar
    readline
    Refleksi
    sidang
    shmop
    SimpleXML
    soket
    SPL
    sqlite3
    standar
    suhosin
    tokenizer
    wddx
    xml
    xmlreader
    xmlrpc
    xmlwriter
    xsl
    zip
    zlib
    
    [Modul Zend]
    Suhosin
    
    Saya merekomendasikan agar Anda menggunakan PHP dengan modul yang dikurangi untuk kinerja dan keamanan. Misalnya, Anda dapat menonaktifkan modul sqlite3 dengan menghapus (menghapus) file konfigurasi , ATAU mengganti nama (memindahkan) file bernama /etc/php.d/sqlite3.ini sebagai berikut: ATAU Modul terkompilasi lainnya hanya dapat dihapus dengan menginstal ulang PHP dengan konfigurasi yang dikurangi. Anda dapat mengunduh kode sumber php dari php.net dan mengkompilasinya sebagai berikut dengan dukungan GD, fastcgi, dan MySQL:
    # rm /etc/php.d/sqlite3.ini

    # mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disable

     

    3. Batasi Kebocoran Informasi PHP

    Untuk membatasi kebocoran informasi PHP nonaktifkan expose_php. Edit /etc/php.d/secutity.ini dan atur direktif berikut:

    expose_php=Off

    Saat diaktifkan, expose_php melaporkan kepada dunia bahwa PHP diinstal pada server, yang menyertakan versi PHP dalam header HTTP (misalnya,
    X-Powered-By: PHP / 5.3.3). Panduan logo PHP (lihat contoh ) juga ditampilkan, sehingga menambahkannya ke URL situs berkemampuan PHP akan menampilkan logo yang sesuai. Ketika expose_php diaktifkan, Anda dapat melihat versi php menggunakan perintah berikut:
     

     

    4. Minimalkan Modul PHP yang Dapat Dimuat (Ekstensi Dinamis)

    PHP mendukung "Ekstensi Dinamis". Secara default, RHEL memuat semua modul ekstensi yang ditemukan di direktori /etc/php.d/. Untuk mengaktifkan atau menonaktifkan modul tertentu, cukup temukan file konfigurasi di direktori /etc/php.d/ dan beri komentar nama modul. Anda juga dapat mengganti nama atau menghapus file konfigurasi modul. Untuk kinerja dan keamanan PHP terbaik, Anda sebaiknya hanya mengaktifkan ekstensi yang dibutuhkan aplikasi web Anda. Misalnya, untuk menonaktifkan ekstensi gd, ketik perintah berikut: Untuk mengaktifkan modul php bernama gd, masukkan:
     

    5. Catat Semua Kesalahan PHP

    Jangan tampilkan pesan kesalahan PHP ke semua pengunjung situs. Edit /etc/php.d/security.ini dan atur direktif berikut:

     

    6. Larang Mengupload File

    Edit /etc/php.d/security.ini dan setel perintah berikut untuk menonaktifkan pengunggahan file demi alasan keamanan:

     

    7. Matikan Eksekusi Kode Jarak Jauh

    Jika diaktifkan, allow_url_fopen memungkinkan fungsi file PHP - seperti file_get_contents () dan pernyataan include dan require - dapat mengambil data dari lokasi jarak jauh, seperti FTP atau situs web.

    The allow_url_fopen pilihan memungkinkan file PHP ini fungsi - seperti file_get_contents () dan termasuk dan memerlukan pernyataan - dapat mengambil data dari lokasi terpencil menggunakan ftp atau http protokol. Pemrogram sering kali melupakan ini dan tidak melakukan pemfilteran input yang tepat saat meneruskan data yang disediakan pengguna ke fungsi ini, sehingga menyebabkan kerentanan injeksi kode . Sejumlah besar kerentanan injeksi kode yang dilaporkan dalam aplikasi web berbasis PHP disebabkan oleh kombinasi pengaktifan allow_url_fopen dan pemfilteran input yang buruk. Edit /etc/php.d/security.ini dan atur direktif berikut:

     

    8. Aktifkan Mode Aman SQL

    Edit /etc/php.d/security.ini dan atur direktif berikut:

     

     

    Jika ternyata On, mysql_connect () dan mysql_pconnect () mengabaikan argumen dilewatkan ke mereka. Harap dicatat bahwa Anda mungkin harus membuat beberapa perubahan pada kode Anda. Aplikasi pihak ketiga dan open source seperti WordPress, dan lainnya mungkin tidak berfungsi sama sekali ketika sql.safe_mode diaktifkan. Saya juga menyarankan Anda untuk mematikan magic_quotes_gpc untuk semua instalasi php 5.3.x karena pemfilterannya tidak efektif dan tidak terlalu kuat. mysql_escape_string () dan fungsi pemfilteran kustom melayani tujuan yang lebih baik:

     

    9. Kontrol Ukuran POST

    Metode permintaan HTTP POST digunakan ketika klien (browser atau pengguna) perlu mengirim data ke server web Apache sebagai bagian dari permintaan, seperti saat mengunggah file atau mengirimkan formulir yang telah diisi. Penyerang mungkin mencoba mengirim permintaan POST yang sangat besar untuk memakan sumber daya sistem Anda. Anda dapat membatasi permintaan POST ukuran maksimum yang akan diproses PHP. Edit /etc/php.d/security.ini dan atur direktif berikut:

     

     

    1K menetapkan ukuran maksimal data posting yang diizinkan oleh aplikasi php. Pengaturan ini juga mempengaruhi upload file. Untuk mengupload file besar, nilai ini harus lebih besar dari upload_max_filesize. Saya juga menyarankan agar Anda membatasi metode yang tersedia menggunakan server web Apache. Edit, httpd.conf dan atur petunjuk berikut untuk DocumentRoot / var / www / html:

     

    10. Kontrol Sumber Daya (Kontrol DoS)

    Anda dapat mengatur waktu eksekusi maksimum setiap skrip php , dalam hitungan detik. Opsi rekomendasi lainnya adalah menyetel jumlah waktu maksimum yang mungkin dihabiskan setiap skrip untuk mengurai data permintaan, dan jumlah memori maksimum yang dapat digunakan skrip. Edit /etc/php.d/security.ini dan atur arahan berikut:

     

     

    11. Install Suhosin Advanced Protection System for PHP

    Suhosin adalah sistem perlindungan lanjutan untuk instalasi PHP. Ini dirancang untuk melindungi server dan pengguna dari kekurangan yang diketahui dan tidak diketahui dalam aplikasi PHP dan inti PHP. Suhosin hadir dalam dua bagian independen, yang dapat digunakan secara terpisah atau dikombinasikan. Bagian pertama adalah patch kecil terhadap inti PHP, yang mengimplementasikan beberapa perlindungan tingkat rendah terhadap bufferoverflows atau kerentanan format string dan bagian kedua adalah ekstensi PHP yang kuat yang mengimplementasikan semua perlindungan lainnya.


    12. Menonaktifkan Fungsi PHP Berbahaya

    PHP memiliki banyak fungsi yang dapat digunakan untuk memecahkan server Anda jika tidak digunakan dengan benar. Anda dapat mengatur daftar fungsi di /etc/php.d/security.ini menggunakan direktif disable_functions :

     

    13. PHP Fastcgi / CGI – cgi.force_redirect Directive

    PHP bekerja dengan FastCGI. Fascgi mengurangi jejak memori server web Anda, tetapi tetap memberi Anda kecepatan dan kekuatan dari seluruh bahasa PHP. Anda dapat mengkonfigurasi Apache2 + PHP + FastCGI atau cgi seperti yang dijelaskan di sini . Petunjuk konfigurasi cgi.force_redirect mencegah siapa pun memanggil PHP secara langsung dengan URL seperti http://www.cyberciti.biz/cgi-bin/php/hackerdir/backdoor.php. Aktifkan cgi.force_redirect untuk alasan keamanan. Edit /etc/php.d/security.ini dan atur direktif berikut:

     

    14. Pengguna PHP dan ID Grup

    mod_fastcgi adalah modul cgi untuk server web Apache. Itu dapat terhubung ke server FASTCGI eksternal. Anda perlu memastikan php dijalankan sebagai pengguna non-root. Jika PHP dijalankan sebagai root atau UID di bawah 100, PHP dapat mengakses dan / atau memanipulasi file sistem. Anda harus menjalankan PHP CGI sebagai pengguna non-hak istimewa menggunakan suEXEC atau mod_suPHP Apache . Fitur suEXEC memberikan pengguna Apache kemampuan untuk menjalankan program CGI di bawah ID pengguna yang berbeda dari ID pengguna server web pemanggil. Dalam contoh ini, php-cgi saya berjalan sebagai pengguna phpcgi dan apache berjalan sebagai pengguna apache:

     

    15. Batasi Akses PHP ke Sistem File

    Direktif open_basedir mengatur direktori tempat PHP diizinkan untuk mengakses file menggunakan fungsi seperti fopen (), dan lainnya. Jika file berada di luar jalur yang ditentukan oleh open_basdir, PHP akan menolak untuk membukanya. Anda tidak dapat menggunakan tautan simbolis sebagai solusinya. Misalnya, hanya izinkan akses ke direktori / var / www / html dan bukan ke / var / www, atau / tmp atau / etc:

     

    16. Jalur Sesi

    Dukungan sesi di PHP terdiri dari cara untuk mempertahankan data tertentu di seluruh akses berikutnya. Ini memungkinkan Anda untuk membangun aplikasi yang lebih disesuaikan dan meningkatkan daya tarik situs web Anda. Path ini didefinisikan di file /etc/php.ini dan semua data yang terkait dengan sesi tertentu akan disimpan dalam file di direktori yang ditentukan oleh opsi session.save_path. Standarnya adalah sebagai berikut di bawah RHEL / CentOS / Fedora Linux:

     

     

     

     

    https://www.cyberciti.biz/tips/php-security-best-practices-tutorial.html