Tmux gebruiken op een Linux VPS
Leer hoe je tmux installeert en gebruikt op je Linux VPS voor persistente terminalsessies, split-pane workflows en bescherming tegen SSH-verbroken verbindingen. Voor Debian 12 en Ubuntu 24.04.
Je maakt een SSH-verbinding naar je VPS, start een langdurige databasemigratie, en je wifi valt weg. Het proces stopt. Je werk is weg.
tmux lost dit op. Het draait je terminalsessies op de server zelf, onafhankelijk van je SSH-verbinding. Verbinding verbroken, opnieuw verbinden, en precies verder waar je was gebleven.
Deze tutorial behandelt tmux van installatie tot gescripte multi-pane layouts. Elk commando werkt op Debian 12 of Ubuntu 24.04.
Wat is tmux en waarom gebruik je het op een VPS?
tmux is een terminal multiplexer. Het laat je meerdere terminalsessies draaien binnen een enkele SSH-verbinding, en die sessies blijven bestaan op de server, ook als je de verbinding verbreekt.
tmux organiseert je werk op drie niveaus:
- Sessions zijn de container op het hoogste niveau. Elke sessie is een onafhankelijke werkruimte. Je kunt een sessie loskoppelen (detach) en later opnieuw koppelen (reattach).
- Windows bestaan binnen sessies. Zie ze als tabbladen. Elk window draait zijn eigen shell.
- Panes splitsen een enkel window in meerdere rechthoeken, elk met een eigen commando.
Session "deploy"
├── Window 0: "editor"
│ ├── Pane 0: vim
│ └── Pane 1: file watcher
└── Window 1: "logs"
└── Pane 0: journalctl -f
Op een VPS geeft tmux je drie dingen die ertoe doen:
- Bescherming tegen SSH-disconnect. Je processen blijven draaien als de verbinding wegvalt. Opnieuw verbinden en reattachen.
- Multi-pane workflows. Logs bekijken in het ene paneel, commando's uitvoeren in het andere, bestanden bewerken in een derde. Allemaal binnen een SSH-verbinding.
- Sessiepersistentie. Laat een sessie dagenlang draaien. Loskoppelen aan het eind van de dag, morgen weer koppelen.
Hoe installeer ik tmux op Debian 12 en Ubuntu 24.04?
tmux zit in de standaard repositories van zowel Debian 12 als Ubuntu 24.04. Een commando is voldoende.
sudo apt update && sudo apt install -y tmux
Controleer de installatie:
tmux -V
Verwachte output op Debian 12:
tmux 3.3a
Verwachte output op Ubuntu 24.04:
tmux 3.4
Let op: het versienummer bevestigt dat tmux uit de officiele repositories is geinstalleerd. Als je niets ziet of "command not found", is de installatie mislukt. Controleer de apt-output op fouten.
Hoe maak en beheer ik tmux-sessies?
Een tmux-sessie is een persistente werkruimte die op de server leeft. Start er een, voer je commando's uit, en hij blijft actief, ook als je je terminal sluit.
Sessies aanmaken
Start een nieuwe sessie met een naam:
tmux new-session -s deploy
Dit maakt een sessie genaamd "deploy" en koppelt je eraan. Je ziet een groene statusbalk onderaan je terminal. Die statusbalk is tmux die bevestigt dat je in een sessie zit.
Een sessie aanmaken zonder eraan te koppelen (handig in scripts):
tmux new-session -d -s background
Controleer of hij bestaat:
tmux list-sessions
background: 1 windows (created Thu Mar 19 10:00:00 2026)
Hoe koppel ik los van een tmux-sessie en koppel ik later opnieuw?
Dit is de kernworkflow op een VPS. Loskoppelen van een sessie om je terminal vrij te maken, later opnieuw koppelen om je werk te hervatten. De sessie blijft draaien op de server.
Om los te koppelen, druk op de prefix key gevolgd door d:
Ctrl-b d
De prefix key is standaard Ctrl-b. Druk Ctrl en b tegelijk in, laat beide los, druk dan op d. Elke tmux-sneltoets werkt zo: eerst prefix, dan de actietoets.
Je terminal keert terug naar de gewone shell. De sessie draait nog steeds.
Opnieuw koppelen:
tmux attach -t deploy
Als je maar een sessie hebt, kun je de naam weglaten:
tmux attach
Controleer welke sessies actief zijn:
tmux list-sessions
deploy: 1 windows (created Thu Mar 19 10:00:00 2026) (attached)
background: 1 windows (created Thu Mar 19 10:05:00 2026)
Het label (attached) geeft aan met welke sessie je terminal verbonden is.
Sessies verwijderen
Als je klaar bent met een sessie, vernietig je hem:
tmux kill-session -t background
Controleer of hij weg is:
tmux list-sessions
Alle sessies beeindigen en de tmux-server volledig stoppen:
tmux kill-server
Sessies hernoemen
Vanuit een sessie, druk op:
Ctrl-b $
Typ de nieuwe naam en druk op Enter. Handig als je een sessie startte zonder naam en tmux er een nummer aan gaf.
Hoe gebruik ik tmux windows om taken te organiseren?
Windows zijn tabbladen binnen een sessie. Elk window draait zijn eigen shell. Gebruik ze om taken te scheiden die niet tegelijk zichtbaar hoeven te zijn.
Maak een nieuw window:
Ctrl-b c
De statusbalk wordt bijgewerkt met het nieuwe window. De asterisk (*) markeert het actieve window:
[deploy] 0:bash 1:bash*
Schakelen tussen windows
Op nummer:
Ctrl-b 0 # Go to window 0
Ctrl-b 1 # Go to window 1
Door te bladeren:
Ctrl-b n # Next window
Ctrl-b p # Previous window
Een window hernoemen
Ctrl-b ,
Typ een duidelijke naam zoals "logs" of "editor" en druk op Enter. Benoemde windows maken de statusbalk leesbaar als je er meerdere open hebt.
Een window sluiten
Typ exit in de shell, of druk op:
Ctrl-b &
tmux vraagt om bevestiging voordat het sluit.
Hoe splits ik de terminal in panelen?
Panes splitsen een window in meerdere terminals die tegelijk zichtbaar zijn. Hier blinkt tmux uit voor VPS-beheer: logs bekijken in het ene paneel terwijl je commando's uitvoert in het andere.
Splits het huidige paneel horizontaal (boven en onder):
Ctrl-b "
Splits het huidige paneel verticaal (links en rechts):
Ctrl-b %
Na het splitsen heb je twee panelen. De groene rand markeert het actieve paneel.
Hoe navigeer en resize ik tmux-panelen?
Verplaats je tussen panelen met de pijltjestoetsen:
Ctrl-b ↑ # Move to pane above
Ctrl-b ↓ # Move to pane below
Ctrl-b ← # Move to pane left
Ctrl-b → # Move to pane right
Panelen vergroten of verkleinen door de prefix ingedrukt te houden en pijltjestoetsen te drukken:
Ctrl-b Ctrl-↑ # Resize pane up
Ctrl-b Ctrl-↓ # Resize pane down
Ctrl-b Ctrl-← # Resize pane left
Ctrl-b Ctrl-→ # Resize pane right
Een paneel zoomen
Wil je een paneel tijdelijk op volledig scherm? Schakel zoom in:
Ctrl-b z
Druk er nogmaals op om de split-layout te herstellen. De statusbalk toont een Z naast de window-naam als een paneel is ingezoomd.
Een paneel sluiten
Typ exit in het paneel, of druk op:
Ctrl-b x
tmux vraagt om bevestiging. Als je het laatste paneel in een window sluit, sluit het window ook.
Panelen verwisselen
Paneelposities roteren:
Ctrl-b { # Move current pane left/up
Ctrl-b } # Move current pane right/down
Hoe gebruik ik tmux copy mode om te scrollen en zoeken?
Standaard kun je niet omhoog scrollen in een tmux-paneel met je muiswiel of Page Up. Copy mode geeft je scrollback, zoeken en tekstselectie.
Copy mode starten:
Ctrl-b [
Je zit nu in copy mode. De rechterbovenhoek toont je positie in de scrollback buffer (bijv. [0/500]).
Navigeren in copy mode
tmux gebruikt standaard emacs-achtige toetsen. Als je EDITOR of VISUAL omgevingsvariabele "vi" bevat, worden vi-achtige toetsen gebruikt.
Emacs mode (standaard):
| Actie | Toets |
|---|---|
| Omhoog scrollen | Ctrl-Up of Page Up |
| Omlaag scrollen | Ctrl-Down of Page Down |
| Cursor verplaatsen | Pijltjestoetsen |
| Begin van regel | Ctrl-a |
| Einde van regel | Ctrl-e |
| Vooruit zoeken | Ctrl-s |
| Achteruit zoeken | Ctrl-r |
| Selectie starten | Ctrl-Space |
| Selectie kopieren | Alt-w |
| Copy mode verlaten | q |
Vi mode:
| Actie | Toets |
|---|---|
| Omhoog scrollen | Ctrl-u (halve pagina) |
| Omlaag scrollen | Ctrl-d (halve pagina) |
| Cursor verplaatsen | h j k l |
| Vooruit zoeken | / |
| Achteruit zoeken | ? |
| Selectie starten | Space |
| Selectie kopieren | Enter |
| Copy mode verlaten | q |
Na het kopieren, plakken met:
Ctrl-b ]
Let op: copy mode is hoe je door lange commando-output zoekt. Als een build mislukt en de fout van het scherm is gescrold, ga dan in copy mode en zoek achteruit met Ctrl-r (emacs) of ? (vi).
Hoe pas ik tmux aan met .tmux.conf?
tmux leest zijn configuratie uit ~/.tmux.conf wanneer de server start. Vanaf tmux 3.2 controleert het ook ~/.config/tmux/tmux.conf.
Deze configuratie werkt goed voor VPS-beheer. Elke regel wordt uitgelegd.
Maak of bewerk het configuratiebestand:
nano ~/.tmux.conf
# -- General -----------------------------------------------------------------
# Change prefix from Ctrl-b to Ctrl-a (easier to reach)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Start window numbering at 1 (0 is far from the prefix key)
set -g base-index 1
setw -g pane-base-index 1
# Renumber windows when one is closed (no gaps)
set -g renumber-windows on
# Increase scrollback buffer (default is 2000 lines)
set -g history-limit 50000
# Reduce escape delay (snappier key response)
set -g escape-time 10
# Enable mouse support (scroll, click panes, resize)
set -g mouse on
# -- Display -----------------------------------------------------------------
# 256-color terminal support
set -g default-terminal "tmux-256color"
# -- Key Bindings ------------------------------------------------------------
# Split panes with | and - (more intuitive than " and %)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# Navigate panes with Alt-arrow (no prefix needed)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Reload config with prefix r
bind r source-file ~/.tmux.conf \; display-message "Config reloaded"
# -- Copy Mode ---------------------------------------------------------------
# Use vi keys in copy mode
setw -g mode-keys vi
# -- Status Bar --------------------------------------------------------------
# Status bar position
set -g status-position bottom
# Update interval (seconds)
set -g status-interval 5
# Clean status bar colors
set -g status-style "bg=colour235,fg=colour136"
set -g status-left "#[fg=colour235,bg=colour136] #S #[fg=colour136,bg=colour235] "
set -g status-right "#[fg=colour136] %H:%M %d-%b-%Y "
set -g status-left-length 20
Opslaan en afsluiten. Pas de configuratie toe op een draaiende tmux-sessie:
tmux source-file ~/.tmux.conf
Controleer door Ctrl-a (de nieuwe prefix) te drukken in plaats van Ctrl-b. Als het werkt, is de configuratie correct geladen.
Stel de juiste permissies in op het configuratiebestand:
chmod 600 ~/.tmux.conf
ls -la ~/.tmux.conf
-rw------- 1 youruser youruser 1234 Mar 19 10:00 /home/youruser/.tmux.conf
De 600 permissie betekent dat alleen jouw gebruiker het bestand kan lezen en schrijven. Dit is belangrijk als je aangepaste scripts of gevoelige paden in je tmux-configuratie opslaat.
Uitleg van de belangrijkste wijzigingen ten opzichte van de standaardinstellingen:
- Prefix
Ctrl-aplaatst de toets onder je linker pink.Ctrl-bvereist een rek. Dit is de meest voorkomende wijziging. base-index 1betekent dat windows starten bij 1 in plaats van 0.Ctrl-a 1indrukken voor het eerste window voelt logisch.history-limit 50000slaat 50.000 regels scrollback op per paneel. De standaard 2.000 is te weinig voor het volgen van logs.escape-time 10verkort de wachttijd die tmux neemt na het ontvangen van een Escape-toets. De standaard (500ms) maakt Vim traag binnen tmux.-c "#{pane_current_path}"op de split-bindings opent nieuwe panelen in dezelfde map waar je nu in werkt, in plaats van de homedirectory.mode-keys vischakelt copy mode over naar vi-stijl navigatie. Verander naaremacsals je dat prefereert.
Hoe installeer ik tmux-plugins met tpm?
tmux Plugin Manager (tpm) laat je plugins installeren vanuit GitHub. Twee plugins die de moeite waard zijn:
- tmux-resurrect slaat tmux-sessies op en herstelt ze na een herstart van de server
- tmux-continuum slaat sessies automatisch op met regelmatige intervallen
tpm installeren
Kloon de repository:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Voeg deze regels toe onderaan ~/.tmux.conf:
# -- Plugins -----------------------------------------------------------------
# Plugin manager
set -g @plugin 'tmux-plugins/tpm'
# Save/restore sessions across reboots
set -g @plugin 'tmux-plugins/tmux-resurrect'
# Auto-save sessions every 15 minutes
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'
# Initialize tpm (keep this line at the very bottom)
run '~/.tmux/plugins/tpm/tpm'
Herlaad de configuratie:
tmux source-file ~/.tmux.conf
Installeer de plugins vanuit tmux:
Ctrl-a I
Dat is een hoofdletter I. tpm haalt de plugins op en installeert ze. Je ziet een bericht als het klaar is.
Controleer of de plugins geinstalleerd zijn:
ls ~/.tmux/plugins/
tmux-continuum tmux-resurrect tpm
tmux-resurrect gebruiken
Sla je huidige sessielayout op:
Ctrl-a Ctrl-s
Herstel na een herstart:
Ctrl-a Ctrl-r
tmux-resurrect slaat window-layouts, pane-splits en de huidige map van elk paneel op. Met tmux-continuum ingeschakeld gebeurt dit automatisch elke 15 minuten.
Hoe ga ik om met geneste tmux-sessies via SSH?
Wanneer je tmux lokaal draait en via SSH verbindt met een VPS die ook tmux draait, krijg je tmux binnen tmux. Beide instanties reageren op dezelfde prefix key. Je toetsaanslagen gaan naar de buitenste (lokale) tmux in plaats van de binnenste (remote).
De oplossing: stuur de prefix key door naar de binnenste sessie door de prefix twee keer in te drukken.
Ctrl-a Ctrl-a d # Detach the inner (remote) session
De eerste Ctrl-a wordt opgevangen door de buitenste tmux. De tweede Ctrl-a wordt doorgestuurd naar de binnenste tmux als prefix. Dan koppelt d de binnenste sessie los.
Een schonere aanpak: gebruik verschillende prefix keys. Houd Ctrl-a lokaal en laat Ctrl-b als standaard op remote servers. Dan is er geen conflict.
Als je de prefix al op beide kanten hebt gewijzigd, voeg een schakelaar toe aan je lokale ~/.tmux.conf:
# Toggle prefix passthrough with F12
bind -T root F12 \
set prefix None \;\
set key-table off \;\
set status-style "bg=colour238,fg=colour240" \;\
display-message "Prefix OFF (sending to inner)"
bind -T off F12 \
set -u prefix \;\
set -u key-table \;\
set -u status-style \;\
display-message "Prefix ON (local)"
Druk op F12 om de lokale prefix uit te schakelen en alle toetsen door te sturen naar de remote tmux. Druk nogmaals op F12 om hem weer in te schakelen. De gedimde statusbalk geeft je een visuele indicator van welke modus actief is.
Hoe maak ik gescripte tmux-layouts voor serverbeheer?
In plaats van elke keer handmatig panelen te splitsen als je SSH't, script je je layout. Dit geeft een herhaalbare werkruimte met een enkel commando.
Maak een script:
nano ~/tmux-admin.sh
#!/usr/bin/env bash
# tmux-admin.sh: three-pane admin layout
SESSION="admin"
# Kill old session if it exists
tmux kill-session -t "$SESSION" 2>/dev/null
# Create session with first window named "monitor"
tmux new-session -d -s "$SESSION" -n "monitor"
# Top pane: system monitoring
tmux send-keys -t "$SESSION:monitor" "htop" C-m
# Split horizontally: bottom pane for logs
tmux split-window -v -t "$SESSION:monitor"
tmux send-keys -t "$SESSION:monitor.1" "journalctl -f" C-m
# Split bottom pane vertically: right pane for shell
tmux split-window -h -t "$SESSION:monitor.1"
# Create second window for a working shell
tmux new-window -t "$SESSION" -n "work"
# Select the first window
tmux select-window -t "$SESSION:monitor"
# Select the bottom-right pane (the empty shell)
tmux select-pane -t "$SESSION:monitor.2"
# Attach to the session
tmux attach -t "$SESSION"
Maak het uitvoerbaar en draai het:
chmod 700 ~/tmux-admin.sh
~/tmux-admin.sh
Je krijgt een layout met drie panelen: htop bovenaan, journalctl -f linksonder, en een lege shell rechtsonder. Een tweede window genaamd "work" is beschikbaar voor ad-hoc commando's.
Let op: de C-m aan het eind van send-keys is een carriage return. Het drukt op Enter om het commando uit te voeren.
tmux automatisch starten bij boot met systemd
Voor langlopende beheersessies maak je een systemd service:
sudo nano /etc/systemd/system/tmux-admin@.service
[Unit]
Description=tmux admin session for %i
After=network.target
[Service]
Type=forking
User=%i
ExecStart=/usr/bin/tmux new-session -d -s admin
ExecStop=/usr/bin/tmux kill-session -t admin
[Install]
WantedBy=multi-user.target
Schakel het in en start voor je gebruiker:
sudo systemctl enable --now tmux-admin@youruser.service
Controleer of het draait:
sudo systemctl status tmux-admin@youruser.service
● tmux-admin@youruser.service - tmux admin session for youruser
Loaded: loaded (/etc/systemd/system/tmux-admin@.service; enabled)
Active: active (running)
Nu start een tmux-sessie genaamd "admin" automatisch bij het opstarten. Koppel eraan na SSH:
tmux attach -t admin
Beveiliging: tmux socketpermissies
tmux maakt een socketbestand aan voor communicatie tussen server- en clientprocessen. Standaard staat deze socket in een map onder /tmp (bijv. /tmp/tmux-1000/).
Controleer je socketmap:
ls -la /tmp/tmux-$(id -u)/
srwxrwx--- 1 youruser youruser 0 Mar 19 10:00 default
De socketmap is eigendom van jouw gebruiker met permissies die andere gebruikers de toegang ontzeggen. Dit betekent dat andere gebruikers op dezelfde server niet aan je tmux-sessies kunnen koppelen.
Als je tmux als root draait, kan elk proces dat als root draait er wel aan koppelen. Vermijd tmux als root voor dagelijks werk. SSH als je gewone gebruiker en gebruik sudo voor individuele commando's die het nodig hebben.
Als je een tmux-sessie wilt delen (voor pair programming of mentoring), gebruik dan expliciet een gedeelde socket:
tmux -S /tmp/shared-session new-session -s pair
chmod 770 /tmp/shared-session
De andere gebruiker koppelt aan met:
tmux -S /tmp/shared-session attach -t pair
Trek de toegang in als je klaar bent:
chmod 700 /tmp/shared-session
Iets misgegaan?
tmux: command not found
Het pakket is niet geinstalleerd. Draai sudo apt install -y tmux en controleer op fouten.
"no server running on /tmp/tmux-1000/default"
Er bestaat geen tmux-sessie. Start er een met tmux new-session -s main.
Toetsen reageren niet / verkeerde prefix
Controleer welke prefix actief is: tmux show-options -g prefix. Als je de prefix in .tmux.conf hebt gewijzigd, herlaad met tmux source-file ~/.tmux.conf.
Muis-scroll werkt niet
Voeg set -g mouse on toe aan ~/.tmux.conf en herlaad. Op tmux-versies voor 2.1 was de optie set -g mode-mouse on (andere syntax).
Kleuren zien er verkeerd uit in tmux
Stel set -g default-terminal "tmux-256color" in in ~/.tmux.conf. Als je terminalemulator true color (24-bit) ondersteunt, voeg toe:
set -as terminal-overrides ",*-256color:Tc"
Sessie verloren na herstart tmux-sessies overleven standaard geen herstart. Gebruik tmux-resurrect en tmux-continuum (hierboven behandeld), of maak een systemd service om automatisch een sessie te starten.
Vim is traag bij het verlaten van insert mode
De standaard escape-time (500ms) veroorzaakt dit. Stel set -g escape-time 10 in in ~/.tmux.conf.
Controleer tmux-logs voor diepere problemen:
tmux start-server \; show-messages
Of bekijk systeemlogboeken:
journalctl -u tmux-admin@youruser.service -f
Snelreferentie tmux-sneltoetsen
Deze tabel gebruikt de standaard prefix Ctrl-b. Als je de prefix hebt gewijzigd naar Ctrl-a (zoals in de configuratie hierboven), gebruik die dan.
Sessions
| Actie | Sneltoets | Commando |
|---|---|---|
| Nieuwe benoemde sessie | tmux new-session -s name |
|
| Loskoppelen | Ctrl-b d |
tmux detach |
| Sessies tonen | Ctrl-b s |
tmux list-sessions |
| Koppelen | tmux attach -t name |
|
| Sessie hernoemen | Ctrl-b $ |
tmux rename-session |
| Sessie verwijderen | tmux kill-session -t name |
Windows
| Actie | Sneltoets | Commando |
|---|---|---|
| Nieuw window | Ctrl-b c |
|
| Volgend window | Ctrl-b n |
|
| Vorig window | Ctrl-b p |
|
| Window op nummer | Ctrl-b 0-9 |
|
| Window hernoemen | Ctrl-b , |
|
| Window sluiten | Ctrl-b & |
|
| Windows tonen | Ctrl-b w |
Panes
| Actie | Sneltoets | Commando |
|---|---|---|
| Horizontaal splitsen | Ctrl-b " |
|
| Verticaal splitsen | Ctrl-b % |
|
| Navigeren | Ctrl-b Arrow |
|
| Formaat wijzigen | Ctrl-b Ctrl-Arrow |
|
| Zoom aan/uit | Ctrl-b z |
|
| Paneel sluiten | Ctrl-b x |
|
| Paneel verwisselen | Ctrl-b { / Ctrl-b } |
Copy Mode
| Actie | Sneltoets |
|---|---|
| Copy mode starten | Ctrl-b [ |
| Buffer plakken | Ctrl-b ] |
| Zoeken (emacs) | Ctrl-r (achteruit) / Ctrl-s (vooruit) |
| Zoeken (vi) | ? (achteruit) / / (vooruit) |
| Afsluiten | q |
Overig
| Actie | Sneltoets |
|---|---|
| Commandoprompt | Ctrl-b : |
| Alle sneltoetsen tonen | Ctrl-b ? |
| Klokmodus | Ctrl-b t |
Copyright 2026 Virtua.Cloud. Alle rechten voorbehouden. Deze inhoud is een origineel werk van het Virtua.Cloud-team. Reproductie, herpublicatie of herdistributie zonder schriftelijke toestemming is verboden.
Klaar om het zelf te proberen?
Deploy uw eigen server in seconden. Linux, Windows of FreeBSD.
Bekijk VPS-aanbod