diff --git a/apps/settings/js/vue-1.js b/apps/settings/js/vue-1.js
index c3128715eeb64228bf843b7266b1cc1ef1e6bdd8..557e4e646c472b4fc74b7937d633c2fb1867e4e2 100644
Binary files a/apps/settings/js/vue-1.js and b/apps/settings/js/vue-1.js differ
diff --git a/apps/settings/js/vue-1.js.map b/apps/settings/js/vue-1.js.map
index 6fd2f125c9178a4ca043598efb48a2346f07c0c9..c8f3b608d219f62d3a1e989d4e6a4f2f63ecd542 100644
Binary files a/apps/settings/js/vue-1.js.map and b/apps/settings/js/vue-1.js.map differ
diff --git a/apps/settings/js/vue-2.js b/apps/settings/js/vue-2.js
index 5256cff103337fd2c4c19e2ba1f2db5ac267c6b1..a69287d398aed29ab51127e20f845d81b631080b 100644
Binary files a/apps/settings/js/vue-2.js and b/apps/settings/js/vue-2.js differ
diff --git a/apps/settings/js/vue-2.js.map b/apps/settings/js/vue-2.js.map
index 08af45fd4c64bf03050c2961e3e797c24730e3b9..806588727d6759e0b9a117df8b4a3f0430cf89fd 100644
Binary files a/apps/settings/js/vue-2.js.map and b/apps/settings/js/vue-2.js.map differ
diff --git a/apps/settings/js/vue-3.js b/apps/settings/js/vue-3.js
index 82c330b7e651369377088f5dd868a007fa34f9ac..238a88f5bf10b0e0fd1d7a80539ab4d764ca22e3 100644
Binary files a/apps/settings/js/vue-3.js and b/apps/settings/js/vue-3.js differ
diff --git a/apps/settings/js/vue-3.js.map b/apps/settings/js/vue-3.js.map
index 3b3fa557d266b540abcaeaabe8da0905c30ce03c..fb6e1e7d149d062c297a92544e3a7426004a1ba1 100644
Binary files a/apps/settings/js/vue-3.js.map and b/apps/settings/js/vue-3.js.map differ
diff --git a/core/js/dist/login.js b/core/js/dist/login.js
index e76003d6a83d8f43d7e74594d7147023aa6d7c44..4b03c5bee336d43eccd6c07cfce72a01d2c36932 100644
Binary files a/core/js/dist/login.js and b/core/js/dist/login.js differ
diff --git a/core/js/dist/login.js.map b/core/js/dist/login.js.map
index ac5d9466c21b242d8e51f8d5169b61acdcd4253a..47058f8a9aad98d4824d293f6b74db1c93a7792c 100644
Binary files a/core/js/dist/login.js.map and b/core/js/dist/login.js.map differ
diff --git a/core/js/dist/main.js b/core/js/dist/main.js
index 085042170765c499f7caec216e6f5611656bfb6e..54a792fd92cad26b700af7d65e1e375694f85f81 100644
Binary files a/core/js/dist/main.js and b/core/js/dist/main.js differ
diff --git a/core/js/dist/main.js.map b/core/js/dist/main.js.map
index e9d3fef5dce61dce77475017d974e9ace5471224..8f89fe62933410c50aca0d4288e4e57f7d542dae 100644
Binary files a/core/js/dist/main.js.map and b/core/js/dist/main.js.map differ
diff --git a/core/js/dist/maintenance.js b/core/js/dist/maintenance.js
index ad598f319d6921369065040e060f8fada165efca..833b9d475bba45d8c8801e2b4389461fc43dac8d 100644
Binary files a/core/js/dist/maintenance.js and b/core/js/dist/maintenance.js differ
diff --git a/core/js/dist/maintenance.js.map b/core/js/dist/maintenance.js.map
index 4b10735fd046351df2e5fa9f8b6e2fb28997f19d..02e4d0b33c1181ae4c18bd6729cf233ad2cb635f 100644
Binary files a/core/js/dist/maintenance.js.map and b/core/js/dist/maintenance.js.map differ
diff --git a/core/js/dist/recommendedapps.js b/core/js/dist/recommendedapps.js
index a451bc26443f37fbb44683caa16cfbfc83f9bccb..379f6242d5aa703f1db1639984e1f61496d3b79e 100644
Binary files a/core/js/dist/recommendedapps.js and b/core/js/dist/recommendedapps.js differ
diff --git a/core/js/dist/recommendedapps.js.map b/core/js/dist/recommendedapps.js.map
index 4e96a595b597d6e53df44ad258edab955d4faa63..02695aa026825435093226e3c33a7a84a90db15a 100644
Binary files a/core/js/dist/recommendedapps.js.map and b/core/js/dist/recommendedapps.js.map differ
diff --git a/core/src/components/setup/RecommendedApps.vue b/core/src/components/setup/RecommendedApps.vue
index 79c3aae9e6af0ce2311131b67cd0b84c502308d5..4375c53a0fae85416ec793b368f03a1a37414199 100644
--- a/core/src/components/setup/RecommendedApps.vue
+++ b/core/src/components/setup/RecommendedApps.vue
@@ -82,6 +82,12 @@ const recommended = {
 	talk: {
 		description: t('core', 'Screensharing, online meetings and web conferencing – on desktop and with mobile apps.'),
 	},
+	onlyoffice: {
+		description: t('core', 'Collaboratively edit office documents.'),
+	},
+	documentserver_community: {
+		description: t('core', 'Local document editing back-end used by the OnlyOffice app.'),
+	},
 }
 const recommendedIds = Object.keys(recommended)
 const defaultPageUrl = loadState('core', 'defaultPageUrl')
@@ -149,7 +155,7 @@ export default {
 				.catch(error => logger.error('could not install recommended apps', { error }))
 		},
 		customIcon(appId) {
-			if (!(appId in recommended)) {
+			if (!(appId in recommended) || !recommended[appId].icon) {
 				logger.warn(`no app icon for recommended app ${appId}`)
 				return imagePath('core', 'places/default-app-icon.svg')
 			}
@@ -168,7 +174,7 @@ export default {
 
 <style lang="scss" scoped>
 .body-login-container {
-	max-width: 290px;
+
 }
 
 p.loading, p.loading-error {
diff --git a/core/templates/installation.php b/core/templates/installation.php
index 4efcebec38c90493242ba610035728bcf42a24db..c0afc311939f15d873277860f61039d5bc782b0c 100644
--- a/core/templates/installation.php
+++ b/core/templates/installation.php
@@ -163,7 +163,7 @@ script('core', [
 			<input type="checkbox" id="install-recommended-apps" name="install-recommended-apps" class="checkbox checkbox--white" checked>
 			<label for="install-recommended-apps">
 				<?php p($l->t( 'Install recommended apps' )); ?>
-				<span><?php p($l->t( 'Calendar, Contacts, Talk & Mail' )); ?></span>
+				<span><?php p($l->t( 'Calendar, Contacts, Talk, Mail & OnlyOffice' )); ?></span>
 			</label>
 		</p>
 	</fieldset>