Selasa, 02 Juli 2024

LARAVEL-backup

 

Backup Project Laravel-mu dengan Bantuan Package spatie/laravel-backup

https://wahyuivan.medium.com/backup-project-laravel-mu-dengan-bantuan-package-spatie-laravel-backup-a766c0019e88
Image Source: https://badoystudio.com/wp-content/uploads/2023/06/plugin-backup-wordpress.jpg

Halo teman-teman, kembali lagi pada series ngoding Laravel. Okay, kali ini aku bakal ngenalin salah satu package keren dari spatie yang bernama laravel-backup. Package ini dapat mempermudah developer untuk menjalankan proses backup project, baik itu dari sisi source code maupun database dump. Melakukan backup project dan database secara berkala sangat penting untuk memastikan keamanan dan kelangsungan data.

Dengan backup, kalian dapat menghindari kerugian data akibat gangguan seperti kegagalan perangkat keras, serangan malware, atau kesalahan manusia. Selain itu, backup memungkinkan pemulihan cepat setelah insiden, membantu mempertahankan kelancaran operasional dan mengurangi downtime. Backup juga penting untuk kepatuhan terhadap regulasi dan standar industri yang mewajibkan penyimpanan data yang aman dan teratur.

Baik, langsung saja kita mulai dari instalasi package spatie/laravel-backup.

composer require spatie/laravel-backup

Setelah itu, kita akan publish config file dari package yang sudah kita install. Jalankan command di bawah ini.

php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"

Setelah menjalankan command diatas, kalian akan mendapatkan 1 file di folder config yang bernama backup.php, 1 folder vendor di dalam folder lang yang berisikan banyak folder dengan file bahasa masing-masing untuk alih bahasa notifikasi yang akan dikirimkan oleh package ini sesuai action yang ada. Default content dari file backup.phpadalah sebagai berikut.

