Tmux gebruiken op een Linux VPS

13 min leestijd·Matthieu|

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:

  1. Bescherming tegen SSH-disconnect. Je processen blijven draaien als de verbinding wegvalt. Opnieuw verbinden en reattachen.
  2. 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.
  3. 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]).

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:

  1. Prefix Ctrl-a plaatst de toets onder je linker pink. Ctrl-b vereist een rek. Dit is de meest voorkomende wijziging.
  2. base-index 1 betekent dat windows starten bij 1 in plaats van 0. Ctrl-a 1 indrukken voor het eerste window voelt logisch.
  3. history-limit 50000 slaat 50.000 regels scrollback op per paneel. De standaard 2.000 is te weinig voor het volgen van logs.
  4. escape-time 10 verkort de wachttijd die tmux neemt na het ontvangen van een Escape-toets. De standaard (500ms) maakt Vim traag binnen tmux.
  5. -c "#{pane_current_path}" op de split-bindings opent nieuwe panelen in dezelfde map waar je nu in werkt, in plaats van de homedirectory.
  6. mode-keys vi schakelt copy mode over naar vi-stijl navigatie. Verander naar emacs als 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