Skip to content

Instalasi

Condensa didistribusikan sebagai satu binary mandiri: web UI tertanam di dalamnya, database menggunakan SQLite, dan konfigurasi dilakukan lewat environment variable. Kubernetes tidak diperlukan — hanya terlibat bila target migrasinya adalah Awanio CEP.

Persyaratan

  • Server Linux x86_64 (VM juga bisa)
  • Akses jaringan dari server Condensa ke:
    • VMware vCenter/ESXi (port 443)
    • target migrasi — API Awanio Cockpit atau Vapor (lihat Integrasi)
  • Ruang disk untuk staged transfer (hanya dipakai oleh fallback staged dan upload OVA/VHD): ukur direktori staging sesuai disk terbesar yang akan dimigrasikan

Dependensi jalur data

Condensa memindahkan data disk lewat salah satu dari dua jalur, dan masing-masing punya prasyarat sendiri. Engine-nya dipilih otomatis per migrasi, jadi ada baiknya mengetahui jalur mana yang akan dipakai sebelum memulai transfer besar.

Jalur dataAliran dataWarm migrationPrasyarat
VDDK langsung (disarankan)ESXi → host targetDidukungDi host target (Vapor): nbdkit dengan plugin VDDK, library VDDK dari VMware, plus qemu-nbd dan nbdfuse
Staged (fallback, hanya target Cockpit)ESXi → Condensa → targetTidak didukungDi host Condensa: qemu-img (paket qemu-utils)

Di host target (Vapor): VDDK

Tanpa VDDK, warm migration mustahil dan semua migrasi jatuh ke jalur staged. Pasang lewat UI Vapor (System → Third-party libraries) atau Ansible role, lalu pastikan badge-nya berbunyi installed. Log migrasi menyebutkan engine yang terpilih:

Target host supports VDDK; using direct VDDK pull

Bila yang muncul Target host has no VDDK (nbdkit not found), berarti jalur staged yang dipakai.

Di host Condensa: qemu-img

Jalur staged mengonversi setiap disk hasil ekspor menjadi qcow2 di dalam Condensa, sehingga qemu-img harus tersedia di sana:

bash
sudo apt-get install -y qemu-utils     # Debian/Ubuntu
sudo dnf install -y qemu-img           # RHEL/Rocky

Condensa menolak memulai migrasi staged bila paket ini tidak ada, alih-alih gagal di tengah proses ekspor. Virtual appliance sudah menyertakannya.

Utamakan VDDK di target

Jalur staged menyalin setiap byte dua kali (sumber → Condensa → target) dan membutuhkan ruang staging sebesar disk terbesar. Memasang VDDK di target menghilangkan kedua beban itu sekaligus membuka warm migration — layak dilakukan sebelum memigrasikan VM besar.

Keterjangkauan jaringan untuk jalur staged

Saat jalur staged dipakai, target mengunduh disk yang sudah disiapkan dari Condensa melalui CONDENSA_PUBLIC_URL. URL itu harus terjangkau dari host target, bukan sekadar dari browser Anda: alamat di jaringan privat atau di balik NAT yang tidak bisa dirutekan target akan gagal di langkah unduh.

Menginjeksi CONDENSA_PUBLIC_URL saat instalasi

Kedua installer menerima nilai ini langsung, jadi Anda tidak perlu menyunting berkas environment secara manual di host baru. Berikan --public-url (atau ekspor CONDENSA_PUBLIC_URL sebelum menjalankan); prioritasnya --public-url > $CONDENSA_PUBLIC_URL > alamat utama host yang terdeteksi otomatis.

bash
# Binary yang memasang dirinya sendiri
sudo ./condensa install --public-url http://condensa.example.com:8080

# Installer shell
sudo ./install.sh --public-url http://condensa.example.com:8080 ./condensa
# atau lewat environment:
sudo CONDENSA_PUBLIC_URL=http://203.0.113.10:8080 ./install.sh ./condensa