return [

'backup' => [

/*
* The name of this application. You can use this name to monitor
* the backups.
*/

'name' => env('APP_NAME', 'laravel-backup'),

'source' => [

'files' => [

/*
* The list of directories and files that will be included in the backup.
*/

'include' => [
base_path(),
],

/*
* These directories and files will be excluded from the backup.
*
* Directories used by the backup process will automatically be excluded.
*/

'exclude' => [
base_path('vendor'),
base_path('node_modules'),
],

/*
* Determines if symlinks should be followed.
*/

'follow_links' => false,

/*
* Determines if it should avoid unreadable folders.
*/

'ignore_unreadable_directories' => false,

/*
* This path is used to make directories in resulting zip-file relative
* Set to `null` to include complete absolute path
* Example: base_path()
*/

'relative_path' => null,
],

/*
* The names of the connections to the databases that should be backed up
* MySQL, PostgreSQL, SQLite and Mongo databases are supported.
*
* The content of the database dump may be customized for each connection
* by adding a 'dump' key to the connection settings in config/database.php.
* E.g.
* 'mysql' => [
* ...
* 'dump' => [
* 'excludeTables' => [
* 'table_to_exclude_from_backup',
* 'another_table_to_exclude'
* ]
* ],
* ],
*
* If you are using only InnoDB tables on a MySQL server, you can
* also supply the useSingleTransaction option to avoid table locking.
*
* E.g.
* 'mysql' => [
* ...
* 'dump' => [
* 'useSingleTransaction' => true,
* ],
* ],
*
* For a complete list of available customization options, see https://github.com/spatie/db-dumper
*/

'databases' => [
'mysql',
],
],

/*
* The database dump can be compressed to decrease diskspace usage.
*
* Out of the box Laravel-backup supplies
* Spatie\DbDumper\Compressors\GzipCompressor::class.
*
* You can also create custom compressor. More info on that here:
* https://github.com/spatie/db-dumper#using-compression
*
* If you do not want any compressor at all, set it to null.
*/

'database_dump_compressor' => null,

/*
* The file extension used for the database dump files.
*
* If not specified, the file extension will be .archive for MongoDB and .sql for all other databases
* The file extension should be specified without a leading .
*/

'database_dump_file_extension' => '',

'destination' => [

/*
* The filename prefix used for the backup zip file.
*/

'filename_prefix' => '',

/*
* The disk names on which the backups will be stored.
*/

'disks' => [
'local',
],
],

/*
* The directory where the temporary files will be stored.
*/

'temporary_directory' => storage_path('app/backup-temp'),

/*
* The password to be used for archive encryption.
* Set to `null` to disable encryption.
*/

'password' => env('BACKUP_ARCHIVE_PASSWORD'),

/*
* The encryption algorithm to be used for archive encryption.
* You can set it to `null` or `false` to disable encryption.
*
* When set to 'default', we'll use ZipArchive::EM_AES_256 if it is
* available on your system.
*/

'encryption' => 'default',
],

/*
* You can get notified when specific events occur. Out of the box you can use 'mail' and 'slack'.
* For Slack you need to install laravel/slack-notification-channel.
*
* You can also use your own notification classes, just make sure the class is named after one of
* the `Spatie\Backup\Notifications\Notifications` classes.
*/

'notifications' => [

'notifications' => [
\Spatie\Backup\Notifications\Notifications\BackupHasFailedNotification::class => ['mail'],
\Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFoundNotification::class => ['mail'],
\Spatie\Backup\Notifications\Notifications\CleanupHasFailedNotification::class => ['mail'],
\Spatie\Backup\Notifications\Notifications\BackupWasSuccessfulNotification::class => ['mail'],
\Spatie\Backup\Notifications\Notifications\HealthyBackupWasFoundNotification::class => ['mail'],
\Spatie\Backup\Notifications\Notifications\CleanupWasSuccessfulNotification::class => ['mail'],
],

/*
* Here you can specify the notifiable to which the notifications should be sent. The default
* notifiable will use the variables specified in this config file.
*/

'notifiable' => \Spatie\Backup\Notifications\Notifiable::class,

'mail' => [
'to' => 'your@example.com',

'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
],

'slack' => [
'webhook_url' => '',

/*
* If this is set to null the default channel of the webhook will be used.
*/

'channel' => null,

'username' => null,

'icon' => null,

],

'discord' => [
'webhook_url' => '',

/*
* If this is an empty string, the name field on the webhook will be used.
*/

'username' => '',

/*
* If this is an empty string, the avatar on the webhook will be used.
*/

'avatar_url' => '',
],
],

/*
* Here you can specify which backups should be monitored.
* If a backup does not meet the specified requirements the
* UnHealthyBackupWasFound event will be fired.
*/

'monitor_backups' => [
[
'name' => env('APP_NAME', 'laravel-backup'),
'disks' => ['local'],
'health_checks' => [
\Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1,
\Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000,
],
],

/*
[
'name' => 'name of the second app',
'disks' => ['local', 's3'],
'health_checks' => [
\Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1,
\Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000,
],
],
*/

],

'cleanup' => [
/*
* The strategy that will be used to cleanup old backups. The default strategy
* will keep all backups for a certain amount of days. After that period only
* a daily backup will be kept. After that period only weekly backups will
* be kept and so on.
*
* No matter how you configure it the default strategy will never
* delete the newest backup.
*/

'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class,

'default_strategy' => [

/*
* The number of days for which backups must be kept.
*/

'keep_all_backups_for_days' => 7,

/*
* The number of days for which daily backups must be kept.
*/

'keep_daily_backups_for_days' => 16,

/*
* The number of weeks for which one weekly backup must be kept.
*/

'keep_weekly_backups_for_weeks' => 8,

/*
* The number of months for which one monthly backup must be kept.
*/

'keep_monthly_backups_for_months' => 4,

/*
* The number of years for which one yearly backup must be kept.
*/

'keep_yearly_backups_for_years' => 2,

/*
* After cleaning up the backups remove the oldest backup until
* this amount of megabytes has been reached.
*/

'delete_oldest_backups_when_using_more_megabytes_than' => 5000,
],
],

];

Kalian bisa kustomisasi file diatas sesuai kebutuhan kalian. Opsi penyimpanan backup dapat kalian sesuaikan juga sesuai kebutuhan kalian, bisa menggunakan default local storage atau integrasi ke s3 (pada tulisan ini saya menggunakan penyimpanan local pada project). Package ini juga sudah mendukung notification channel selain mail (Slack dan Discord).

Langkah berikutnya adalah menambahkan kode di bawah ini pada file database.php.

...
'mysql' => [
'driver' => 'mysql',
...
'dump' => [
'dump_binary_path' => '/path/to/local/bin/mysql', // only the path, so without `mysqldump` or `pg_dump`
'use_single_transaction',
'timeout' => 60 * 5, // 5 minute timeout
]
],
...

