diff --git a/dashboard/public/translation/en.json b/dashboard/public/translation/en.json
index a976f0f41..06a6ee42f 100644
--- a/dashboard/public/translation/en.json
+++ b/dashboard/public/translation/en.json
@@ -1677,7 +1677,8 @@
"title": "Backup Sites",
"emptyPlaceholder": "No backup sites",
"lastRun": "Last run",
- "description": "Backup sites specify where system and app backups are stored. App backups can be restored individually."
+ "description": "Backup sites specify where system and app backups are stored. App backups can be restored individually.",
+ "noAutomaticUpdateBackupWarning": "No backup site is configured to store backups for automatic updates. Enable \"Store automatic-update backups here\" on at least one backup site to allow automatic updates."
},
"site": {
"removeDialog": {
diff --git a/dashboard/src/views/BackupSitesView.vue b/dashboard/src/views/BackupSitesView.vue
index a52a8b4c6..c58b74c98 100644
--- a/dashboard/src/views/BackupSitesView.vue
+++ b/dashboard/src/views/BackupSitesView.vue
@@ -4,7 +4,7 @@ import { useI18n } from 'vue-i18n';
const i18n = useI18n();
const t = i18n.t;
-import { ref, onMounted, useTemplateRef, reactive, inject } from 'vue';
+import { ref, onMounted, useTemplateRef, reactive, inject, computed } from 'vue';
import { Button, ProgressBar, InputDialog } from '@cloudron/pankow';
import { prettyLongDate } from '@cloudron/pankow/utils';
import ActionBar from '../components/ActionBar.vue';
@@ -34,6 +34,7 @@ const systemBackupList = useTemplateRef('systemBackupList');
const sites = ref([]);
const busy = ref(true);
+const hasUpdateBackupSite = computed(() => sites.value.some(site => site.enableForUpdates));
const backupSiteAddDialog = useTemplateRef('backupSiteAddDialog');
function onAdd() {
@@ -296,10 +297,10 @@ onMounted(async () => {
-