Fallback deteksi otomatis hanyalah tebakan terbaik dari hostname -I; ia salah di host NAT atau multi-homed, jadi set eksplisit di lokasi pelanggan. Memberikan --public-url saat upgrade hanya menimpa satu baris itu dan menjaga seluruh secret tetap utuh — solusi ketika instalasi pertama menebak keliru.

Tulis nilainya agar bisa dipakai target apa adanya: sertakan port kecuali port default skema (443 untuk https, 80 untuk http), pakai https:// setiap kali CONDENSA_TLS bukan off, dan tambahkan prefiks base-path bila Anda mengubah CONDENSA_BASE_PATH dari /condensa.

SituasiCONDENSA_PUBLIC_URL
Nama DNS, port HTTP defaulthttp://condensa.example.com:8080
IP publikhttp://203.0.113.10:8080
TLS aktif (CONDENSA_TLS≠off)https://condensa.example.com
Di balik prefiks base-pathhttp://10.20.0.5:8080/condensa

1. Pasang binary

bash
sudo install -m 0755 condensa-server /usr/local/bin/condensa-server
sudo mkdir -p /var/lib/condensa/staging /var/log/condensa /etc/condensa

2. Buat kunci enkripsi

Kredensial provider (password vCenter, API token) disimpan terenkripsi AES-256-GCM. Kuncinya dibuat sekali dan dipegang oleh Anda — database yang bocor tidak membocorkan kredensial infrastruktur.

bash
condensa-server -generate-key

Anda juga butuh kunci penanda-tangan JWT untuk token autentikasi. Server menolak start tanpa kunci ini (tidak ada default yang tidak aman), dan mengubahnya kemudian akan membatalkan sesi yang sedang berjalan:

bash
openssl rand -base64 48

Simpan keduanya di /etc/condensa/condensa.env:

bash
sudo tee /etc/condensa/condensa.env <<'EOF'
CONDENSA_ENCRYPTION_KEY=<kunci-enkripsi-hasil-generate>
JWT_SECRET=<kunci-jwt-hasil-generate>
EOF
sudo chmod 600 /etc/condensa/condensa.env

Jaga kunci ini baik-baik

Kehilangan CONDENSA_ENCRYPTION_KEY berarti seluruh kredensial provider harus dimasukkan ulang. Cadangkan file ini bersama secret Anda yang lain.

3. Buat unit systemd

/etc/systemd/system/condensa.service:

ini
[Unit]
Description=Condensa VM migration server
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/condensa-server
Environment=PORT=8080
Environment=DB_PATH=/var/lib/condensa/condensa.db
Environment=CONDENSA_UPLOAD_DIR=/var/lib/condensa/staging
Environment=CONDENSA_LOG_FILE=/var/log/condensa/condensa.log
Environment=CONDENSA_PUBLIC_URL=http://condensa.example.com:8080
# condensa.env holds CONDENSA_ENCRYPTION_KEY and JWT_SECRET (chmod 600)
EnvironmentFile=/etc/condensa/condensa.env
Restart=on-failure

[Install]
WantedBy=multi-user.target
bash
sudo systemctl daemon-reload
sudo systemctl enable --now condensa

Environment variable

VariabelWajibKegunaan
CONDENSA_ENCRYPTION_KEYYaKunci AES-256 untuk kredensial provider at rest (-generate-key)
JWT_SECRETYaKunci penanda-tangan token autentikasi (≥32 byte, mis. openssl rand -base64 48); server menolak start tanpanya
PORTTidak (default 8080)Port HTTP
DB_PATHTidakLokasi file database SQLite
CONDENSA_PUBLIC_URLUntuk staged transfer / OVAURL yang dipakai target untuk mengambil disk dari Condensa
CONDENSA_UPLOAD_DIRUntuk staged transfer / OVADirektori staging — ukur sesuai disk terbesar
CONDENSA_LOG_FILEDisarankanMengaktifkan halaman Logs di UI
CONDENSA_ADMIN_USERNAME / CONDENSA_ADMIN_PASSWORDTidakMembuat admin pertama secara non-interaktif (otomasi)
CONDENSA_TLSDisarankanoff, self-signed, atau on — lihat HTTPS
CONDENSA_TLS_CERT / CONDENSA_TLS_KEYDengan CONDENSA_TLS=onRantai sertifikat PEM dan kunci privat
CONDENSA_TLS_HOSTSTidakNama/alamat tambahan yang harus dicakup sertifikat self-signed
CONDENSA_UPDATE_URLUntuk update di tempatFeed update bertanda tangan — lihat Update
CONDENSA_UPDATE_PUBLIC_KEYDengan CONDENSA_UPDATE_URLKunci Ed25519 untuk memverifikasi feed