mysqldump digunakan untuk mem-backup database MySQL. pg_dump digunakan untuk men-dump database PostgreSQL. Jika binary ini tidak terinstal di lokasi default, kalian dapat menambahkan kunci bernama dump.dump_binary_path di file konfigurasi database.php milik Laravel . Isi hanya dengan path ke binary tersebut. Jangan sertakan nama binary-nya

Jika dump database kalian memakan waktu yang lama, kalian mungkin melebihi batas waktu default selama 60 detik. Kalian dapat mengatur batas waktu yang lebih tinggi (atau lebih rendah) dengan menyediakan kunci konfigurasi dump.timeout yang menentukan, dalam detik, berapa lama perintah dapat berjalan.

Langkah berikutnya adalah kita coba jalankan command untuk melakukan backup. Berikut merupakan command dan hasil menjalankan command.

php artisan backup:run
Hasil Menjalankan Command Backup

Jika berhasil, kalian juga akan mendapatkan notifikasi email seperti di bawah ini.

Email Notifikasi Backup Berhasil

Hasil dari backup dapat kalian lihat di folder storage/app.

Hasil Backup Project

Keren banget bukan? Oiya kalian juga bisa melakukan monitoring terhadap jumlah backup yang kalian buat dengan menjalankan command di bawah ini.

php artisan backup:list

Hasilnya akan terlihat seperti di bawah ini.

List dari Backup

Beberapa command opsional antara lain:

Jika kalian ingin melakukan backup ke disk tertentu saja, bukan ke semua disk, jalankan:

php artisan backup:run --only-to-disk=nama-disk

Jika kalian hanya perlu mem-backup database, jalankan:

php artisan backup:run --only-db

Jika kalian hanya perlu mem-backup file dan ingin melewatkan dumping database, jalankan:

php artisan backup:run --only-files

Terakhir, kita akan setup scheduler untuk mengeksekusi command secara berkala untuk membuat dan menghapus backup. Pada file App\Console\Kernel.php, tambahkan kode di bawah ini.

...
protected function schedule(Schedule $schedule)
{
//tambahkan yang di bawah ini
$schedule->command('backup:clean')->daily()->at('01:00');//24-hour format
$schedule->command('backup:run')->daily()->at('01:30');//24-hour format
}
...

Command diatas akan tereksekusi setiap hari di jam 1 malam dan setengah 2 malam (mempertimbangkan cut-off time product/service yang kalian kembangkan, bisa disesuaikan sesuai kebutuhan). Kondisi penghapusan backup dapat kalian temukan di file backup.php bagian cleanup.

Okee sip, jadi sekian dulu pembahasan kali ini. Semoga bermanfaat bagi teman-teman dan terimakasih sudah membaca!

Refrensi:
[1] 
https://spatie.be/docs/laravel-backup/v7/introduction


=========================

Backup Aplikasi Laravel Dan Database Menggunakan Package Spatie Laravel backup Dan Jalankan Schedule Otomatis Backup Di Laravel Forge Menggunakan Cronjob

Ketika aplikasi yang sudah kita develop sudah di tahap production tentu backup merupakan hal yang sangat penting baik itu melakukan backup di level aplikasi ataupun di level database, Untuk melakukan backup pada aplikasi yang kita deploy menggunakan laravel kita dapat menggunakan package dari spatie yaitu laravel backup silahkan anda baca dokumentasinya klik disini

Pada tutorial kali ini kita akan mengkombinasikan laravel backup + laravel Forge ya kali ini saya menggunakan laravel forge untuk deployment dan salah satu fitur yang terdapat pada laravel forge yaitu fitur schedule dimana kita dapat membuat schedule cronjob dengan mudah, Bagi anda yang tidak terbiasa dengan crontab parameter anda dapat menggunakan bantuan cronjob generate dari crontab guru silahkan cek disini

instalasi Package Laravel Backup

composer require spatie/laravel-backup

setelah anda install package ini akan otomatis melakukan register di service provider namun jika tidak anda dapat menambahkannya sendiri sbb

//config/app.php 'providers' => [ /* * Laravel Framework Service Providers... */ Spatie\Backup\BackupServiceProvider::class,

lalu kita publish backupo confignya dengan cara sbb

php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"

lalu buka file config/backup.php dan silahkan anda config storagenya disini saya menggunakan s3 storage dari amazon webservices

