📑 Daftar Isi
- Kenapa Bisa Persistent? Ngerti Dulu Arsitekturnya
- Step 1: Install Tmux
- Step 2: Workflow Dasar Session Persistent
- Step 3: Auto-Restore Session dengan Tmux-Resurrect dan Continuum
- Step 4: Pastikan Tmux Server Hidup Terus dengan systemd
- Step 5: Auto-Attach Saat SSH Login
- Bonus: Scripting Session dari Luar
- Step 6: Best Practices dari Pengalaman
- Tabel Troubleshooting
- FAQ
Jadi gini, ceritanya kemarin malam. Aku lagi asik ngerjain maintenance di salah satu server client. Lagi setengah jalan – tepatnya 60 persen progress migrasi datanya – eh, koneksi tiba-tiba putus. Tetangga lagi bor pemasangan WiFi, listrik sempat kedip, dan HP yang aku pake hotspot kelepas. Singkat cerita, SSH terputus. Dan semua proses yang lagi jalan di terminal itu, lenyap seketika.
Rasanya kayak lagi nonton film epik terus tiba-tiba mati lampu di menit paling seru. Semua yang udah dikerjain berjam-jam, balik ke nol. Mau ngomel ke siapa? Siapa. Mau marah ke PLN? Gak akan ngubah apa-apa. Sejak malam itu aku nyimpen satu prinsip yang gak akan aku langgar lagi: gak ada kerja di terminal tanpa tmux session persistent.
Sebenernya masalahnya bukan cuma soal koneksi yang mendadak mati. Coba dipikir-pikir, ada banyak banget skenario yang bisa bikin pekerjaan terminal kamu ilang. SSH timeout yang putus diam-diam, laptop yang ketutup pas lagi ngerjain sesuatu yang panjang, web terminal yang ke-refresh, atau – jujur aja – kadang kita sendiri yang salah pencet tombol tutup. Semuanya punya akar masalah yang sama: proses yang jalan di dalam terminal itu nyawanya nyangkut ke terminal tersebut. Terminal mati, proses ikut mati. Gak ada tawar-menawar.
Untuk kita yang sehari-hari ngurus server, ini bukan cuma masalah jengkel-jengkel doang. Script backup yang udah jalan tiga jam bisa balik ke nol. Proses restore database yang setengah jalan harus diulang dari awal. Dampaknya ke operation bisa gede banget, belum lagi client yang nungguin. Lha, siapa yang mau nerangin ke client kalau progress 60 persen ilang gara-gara WiFi rumah? Gak enak kan.
Nah, di sini tmux masuk. Tmux, singkatan dari terminal multiplexer, itu kayak jembatan antara terminal kamu dan proses yang lagi jalan. Dia berjalan sebagai server daemon di background. Terminal kamu cuma jadi semacam layar remotenya. Pas layarnya ditutup, prosesnya tetep hidup. Tinggal buka terminal baru, attach, dan kerjaan kamu masih ada persis di tempat terakhir kamu ninggalinnya.
Dan kabar baiknya, setup-nya gak serumit yang dikira. Sepuluh sampai lima belas menit cukup buat dapetin workflow yang bisa nyimpen kerjaan kamu berhari-hari. Di artikel ini kita bakal bahas cara setup tmux session persistent dari nol sampai level yang bikin session kamu hampir mustahil ilang. Yuk, santai aja, kita bahas satu-satu.