HTTPS

Formulir login mengirim password dan setiap permintaan berikutnya membawa token sesi, jadi sajikan dashboard melalui TLS. Tersedia tiga mode:

CONDENSA_TLSPerilaku
off (bawaan)HTTP biasa. Gunakan hanya bila ada reverse proxy di depan yang menangani TLS.
self-signedCondensa menerbitkan sertifikatnya sendiri dan memperbaruinya otomatis.
onMemakai CONDENSA_TLS_CERT dan CONDENSA_TLS_KEY.

Nilai yang tidak dikenali menyebabkan error saat startup, bukan diam-diam kembali ke plaintext.

Sertifikat self-signed

Sebagian besar instalasi diakses lewat alamat IP di jaringan privat, di mana tidak ada otoritas sertifikat yang bisa menerbitkan apa pun:

bash
CONDENSA_TLS=self-signed

Sertifikat disimpan di samping database, mencakup loopback, hostname, dan setiap alamat antarmuka, serta diterbitkan ulang otomatis saat mendekati kedaluwarsa atau saat host mendapat alamat baru. Browser memperingatkan pada kunjungan pertama sampai Anda mempercayainya — satu klik sekali, dibanding mengirim kredensial terbuka di setiap permintaan.

Tambahkan nama yang tidak berasal dari antarmuka:

bash
CONDENSA_TLS_HOSTS=condensa.internal.example.com,10.20.0.5

Sertifikat yang Anda sediakan

bash
CONDENSA_TLS=on
CONDENSA_TLS_CERT=/etc/condensa/tls/fullchain.pem
CONDENSA_TLS_KEY=/etc/condensa/tls/privkey.pem

User service harus bisa membaca kedua berkas itu.

Transfer yang menarik data dari Condensa

Dua jalur migrasi membuat target mengunduh image disk dari Condensa lewat CONDENSA_PUBLIC_URL: jalur staged ke Cockpit, dan Awanio CEP (CDI). Pengunduh itu memverifikasi sertifikat, sehingga sertifikat self-signed akan ditolak kecuali target mempercayainya. Gunakan sertifikat bertanda tangan CA untuk jalur tersebut.

Migrasi VDDK langsung — bawaan untuk target Cockpit dan Vapor — menarik data dari VMware, bukan dari Condensa, jadi tidak terpengaruh.

Jangan lupa set CONDENSA_PUBLIC_URL ke URL https:// saat TLS aktif.

4. Menjalankan pertama kali

Buka http://<server>:8080. Pada database yang masih kosong Condensa menampilkan setup wizard untuk membuat akun administrator pertama dan langsung login. Untuk deployment terskrip, gunakan CONDENSA_ADMIN_USERNAME dan CONDENSA_ADMIN_PASSWORD — admin dibuat saat startup.

Setelah setup:

  • buat akun tambahan di tab Users (khusus admin). Role member adalah role operator: bisa melihat provider serta membuat, menjalankan, dan membatalkan migrasi; pengelolaan provider, penghapusan, administrasi user, dan audit log tetap khusus admin.
  • setiap aksi penting keamanan (login dan kegagalannya, perubahan user dan provider, siklus hidup migrasi) tercatat di tab Audit Log.

5. Hubungkan provider

