Disaster Recovery Plan yang terasa seperti command center.
Halaman ini merangkum seluruh kebutuhan DevOps untuk server produksi SMKarier: peta infra, alur release, SOP operasional, skenario insiden, recovery dari nol, kredensial penting, dan checklist monitoring. Fokus tampilannya ringan, terang, dan cepat diakses saat kondisi normal maupun insiden.
core.smkarier.cloud
deploy@core.smkarier.cloud -p 1453
Ringkasan Kritis
Semua indikator penting yang biasanya dibutuhkan cepat oleh DevOps saat membuka dokumen DRP.
/opt/smkarier, dengan GitHub Actions self-hosted runner di /home/deploy/actions-runner dan log Traefik di /var/log/traefik.1. Informasi Server & Tim
Siapa yang memegang akses, bagaimana masuk ke server, dan detail spesifikasi host produksi yang menjadi pusat operasi.
Server Produksi
| Item | Detail |
|---|---|
| Provider | Hostinger KVM |
| Hostname | core.smkarier.cloud |
| OS | Ubuntu 24.04.4 LTS (Ubuntu Pro) |
| CPU | 4 vCPU |
| RAM | 16 GB |
| Disk | 193 GB SSD |
| SSH Port | 1453 |
| SSH User | deploy untuk operasional, root untuk emergency |
| Docker | v29.3.0 |
| Traefik | v3.6.1 |
Tim & Tanggung Jawab
| Nama | Role | Akses | Tanggung Jawab |
|---|---|---|---|
| Imam Najmudin | CEO / DevOps | SSH root + deploy, GitHub Owner, Cloudflare, Hostinger | Infra, server, deploy production, keputusan release |
| Alfian Maulana | CTO / Full-Stack | GitHub push ke main, GHCR | Kode aplikasi, push staging, tag release setelah izin Imam |
| Jaka Supriyanto | CPO / Mobile | GitHub Flutter repo | Flutter mobile dan QA |
# User deploy (operasional sehari-hari)
ssh deploy@core.smkarier.cloud -p 1453
# Atau langsung ke root workspace operasional
ssh deploy@core.smkarier.cloud -p 1453
cd /opt/smkarier
2. Arsitektur Infrastruktur
Gambaran aliran trafik, komponen container, pemisahan production dan staging, serta titik penting SSL dan DNS.
Topology
Internet
|
v
Cloudflare (DNS + Proxy + SSL Termination)
|
v
VPS Hostinger (core.smkarier.cloud)
|
v
Traefik v3.6.1 (Reverse Proxy + SSL via DNS Challenge)
|
+-- smk-prod-net
| +-- smkarier_cms
| +-- smkarier_frontend
| +-- postgres_prod
| +-- redis_prod
|
+-- smk-stg-net
+-- smkarier_cms_stg
+-- smkarier_frontend_stg
+-- postgres_stg
+-- redis_stg
Stack Ringkas
/opt/smkarier/volumes.
Container Detail
| Container | Image | Network | Memory Limit | Internal Port |
|---|---|---|---|---|
| traefik | traefik:v3.6.1 | host | - | 80, 443 |
| smkarier_cms | smkarier-cms:latest | smk-prod-net | 512M | 80 |
| smkarier_frontend | smkarier-frontend:latest | smk-prod-net | 512M | 80 |
| smkarier_ai | smkarier-ai:latest | smk-prod-net | 512M | 8000 |
| postgres_prod | postgres:16-alpine | smk-prod-net | - | 5432 |
| redis_prod | redis:7-alpine | smk-prod-net | 512MB maxmemory | 6379 |
| smkarier_cms_stg | smkarier-cms:main | smk-stg-net | 512M | 80 |
| smkarier_frontend_stg | smkarier-frontend:main | smk-stg-net | 512M | 80 |
| smkarier_ai_stg | smkarier-ai:main | smk-stg-net | 512M | 8000 |
| postgres_stg | postgres:16-alpine | smk-stg-net | 256M | 5432 |
| redis_stg | redis:7-alpine | smk-stg-net | 256MB maxmemory | 6379 |
Database & Redis
| Layer | Production | Staging |
|---|---|---|
| DB Container | postgres_prod | postgres_stg |
| DB Name | smkarier_prod | smkarier_stg |
| DB User | smkarier_admin | smkarier_stg |
| DB Host | postgres_prod | postgres_stg |
| DB Volume | /opt/smkarier/volumes/postgres_data | /opt/smkarier/volumes/postgres_stg |
| Redis Container | redis_prod | redis_stg |
| Redis Password | null internal only | null internal only |
| Max Memory | 512mb | 256mb |
| Eviction Policy | allkeys-lru | allkeys-lru |
*.smkarier.com, *.smkarier.cloud/opt/smkarier/config/traefik/acme.jsondeveloper@smkarier.co.id108.162.192.71, 108.162.193.713. Struktur Direktori Lengkap
Peta folder server yang perlu dipahami cepat saat maintenance, recovery, atau troubleshooting.
Core Tree
/opt/smkarier/.env.*File environment untuk CMS, frontend, staging, dan Traefik./opt/smkarier/app/Compose production dan staging untuk container aplikasi./opt/smkarier/data/Compose PostgreSQL dan Redis untuk production serta staging./opt/smkarier/config/traefik/Static config, dynamic middleware, docker-compose Traefik, dan ACME cert store./opt/smkarier/config/php/memory.iniOverride memory limit dan upload size./opt/smkarier/backup/Daily, weekly, monthly backup slots./opt/smkarier/volumes/Persistent data untuk database dan Redis. Jangan diedit manual.Lokasi Penting Lainnya
/home/deploy/actions-runner/Self-hosted runner untuk CI/CD organisasi./home/deploy/actions-runner/_work/Working directory job GitHub Actions./var/log/traefik/traefik.logRouting, error, dan issue sertifikat./var/log/traefik/access.logHTTP access log untuk analisis trafik./opt/smkarier/volumes berisi data persistent. Perlakukan sebagai area sensitif dan hindari modifikasi manual saat sistem sedang hidup kecuali recovery procedure memang mengharuskan.4. Peta ENV → Container → Domain
Relasi file ENV dengan container yang dijalankan dan domain yang dilayani, lengkap dengan key variable yang sering dibutuhkan saat debugging.
Production Mapping
| File ENV | Container | Domain |
|---|---|---|
.env.frontend | smkarier_frontend | smkarier.com, www.smkarier.com, api.smkarier.com, company.smkarier.com, candidate.smkarier.com, bkk.smkarier.com, lpk.smkarier.com, agency.smkarier.com |
.env.cms | smkarier_cms | admin.smkarier.com |
.env.ai | smkarier_ai | ai.smkarier.com (belum aktif) |
Staging Mapping
| File ENV | Container | Domain |
|---|---|---|
.env.frontend.staging | smkarier_frontend_stg | stg.smkarier.cloud, api-stg.smkarier.cloud, company-stg.smkarier.cloud, candidate-stg.smkarier.cloud, bkk-stg.smkarier.cloud, lpk-stg.smkarier.cloud, agency-stg.smkarier.cloud |
.env.cms.staging | smkarier_cms_stg | admin-stg.smkarier.cloud |
.env.ai.staging | smkarier_ai_stg | ai-stg.smkarier.cloud ✅ |
5. Alur CI/CD & Deploy
Flow rilis dari push ke main sampai live di production, termasuk semantic versioning dan secrets yang wajib tersedia.
GitHub Organization
ghcr.io/smkarier-inovasi-digital/Container registry untuk image CMS dan frontend.vps-hostinger-coreLabels: self-hosted, Linux, X64, vps, docker, production, staging.actions.runner.SMKarier-Inovasi-Digital.vps-hostinger-core.serviceFlow Deploy
mainDeveloper mendorong perubahan ke repositori. GitHub Actions otomatis memulai job build-and-push.
Dalam sekitar 4-5 menit pipeline membangun image Docker lalu push ke GHCR dengan tag :main dan :latest.
Image :main dipull dan container staging direcreate untuk verifikasi di stg.smkarier.cloud.
Job production hanya jalan saat ada tag semver v*.*.*, lalu image :latest dipull dan container production direcreate.
SOP Release Production
stg.smkarier.cloud dan admin-stg.smkarier.cloud.Yan, release vX.X.X.Semantic Versioning & Secrets
vMAJOR.MINOR.PATCHv1.0.1 untuk hotfix, v1.1.0 untuk fitur baru, v2.0.0 untuk breaking change.VPS_HOST, VPS_PORT, VPS_USERParameter koneksi SSH production.VPS_SSH_KEYPrivate key ED25519 milik user deploy.REGISTRY_TOKEN, REGISTRY_USERAkses ke GHCR untuk build dan pull image.6. SOP Operasional Harian
Quick actions untuk cek health, log, resource, dan task aplikasi yang paling sering dipakai di production maupun staging.
Cek Status Container
Pastikan seluruh service dalam kondisi healthy atau running.
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"
Cek Error Log
Frontend, CMS, staging, dan Traefik log untuk routing/SSL.
docker logs smkarier_frontend --tail 50
docker logs smkarier_cms --tail 50
docker logs smkarier_frontend_stg --tail 50
tail -50 /var/log/traefik/traefik.log
Cek Resource
Cocok untuk mendeteksi saturation CPU, RAM, atau disk.
docker stats --no-stream
df -h /
free -h
Cek PHP Memory Limit
docker exec smkarier_frontend sh -c "php -i | grep memory_limit"
docker exec smkarier_cms sh -c "php -i | grep memory_limit"
Cek Koneksi Database
docker exec smkarier_frontend sh -c "php artisan tinker --execute=\"DB::connection()->getPdo(); echo 'DB OK';\""
Cek Koneksi Redis
docker exec smkarier_frontend sh -c "php artisan tinker --execute=\"echo app('redis')->ping();\""
Migration
docker exec smkarier_frontend sh -c "php artisan migrate --force"
docker exec smkarier_frontend_stg sh -c "php artisan migrate --force"
Clear Cache Laravel
docker exec smkarier_frontend sh -c "php artisan cache:clear && php artisan config:clear && php artisan route:clear && php artisan view:clear"
docker exec smkarier_frontend_stg sh -c "php artisan cache:clear && php artisan config:clear && php artisan route:clear && php artisan view:clear"
7. SOP Perubahan Konfigurasi
Panduan aman saat mengubah ENV, menambah subdomain, menaikkan PHP memory, mengubah Traefik, atau menangani GitHub runner yang bermasalah.
A. Edit File ENV
Perubahan ENV wajib diikuti recreate container, bukan sekadar restart.
Critical SOP
ssh deploy@core.smkarier.cloud -p 1453
sudo nano /opt/smkarier/.env.frontend
sudo nano /opt/smkarier/.env.cms
sudo nano /opt/smkarier/.env.frontend.staging
sudo nano /opt/smkarier/.env.cms.staging
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d --force-recreate smkarier_frontend
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d --force-recreate smkarier_cms
docker compose -f /opt/smkarier/data/docker-compose.data.stg.yml -f /opt/smkarier/app/docker-compose.stg.yml up -d --force-recreate smkarier_frontend_stg
docker compose -f /opt/smkarier/data/docker-compose.data.stg.yml -f /opt/smkarier/app/docker-compose.stg.yml up -d --force-recreate smkarier_cms_stg
# AI Service Staging ✅
docker compose \
-f /opt/smkarier/app/docker-compose.ai.stg.yml \
up -d --force-recreate smkarier_ai_stg
# AI Service Production
docker compose \
-f /opt/smkarier/app/docker-compose.ai.yml \
up -d --force-recreate smkarier_ai
Skenario 1b
smkarier-ai Crash / Restart Loop
< 5 menit
Gejala: ai-stg.smkarier.cloud tidak bisa diakses, container smkarier_ai_stg terus restart.
smk log:ai:stg
docker pull ghcr.io/smkarier-inovasi-digital/smkarier-ai:main
smk up:stg:ai
# Verifikasi
curl https://ai-stg.smkarier.cloud/health
# Expected: {"status":"healthy","version":"2.0.0","environment":"staging"}
B. Tambah Subdomain Baru
Edit rule Traefik, tambahkan DNS Cloudflare, lalu recreate frontend.
DNS + App
- Edit
/opt/smkarier/app/docker-compose.app.ymlpada baristraefik.http.routers.frontend.rule=dan tambahkan|| Host(`newsubdomain.smkarier.com`). - Masuk ke Cloudflare, tambahkan record A baru dengan proxy ON.
- Recreate container frontend production agar rule baru aktif.
- Wildcard SSL Traefik akan otomatis meng-cover subdomain baru.
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d --force-recreate smkarier_frontend
C. Edit PHP Configuration
Perubahan memory limit membutuhkan recreate seluruh container PHP.
App Runtime
sudo nano /opt/smkarier/config/php/memory.ini
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d --force-recreate smkarier_frontend smkarier_cms
D. Update Traefik Config
Gunakan recreate Traefik setelah edit static atau dynamic config.
Ingress
sudo nano /opt/smkarier/config/traefik/traefik.yml
sudo nano /opt/smkarier/config/traefik/dynamic/middlewares.yml
docker compose -f /opt/smkarier/config/traefik/docker-compose.traefik.yml up -d --force-recreate traefik
E. GitHub Actions Runner Bermasalah
Cek service, restart, lalu lihat journal jika runner offline.
CI/CD
sudo systemctl status actions.runner.SMKarier-Inovasi-Digital.vps-hostinger-core.service
sudo systemctl restart actions.runner.SMKarier-Inovasi-Digital.vps-hostinger-core.service
journalctl -u actions.runner.SMKarier-Inovasi-Digital.vps-hostinger-core.service --tail 30
8. Disaster Scenarios & Recovery Steps
Skenario insiden paling penting dengan diagnosa, langkah recovery, dan target RTO. Gunakan kolom pencarian untuk memfilter skenario secara cepat.
Skenario 1
Container Down
< 5 menit
Gejala: satu atau beberapa subdomain tidak bisa diakses, status container Exited atau Restarting.
docker ps -a --format "table {{.Names}}\t{{.Status}}"
docker logs smkarier_frontend --tail 30
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d --force-recreate smkarier_frontend
docker logs smkarier_frontend --tail 100
Skenario 2
PHP Memory Error
< 3 menit
Gejala: beberapa halaman menampilkan 500 dengan log Allowed memory size exhausted.
docker logs smkarier_frontend --tail 20 | grep memory
sudo nano /opt/smkarier/config/php/memory.ini
# Ubah: memory_limit = 512M
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d --force-recreate smkarier_frontend smkarier_cms
Skenario 3
Redis Auth Error
< 5 menit
Gejala: site 500 secara acak dan log mengandung ERR AUTH called without password.
docker exec smkarier_frontend sh -c "php artisan tinker --execute=\"echo app('redis')->ping();\""
grep "REDIS_PASSWORD" /opt/smkarier/.env.frontend
sudo nano /opt/smkarier/.env.frontend
# Pastikan: REDIS_PASSWORD=null
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d --force-recreate smkarier_frontend smkarier_cms
Skenario 4
SSL Certificate Error (526)
5-15 menit
Gejala: Cloudflare menampilkan error 526 dan site tidak dapat diakses.
docker ps | grep traefik
tail -50 /var/log/traefik/traefik.log | grep -i "error\|cert\|acme"
ls -la /opt/smkarier/config/traefik/acme.json
docker compose -f /opt/smkarier/config/traefik/docker-compose.traefik.yml up -d traefik
cp /opt/smkarier/config/traefik/acme.json /opt/smkarier/config/traefik/acme.json.bak
sudo sh -c 'echo "{}" > /opt/smkarier/config/traefik/acme.json'
sudo chmod 600 /opt/smkarier/config/traefik/acme.json
docker compose -f /opt/smkarier/config/traefik/docker-compose.traefik.yml up -d --force-recreate traefik
CF_DNS_API_TOKEN pada .env.traefik masih valid sebelum memaksa re-issue sertifikat.
Skenario 5
Database Corruption / Data Loss
15-60 menit
Gejala: query error, migration gagal, atau data hilang.
docker ps | grep postgres
docker logs postgres_prod --tail 30
docker exec postgres_prod pg_isready -U smkarier_admin -d smkarier_prod
# Restore dari backup
docker stop smkarier_frontend smkarier_cms
cat /path/to/backup/smkarier_prod_YYYYMMDD.sql | docker exec -i postgres_prod psql -U smkarier_admin -d smkarier_prod
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d
# Manual worst case tanpa backup
docker exec smkarier_frontend sh -c "php artisan migrate --force"
Skenario 6
Disk Full
10-20 menit
Gejala: container gagal start dengan error no space left on device.
df -h /
docker system df
docker image prune -a --filter "until=168h"
docker container prune -f
truncate -s 0 /var/log/traefik/traefik.log
truncate -s 0 /var/log/traefik/access.log
du -sh /opt/smkarier/volumes/*
du -sh /var/lib/docker/*
Skenario 7
GitHub Actions Runner Tidak Jalan
10-20 menit
Gejala: push ke main tidak trigger pipeline dan runner terlihat offline di GitHub.
sudo systemctl status actions.runner.SMKarier-Inovasi-Digital.vps-hostinger-core.service
sudo systemctl restart actions.runner.SMKarier-Inovasi-Digital.vps-hostinger-core.service
# Jika masih gagal, re-register runner
cd /home/deploy/actions-runner
./config.sh remove --token [TOKEN_DARI_GITHUB]
./config.sh --url https://github.com/SMKarier-Inovasi-Digital --token [TOKEN_DARI_GITHUB] --name vps-hostinger-core --runnergroup smkarier-vps --labels vps,docker,production,staging --unattended
sudo ./svc.sh install deploy
sudo ./svc.sh start
Skenario 8
VPS Tidak Bisa Diakses
15 menit - 2 jam
- Login ke panel Hostinger di
hpanel.hostinger.com. - Cek status VPS dan lakukan restart dari panel jika service terlihat running tapi SSH timeout.
- Gunakan Recovery Console jika VPS tidak dapat diakses langsung.
- Jika perlu rebuild total, lanjutkan ke bagian Full Server Recovery.
Skenario 9
Deployment Pipeline Stuck / Gagal
Variatif
Diagnosa: buka tab Actions di organisasi GitHub dan identifikasi job yang gagal.
| Job Gagal | Penyebab | Solusi |
|---|---|---|
build-and-push | Syntax PHP, Composer fail, Dockerfile error | Perbaiki kode lalu push ulang. |
deploy-staging | Runner down, image gagal dipull, health check gagal | Restart runner dan cek log container staging. |
deploy-production | Format tag salah atau environment belum siap | Pastikan tag format v1.0.0 dan environment benar. |
ssh deploy@core.smkarier.cloud -p 1453
docker pull ghcr.io/smkarier-inovasi-digital/smkarier-frontend:latest
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d --force-recreate smkarier_frontend
9. Full Server Recovery (Dari Nol)
Runbook rebuild total jika VPS baru harus disiapkan ulang. Estimasi waktu 2-3 jam dari setup dasar sampai verifikasi domain dan runner aktif.
Phase 1-4
Server Setup Dasar, Docker, Struktur Direktori, Restore Config
Foundation
apt update && apt upgrade -y
apt install -y curl wget git ufw fail2ban htop
timedatectl set-timezone Asia/Jakarta
useradd -m -s /bin/bash deploy
usermod -aG sudo deploy
echo "deploy ALL=(ALL) NOPASSWD: /etc/sudoers.d/deploy" >> /etc/sudoers
nano /etc/ssh/sshd_config
# Port 1453, PermitRootLogin no, PasswordAuthentication no
systemctl restart ssh
ufw allow 1453/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
curl -fsSL https://get.docker.com | sh
usermod -aG docker deploy
systemctl enable docker
systemctl start docker
mkdir -p /opt/smkarier/{app,data,config/php,config/traefik/dynamic,backup/{daily,weekly,monthly},scripts,volumes/{postgres_data,postgres_stg,redis_data,redis_stg}}
chown -R deploy:deploy /opt/smkarier
chmod 750 /opt/smkarier
Setelah itu restore seluruh .env, docker-compose, Traefik config, dan memory.ini dari backup atau git. Pastikan permission file ENV dan acme.json berada di 600.
Phase 5-8
Buat Network, Update DNS, Jalankan Traefik dan Data Layer
Infra Bring-up
docker network create smk-prod-net
docker network create smk-stg-net
docker compose -f /opt/smkarier/config/traefik/docker-compose.traefik.yml up -d
docker compose -f /opt/smkarier/data/docker-compose.data.yml up -d
docker compose -f /opt/smkarier/data/docker-compose.data.stg.yml up -d
sleep 30
docker ps | grep -E "postgres|redis"
- Masuk ke Cloudflare dan arahkan semua A record ke IP server baru.
- Tunggu propagasi sekitar 5 menit dengan proxy Cloudflare aktif.
Phase 9-12
Restore Database, Jalankan Aplikasi, Setup Runner, Verifikasi
Application Recovery
docker exec postgres_prod psql -U postgres -c "CREATE USER smkarier_admin WITH PASSWORD 'DqbdFmnjL1S22Ja_dgYdHpbgum9liDch';"
docker exec postgres_prod psql -U postgres -c "CREATE DATABASE smkarier_prod OWNER smkarier_admin;"
cat /path/to/backup/smkarier_prod_latest.sql | docker exec -i postgres_prod psql -U smkarier_admin -d smkarier_prod
echo [GITHUB_TOKEN] | docker login ghcr.io -u [GITHUB_USER] --password-stdin
docker compose -f /opt/smkarier/data/docker-compose.data.yml -f /opt/smkarier/app/docker-compose.app.yml up -d
docker compose -f /opt/smkarier/data/docker-compose.data.stg.yml -f /opt/smkarier/app/docker-compose.stg.yml up -d
cd /home/deploy
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64.tar.gz -L https://github.com/actions/runner/releases/download/v2.x.x/actions-runner-linux-x64-2.x.x.tar.gz
tar xzf actions-runner-linux-x64.tar.gz
./config.sh --url https://github.com/SMKarier-Inovasi-Digital --token [REGISTRATION_TOKEN] --name vps-hostinger-core --runnergroup smkarier-vps --labels vps,docker,production,staging --unattended
sudo ./svc.sh install deploy
sudo ./svc.sh start
sudo systemctl enable actions.runner.SMKarier-Inovasi-Digital.vps-hostinger-core.service
docker ps --format "table {{.Names}}\t{{.Status}}"
curl -I https://smkarier.com
curl -I https://admin.smkarier.com
curl -I https://stg.smkarier.cloud
curl -I https://admin-stg.smkarier.cloud
sudo systemctl is-active actions.runner.SMKarier-Inovasi-Digital.vps-hostinger-core.service
10. Credential & Akses Penting
Area sensitif untuk akses cepat saat insiden. Nilai sensitif disembunyikan secara default dan bisa ditampilkan manual saat diperlukan.
Layanan Eksternal
| Layanan | Akun / Identitas | Fungsi |
|---|---|---|
| Hostinger | hpanel.hostinger.com | VPS management dan billing |
| Cloudflare | cloudflare.com | DNS, SSL, proxy |
| GitHub | github.com/SMKarier-Inovasi-Digital | Code, CI/CD, container registry |
| Google Cloud | Project: original-brace-482310-s6 | Storage bucket dan Vertex AI |
| Watzap | app.watzap.id | WhatsApp OTP dan notifikasi |
| Midtrans | Merchant ID: M013621025 | Payment gateway |
| Mailtrap | SMTP sandbox | Email development dan testing |
Google Cloud Project
11. Checklist Monitoring
Rutinitas harian, mingguan, dan bulanan agar operasional tetap sehat dan recovery tetap siap dipakai saat dibutuhkan.
Harian
docker psmenunjukkan semua container dalam status healthy atau running.df -h /menunjukkan disk usage di bawah 80%.- Akses
https://smkarier.comberjalan normal. - Akses
https://admin.smkarier.comberjalan normal. - Akses
https://stg.smkarier.cloudberjalan normal.
Mingguan
- Cek 100 log terakhir frontend dan CMS tanpa error kritis.
free -hmenunjukkan RAM usage normal, idealnya di bawah 80%.- Jalankan
docker image prune -funtuk bersihkan image lama. - Periksa seluruh GitHub Actions run berjalan sukses.
- Lakukan backup manual database production.
Bulanan
- Update Docker image ke versi terbaru jika aman.
- Review auto-renew SSL dan expiry sertifikat.
- Analisis tren disk usage.
- Test restore backup di staging.
- Review ENV untuk menghapus placeholder yang tidak relevan.
- Update dokumentasi DRP jika ada perubahan infrastruktur.
docker exec postgres_prod pg_dump \
-U smkarier_admin \
-d smkarier_prod \
--no-owner \
--clean \
> /opt/smkarier/backup/daily/smkarier_prod_$(date +%Y%m%d_%H%M%S).sql
gzip /opt/smkarier/backup/daily/smkarier_prod_$(date +%Y%m%d)*.sql
smk — Deploy Control Shortcuts
smk ps # status semua container
smk up:prod # recreate frontend + cms production
smk up:prod:fe # recreate frontend production
smk up:prod:cms # recreate CMS production
smk up:prod:ai # recreate AI service production
smk up:stg # recreate frontend + cms staging
smk up:stg:fe # recreate frontend staging
smk up:stg:cms # recreate CMS staging
smk up:stg:ai # recreate AI service staging ✅
smk log:fe # log frontend production
smk log:cms # log CMS production
smk log:fe:stg # log frontend staging
smk log:cms:stg # log CMS staging
smk log:ai:stg # log AI staging
smk cache:prod # clear cache production
smk cache:stg # clear cache staging
smk config:stg # config:cache staging
smk migrate:prod # migrate production
smk migrate:stg # migrate staging
smk reverb:prod # restart reverb production
smk reverb:stg # restart reverb staging
smk disk # disk + docker usage
smk stats # RAM/CPU per container
smk runner:status # cek GitHub runner
smk cleanup # hapus image lama (>7 hari)
12. Riwayat Perubahan
Versi dokumen, kapan dibuat, dan catatan perawatan agar DRP selalu relevan.