The third-party app catalogue my self-hosted apps came from fails to sync and the project is dead — how do I get my apps off it without losing the data?
About a dozen of the services on my NAS were installed from a community app catalogue rather than the built-in one. The catalogue now fails to sync — the UI just reports that it could not refresh — and the project behind it has announced it is winding down.
The apps that are already running still run. But I cannot update any of them, and I assume that the first time one of those containers restarts and cannot pull its definition, I am going to be in trouble.
What I do not understand is how much of this I actually own. The apps were deployed by the catalogue. The configuration was set through its forms. If the catalogue is gone, is my data gone with it? Photos, documents, a password vault and a media library are all in there.
I would rather move deliberately now than discover the answer during an outage. What is the order of operations?
@dataset_first · 2h ago
Your data is fine, and the reason it is fine is the single most useful thing to understand here: the catalogue owns the app definition, not the storage.
What a catalogue entry actually is: a template that says which image to run, which ports to publish, which environment variables to set, and which host paths to mount inside the container. When you filled in the deployment form you were filling in that template. The result was a running container plus one or more directories on your pool.
The container is disposable. It is a process built from an image that anybody can pull. The directories are not disposable, and they are sitting on your pool exactly where you told the form to put them, completely untouched by whether the catalogue can be reached.
So the migration is: find out, for each app, which paths it writes to, and then reproduce the container yourself pointing at those same paths.
Step one — inventory, before you change anything. For each deployed app, open its configuration and write down four things:
Do not trust your memory for the environment variables. Half of them will be database credentials, and an app whose database password changes underneath it fails in confusing ways.
Step two — take a snapshot of every dataset involved. Not a backup, a snapshot, right now, before you touch anything. It costs almost nothing and it turns every subsequent step into something you can undo.
Step three — stop one app and rebuild it by hand. Pick the least important one. Stop it, write a plain compose file from the four things you wrote down, start it, confirm it comes up with all its data. You will learn more from doing this once than from any amount of planning.
Step four — repeat, hardest last.
The one that will genuinely bite you is anything with a bundled database. If an app came with its own database container, the database's data directory is also just a path on your pool, but it is version-sensitive: a database engine will refuse to start against a data directory written by a newer version of itself. So when you rebuild that one, pin the database image to the same version the catalogue was running, get it up, and only then think about upgrading.
The lesson to carry forward, which is worth more than the migration itself: never let something else decide where your data lives. Create the datasets yourself, with names you chose, and point apps at them. Then any layer above can be thrown away and rebuilt on a wet afternoon.
Reply
Report