Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ verified, tried, and decided belongs in the commit message and the PR body.
## This repo

- **`finish-upgrade` must stay behind the web daemon and must fail open.** A rejected oneshot fn never reaches `EXIT_SUCCESS`, which both blocks `long-running-tasks` (gated on it) and makes the SDK re-invoke it on a backoff — `occ upgrade` in a loop. Every step inside is individually guarded for that reason.
- **`guardUpstreamUpgrade` stays ahead of `versionGraph` in `setupInit`.** The graph advances the data version and runs the 0.3.5.x layout migration, and neither is undone on a volume StartOS could not snapshot — a package migrated from 0.3.5.x has none until its next boot.
- **`guardUpstreamUpgrade` stays ahead of `versionGraph` in `setupInit`.** The graph advances the data version, which is not undone on a volume StartOS could not snapshot — a package migrated from 0.3.5.x has none until its next boot.
- **The upstream version upgrade belongs in init, not at daemon start.** Init is snapshotted, so a failed migration rolls the update back; at daemon start an interrupted one strands the instance on "Update needed — use the command line updater" permanently, because the entrypoint only compares deployed code to image code and never re-checks what the DB acknowledged.
- **Renaming an action abandons its task's replay key, and nothing reaps it.** The key defaults to `[package-id]:[action-id]`, so the `create-admin-user` → `get-admin-credentials` rename stranded `nextcloud:create-admin-user` — and because the old action id no longer resolves, `recheck_tasks` cannot read its input and the task's `active` flag freezes wherever it last sat. A task with no `when` clause is only removed by _running_ it, which an unresolvable id makes impossible. Rename an action with a live task and you owe a `sdk.action.clearTask(effects, '<old key>')` in the same release.
- **Long-running `occ` work must be queued, never run inline in an action handler** — it would block past the action timeout. Adding one means matching entries in `OCC_ARGS`, `TASK_NOTICE`, and a conditional health check, all keyed off `ACTION_IDS`.
Expand Down
5 changes: 3 additions & 2 deletions UPDATING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ curl -fsSL "https://hub.docker.com/v2/repositories/library/postgres/tags?page_si
| jq -r '.results[].name' | grep -E '^17.*alpine' | head
```

Current pin: `postgres:17-alpine` in `startos/manifest/index.ts` (`images.postgres.source.dockerTag`). Changing the major also means changing `PG_MAJOR` in `startos/versions/from035x.ts`, which the 0.3.5x migration compares against the cluster's `PG_VERSION`.
Current pin: `postgres:17-alpine` in `startos/manifest/index.ts` (`images.postgres.source.dockerTag`).

**Valkey** ([valkey/valkey](https://hub.docker.com/r/valkey/valkey) on Docker Hub):

Expand All @@ -37,10 +37,11 @@ Current pin: `valkey/valkey:9-alpine` in `startos/manifest/index.ts` (`images.va

**Nextcloud** — bump the `NEXTCLOUD_VERSION` `ARG` default in `nextcloud.Dockerfile` to the new patch version (e.g. `32.0.9` → `32.0.10`). The `-apache` suffix is appended by the `FROM` line; don't include it in the ARG value.

A **major** bump (e.g. `33.0.8` → `34.0.3`) needs four more checks:
A **major** bump (e.g. `33.0.8` → `34.0.3`) needs five more checks:

- Diff `core/shipped.json` between the two tags and add whatever the new major appends to `defaultEnabled` and `alwaysEnabled` to the `defaultApps` list in `startos/actions/maintenance/disableUnstableApps.ts`. `occ app:disable` exits non-zero on an `alwaysEnabled` app, and the action runs under `execFail`, so one missing id breaks the recovery action a locked-out user is told to run.
- Check `$OC_VersionCanBeUpgradedFrom` in the new tag's `version.php`. Nextcloud upgrades one major at a time, so every version the registry still lists must be within one major of the new image — `guardUpstreamUpgrade` in `startos/init/bootstrapNextcloud.ts` refuses the rest before the version graph runs.
- Move the version graph's floor to the previous major: `startos/versions/` declares only `current` and a `<previous major>.0.0:0` floor whose `up` is `IMPOSSIBLE`. A floor left a major lower lets `canMigrateFrom` accept installs the guard then refuses, so StartOS offers them this release instead of the previous major's.
- Diff `config/config.sample.php` between the two tags against the keys `startos/fileModels/config.php.ts` models, and against the defaults the README and `instructions.md` quote.
- Re-check the new major's system requirements page for the supported PostgreSQL and PHP versions.

