ollama ls
curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.2:latest\", \"keep_alive\": -1}"
ollama ps
ollama ls
curl http://localhost:11434/api/generate -d "{\"model\": \"llama3.2:latest\", \"keep_alive\": -1}"
ollama ps
Jalankan perintah ini untuk langsung memasukkan alias ke dalam konfigurasi bash Anda:
echo "alias run='/home/rs/run.sh'" >> ~/.bashrc
Agar terminal tidak perlu di-restart, jalankan perintah ini untuk memuat ulang konfigurasinya:
source ~/.bashrcsudo apt update
sudo apt install qemu-guest-agent -y
sudo systemctl start qemu-guest-agent
startzabbixagent-smart.sh#!/bin/bash
# --- KONFIGURASI ---
CONTAINER_NAME="zabbix-agent"
ZABBIX_SERVER="192.168.10.65" # IP Server Pusat Anda
HOSTNAME_KITA=$(hostname) # Mengambil hostname otomatis agar unik di dashboard
IMAGE="docker.io/zabbix/zabbix-agent2:alpine-7.0-latest"
echo "🔍 Memulai pengecekan Agent untuk host: $HOSTNAME_KITA..."
# 1. Cek apakah Podman terinstal
if ! command -v podman &> /dev/null; then
echo "❌ Error: Podman tidak ditemukan. Silakan instal podman terlebih dahulu."
exit 1
fi
# 2. Fungsi Cleanup: Hapus kontainer lama jika ada agar tidak bentrok
if [ "$(podman ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "🔄 Menghapus kontainer lama $CONTAINER_NAME..."
podman rm -f $CONTAINER_NAME > /dev/null
fi
# 3. Jalankan Zabbix Agent 2 dengan fitur Smart & Portable
echo "🚀 Menjalankan Zabbix Agent 2 (Versi Alpine)..."
podman run -d --name $CONTAINER_NAME \
--net=host \
--privileged \
--restart always \
-e ZBX_SERVER_HOST="$ZABBIX_SERVER" \
-e ZBX_HOSTNAME="$HOSTNAME_KITA" \
-e ZBX_SERVER_ACTIVE="$ZABBIX_SERVER" \
-v /:/host:ro,Z \
-v /proc:/host/proc:ro,Z \
-v /sys:/host/sys:ro,Z \
$IMAGE
# 4. Verifikasi Akhir
if [ $? -eq 0 ]; then
echo "------------------------------------------------"
echo "✅ Agent Berhasil Dijalankan secara Portable!"
echo "📊 Hostname di Zabbix: $HOSTNAME_KITA"
echo "🔗 Terhubung ke Server: $ZABBIX_SERVER"
echo "📝 Gunakan 'podman logs -f $CONTAINER_NAME' untuk cek log."
echo "------------------------------------------------"
else
echo "❌ Gagal menjalankan Agent."
fi
Berikut adalah panduan ringkas untuk membuat dashboard tabel pemantau (All-in-One) agar Anda bisa melihat status CPU, RAM, dan Uptime dari semua server sekaligus dalam satu layar tanpa perlu klik satu per satu.
Pastikan semua server (Windows/Linux) sudah terdaftar di menu Data Collection > Hosts dan indikator ZBX sudah berwarna Hijau.
Buka menu Dashboards (menu paling atas di sidebar).
Klik tombol Create dashboard di pojok kanan atas.
Beri nama, contoh: Monitoring Center, lalu klik Apply.
Klik Add widget di tengah layar atau pojok kanan atas.
Pilih Type: Top hosts.
Pada bagian Hosts, pilih grup server Anda atau masukkan nama host satu per satu (seperti rs, server-windows, dsb).
Klik tombol Add pada bagian Columns untuk setiap data yang ingin ditampilkan:
| Nama Kolom | Data / Item | Catatan |
| Host | Host name | Menampilkan nama server. |
| IP Address | Host interface | Menampilkan IP server secara otomatis. |
| CPU | Item value: CPU utilization | Menampilkan beban prosesor dalam %. |
| RAM | Item value: Memory utilization | Menampilkan penggunaan RAM dalam %. |
| Uptime | Item value: System uptime | Menampilkan durasi server menyala. |
export_volume.sh)Gunakan ini di server asal untuk membungkus folder data.
#!/bin/bash
CONTAINER_NAME="psmysql"
DB_DATA_DIR="$HOME/mysql"
BACKUP_DIR="$HOME/volume_backup"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# Buat folder backup jika belum ada
[[ ! -d "$BACKUP_DIR" ]] && mkdir -p "$BACKUP_DIR"
echo "📦 Archiving volume dari $DB_DATA_DIR..."
podman unshare tar -czf "$BACKUP_DIR/psmysql_$TIMESTAMP.tar.gz" -C "$DB_DATA_DIR" .
echo "✅ Selesai: $BACKUP_DIR/psmysql_$TIMESTAMP.tar.gz"
import_volume.sh)Gunakan ini di server tujuan untuk mengekstrak data.
#!/bin/bash
DB_DATA_DIR="$HOME/mysql"
BACKUP_DIR="$HOME/volume_backup"
# Cari file terbaru
LATEST_BACKUP=$(ls -t $BACKUP_DIR/*.tar.gz 2>/dev/null | head -1)
if [[ -z "$LATEST_BACKUP" ]]; then
echo "❌ File backup tidak ditemukan di $BACKUP_DIR"; exit 1
fi
echo "📦 Import file: $(basename $LATEST_BACKUP)"
read -p "Lanjutkan? (y/n): " CONFIRM
[[ $CONFIRM != "y" ]] && exit 0
# Eksekusi
rm -rf "$DB_DATA_DIR" && mkdir -p "$DB_DATA_DIR"
podman unshare tar -xzvf "$LATEST_BACKUP" -C "$DB_DATA_DIR"
podman unshare chown -R 1001:1001 "$DB_DATA_DIR"
echo "✅ Import selesai. Silakan jalankan startmysql.sh"
btop seperti task manager
ranger file explorer
pydf monitor disk
startmysql.sh (Tanpa InnoDB Config)Gunakan $USER agar script otomatis mengenali siapa pun yang menjalankan script ini.
#!/bin/bash
# Nama File: startmysql.sh
CONTAINER_NAME="psmysql"
# Menggunakan $HOME agar otomatis menyesuaikan nama user server
DB_DATA_DIR="$HOME/mysql"
IMAGE_NAME="docker.io/percona/percona-server:8.0.44"
echo "--- Menjalankan Percona Server ---"
# Inisialisasi folder
mkdir -p "$DB_DATA_DIR"
# Paksa UID 1001 (default Percona) tanpa perlu tahu nama user host
podman unshare chown -R 1001:1001 "$DB_DATA_DIR"
podman rm -f $CONTAINER_NAME >/dev/null 2>&1 || true
podman run -d \
--name $CONTAINER_NAME \
--restart unless-stopped \
-p 3306:3306 \
-v "$DB_DATA_DIR":/var/lib/mysql:Z \
-e TZ=Asia/Jakarta \
-e MYSQL_ROOT_PASSWORD="SecretRootPassword" \
-e MYSQL_ROOT_HOST="%" \
$IMAGE_NAME \
--max_connections=151 \
--default-authentication-plugin=mysql_native_password \
--sql-mode="" \
--innodb_strict_mode=OFF \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci \
--default-time-zone="+07:00"
echo "✅ Database berhasil dijalankan di $DB_DATA_DIR"
startbackup.sh (Universal)Menggunakan variabel $HOME dan $USER agar tidak gagal saat pindah server.
#!/bin/bash
# Nama File: startbackup.sh
CONTAINER_NAME="psmysql"
DATA_DIR="$HOME/mysql"
BACKUP_BASE_DIR="$HOME/backups"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
TARGET_DIR="/backups/backup_$TIMESTAMP"
mkdir -p "$BACKUP_BASE_DIR"
# Memberikan izin ke container tanpa hardcode nama user
podman unshare chown -R 1001:1001 "$BACKUP_BASE_DIR"
echo "--- Memulai Backup Fisik ---"
podman run --rm \
--network container:$CONTAINER_NAME \
-v "$DATA_DIR":/var/lib/mysql:ro,Z \
-v "$BACKUP_BASE_DIR":/backups:z \
docker.io/percona/percona-xtrabackup:8.0 \
xtrabackup --backup \
--host=127.0.0.1 \
--user=root \
--password="SecretRootPassword" \
--target-dir="$TARGET_DIR"
# Kembalikan akses ke user yang sedang login saat ini
sudo chown -R $USER:$USER "$BACKUP_BASE_DIR"
echo "✅ Backup selesai: $BACKUP_BASE_DIR/backup_$TIMESTAMP"
startrestore.sh (Solusi Error 13)Ini adalah versi yang memperbaiki error pada gambar Anda dengan menggunakan sudo chown -R $USER:$USER agar tidak peduli siapa nama user-nya.
#!/bin/bash
# Nama File: startrestore.sh
set -e
CONTAINER_NAME="psmysql"
DATA_DIR="$HOME/mysql"
BACKUP_BASE_DIR="$HOME/backups"
IMAGE_XTRABACKUP="docker.io/percona/percona-xtrabackup:8.0"
echo "--- Proses Restore Database ---"
# Pilih folder backup
cd "$BACKUP_BASE_DIR"
PS3="Pilih nomor folder backup: "
select SELECTED in *; do
if [ -n "$SELECTED" ]; then
FULL_PATH="$BACKUP_BASE_DIR/$SELECTED"
break
fi
done
# SOLUSI ERROR 13: Ambil alih kepemilikan folder secara universal
sudo chown -R $USER:$USER "$FULL_PATH"
sudo chmod -R 777 "$FULL_PATH"
echo "1. Prepare Data (Applying Logs)..."
# Gunakan user 0:0 agar xtrabackup bisa mkdir #innodb_redo di dalam container
podman run --rm --user 0:0 -v "$FULL_PATH:/backup:rw,z" $IMAGE_XTRABACKUP \
xtrabackup --prepare --target-dir=/backup
echo "2. Cleanup & Copy-back..."
podman rm -f $CONTAINER_NAME >/dev/null 2>&1 || true
sudo rm -rf "$DATA_DIR"
mkdir -p "$DATA_DIR"
podman run --rm --user 0:0 \
-v "$FULL_PATH:/backup:ro,z" \
-v "$DATA_DIR":/var/lib/mysql:rw,z \
$IMAGE_XTRABACKUP \
xtrabackup --copy-back --target-dir=/backup --datadir=/var/lib/mysql
# Final Touch: Set izin ke UID 1001 agar Percona bisa start
podman unshare chown -R 1001:1001 "$DATA_DIR"
echo "✅ Restore selesai. Sekarang jalankan ./startmysql.sh"# buat file
nano /home/rs/start-mysql.sh
#!/bin/bash
cd /home/rs/podman/db_percona || exit 1
/usr/bin/podman compose up -d
# jadikan executable
chmod +x /home/rs/start-mysql.sh
# jalankan
/home/rs/start-mysql.sh
nama file : docker-compose.yml
version: "3.9"
Ukuran file .tar lebih kecil dari size image di Docker → NORMAL.
docker save percona/percona-server:8.0.44 -o percona_8.0.44.tar
Hasil:
File ±300–600 MB (compressed)
Image di Docker ±2 GB (uncompressed)
docker rmi percona/percona-server:8.0.44
docker load -i percona_8.0.44.tar
docker images
Image percona/percona-server:8.0.44 muncul kembali → restore sukses
Buka PowerShell di folder yang ada
docker-compose.yml
Contoh:
C:\docker\app
└─ docker-compose.yml
Cara cepat:
Buka folder → klik kanan → Open in Terminal
Atau:
cd C:\docker\app
docker compose up -d
docker compose down
docker ps
docker compose up -d
docker compose down
docker logs <nama_container>
docker rm -f <nama_container>
Jangan jalankan Docker dari folder sembarang
Satu aplikasi = satu folder
Semua perubahan lewat docker-compose.yml
Kasus
PBS baru, iSCSI lama berisi datastore PBS sebelumnya, data tidak boleh hilang.
apt install open-iscsi -y iscsiadm -m discovery -t sendtargets -p 193.168.10.19 iscsiadm -m node --login
Pastikan disk muncul (/dev/sdb).
mount /dev/sdb /mnt/pbs
ls -la /mnt/pbs
Jika terlihat struktur seperti:
.chunks
.lock
.gc-status
vm
→ itu datastore PBS lama (VALID).
UI/CLI menolak karena path tidak kosong (by design).
Solusi resmi: edit config langsung
nano /etc/proxmox-backup/datastore.cfg
Isi:
datastore: nas-backup-19 path /mnt/pbs
Restart service:
systemctl restart proxmox-backup systemctl restart proxmox-backup-proxy
Datastore lama langsung muncul di UI.
Ambil UUID:
blkid /dev/sdb
Edit /etc/fstab:
UUID=xxxx /mnt/pbs xfs _netdev,noatime 0 2
Reload:
systemctl daemon-reload
Aktifkan auto-login iSCSI:
iscsiadm -m node -p 193.168.10.19 --op update -n node.startup -v automatic
reboot mount | grep /mnt/pbs
Jika masih ter-mount → PERMANEN & AMAN.
<localfile>
<location>eventchannel</location>
</localfile>
<localfile>
<location>syscheck.log</location>
</localfile>
<ossec_config>
<client>
<server>
<address>127.0.0.1</address>
</server>
</client>
</ossec_config>
@echo off
echo === KILL UPDATE PROCESSES ===
taskkill /F /IM "MoUsoCoreWorker.exe" /T >nul 2>&1
taskkill /F /IM "usoclient.exe" /T >nul 2>&1
taskkill /F /IM "wuauclt.exe" /T >nul 2>&1
echo === STOP SERVICES ===
net stop wuauserv /y >nul 2>&1
net stop bits /y >nul 2>&1
net stop UsoSvc /y >nul 2>&1
net stop DoSvc /y >nul 2>&1
echo === DISABLE SERVICE MAIN ===
sc config wuauserv start= disabled >nul 2>&1
sc config bits start= disabled >nul 2>&1
sc config UsoSvc start= disabled >nul 2>&1
echo === APPLY REGISTRY POLICIES ===
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /v DoNotConnectToWindowsUpdateInternetLocations /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v NoAutoUpdate /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v AUOptions /t REG_DWORD /d 1 /f
echo === DISABLE TASK SCHEDULER UPDATE ===
schtasks /Change /TN "\Microsoft\Windows\WindowsUpdate\Scheduled Start" /Disable >nul 2>&1
schtasks /Change /TN "\Microsoft\Windows\WindowsUpdate\Maintenance Install" /Disable >nul 2>&1
schtasks /Change /TN "\Microsoft\Windows\UpdateOrchestrator\Schedule Scan" /Disable >nul 2>&1
schtasks /Change /TN "\Microsoft\Windows\UpdateOrchestrator\Schedule Retry Scan" /Disable >nul 2>&1
schtasks /Change /TN "\Microsoft\Windows\UpdateOrchestrator\USO_UxBroker" /Disable >nul 2>&1
echo === RENAME SOFTWARE DISTRIBUTION ===
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old >nul 2>&1
echo === DONE ===
pause