backup s3 wordpress

Cara Backup Aplikasi Database WordPress Menggunakan Object Storage S3 + Enkripsi OpenSSL

Menggunakan Object Storage merupakan solusi terbaik untuk backup S3 Aplikasi WordPress karena menawarkan skalabilitas tinggi, biaya rendah, dan keamanan yang lebih baik dibandingkan metode tradisional. Kehilangan data akibat kegagalan sistem atau serangan cyber seperti ransomware adalah mimpi buruk bagi setiap developer dan system administrator. Oleh karena itu, memiliki sistem cadangan (backup) yang otomatis, murah, dan aman adalah sebuah kewajiban. Jadi jangan hanya mengandalkan kecepatan website saja.

Salah satu kombinasi terbaik untuk mengatasi masalah ini adalah menggunakan Object Storage S3 sebagai tempat penyimpanan jarak jauh (offsite storage), serta OpenSSL untuk mengamankan data sebelum dikirim ke cloud.

Artikel ini akan membahas tuntas manfaat, aspek keamanan, hingga langkah teknis melakukan backup database yang terkompresi dan terenkripsi.

Manfaat Backup S3 WordPress Menggunakan Object Storage

Mengapa anda harus beralih dari penyimpanan tradisional seperti HDD eksternal atau VPS cadangan ke Object Storage S3 (seperti AWS S3, Cloudflare R2, Nevacloud, atau Biznet Gio)?

  • Skalabilitas Tanpa Batas: Anda tidak perlu khawatir kehabisan ruang penyimpanan. S3 akan berkembang secara otomatis seiring bertambahnya ukuran database Anda.
  • Efisiensi Biaya (Cost-Effective): Anda hanya membayar ruang penyimpanan yang benar-benar anda gunakan (pay-as-you-go), jauh lebih murah daripada menyewa server storage khusus.
  • Durabilitas Tinggi: Penyedia S3 menyimpan dan mereplikasi data anda ke beberapa pusat data secara otomatis, sehingga mampu mencapai tingkat durabilitas hingga 99.999999999% (11 nines).

Analisis Keamanan: Mengapa Enkripsi OpenSSL Sangat Penting?

Menyimpan data di cloud memang aman, tetapi mengandalkan keamanan bawaan penyedia S3 saja belum cukup. Di sinilah OpenSSL mengambil peran krusial.

Sistem backup yang ideal wajib menerapkan prinsip Zero-Trust Security melalui metode enkripsi berikut:

Aspek KeamananMetode ImplementasiFungsi Perlindungan
Data-in-TransitProtokol HTTPS / TLSMelindungi data dari penyadapan (man-in-the-middle attack) saat proses upload ke S3.
Data-at-Rest (Local)Enkripsi AES-256 (OpenSSL)Mengubah berkas kompresi database menjadi kode acak sebelum menyentuh internet. Jika server S3 Anda diretas, pelaku tetap tidak bisa membaca datanya tanpa kunci dekripsi.
ImmutabilityS3 Object Lock (Opsional)Mengunci berkas agar tidak bisa dihapus atau diubah oleh siapa pun (termasuk ransomware) selama periode tertentu.

Panduan Lengkap Backup S3 WordPress: Kompresi, Enkripsi, dan Upload ke S3

Berikut adalah prosedur standar untuk melakukan backup otomatis pada server berbasis Linux (contoh kasus: Aplikasi WordPress, Database MySQL/MariaDB, Object Storage S3 menggunakan Nevacloud).

1. Create Object Storage di Nevacloud

Langkah pertama anda bisa mengakses lokasi Object Storage pada bagian portal Nevacloud. Selanjutnya, anda membuat Object Storage dengan memilih ukuran storage sesuai kebutuhan. Pada contoh ini, saya memilih kapasitas minimum 10 GB per bulan dengan biaya Rp8.000. Setelah itu, anda mengisi nama label untuk Object Storage tersebut.

Nevacloud Create Object Storage

2. Create Bucket S3 di Nevacloud

Setelah itu, anda membuat bucket untuk menyimpan data Object Storage. Pastikan anda menggunakan huruf lowercase saat menentukan nama bucket. Pada contoh ini, saya memberi nama bucket “appsprd01“. Anda dapat menggunakan nama lain sesuai kebutuhan.

Nevacloud Create Bucket

3. Create Acess Keys S3 di Nevacloud

Buatlah access key sebagai credential untuk melakukan koneksi ke bucket. Pada contoh ini, saya memberi nama “accesskey1“. Setelah itu, anda perlu mencatat Access Key dan password yang muncul.

Nevacloud Create Acess Key

4. Cara Setup Backup S3 WordPress dengan Rclone

Dalam tutorial ini saya menggunakan package “rclone” untuk integrasi dari server ke S3 Object Storage Nevacloud. Lakukan instalasi package menggunakan command dibawah ini