Kenapa Bisa Persistent? Ngerti Dulu Arsitekturnya
Biar gak cuma ikut-ikutan, ada baiknya kita paham dulu kenapa tmux bisa bikin session tetap hidup padahal terminal sudah ditutup. Ini sebenernya konsep yang gampang banget, tapi sering dilupain orang pas belajar tmux.
Waktu kamu jalanin tmux, yang terjadi sebenarnya ada dua hal. Pertama, tmux nyalain sebuah server process di background – ini yang nyimpen semua session, window, dan pane. Kedua, terminal kamu jadi client yang nyambung ke server itu. Client boleh datang dan pergi kapan aja. Server-nya nggak ngaruh. Persis kayak warung kopi langganan kamu: pemiliknya ada di dapur terus, kamu bisa masuk-keluar warung sesukamu, dan kopi kamu tetap dibikinin.
Selama server tmux-nya jalan, session kamu aman. Dia cuma mati kalau: (1) server tmux yang di-kill, (2) server yang mati, atau (3) kamu sengaja kill session-nya. Di luar itu, SSH putus, laptop mati, browser crash – semua gak masalah. Dan dari situ kita bangun semua langkah di bawah.
Step 1: Install Tmux
Sebagian besar distro modern udah punya tmux di repository resminya, jadi gak perlu nambah repo apa pun. Tinggal pilih yang sesuai sama sistem kamu.
Buat keluarga Debian/Ubuntu:
sudo apt update && sudo apt install tmux
Buat keluarga RHEL/CentOS/Fedora:
sudo dnf install tmux
Kalau masih pake CentOS 7 atau server tua dengan yum:
sudo yum install tmux
Setelah kelar, cek versinya buat mastiin install-nya sukses:
tmux -V
Kamu bakal lihat sesuatu kayak tmux 3.4 atau versi di atasnya. Kalau udah, langsung nyobain workflow inti-nya.
Step 2: Workflow Dasar Session Persistent
Oke, sekarang bagian inti. Yang perlu kamu hafal cuma tiga perintah ini: bikin session, liat daftar session, dan attach ke session.
Buat session baru dengan nama (biar gampang dibedain):
tmux new -s migrasi -d
Flag -d itu detached, artinya session-nya langsung jalan di background tanpa nampilin layar ke kamu. Cek daftar session yang lagi jalan:
tmux ls
Outputnya kira-kira gini:
migrasi: 1 windows (created ...) [80x24]
Nah, session migrasi udah jalan. Sekarang attach ke session itu:
tmux attach -t migrasi
Begitu attach, kamu udah di dalam tmux. Jalanin apa pun yang kamu mau – install package, jalanin script, migrasi data, apa aja. Nah, ini yang penting: pas kamu mau ninggalin pekerjaan itu, jangan tutup terminalnya. Tekan tombol detach dulu. Default-nya: Ctrl-b, terus lepas, terus tekan d.
Ctrl-b d itu singkatan dari detach. Ini bakal ngeluarin kamu dari tmux, balik ke shell biasa, tapi session-nya tetep jalan di background. Sekarang coba tebak, apa yang terjadi kalau kamu tutup terminalnya, buka lagi, terus ketik tmux ls? Session migrasi masih ada. Attach lagi, kerjaan kamu lanjut dari posisi terakhir. Gitu doang sih. Simpel, tapi perubahan besar.
Beberapa shortcut dasar yang wajib dihafal buat keseharian:
- Ctrl-b d: detach, ninggalin session tetap jalan
- Ctrl-b c: bikin window baru di dalam session
- Ctrl-b n / p: pindah ke window berikutnya / sebelumnya
- Ctrl-b w: pilih window lewat daftar
- Ctrl-b %: split vertikal
- Ctrl-b ": split horizontal
- Ctrl-b x: kill pane yang aktif
Buat yang mau setelan lebih nyaman, kita bisa rapihin lewat ~/.tmux.conf. Contoh konfigurasi minimal yang aku pake:
set -g mouse on
set -g base-index 1
setw -g pane-base-index 1
bind r source-file ~/.tmux.conf
set -g mouse on itu bikin scroll dan klik bisa pake mouse, berguna banget buat yang terbiasa di GUI. base-index 1 bikin nomor window mulai dari 1, bukan 0 – kecil, tapi bikin irit kebingungan. Kalau kamu udah nyimpen konfigurasi ini, jalanin prefix + r (Ctrl-b r) buat reload config tanpa keluar dari tmux.
Sampai sini kamu sebenarnya udah punya workflow persistent yang bener-bener bisa diandelin. Tapi tenang, masih ada level berikutnya.
Step 3: Auto-Restore Session dengan Tmux-Resurrect dan Continuum
Workflow di atas udah nyimpen session selama server tmux-nya jalan. Tapi ada satu celah: kalau server-nya reboot, semua session ilang. Nah, di situ tmux-resurrect dan tmux-continuum masuk.
tmux-resurrect itu plugin yang nyimpen state session kamu – daftar session, window, pane, bahkan proses yang lagi jalan – ke file. Terus tmux-continuum yang otomatis nyimpen state-nya tiap beberapa menit dan ngerestore otomatis pas tmux distart. Kombinasi dua ini bikin session kamu hampir mustahil ilang.
Cara pasangnya gampang. Pertama, install dulu TPM (Tmux Plugin Manager):
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Terus edit ~/.tmux.conf dan tambahin ini:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-save-interval '15'
set -g @continuum-restore-on-start 'on'
run '~/.tmux/plugins/tpm/tpm'
Setelah itu reload config-nya (Ctrl-b r di dalam tmux, atau source manual), terus install semua plugin dengan cara masuk ke dalam tmux lalu tekan prefix + I (huruf besar i). Tunggu sebentar, TPM bakal clone semua plugin yang di-declare.
Dengan continuum-save-interval 15, state session kamu otomatis disimpen tiap 15 menit. Terus dengan continuum-restore-on-start, tiap kali tmux server nyala, dia bakal otomatis restore session yang kemarin. Jadi kalau server reboot, begitu kamu attach, semua session balik lagi kayak gak pernah kejadian apa-apa.
Buat yang mau control manual, tmux-resurrect juga punya shortcut: prefix + Ctrl-s buat save manual, prefix + Ctrl-r buat restore manual. Gunanya pas kamu mau save sebelum matiin server, biar gak nunggu interval 15 menit.
Catatan penting: plugin ini nyimpen state sebagai file di ~/.tmux/resurrect/. Pastikan direktori home kamu gak ke-wipe pas maintenance, atau backup filenya sekalian. Kalau kamu udah punya pola backup otomatis, masukkan aja direktori itu ke daftar. Baca juga artikel kami soal backup otomatis pakai cron biar server kamu aman secara keseluruhan.
Step 4: Pastikan Tmux Server Hidup Terus dengan systemd
Kadang ada kasus di mana session tmux mati walaupun gak ada yang kill. Salah satu biang keroknya: service manager yang matiin proses background pas user logout, atau server yang reboot dan tmux-nya gak ikut nyala lagi. Biar gak kayak gitu, kita bisa daftarin tmux server sebagai systemd user service.
Bikin file service-nya:
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/tmux-server.service
Isi file-nya:
[Unit]
Description=tmux persistent server
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/tmux start-server
ExecStop=/usr/bin/tmux kill-server
Restart=on-failure
[Install]
WantedBy=default.target
Kalau lokasi binary tmux kamu beda (cek pake which tmux), ganti aja ExecStart-nya sesuai. Terus aktifkan:
systemctl --user daemon-reload
systemctl --user enable --now tmux-server.service
systemctl --user status tmux-server.service
Ada satu langkah penting lagi: loginctl enable-linger. Tanpa ini, service user kamu bakal mati pas kamu logout. Dengan linger, service-nya tetep hidup walau kamu logout – persis yang kita mau.
loginctl enable-linger $USER
Kombinasi systemd user service plus tmux-resurrect itu rasanya kayak punya asisten yang rapiin meja kerja kamu tiap malam. Reboot server, login lagi, semua langsung balik.
Step 5: Auto-Attach Saat SSH Login
Sekarang step yang bikin workflow makin nyaman: biar session otomatis ke-attach pas kamu SSH ke server. Jadi gak perlu ketik tmux attach -t terus-terusan. Tinggal buka SSH, langsung kebawa ke session.
Caranya, tambahin script kecil di akhir ~/.bashrc (atau ~/.zshrc kalau pake zsh):
if [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
tmux has-session -t main 2>/dev/null && exec tmux attach -t main || exec tmux new -s main
fi
Logikanya gini: kalau kamu belum di dalam tmux (cek variabel TMUX kosong) dan ini koneksi SSH, maka cek apakah session main udah ada. Kalau ada, attach; kalau belum, bikin baru. exec di depannya biar shell-nya langsung diganti sama tmux, jadi pas kamu detach, kamu logout sekalian. Rapi, kan?
Kalau kamu sering kerja dengan beberapa session, tinggal ganti nama main jadi nama lain, atau bikin beberapa blok if. Opsi lain: bikin alias biar attach tinggal dua huruf:
alias tm="tmux attach -t main || tmux new -s main"
Nah, sekarang bayangin alurnya: SSH masuk, session langsung kebuka, kerja, Ctrl-b d, logout. Besoknya SSH lagi, session yang sama kebuka lagi, lengkap sama pane yang masih split. Mantep kan?
Bonus: Scripting Session dari Luar
Satu fitur yang sering gak disadari: kamu bisa ngontrol session tmux tanpa harus attach. Perintah tmux send-keys ngirim keystroke ke session yang lagi jalan. Ini emas banget buat otomasi.
Contohnya, buat ngirim command ke session migrasi:
tmux send-keys -t migrasi "df -h" Enter
Nah, ini bisa dimasukin ke cron atau script bash. Jadi kamu bisa bikin script yang jalanin pekerjaan di dalam session yang persistent – kombinasi pas banget buat kamu yang suka otomasi. Contoh kecil: bikin session khusus backup, terus cron-nya nyuruh session itu jalanin backup tiap malam. Kalau mau liat isi session-nya tanpa attach, pakai capture-pane:
tmux capture-pane -t migrasi -p | tail -20
Dengan capture-pane, kamu bisa liat apa yang lagi tampil di session tanpa attach. Cocok buat monitoring proses panjang dari jarak jauh.
Step 6: Best Practices dari Pengalaman
Setelah semua setup jalan, aku mau kasih beberapa catatan yang aku dapetin dari pengalaman pribadi. Ini bukan teori, ini hal-hal yang nyata kejadian dan bikin aku sadar.
Pertama, biasakan kasih nama session yang deskriptif. Jangan asal tmux new tanpa nama. Bayangkan kalau kamu pegang 5 session dengan nama default (0, 1, 2…), kamu bakal bingung sendiri yang mana buat migrasi dan yang mana buat monitoring. Nama yang jelas kayak migrasi-prod atau restore-db itu nyimpen waktu pas lagi panik.
Kedua, perhatiin aktivitas session. Pas server tmux udah jalan lama, session bisa numpuk. Jangan ragu buat nge-kill session yang gak dipake lagi, biar RAM server gak kebuang percuma. Cek rutin dengan tmux ls, dan kill yang udah selesai. Server kamu pasti berterima kasih – kalau penasaran cara baca resource server, mampir ke artikel cara cek load server Linux.
Ketiga, hati-hati dengan perintah yang jalan di dalam tmux di production server. Karena session-nya persistent, script yang lagi jalan di dalamnya bakal tetep jalan terus. Pastikan kamu sadar betul proses apa yang lagi hidup. Ini yang sering dilupain orang: persistent itu dua arah – proses baik bertahan, tapi proses buruk juga ikut bertahan.
Keempat, security. Kalau kamu ngatur server yang dipakai banyak orang, jangan biarkan session tmux jadi tempat buat ninggalin credential atau data sensitif terbuka. Tmux punya fitur password protect via plugin, atau minimal kamu atur permission socket-nya biar gak bisa di-access user lain. Buat yang mau ngunci akses SSH secara umum, baca panduan SSH hardening.
Kelima, biasakan save manual sebelum maintenance besar. Walaupun continuum udah auto-save tiap 15 menit, kadang 15 menit terakhir sebelum reboot itu berisi kerjaan yang paling penting. Prefix + Ctrl-s itu gratis, gak ada ruginya.
Tabel Troubleshooting
Gak ada setup yang mulus terus. Ini tabel troubleshooting yang paling sering aku temuin dari ticket-ticket yang masuk, lengkap dengan solusinya.
| Symptom | Penyebab | Solusi |
|---|---|---|
| tmux: command not found | Tmux belum ke-install atau PATH-nya gak lengkap | Install lewat apt/dnf/yum sesuai distro |
| can’t find session ‘xxx’ | Nama session yang kamu ketik salah, atau session udah di-kill | Cek tmux ls dulu buat liat daftar session yang aktif |
| Session langsung [exited] pas attach | Ada error di ~/.tmux.conf atau di shell config (bashrc/zshrc) | Jalanin tmux tanpa config dulu: tmux -L debug, terus cek error-nya |
| Ctrl-b gak ngasih respon | Prefix sudah diganti, atau terminal-nya nangkep kombinasi key-nya | Cek set -g prefix di config, atau pakai Ctrl-b dua kali buat ngetes |
| Session ilang setelah reboot | Continuum/resurrect gak terpasang, atau systemd service mati | Pasang plugin resurrect + continuum, dan daftarin tmux ke systemd user service |
| Gak bisa scroll pake mouse | set -g mouse on belum ada di config | Tambahin set -g mouse on ke ~/.tmux.conf lalu reload |
| User lain gak bisa attach session kamu | Socket tmux default cuma bisa diakses pemiliknya | Buat shared session dengan tmux -S /tmp/shared dan atur permission-nya |
Kalau error-nya masih ganggu dan gak ada di tabel, langkah paling aman: cek file log atau jalanin tmux dengan debug mode. Kadang masalahnya cuma di config yang typo. Cek juga apakah update tmux baru-baru ini bikin config lama kamu gak kompatibel.
FAQ
Q: Apakah session tmux bisa bertahan setelah reboot server?
Secara default tidak, karena server tmux ikut mati pas server reboot. Tapi dengan tmux-resurrect + tmux-continuum, session otomatis disimpen dan di-restore tiap kali tmux nyala. Kalau kamu tambah systemd user service, tmux juga otomatis nyala lagi setelah reboot. Kombinasi itu bikin session hampir mustahil ilang.
Q: Tmux sama screen, bedanya apa dan pilih yang mana?
Keduanya terminal multiplexer yang bisa bikin session persistent. Tmux punya fitur lebih kaya: split yang lebih fleksibel, konfigurasi yang scriptable, dan ekosistem plugin yang jauh lebih gede. Screen masih dipake karena ringan dan udah ada di mana-mana, tapi buat kerjaan modern, mayoritas sysadmin udah pindah ke tmux. Perbandingan lengkapnya bisa kamu baca di artikel tmux vs screen.
Q: Gimana cara restore session tmux yang udah ilang?
Kalau pakai tmux-resurrect, kamu bisa restore manual dengan prefix + Ctrl-r, asal file state-nya masih ada di ~/.tmux/resurrect/. Kalau pakai continuum dengan opsi restore-on-start, restore-nya otomatis tiap tmux server distart. Kalau dua-duanya gak ada, session-nya kemungkinan besar udah gak bisa dibalikin – makanya setup-nya penting dari awal.
Q: Amankah pakai tmux di production server?
Aman, justru ini salah satu best practice yang dipakai banyak NOC dan sysadmin. Yang perlu diperhatiin: jangan biarkan proses gak jelas jalan terus di dalam session, rutin bersihin session yang gak kepake, dan jangan simpan credential sensitif terbuka di dalam tmux. Kalau diterapkan dengan disiplin, tmux justru bikin operasional lebih aman karena gak ada kerjaan yang kehilangan progress gara-gara koneksi putus.
Sekalian mampir ke artikel terkait lainnya di syslogsolutions.net biar makin lengkap: tmux vs screen, monitoring uptime server, dan cek load server Linux.
Gitu doang sih sebenernya. Semua yang kamu butuhin cuma tmux yang ke-install, workflow attach-detach yang kehafal, dan sedikit plugin biar session-nya awet. Buat yang baru mulai, jangan keburu pusing sama semua fiturnya – mulai dari session satu dulu, hafalin Ctrl-b d, terus naik level pelan-pelan. Yang penting kerjaan kamu gak akan ilang lagi gara-gara koneksi. Sip, matur nuwun udah mampir, semoga makin lancar kerjaannya.