TeamViewer on Debian is cleanest as an official APT repository install: import TeamViewer’s current signing key, create a DEB822 source file, then install either the full TeamViewer desktop client or the TeamViewer Host endpoint with APT. That keeps installation and updates under normal package-manager control instead of making a one-off DEB download the main path.
Use the full teamviewer package when the Debian desktop will start or receive support sessions from a graphical login. Use teamviewer-host when the machine mainly needs unattended remote access. The two packages conflict with each other, so choose one before installing. For command-line-only remote administration where a graphical remote-control tool is not needed, install OpenSSH on Debian instead.
Install TeamViewer from the Official APT Repository
The official repository method uses https://linux.teamviewer.com/deb, a dedicated keyring, and a DEB822 source file under /etc/apt/sources.list.d/. It is the best default when you want a clean APT-managed install on Debian.
Confirm Debian Support and Architecture
Check the Debian release and package architecture before adding the repository:
. /etc/os-release
printf 'Debian %s (%s)\n' "$VERSION_ID" "${VERSION_CODENAME:-unknown}"
dpkg --print-architecture
TeamViewer’s current APT repository publishes packages for amd64, arm64, armhf, and i386. The source setup checks the local architecture before writing the APT source, so it will stop instead of creating a source entry for an unsupported architecture.
TeamViewer’s supported operating systems page lists Debian 12 and Debian 11 for TeamViewer Classic. If your system prints Debian 13, check TeamViewer’s supported operating systems page before relying on it for managed or business-critical remote access.
Install APT Prerequisites
Refresh APT metadata, then install the tools needed to download and dearmor the TeamViewer signing key:
sudo apt update
sudo apt install curl ca-certificates gnupg
These commands use sudo for package-manager tasks that require root privileges. If your account is not allowed to use sudo, set that up first with the Debian sudo users guide.
Import the TeamViewer Signing Key
Inspect the current TeamViewer repository key before installing it:
curl -fsSL -o teamviewer.asc https://linux.teamviewer.com/pubkey/currentkey.asc
gpg --show-keys --with-fingerprint teamviewer.asc
The current TeamViewer Linux repository key should show fingerprint AB29 85BD E164 897B A46E A69A 234F AACB 575B 15D1. After confirming the key, install it as a binary keyring for APT:
rm -f teamviewer.gpg
gpg --dearmor -o teamviewer.gpg teamviewer.asc
sudo install -o root -g root -m 0644 teamviewer.gpg /usr/share/keyrings/teamviewer.gpg
rm -f teamviewer.asc teamviewer.gpg
Create the TeamViewer APT Source
Create a DEB822 source file for the TeamViewer stable repository. The guard prevents accidental setup on architectures that TeamViewer’s repository metadata does not publish:
TEAMVIEWER_ARCH="$(dpkg --print-architecture)"
case "$TEAMVIEWER_ARCH" in
amd64|arm64|armhf|i386) ;;
*) printf 'Unsupported TeamViewer architecture: %s\n' "$TEAMVIEWER_ARCH"; exit 1 ;;
esac
cat <<EOF | sudo tee /etc/apt/sources.list.d/teamviewer.sources >/dev/null
Types: deb
URIs: https://linux.teamviewer.com/deb
Suites: stable
Components: main
Architectures: $TEAMVIEWER_ARCH
Signed-By: /usr/share/keyrings/teamviewer.gpg
EOF
This source file keeps TeamViewer’s signing key scoped to TeamViewer’s repository instead of adding trust globally.
Refresh APT and Check TeamViewer Packages
Refresh package metadata and confirm APT can see both TeamViewer packages from the official repository:
sudo apt update
apt-cache policy teamviewer teamviewer-host
The candidate should come from https://linux.teamviewer.com/deb. If APT reports a Signed-By conflict here, skip to the troubleshooting section and remove duplicate old TeamViewer source files before continuing.
Choose the TeamViewer Package
The full client and Host package install from the same official source but serve different remote-access roles. TeamViewer’s Linux installation documentation also treats them as separate DEB packages.
| Package | What It Installs | Best For | Update Behavior | Important Trade-off |
|---|---|---|---|---|
teamviewer | Full TeamViewer desktop client | Attended support, outgoing connections, and normal desktop use | APT updates from TeamViewer’s official repository | Conflicts with teamviewer-host |
teamviewer-host | TeamViewer Host endpoint | Unattended access to a workstation or server that should stay reachable | APT updates from TeamViewer’s official repository | Conflicts with the full teamviewer package |
Most desktop users should install teamviewer. Choose teamviewer-host only when the Debian machine is mainly a managed endpoint that other TeamViewer users connect to.
Install only one TeamViewer package on a normal Debian system. The full client and Host endpoint declare package conflicts with each other.
Install TeamViewer with APT
Install the full TeamViewer client for attended support, outgoing connections, and normal desktop use:
sudo apt install teamviewer
Install TeamViewer Host instead when the system should be an unattended remote-access endpoint:
sudo apt install teamviewer-host
Verify TeamViewer on Debian
Confirm the installed package state for the full client:
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' teamviewer
teamviewer --version
apt-cache policy teamviewer
grep -R "linux.teamviewer.com/deb" /etc/apt/sources.list.d/teamviewer.sources
For TeamViewer Host, check the Host package:
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' teamviewer-host
teamviewer --version
apt-cache policy teamviewer-host
grep -R "linux.teamviewer.com/deb" /etc/apt/sources.list.d/teamviewer.sources
The package status should begin with ii, which means Debian considers the package installed. The teamviewer --version command should print the installed TeamViewer 15.x version.
Optional TeamViewer Installation Methods
Use one repository method at a time. Do not keep the manual DEB822 source, an extrepo-generated source, and the package-owned direct-DEB source enabled together, because duplicate TeamViewer sources can create APT trust conflicts.
Install TeamViewer with extrepo
Use extrepo when you already manage third-party Debian repositories through Debian’s external repository catalog. The extrepo metadata includes TeamViewer’s stable repository as teamviewer_default, but it still targets the same TeamViewer packages, so it is an alternative to the manual DEB822 source method rather than an extra step after it.
The current extrepo TeamViewer metadata covers amd64, i386, and armhf. Use the manual APT source method when you need arm64 coverage.
Install extrepo and enable the non-free policy required for TeamViewer’s proprietary packages. The sed command edits the existing extrepo configuration line in place:
sudo apt update
sudo apt install extrepo
sudo sed -i 's/^# - non-free/- non-free/' /etc/extrepo/config.yaml
Enable the TeamViewer stable repository, refresh APT, then install either the full client or Host package:
sudo extrepo enable teamviewer_default
sudo apt update
sudo apt install teamviewer
For TeamViewer Host, replace the final install command with:
sudo apt install teamviewer-host
Confirm the extrepo-generated source and package candidate:
grep -R "linux.teamviewer.com/deb" /etc/apt/sources.list.d/extrepo_teamviewer_default.sources
apt-cache policy teamviewer teamviewer-host
Install TeamViewer from the Official DEB Download
Use the direct DEB download when you prefer TeamViewer’s package to bootstrap its own APT source file. This method is official, but it installs a package-owned legacy /etc/apt/sources.list.d/teamviewer.list file instead of a manual DEB822 source.
These direct-download commands use the common amd64 package. For arm64, armhf, or another architecture published by TeamViewer, use the matching DEB from the TeamViewer Linux download page.
Install the basic download tools if you skipped the main repository method:
sudo apt update
sudo apt install curl ca-certificates
Download the full TeamViewer client for a normal Debian desktop:
curl -fL -o teamviewer_amd64.deb https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
The -fL flags make curl fail on HTTP errors and follow TeamViewer’s maintained redirect to the current versioned package. The -o option saves the download with a stable local filename that is easy to reuse in the install command. See the curl command guide for more download examples.
For a TeamViewer Host endpoint instead, download the Host package:
curl -fL -o teamviewer-host_amd64.deb https://download.teamviewer.com/download/linux/teamviewer-host_amd64.deb
Inspect the downloaded package before installing it:
dpkg-deb -f teamviewer_amd64.deb Package Version Architecture Conflicts
For TeamViewer Host, inspect the Host package instead:
dpkg-deb -f teamviewer-host_amd64.deb Package Version Architecture Conflicts
Install the full client from the local DEB file:
sudo apt install ./teamviewer_amd64.deb
Or install TeamViewer Host from the local DEB file:
sudo apt install ./teamviewer-host_amd64.deb
Launch and Get Started with TeamViewer on Debian
A graphical Debian session can launch TeamViewer from the applications menu by searching for TeamViewer. The terminal launcher is also available:
teamviewer
The first launch may ask you to accept TeamViewer’s license terms and sign in or continue with the available personal-use workflow. TeamViewer’s free license is for personal use; business, client-support, or revenue-generating use requires the appropriate TeamViewer license.
On GNOME, open Activities and search for TeamViewer. On KDE Plasma, use the Application Launcher. On Xfce, check the Internet category if the desktop menu sorts applications by type.
Check Your TeamViewer ID and Status
Use teamviewer info to see the local TeamViewer ID and daemon status from the terminal:
teamviewer info
The TeamViewer ID is the identifier another TeamViewer user needs when they connect to this Debian machine. If the command reports that the daemon is not running, restart it from the terminal:
sudo teamviewer daemon restart
teamviewer info
Daemon start, stop, restart, enable, and disable actions change a system service, so run those actions with sudo when TeamViewer cannot elevate through your desktop session.
List the available TeamViewer command-line actions when you need to check the current syntax on your installed version:
teamviewer help
Configure Unattended Access
Use TeamViewer’s setup assistant when the Debian device should be assigned to your TeamViewer account for unattended access. TeamViewer’s headless Linux documentation lists the same command-line path for SSH and console-only setups:
teamviewer setup
The setup assistant walks through account assignment and device registration. For password-based unattended access, the current TeamViewer CLI expects the password as an argument. Use Bash’s read command to store it in a temporary variable first, which keeps the secret out of shell history:
IFS= read -rsp 'TeamViewer password: ' TEAMVIEWER_PASSWORD
printf '\n'
sudo teamviewer passwd "$TEAMVIEWER_PASSWORD"
unset TEAMVIEWER_PASSWORD
Use at least eight characters. The variable form avoids saving the password in your shell history, but local administrators may still be able to observe process arguments briefly while the command runs. Prefer account assignment through teamviewer setup on shared systems when that workflow fits your deployment.
Use Additional TeamViewer CLI Commands
TeamViewer installs a small command-line wrapper for service control, repository checks, support bundles, and managed-device assignment. Use teamviewer help on the installed system to confirm the exact options available in your current version.
| Command | Purpose | When to Use It |
|---|---|---|
teamviewer daemon status | Shows whether the TeamViewer daemon is active | Before troubleshooting missing IDs or incoming connections |
sudo teamviewer daemon start | Starts the daemon | When the daemon is stopped but should accept connections |
sudo teamviewer daemon stop | Stops the daemon | When temporarily disabling TeamViewer without uninstalling it |
sudo teamviewer daemon enable | Enables daemon startup at boot | For unattended access endpoints that must stay reachable |
sudo teamviewer daemon disable | Disables daemon startup at boot | For occasional-use desktops where TeamViewer should not always run |
teamviewer repo | Prints the package-owned TeamViewer repo file state | When using the direct DEB method or TeamViewer’s own repo command |
teamviewer repo list | Lists TeamViewer packages visible to APT | After sudo apt update, when confirming repository visibility |
teamviewer ziplog | Creates a TeamViewer support log archive | When collecting logs for a support request |
sudo teamviewer assignment --id=YOUR_ASSIGNMENT_ID | Assigns the device with a rollout assignment ID | For managed deployments where you already have a TeamViewer assignment ID |
sudo teamviewer unassign | Removes managed-device assignment | Before handing off or decommissioning a managed endpoint |
Account for Wayland and Xorg Sessions
Debian GNOME systems often use Wayland by default. TeamViewer’s support notes still recommend X11/Xorg for the best incoming-connection experience while Wayland support remains experimental. If remote control connects but screen capture or input behaves poorly under Wayland, sign out and choose an Xorg session from the login screen when your desktop offers one.
On Debian 13 GNOME systems, the Xorg login session can depend on the gnome-session-xsession package. Debian 12 and Debian 11 commonly provide the GNOME Xorg session through the normal gnome-session package set.
Update TeamViewer on Debian
TeamViewer updates arrive through APT after one TeamViewer source is enabled. Update the full client with:
sudo apt update
sudo apt install --only-upgrade teamviewer
Update TeamViewer Host with the Host package name:
sudo apt update
sudo apt install --only-upgrade teamviewer-host
Check the enabled TeamViewer source when updates do not appear:
grep -R "linux.teamviewer.com/deb" /etc/apt/sources.list.d 2>/dev/null
apt-cache policy teamviewer teamviewer-host
If you used the direct DEB method, teamviewer repo and teamviewer repo list can also inspect the package-owned teamviewer.list source. The normal stable channel should be enough for most Debian systems. Keep preview or development channels out of production unless TeamViewer support or your deployment policy requires them.
Remove TeamViewer from Debian
Remove the package that matches the variant you installed. For the full client, purge teamviewer:
sudo apt purge teamviewer
For TeamViewer Host, purge teamviewer-host:
sudo apt purge teamviewer-host
Review and remove dependencies that APT reports as no longer needed:
sudo apt autoremove
Remove the TeamViewer source files for the method you used. For the manual DEB822 method, remove the source file and keyring:
sudo rm -f /etc/apt/sources.list.d/teamviewer.sources
sudo rm -f /usr/share/keyrings/teamviewer.gpg
For extrepo, disable the repository and remove the generated source and key files only after confirming no other TeamViewer source needs them:
if command -v extrepo >/dev/null 2>&1; then
sudo extrepo disable teamviewer_default || true
fi
sudo rm -f /etc/apt/sources.list.d/extrepo_teamviewer_default.sources
sudo rm -f /var/lib/extrepo/keys/teamviewer_default.asc
For the direct DEB method, remove TeamViewer’s package-owned source file and keyring if package purge left them behind:
sudo rm -f /etc/apt/sources.list.d/teamviewer.list
sudo rm -f /usr/share/keyrings/teamviewer-keyring.gpg
Refresh APT after removing the package source:
sudo apt update
Confirm neither TeamViewer package remains installed:
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' teamviewer teamviewer-host 2>/dev/null
No line beginning with ii should remain.
Remove Optional User Profile Data
Package removal does not necessarily remove per-user TeamViewer settings, cached state, or local profile data. Inspect likely user-owned TeamViewer paths first:
find "$HOME/.config" "$HOME/.local/share" "$HOME/.cache" -maxdepth 1 -iname 'teamviewer*' -print 2>/dev/null
The next command permanently deletes local TeamViewer profile and cache data for your user account. Back up any settings or connection information you still need before running it.
Delete the common user-owned TeamViewer directories only when you no longer need that local state:
rm -rf "$HOME/.config/teamviewer" "$HOME/.local/share/teamviewer" "$HOME/.cache/teamviewer"
Troubleshoot TeamViewer on Debian
APT Reports Conflicting Signed-By Values
Older extrepo, direct DEB, or manual TeamViewer repository instructions can leave multiple source files for the same TeamViewer repository. APT can reject duplicate sources when they use different Signed-By key paths.
Find every TeamViewer repository entry:
grep -R "linux.teamviewer.com/deb" /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null
Keep only the source method you want to use. If you are keeping the manual DEB822 source from the main method, remove the package-owned and extrepo-generated source files:
if command -v extrepo >/dev/null 2>&1; then
sudo extrepo disable teamviewer_default || true
sudo extrepo disable teamviewer_preview || true
fi
sudo rm -f /etc/apt/sources.list.d/teamviewer.list
sudo rm -f /etc/apt/sources.list.d/extrepo_teamviewer_default.sources
sudo rm -f /etc/apt/sources.list.d/extrepo_teamviewer_preview.sources
sudo rm -f /usr/share/keyrings/teamviewer-keyring.gpg
sudo rm -f /var/lib/extrepo/keys/teamviewer_default.asc
sudo rm -f /var/lib/extrepo/keys/teamviewer_preview.asc
sudo apt update
If you are keeping the direct DEB package-owned source instead, keep /etc/apt/sources.list.d/teamviewer.list and remove /etc/apt/sources.list.d/teamviewer.sources instead.
Use the broader Debian extrepo management guide when you need to audit several external repositories, not just TeamViewer.
Downloaded Package Does Not Match the System Architecture
A local DEB install can fail when the package architecture and Debian architecture do not match. Compare both values:
dpkg --print-architecture
dpkg-deb -f teamviewer_amd64.deb Architecture
If the values differ, remove the downloaded file and download the correct DEB package from TeamViewer’s Linux download page.
TeamViewer ID Is Missing or the Daemon Is Stopped
The daemon must be running before the local device can accept incoming connections. Check and restart it with TeamViewer’s own daemon commands:
teamviewer daemon status
sudo teamviewer daemon restart
teamviewer info
If teamviewer info still cannot show an ID, confirm the machine has internet access and that a firewall, proxy, or network policy is not blocking TeamViewer’s outbound connection.
Incoming Control Works Poorly on Wayland
Wayland support is still a moving target for TeamViewer incoming remote control. If the remote viewer connects but cannot control the session reliably, sign out and select an Xorg session from the desktop login screen, then reconnect after logging back in.
Create a TeamViewer Support Log Archive
When TeamViewer support asks for logs, create the standard support archive from the installed command-line wrapper:
teamviewer ziplog
For launch or daemon problems, TeamViewer can add process and environment details. Inspect the archive before sharing it, because the extended bundle may include sensitive local information:
sudo teamviewer ziplog plus
Conclusion
TeamViewer is installed on Debian from the official DEB package, with TeamViewer’s package-owned APT repository ready for future updates. Keep the full client for attended desktop support, choose TeamViewer Host for unattended endpoints, and verify vendor support before depending on a newer Debian release for managed remote access.


Must be
curl -fSsL https://linux.teamviewer.com/pubkey/currentkey.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/teamview.gpg > /dev/null