Expand Down
2 changes: 1 addition & 1 deletion nextcloud.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG NEXTCLOUD_VERSION=34.0.4
ARG NEXTCLOUD_VERSION=35.0.1
FROM nextcloud:${NEXTCLOUD_VERSION}-apache

RUN apt-get update \
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,5 @@
"tabWidth": 2,
"semi": false,
"singleQuote": true
},
"overrides": {
"@start9labs/start-sdk": "$@start9labs/start-sdk"
}
}
1 change: 1 addition & 0 deletions startos/actions/maintenance/disableUnstableApps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ export const disableUnstableApps = sdk.Action.withoutInput(
'serverinfo',
'settings',
'sharebymail',
'sharing',
'support',
'survey_client',
'suspicious_login',
Expand Down
6 changes: 0 additions & 6 deletions startos/i18n/dictionaries/default.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ const dict = {
// bootstrapNextcloud.ts
'Display your admin password so you can administer your Nextcloud instance': 8,

// v32.0.5.0.ts
'Admin password could not be recovered from migration. Please reset it.': 9,

// setConfig.ts
Configure: 10,
'Basic configuration options for your Nextcloud instance': 11,
Expand Down Expand Up @@ -198,9 +195,6 @@ const dict = {
'Creating the database': 161,
'Migrating the database': 162,

// versions/from035x.ts: 0.3.5x migration progress
'Updating file permissions': 134,

// disableUnstableApps.ts: per-app outcome report
'Partially Successful': 137,
'No non-default apps were enabled.': 138,
Expand Down
8 changes: 0 additions & 8 deletions startos/i18n/dictionaries/translations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ export default {
6: 'WebDAV',
7: 'Direcciones para sincronización WebDAV',
8: 'Muestre su contraseña de administrador para poder administrar su instancia de Nextcloud',
9: 'No se pudo recuperar la contraseña de administrador durante la migración. Por favor, restablézcala.',
10: 'Configurar',
11: 'Opciones básicas de configuración para su instancia de Nextcloud',
12: 'Idioma predeterminado',
Expand Down Expand Up @@ -139,7 +138,6 @@ export default {
133: 'Copiando los archivos de la aplicación',
161: 'Creando la base de datos',
162: 'Migrando la base de datos',
134: 'Actualizando permisos de archivos',
135: 'Retransmitir las llamadas de Talk a través de Coturn',
136: 'Retransmita las llamadas de Talk a través del servicio Coturn para que se establezcan cuando ambas partes están detrás de NAT o de un cortafuegos restrictivo. Requiere que la aplicación Talk esté instalada en Nextcloud y que Coturn esté instalado y en ejecución con su propio dominio público; hasta que ambos lo estén, las llamadas recurren a una conexión directa.',
137: 'Parcialmente correcto',
Expand Down Expand Up @@ -171,7 +169,6 @@ export default {
6: 'WebDAV',
7: 'Adressen für WebDAV-Synchronisation',
8: 'Zeigen Sie Ihr Admin-Passwort an, um Ihre Nextcloud-Instanz verwalten zu können',
9: 'Das Admin-Passwort konnte bei der Migration nicht wiederhergestellt werden. Bitte setzen Sie es zurück.',
10: 'Konfigurieren',
11: 'Grundlegende Konfigurationsoptionen für Ihre Nextcloud-Instanz',
12: 'Standardsprache',
Expand Down Expand Up @@ -299,7 +296,6 @@ export default {
133: 'Anwendungsdateien werden kopiert',
161: 'Datenbank wird erstellt',
162: 'Datenbank wird migriert',
134: 'Dateiberechtigungen werden aktualisiert',
135: 'Talk-Anrufe über Coturn weiterleiten',
136: 'Talk-Anrufe über den Coturn-Dienst weiterleiten, damit sie auch zustande kommen, wenn beide Seiten hinter NAT oder einer restriktiven Firewall sitzen. Erfordert, dass die Talk-App in Nextcloud installiert ist und dass Coturn installiert ist, läuft und eine eigene öffentliche Domain hat; bis beides zutrifft, fallen Anrufe auf eine Direktverbindung zurück.',
137: 'Teilweise erfolgreich',
Expand Down Expand Up @@ -331,7 +327,6 @@ export default {
6: 'WebDAV',
7: 'Adresy do synchronizacji WebDAV',
8: 'Wyświetl hasło administratora, aby móc zarządzać swoją instancją Nextcloud',
9: 'Nie udało się odzyskać hasła administratora podczas migracji. Proszę je zresetować.',
10: 'Konfiguracja',
11: 'Podstawowe opcje konfiguracji instancji Nextcloud',
12: 'Domyślny język',
Expand Down Expand Up @@ -459,7 +454,6 @@ export default {
133: 'Kopiowanie plików aplikacji',
161: 'Tworzenie bazy danych',
162: 'Migrowanie bazy danych',
134: 'Aktualizowanie uprawnień plików',
135: 'Przekazuj połączenia Talk przez Coturn',
136: 'Przekazuj połączenia Talk przez usługę Coturn, aby zestawiały się, gdy obie strony są za NAT-em lub restrykcyjną zaporą. Wymaga zainstalowanej w Nextcloud aplikacji Talk oraz zainstalowanego i uruchomionego Coturn z własną domeną publiczną; dopóki nie ma obu, połączenia wracają do trybu bezpośredniego.',
137: 'Częściowo pomyślnie',
Expand Down Expand Up @@ -491,7 +485,6 @@ export default {
6: 'WebDAV',
7: 'Adresses pour la synchronisation WebDAV',
8: 'Affichez votre mot de passe administrateur pour pouvoir administrer votre instance Nextcloud',
9: "Le mot de passe administrateur n'a pas pu être récupéré lors de la migration. Veuillez le réinitialiser.",
10: 'Configurer',
11: 'Options de configuration de base pour votre instance Nextcloud',
12: 'Langue par défaut',
Expand Down Expand Up @@ -619,7 +612,6 @@ export default {
133: "Copie des fichiers de l'application",
161: 'Création de la base de données',
162: 'Migration de la base de données',
134: 'Mise à jour des permissions des fichiers',
135: 'Relayer les appels Talk via Coturn',
136: "Relayer les appels Talk via le service Coturn pour qu'ils aboutissent lorsque les deux parties sont derrière un NAT ou un pare-feu restrictif. Nécessite que l'application Talk soit installée dans Nextcloud et que Coturn soit installé et démarré avec un domaine public qui lui est propre ; tant que ce n'est pas le cas, les appels se rabattent sur une connexion directe.",
137: 'Partiellement réussi',
Expand Down
8 changes: 0 additions & 8 deletions startos/init/bootstrapNextcloud.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,14 +184,6 @@ function readNextcloudVersions(effects: T.Effects) {
* daemon start via the entrypoint, where an interrupted run stranded the
* instance on "Update needed — use the command line updater".
*
* This is the **upstream application** upgrade, triggered by the bundled
* Nextcloud release being newer than the deployed one — not to be confused with
* the one-time **StartOS layout** migration in
* [`../versions/from035x.ts`](../versions/from035x.ts), which is driven by the
* package version graph. Both run during init; `versionGraph` precedes
* `bootstrapNextcloud` in `sdk.setupInit`, so the 0.3.5x migration has always
* finished before this starts.
*
* `NEXTCLOUD_UPDATE=1` makes the stock entrypoint perform the upgrade with a
* no-op command (`true`) and exit, so it never binds a port. `runUntilSuccess`
* brings up Postgres + Valkey (occ upgrade talks to both), runs the upgrade to
Expand Down
92 changes: 86 additions & 6 deletions startos/versions/current.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,93 @@
import { IMPOSSIBLE, VersionInfo } from '@start9labs/start-sdk'

export const current = VersionInfo.of({
version: '34.0.4:5',
version: '35.0.1:0',
releaseNotes: {
en_US: `Fixes a crash after installing or updating an app on aarch64 servers that left Nextcloud unreachable until it was restarted. Moving a large Nextcloud from StartOS 0.3.5 no longer fails partway through the migration.`,
es_ES: `Corrige un fallo tras instalar o actualizar una aplicación en servidores aarch64 que dejaba Nextcloud inaccesible hasta reiniciarlo. Migrar una instalación grande de Nextcloud desde StartOS 0.3.5 ya no falla a mitad de la migración.`,
de_DE: `Behebt einen Absturz nach dem Installieren oder Aktualisieren einer App auf aarch64-Servern, der Nextcloud bis zu einem Neustart unerreichbar machte. Die Migration einer großen Nextcloud-Installation von StartOS 0.3.5 bricht nicht mehr mittendrin ab.`,
pl_PL: `Naprawia awarię po zainstalowaniu lub zaktualizowaniu aplikacji na serwerach aarch64, po której Nextcloud był niedostępny do czasu ponownego uruchomienia. Migracja dużej instalacji Nextcloud ze StartOS 0.3.5 nie kończy się już błędem w trakcie.`,
fr_FR: `Corrige un plantage après l'installation ou la mise à jour d'une application sur les serveurs aarch64, qui rendait Nextcloud inaccessible jusqu'à son redémarrage. La migration d'une installation Nextcloud volumineuse depuis StartOS 0.3.5 n'échoue plus en cours de route.`,
en_US: `Updated Nextcloud to 35.0.1 — a major upgrade from the Nextcloud 34 series.

**New in Nextcloud 35**

- Sharing has a unified dialog and sidebar, with share status and clearer password and expiration guidance.
- Photos adds search, trip memories, a map, slideshows, EXIF editing and a redesigned timeline.
- Text adds inline comments and footnotes.
- Office adds document previews and navigation actions.

**Worth knowing**

- A server still on Nextcloud 33 is offered the Nextcloud 34 release first; once it is installed, this update follows. Nextcloud upgrades only one major version at a time.
- Apps installed from the Nextcloud app store may need compatible updates and can be disabled during the upgrade.
- The update migrates the database schema, so it can take longer than a maintenance release.
- Nextcloud Desktop clients older than 3.3.50 are no longer supported.

[Full release notes](https://github.com/nextcloud-releases/server/releases/tag/v35.0.1)`,
es_ES: `Nextcloud se ha actualizado a la versión 35.0.1, una actualización mayor desde la serie Nextcloud 34.

**Novedades de Nextcloud 35**

- El uso compartido tiene un cuadro de diálogo y una barra lateral unificados, con el estado de los recursos compartidos e indicaciones más claras sobre contraseñas y vencimiento.
- Fotos incorpora búsqueda, recuerdos de viajes, un mapa, presentaciones, edición de EXIF y una cronología rediseñada.
- Texto incorpora comentarios en línea y notas al pie.
- Office incorpora vistas previas de documentos y acciones de navegación.

**Conviene saber**

- A un servidor que todavía utiliza Nextcloud 33 se le ofrece primero la versión con Nextcloud 34; una vez instalada, aparece esta actualización. Nextcloud solo actualiza una versión mayor cada vez.
- Las aplicaciones instaladas desde la tienda de Nextcloud pueden necesitar actualizaciones compatibles y podrían desactivarse durante la actualización.
- La actualización migra el esquema de la base de datos, por lo que puede tardar más que una versión de mantenimiento.
- Los clientes de Nextcloud Desktop anteriores a la versión 3.3.50 ya no son compatibles.

[Notas completas de la versión](https://github.com/nextcloud-releases/server/releases/tag/v35.0.1)`,
de_DE: `Nextcloud wurde auf 35.0.1 aktualisiert — ein Hauptversionssprung von der Nextcloud-Reihe 34.

**Neu in Nextcloud 35**

- Freigaben haben einen einheitlichen Dialog und eine einheitliche Seitenleiste mit Freigabestatus und klareren Hinweisen zu Kennwörtern und Ablaufdaten.
- Fotos bietet Suche, Reiseerinnerungen, eine Karte, Diashows, EXIF-Bearbeitung und eine neu gestaltete Zeitleiste.
- Text bietet Inline-Kommentare und Fußnoten.
- Office bietet Dokumentvorschauen und Navigationsaktionen.

**Wissenswert**

- Einem Server, der noch Nextcloud 33 verwendet, wird zuerst die Nextcloud-34-Version angeboten; sobald sie installiert ist, folgt dieses Update. Nextcloud aktualisiert immer nur um eine Hauptversion.
- Aus dem Nextcloud App Store installierte Apps benötigen möglicherweise kompatible Updates und können während des Upgrades deaktiviert werden.
- Das Update migriert das Datenbankschema und kann daher länger dauern als eine Wartungsversion.
- Nextcloud-Desktop-Clients vor Version 3.3.50 werden nicht mehr unterstützt.

[Vollständige Versionshinweise](https://github.com/nextcloud-releases/server/releases/tag/v35.0.1)`,
pl_PL: `Zaktualizowano Nextcloud do wersji 35.0.1 — jest to aktualizacja główna z serii Nextcloud 34.

**Nowości w Nextcloud 35**

- Udostępnianie ma ujednolicone okno dialogowe i panel boczny, ze stanem udostępnień oraz jaśniejszymi wskazówkami dotyczącymi haseł i dat wygaśnięcia.
- Zdjęcia zyskują wyszukiwanie, wspomnienia z podróży, mapę, pokazy slajdów, edycję EXIF i przeprojektowaną oś czasu.
- Tekst zyskuje komentarze w tekście i przypisy dolne.
- Office zyskuje podglądy dokumentów i akcje nawigacyjne.

**Warto wiedzieć**

- Serwer, który nadal używa Nextcloud 33, otrzyma najpierw wydanie z Nextcloud 34; po jego zainstalowaniu pojawi się ta aktualizacja. Nextcloud aktualizuje się tylko o jedną wersję główną naraz.
- Aplikacje zainstalowane ze sklepu Nextcloud mogą wymagać zgodnych aktualizacji i mogą zostać wyłączone podczas aktualizacji.
- Aktualizacja migruje schemat bazy danych, więc może potrwać dłużej niż wydanie konserwacyjne.
- Klienty Nextcloud Desktop starsze niż 3.3.50 nie są już obsługiwane.

[Pełne informacje o wydaniu](https://github.com/nextcloud-releases/server/releases/tag/v35.0.1)`,
fr_FR: `Nextcloud a été mis à jour vers la version 35.0.1, une mise à niveau majeure depuis la série Nextcloud 34.

**Nouveautés de Nextcloud 35**

- Le partage bénéficie d'une boîte de dialogue et d'une barre latérale unifiées, avec l'état des partages et des indications plus claires sur les mots de passe et les dates d'expiration.
- Photos propose désormais la recherche, les souvenirs de voyage, une carte, des diaporamas, la modification des données EXIF et une chronologie repensée.
- Texte propose désormais les commentaires intégrés et les notes de bas de page.
- Office propose désormais des aperçus de documents et des actions de navigation.

**Bon à savoir**

- Un serveur encore sous Nextcloud 33 se voit d'abord proposer la version avec Nextcloud 34 ; une fois celle-ci installée, cette mise à jour suit. Nextcloud ne franchit qu'une version majeure à la fois.
- Les applications installées depuis la boutique Nextcloud peuvent nécessiter des mises à jour compatibles et être désactivées pendant la mise à niveau.
- La mise à jour migre le schéma de la base de données et peut donc prendre plus de temps qu'une version de maintenance.
- Les clients Nextcloud Desktop antérieurs à la version 3.3.50 ne sont plus pris en charge.

[Notes de version complètes](https://github.com/nextcloud-releases/server/releases/tag/v35.0.1)`,
},
migrations: {
up: async () => {},
Expand Down
Loading
Loading