'destination' => [ /* * The filename prefix used for the backup zip file. */ 'filename_prefix' => '', /* * The disk names on which the backups will be stored. */ 'disks' => [ 's3-backup', ], ],

Dikarenakan kita menyimpan backup di s3 amazon web service maka disk monitornya harus kita arahkan ke s3 amazon web service juga sbb

'monitor_backups' => [ [ 'name' => env('APP_NAME', 'laravel-backup'), 'disks' => ['s3-backup'], 'health_checks' => [ \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1, \Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000, ], ], ],

Konfigurasi Amazon S3

Jika anda menyimpan backup ke amazon s3 storage maka anda harus menginstall package league/flysystem-aws-s3-v3 ~1.0

composer require league/flysystem-aws-s3-v3 ~1.0

Setelah Itu Setting Di File .ENV beberapa parameter sbb

AWS_ACCESS_KEY_ID_BACKUP=AKIAVJO3TM21232132 AWS_SECRET_ACCESS_KEY_BACKUP=1cX21321DTFGWWwGe43ZV1r1xkSu AWS_DEFAULT_REGION_BACKUP=ap-southeast-1 AWS_BUCKET_BACKUP=novalio-id-backup

Nilai dari Parameter di atas anda dapatkan dari amazon web service anda silahkan anda setup IAM untuk s3 Storagenya di AWS Console

Tahap Pengujian

setelah kita melakukan config seperti diatas maka tahap selanjutnya adalah kita menjalankan command yang tersedia di laravel backup beberapa command yang sangat sering di jalankan antara lain :

php artisan backup:clean

Command diatas berfungsi untuk melakukan cleanup backup di server

php artisan backup:run

Command diatas berfungsi untuk melakukan backup dan menyimpannya ke media penyimpanan yang telah kita tentukan di backup config di artikel ini kita menyimpan ke S3 Storage Amazon Web Service

php artisan backup:monitor

Command diatas berfungsi untuk melakukan monitor apakah ada kendala di backup yang kita jalankan misal proses backup gagal ataupun berhasil dan kita bisa setup notifikasi ke email ataupun ke provider lain seperti slack

Proses Menjalankan backup Clean

Proses Menjalankan backup Run

Proses Menjalankan Backup Monitor

Cek backup Di Amazon S3

Notifikasi Backup

Untuk Mendapatkan Notifikasi dari proses backup yang di jalankan kita dapat melakukan konfigrurasi notifikasi via email silahkan anda bukan backup config yang berada di config/backup.php dan lakukan konfigurasi sbb

'notifications' => [ 'notifications' => [ \Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'], \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => ['mail'], \Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'], \Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'], \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'], \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'], ],'mail' => [ 'to' => 'backup@adinata.id', 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'backup@adinata.id'), 'name' => env('MAIL_FROM_NAME', 'Backup Novalio'), ], ],

Agar Notifikasi Ini berjalan anda perlu melakukan konfigurasi SMTP pada File .ENV sbb

MAIL_MAILER=smtp MAIL_HOST=mail.adinata.id MAIL_PORT=465 MAIL_USERNAME=email anda MAIL_PASSWORD=password email anda MAIL_ENCRYPTION=SSL MAIL_FROM_ADDRESS=backup@adinata.id MAIL_FROM_NAME="${APP_NAME}"

Maka ketika anda menjalankan backup akan muncul notifkasi ke email anda sbb

Notifikasi Clean Up Backup

Notifikasi Backup Run

Notifikasi Backup Monitor

Notifikasi Gagal Backup

Otomatis Jalankan Backup Dengan Schedule

Tentu kita tidak akan menjalankan backup ini secara manual maka kita perlu melakukan schedule pada aplikasi kita dan untuk membuat schedule command di laravel sangat mudah sekali pertama kita tambahkan dulu command yang akan di jalankan pada file app/Console/Kernel.php sbb

protected function schedule(Schedule $schedule) { $schedule->command('backup:clean')->dailyAt('01:00'); $schedule->command('backup:run')->dailyAt('01:30'); $schedule->command('backup:monitor')->dailyAt('03:00'); }

Jika Server anda di deploy di satu negara saja maka anda dapat menambahkan method Schedule Timezone sbb

/** * Get the timezone that should be used by default for scheduled events. * * @return \DateTimeZone|string|null */ protected function scheduleTimezone() { return 'Asia/Jakarta'; }