Lanjutkan ke Integrasi untuk mendaftarkan sumber VMware serta target Awanio Cockpit atau Vapor.

Update

Update tidak pernah menyentuh /var/lib/condensa maupun /etc/condensa, sehingga provider Anda, kredensialnya yang terenkripsi, riwayat migrasi, pengguna, dan kedua secret tetap utuh. Anda tidak perlu mengatur ulang apa pun.

Dari dashboard

Saat ada rilis baru, administrator melihat pemberitahuan dengan tombol Install update. Condensa mengunduh rilis, memverifikasinya, memasangnya, lalu restart — beberapa detik tidak dapat diakses. Tombol itu menolak bekerja saat ada migrasi berjalan, karena restart akan membatalkannya.

Instalasi yang dipasang dengan Condensa 1.1.8 atau lebih baru sudah terprakonfigurasi memeriksa enterprise portal — tanpa kunci, tanpa pengaturan apa pun. Sumbernya satu baris di /etc/condensa/condensa.env; kosongkan untuk mematikan pemeriksaan update:

bash
CONDENSA_UPDATE_URL=https://enterprise.awan.io/api/v1/products/condensa/releases/latest

Instalasi yang dipasang sebelum 1.1.8 mendapat perilaku yang sama setelah satu upgrade manual berikutnya; baris di atas juga bisa ditambahkan sendiri.

Dari command line

bash
sudo condensa update --check    # laporkan yang tersedia, tanpa mengubah apa pun
sudo condensa update            # pasang rilis terbaru lalu restart
sudo condensa update --to 1.1.7 # pasang rilis tertentu

Tambahkan --force untuk update saat ada migrasi berjalan — migrasi itu akan terputus dan gagal.

Yang diperiksa updater

Sebelum apa pun menggantikan binary yang sekarang berfungsi:

  1. rilis harus berasal dari sumber tepercaya — TLS ke portal yang dikonfigurasi, atau, untuk feed air-gapped, tanda tangan Ed25519 yang cocok dengan kunci Anda;
  2. SHA-256 berkas yang diunduh harus sama dengan yang dipublikasikan feed;
  3. binary yang diunduh harus bisa dijalankan dan melaporkan versi yang dijanjikan — ini menangkap unduhan terpotong atau salah arsitektur yang akan membuat service gagal start;
  4. tidak boleh ada migrasi berjalan, kecuali dipaksa.

Binary yang digantikan disimpan sebagai condensa.previous, jadi rollback cukup menyalin berkas dan restart.

Mengganti binary secara manual

Tetap didukung dan tidak berubah — migrasi database berjalan saat startup:

bash
sudo install -m 0755 condensa /usr/local/bin/condensa
sudo systemctl restart condensa

Instalasi air-gapped

Host yang tidak bisa menjangkau enterprise portal tetap bisa update di tempat, dengan dua cara.

Manual (paling sederhana): bawa masuk tarball rilis lewat jalur transfer terkontrol Anda, cocokkan SHA-256-nya dengan nilai di halaman rilis portal, lalu:

bash
tar -xzf condensa-<versi>-linux-amd64.tar.gz
sudo ./condensa install

Upgrade mempertahankan database, provider, kredensial, dan pengaturan.

Otomatis, dari mirror internal: Awanio menyertakan, sebagai bagian dari delivery, feed bertanda tangan (updates.signed.json) beserta kunci publik untuk memverifikasinya. Host feed dan tarball rilis di server https internal, lalu konfigurasi tiap instalasi:

bash
CONDENSA_UPDATE_URL=https://releases.internal.example.com/condensa/updates.signed.json
CONDENSA_UPDATE_PUBLIC_KEY=<kunciA>,<kunciB>

Jika sertifikat mirror berasal dari CA internal, tambahkan CA itu ke trust store OS tiap host Condensa. Feed ditandatangani Ed25519, sehingga mirror yang dibobol tidak dapat mengubah apa yang diterima instalasi; semua pemeriksaan updater lainnya tetap berlaku.