apt install rclone -y

Setelah proses instalasi selesai, anda melakukan konfigurasi dengan mengisi credential yang sebelumnya telah anda buat di portal Nevacloud menggunakan perintah berikut

rclone config
konfigurasi rclone untuk backup S3 WordPress

Anda memilih opsi “New remote” dengan menekan tombol “n“. Setelah itu, anda memberikan nama bebas untuk konfigurasi pada contoh ini, saya menggunakan nama “neva“. Selanjutnya, anda memilih tipe storage “s3” karena anda akan mengintegrasikan S3. Kemudian, anda memilih provider “Other” karena anda menggunakan layanan dari Nevacloud.

Setelah itu, anda memasukkan access key dan secret key yang sebelumnya anda generate melalui portal Nevacloud. Lakukan enter ketika memilih region dan isi alamat endpoint ke s3 Nevacloud di alamat “https://s3.nevaobjects.id“. Selanjutnya enter untuk ke step berikutnya.

Pada opsi acl ketik “private“, pilih konfigurasi default dengan mengetik “n“. Maka Summary dari konfigurasi yang telah kita inputkan akan keluar. Lakukan pengecekan semua parameter konfigurasi ini, jika sudah benar semua ketik “y” dan ketik “q” untuk keluar dari konfigurasi rclone.

5. Testing rclone ke S3 Nevacloud

Setelah itu lakukan uji koneksi dari Endpoint Server ke S3 Nevacloud. Pertama, Anda menjalankan perintah di bawah ini untuk menguji koneksi sekaligus menampilkan file atau folder yang ada di S3. Gunakan format rclone ls [nama_remote]:[nama_bucket] jika hasilnya kosong maka koneksi berhasil.

rclone ls neva:appsprd01

Kedua buatlah file sederhana di partisi /tmp dengan extension txt.

echo "test" > /tmp/test.txt

Setelah itu lakukan upload ke S3 Nevacloud. Gunakan format rclone copy [path_lokasi_file] [nama_remote]:[nama_bucket]/[nama_folder]/

rclone copy /tmp/test/txt neva:appsprd01/wp-backups/

Jika tidak error atau kosong artinya file sudah berhasil terupload di S3 Object Storage Nevacloud. Untuk memastikannya silahkan kembali ke portal Nevacloud dan cek status di bucket. Pada gambar di bawah ini, anda dapat melihat satu file object dengan ukuran 4 KB. Hal ini menunjukkan bahwa anda telah berhasil mengunggah file dari endpoint server ke S3 Object Storage Nevacloud. Setelah itu, anda akan membuat script untuk melakukan backup aplikasi dan database WordPress agar dapat anda upload ke Object Storage.

hasil upload backup S3 WordPress di bucket

6. Create Script Backup

Agar backup aplikasi dan database bisa dijalankan otomatis, maka sebelumnya kita perlu membuat script terdahulu. Pada tutorial ini juga terdapat konfigurasi yang menggunakan fitur dari openssl. Penggunaan OpenSSL pada script backup bertujuan untuk mengenkripsi data sebelum dikirim ke storage seperti S3 atau remote rclone, sehingga isi file menjadi tidak dapat dibaca tanpa kunci atau password yang benar, meskipun file tersebut jatuh ke tangan yang tidak berwenang atau terjadi kesalahan konfigurasi akses. Dengan enkripsi ini, data sensitif seperti database, konfigurasi aplikasi, dan file penting lainnya tetap terlindungi di luar sistem asal, memberikan lapisan keamanan tambahan (defense-in-depth) yang tidak bergantung pada keamanan dari penyedia storage. Namun, konsekuensinya adalah setiap perubahan kecil pada file akan menghasilkan file terenkripsi baru secara keseluruhan, sehingga kurang efisien untuk proses incremental backup. Berikut Script lengkap beserta penjelasan diatas command. Perhatikan pada script dibawah ini, sesuaikan pada konfigurasi di server anda.

#!/bin/bash

set -euo pipefail

#lokasi folder wordpress
DATE=$(date +"%Y-%m-%d_%H-%M")
WORDPRESS_DIR="/var/www/html/mywordpress"

#lokasi backup lokal server
BACKUP_BASE="/backup/wp"
SNAPSHOT_DIR="$BACKUP_BASE/snapshots/$DATE"
LATEST_LINK="$BACKUP_BASE/current"

#sesuaikan nama bucket beserta folder dalamnya
S3_BUCKET="s3://appsprd01/wp-backups"
S3_ENDPOINT="https://s3.nevaobjects.id"
AWS_REGION="ap-southeast-1"

#nama database dan lokasi penyimpanan username password database
DB_NAME="mywordpressdb"
DB_CNF="/root/.backup-db.cnf"