Setelah kita berhasil menambahkan schedule command selanjutnya kita tambahkan cronjob dan kali ini kita menggunakan platform Laravel Forge bagi anda yang ingin menggunakan laravel forge silahkan cek

Pada Laravel Forge Kita dapat membuat cronjob sesuai dengan jadwal di jalankannya schedule backup sbb

Bagi anda yang bingung dengan parameter crontab anda dapat mengenerate crontab dengan bantuan Crontab Guru Silahkan Cek

Agar Jadwal Cronjob berjalan sesuai dengan waktu di negara anda maka jangan lupa seting timezone server anda di laravel forge ke timezone negara anda contohnya disini saya set ke Asia/Jakarta anda dapat melakukan setting di menu sbb

Command Untuk Menjalankan backup Di Laravel Forge ( Menggunakan PHP 8 )

php8.0 /home/forge/novalio.id/artisan schedule:run

Demikian Tutorial ini semoga bermanfaat

Salam,

Adinata

Referensi Terkait

Spatie Laravel backup klik disini

Laravel Forge Scheduler klik disini

Mattstaufer Forge Schedule klik disini

Senin, 01 Juli 2024

SHARING FILE-membatasi wind11

 Membatasi Akses ke File Sharing berdasar alamat IP di Windows 11

https://bardimin.com/network/membatasi-akses-ke-file-sharing-berdasar-alamat-ip-di-windows-11/

Membatasi akses ke file sharing akan meningkatkan keamanan data dan mencegah serangan ransomware.

File sharing adalah metode yang biasa digunakan dalam organisasi dengan memanfaatkan jaringan yang tersedia. Ada berbagai cara dalam melakukan file sharing, mulai dengan yang berbasis cloud hingga yang paling sederhana dengan dua PC.

Dalam organisasi dengan jaringan lokal (LAN), bisa melakukan file sharing dengan menyimpan file dalam server. Kemudian untuk akses ke file tersebut bisa diatur berdasarkan user dan hak aksesnya.

Dalam artikel ini, Bardimin akan membahas bagaimana melakukan file sharing pada sebuah PC. Karena kita tidak ingin semua orang dalam organisasi bisa mengakses file yang disharing, kita akan membatasi file tersebut hanya bisa diakses oleh PC dengan alamat IP tertentu.

Kelebihan File Sharing

1. Menghemat Waktu

Pengguna PC dalam organisasi tidak perlu mengirim file melalui email, mengunggah, atau mengunduh file menggunakan internet. Sebaliknya, mereka dapat dengan cepat mengakses langsung file yang mereka butuhkan saat mereka membutuhkannya. Transfer file sharing jauh lebih cepat daripada mengirim melalui internet, karena file sharing bekerja menggunakan jaringan lokal dengan kecepatan yang jauh lebih cepat. Kecepatan transfer bisa mencapai 1Gb/s – 10 Gb/s, tergantung dengan perangkat yang digunakan.

2. Menghemat Uang

Karena tidak menggunakan internet, file sharing akan bisa mengurangi biaya penggunaan internet.

3. Mencegah Data Hilang

Pada file sharing yang menggunakan server, anda bisa melakukan backup data secara berkala. Dan jika terjadi crash pada sebuah PC, data tidak hilang karena masih ada di server.

4. Membatasi Akses

Anda bisa membatasi akses ke sebuah file apakah hanya bisa membaca, memperbarui, menghapus, membuat atau menyimpan.

Kekurangan File Sharing

1. Memerlukan Jaringan Lokal (LAN)

Untuk bisa menggunakan file sharing dengan baik, membutuhkan jaringan yang stabil. Pada umumnya file sharing akan berjalan dengan baik jaringan lokal dengan menggunakan kabel. Menggunakan Wi-Fi sebenarnya juga bisa, akan tetapi akan memiliki kecepatan transfer yang lebih rendah dan cenderung kurang stabil dibandingkan menggunakan kabel.

2. Risiko Lebih Tinggi File Terinfeksi

Ada peningkatan resiko file terinfeksi oleh malware, ransomware, dan virus. Karena jika ada salah satu PC yang terinfeksi dan mengakses file tersebut ada kemungkinan virus menyebar. Dengan selalu mengupdate Windows dan antivirus, resiko ini bisa berkurang.

