diff --git a/roles/kodi/files/kodi.service b/roles/kodi/files/kodi.service
deleted file mode 100644
index 42630c7c47287d42cedbb55f1bbf83c1888d6260..0000000000000000000000000000000000000000
--- a/roles/kodi/files/kodi.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=Kodi Media Center
-Requires=dbus.socket
-After=network.target
-After=sound.target
-
-[Service]
-User=kodi
-ExecStart=flatpak run --device=dri --filesystem=home --filesystem=/srv/library tv.kodi.Kodi --standalone --windowing=gbm
-KillMode=control-group
-Restart=always
-
-[Install]
-WantedBy=multi-user.target graphical.target
diff --git a/roles/kodi/files/kodi@.service b/roles/kodi/files/kodi@.service
new file mode 100644
index 0000000000000000000000000000000000000000..e9e2a578bfe68c549a1dc8d76d144281948572af
--- /dev/null
+++ b/roles/kodi/files/kodi@.service
@@ -0,0 +1,44 @@
+[Unit]
+Description=Kodi Media Center on %i
+After=systemd-user-sessions.service sound.target network-online.target
+
+# Require the library to be mounted.
+After=srv-library.mount
+
+# D-Bus is necessary for contacting logind. Logind is required.
+Wants=dbus.socket
+After=dbus.socket
+
+Conflicts=getty@%i.service
+Before=graphical.target
+
+# On systems without virtual consoles, don't start
+ConditionPathExists=/dev/tty0
+
+[Service]
+User=kodi
+PAMName=login
+ExecStart=flatpak run --device=dri --filesystem=home --filesystem=/srv/library tv.kodi.Kodi --standalone --windowing=gbm -fs
+Type=simple
+Restart=on-abort
+RestartSec=5
+KillMode=control-group
+
+# A virtual terminal is needed.
+TTYPath=/dev/%i
+TTYReset=yes
+TTYVHangup=yes
+TTYVTDisallocate=yes
+
+# Fail to start if not controlling the tty.
+StandardOutput=tty
+StandardInput=tty
+StandardError=journal
+
+# Log this user with utmp, letting it show up with commands 'w' and 'who'.
+UtmpIdentifier=%i
+UtmpMode=user
+
+[Install]
+WantedBy=graphical.target
+DefaultInstance=tty7
diff --git a/roles/kodi/tasks/main.yml b/roles/kodi/tasks/main.yml
index 59e8cecce0a1f489d4339d7cdd5773035e7ebb84..9775d2aa59fcc9c5e9a9b21d8ca69d3ce1c7c285 100644
--- a/roles/kodi/tasks/main.yml
+++ b/roles/kodi/tasks/main.yml
@@ -41,13 +41,13 @@
 
 - name: Copy service
   copy:
-    dest: /etc/systemd/system/kodi.service
+    dest: /etc/systemd/system/
     mode: preserve
-    src: kodi.service
+    src: kodi@.service
 
 - name: Enable service
   service:
     daemon-reload: true
     enabled: true
-    name: kodi.service
+    name: kodi@tty7.service
     state: started