#lokasi penyimpanan secret key openssl untuk encrypt dan decrypt
SECRET_FILE="/root/.backup-secret-aws"


if [ ! -f "$SECRET_FILE" ]; then
  echo "[ERROR] Secret file not found!"
  exit 1
fi

ENCRYPT_PASS=$(cat "$SECRET_FILE")

mkdir -p "$SNAPSHOT_DIR"

echo "[INFO] Starting snapshot backup $DATE"

echo "[INFO] Running rsync snapshot..."

#exclude file username dan password database wordpress
if [ -d "$LATEST_LINK" ]; then
  rsync -a \
    --delete \
    --link-dest="$LATEST_LINK" \
    --exclude="wp-config.php" \
    --exclude="wp-content/cache" \
    --exclude="wp-content/tmp" \
    "$WORDPRESS_DIR/" \
    "$SNAPSHOT_DIR/"
else
  echo "[INFO] First backup (no link-dest)"
  rsync -a \
    --delete \
    --exclude="wp-config.php" \
    --exclude="wp-content/cache" \
    --exclude="wp-content/tmp" \
    "$WORDPRESS_DIR/" \
    "$SNAPSHOT_DIR/"
fi

rm -f "$LATEST_LINK"
ln -s "$SNAPSHOT_DIR" "$LATEST_LINK"

echo "[INFO] Dumping database..."

mysqldump \
  --defaults-extra-file="$DB_CNF" \
  --single-transaction \
  --quick \
  --skip-lock-tables \
  "$DB_NAME" | gzip > "$SNAPSHOT_DIR/db.sql.gz"

echo "[INFO] Compressing snapshot..."

TMP_FILE="/tmp/wp-$DATE.tar.gz"
ENC_FILE="/tmp/wp-$DATE.tar.gz.enc"

tar -czf "$TMP_FILE" -C "$SNAPSHOT_DIR" .

echo "[INFO] Encrypting..."

openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 \
  -in "$TMP_FILE" \
  -out "$ENC_FILE" \
  -pass file:"$SECRET_FILE"

echo "[INFO] Uploading to S3..."

#sesuaikan nama konfigurasi rclone, nama bucket, dan folder upload
rclone copy "$ENC_FILE" neva:appsprd01/wp-backups/

echo "[INFO] Cleaning up..."

rm -f "$TMP_FILE" "$ENC_FILE"

echo "[INFO] Backup completed successfully ✅"

exit 0 

Setelah itu anda perlu membuat file hidden yang berisi username dan password untuk backup database dengan grant “Select, Show View, Trigger” ke database wordpress anda.

nano /root/.backup-db.cnf

Buatlah user baru yang berbeda dengan user database aplikasi wordpress, agar lebih aman karena hanya dibuat untuk backup saja tidak full akses ke database wordpress. Pastikan hostname hanya localhost saja yang bisa melakukan backup database.

GRANT SELECT, SHOW VIEW, TRIGGER ON mywordpressdb.*
TO 'mywordpressdb'@'localhost';

Selanjutnya buat file hidden yang berisi secret untuk melakukan encrypt atau decrypt dengan menggunakan openssl.

nano /root/.backup-secret-aws
proses enkripsi OpenSSL pada backup WordPress

7. Execute Script Final

Jika sudah siap maka jalankan script secara manual dengan menjalankan path lokasi script langsung atau menggunakan command bash.

/bin/bash /home/ariffs/script/backup/appsprd01.sh
proses enkripsi OpenSSL pada script backup WordPress

Dari hasil informasi diatas File backup telah berhasil terupload ke S3 Object Storage Nevacloud. Untuk memastikannya anda perlu mengakses portal Nevacloud kembali.

backup S3 WordPress di Nevacloud dashboard

Saya berhasil melakukan proses backup dan mengunggah aplikasi WordPress beserta database MySQL ke S3 Object Storage Nevacloud secara efisien dan terstruktur. Saya juga mengenkripsi file backup menggunakan OpenSSL sebelum proses upload untuk memastikan seluruh data sensitif tetap aman dan tidak dapat diakses tanpa kunci dekripsi yang sesuai. Dengan pendekatan ini, kita menambahkan lapisan keamanan ekstra guna menjaga kerahasiaan dan integritas data di cloud. Jika anda tertarik untuk menggunakan layanan Object Storage Nevacloud, anda dapat langsung melakukan registrasi melalui link atau banner yang tersedia di bawah ini. Dengan harga cukup 8 ribu saja kita sudah mendapatkan 10 GB /bulan layanan tambahan untuk backup di tempat lainnya. Selain itu ada cashback juga ya untuk top up saldo pertama kali. Terimakasih

VPS Murah Nevacloud

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *


Back To Top
Dilindungi Oleh
Shield Security