Cara Mengaktifkan File Sharing Windows 11

  1. Buka “Setting” Windows. Anda bisa membuka Setting dengan menggunakan tombol (WIN + I).
  2. Kemudian pilih “Network & internet > Advanced network settings > Advanced sharing settings”. Kemudian pada “File and printer sharing”, geser tombol switch ke kanan untuk mengaktifkan. Aktifkan fitur ini pada “Private Network” dan “Public Network”.
file sharing turn on
  1. Kemudian pada “All Network”, anda bisa mematikan password sharing (karena kita akan memfilter berdasarkan alamat IP).
file sharing turn off password

Cara Sharing Folder di Windows 11

Setelah anda mengaktifkan File Sharing, PC anda sudah bisa di akses oleh PC lain. Karena belum ada folder yang anda sharing, ketika diakses oleh PC lain melalui File Explorer akan tampak kosong.

  1. Buka “File Explorer” dan pilih folder yang akan anda sharing.
  2. Kemudian klik kanan pada folder tersebut dan pilih “Properties”.
  3. Pada jendela Properties, pilih tab “Sharing” dan kemudian klik tombol “Advanced Sharing”.
folder sharing properties
  1. Selanjutnya, anda centang “Share this folder” dan anda bisa memberi nama sharing tersebut atau biarkan default saja. Kemudian klik tombol “Permissions” untuk mengatur aksesnya.
folder sharing permissions
  1. Atur akses ke folder tersebut seperti yang anda inginkan.

Cara Mengakses File Sharing Windows

Untuk mengakses File sharing bisa anda lakukan melalui File Explorer. Anda bisa mengetikkan alamat IP pada address bar. Anda juga mengetikkan nama PC, tidak semua topology jaringan LAN bisa menggunakan nama PC.

Sebagai contoh anda bisa mengaksesnya dengan mengetikkan alamat IP sebagai berikut

\\192.168.1.1
folder sharing ip

Membatasi Akses File Sharing dengan Firewall Windows

Jika anda telah menyelesaikan semua langkah tersebut diatas, anda telah berhasil melakukan sharing sebuah folder. Masalahnya adalah semua PC yang terhubung ke jaringan LAN akan bisa mengakses folder tersebut.

Pada langkah ini kita akan membatasi akses menggunakan Firewall dan hanya mengijinkan alamat IP tertentu yang bisa mengaksesnya.

  1. Buka “Control Panel” dan pilih “System and Security > Windows Defender Firewall > Allowed apps”.
firewall app
  1. Kemudian pada jendela “Allowed apps”, klik tombol “Change settings”. Anda tidak akan bisa mengubah setting jika tidak mengklik tombol ini terlebih dahulu.
  2. Hapus semua centang pada “File and Printer Sharing” dan “File and Printer Sharing over SMBDirect” untuk memblokir semua akses.
firewall disable sharing
  1. Kemudian buka lagi “Control Panel” dan pilih “System and Security > Windows Defender Firewall > Advanced settings”.
  2. Pada jendela “Windows Defender Firewall with Advanced Security”, pilih “Inbound Rule”. Kemudian klik kanan dan pilih “New Rule”.
firewall new rule
  1. Selanjutnya akan terbuka jendela “New Inbound Rule Wizard”. Pada “Rule Type”, pilih “Custom” dan kemudian klik tombol “Next”.
  2. Kemudian pada “Program”, pilih “All programs”. Klik tombol “Next”.
  3. Pada langkah “Protocol and Ports”, pilih protocol “TCP”. Dan pada local port, pilih “Specific Ports” dengan nomor port “445”. Selanjutnya klik tombol “Next”.
firewall port setting
  1. Kemudian pada langkah “Scope”, bagian Remote IP, tambahkan IP dari PC lain yang anda ijinkan untuk mengakses file sharing pada PC anda.
firewall remote ip
  1. Pada langkah “Action”, pilih “Allow the connection”. Kemudian klik tombol “Next”.
  2. Dan pada langkah “Profile”, biarkan semuanya terpilih dan klik tombol “Next”.
  3. Langkah terakhir adalah memberi nama Rule yang anda buat. Beri nama yang memudahkan anda mengenalinya, seperti “File Sharing – Allow specific IP”.
firewall allow specific ip

Sampai di sini, anda sudah bisa membatasi akses file sharing dengan hanya alamat IP tertentu yang boleh mengaksesnya.