Commit Graph

9309 Commits

Author SHA1 Message Date
Girish Ramakrishnan 62017b3ff5 backup: rename back backuplisting.js to backups.js
this was a transitional rename till I figured out how to split
it in backuptargets.js
2025-07-25 01:37:19 +02:00
Girish Ramakrishnan 3aafbd2ccb backups: add backup multiple targets 2025-07-25 01:30:27 +02:00
Girish Ramakrishnan 100bea981d constants: rename AUTOUPDATE_PATTERN_NEVER to CRON_PATTERN_NEVER 2025-07-24 21:47:46 +02:00
Girish Ramakrishnan 931311f11f rename backups to backuptargets 2025-07-24 18:54:10 +02:00
Girish Ramakrishnan 5e456f378b backups: split listing and targets 2025-07-24 18:21:48 +02:00
Girish Ramakrishnan bf315258c5 backups: add target foreign key to backups table
format is part of the backup target

in the future, if we want per-app format or schedule, we can add this
separately to the apps table itself. the full box backup can ignore
apps with a set backup target and use the latest backup (like an errored app).
the nice thing is restore will work correctly.
2025-07-24 17:32:16 +02:00
Girish Ramakrishnan 9780db6fa0 add backup targets table 2025-07-24 17:32:16 +02:00
Johannes Zellner 6d0a24cc95 Update postgres addon to support vectorchord 0.3.0 2025-07-24 16:45:08 +02:00
Girish Ramakrishnan 1a3d6e86a8 sudo: alway run in non-interactive 2025-07-24 14:42:31 +02:00
Johannes Zellner 68a8c964ea If we have app.error we always have an app.error.details object 2025-07-23 15:40:25 +02:00
Johannes Zellner 6c1045c545 error installationState is in the error details 2025-07-23 15:31:25 +02:00
Johannes Zellner 2386124089 Upcloud S3 does not return a Contents property if no keys are found 2025-07-22 18:55:44 +02:00
Johannes Zellner cc3dc1636b Ensure proxyauth has a fallback icon for apps without icons 2025-07-21 16:26:22 +02:00
Johannes Zellner 545ac689b1 Remove unused require 2025-07-21 16:22:20 +02:00
Girish Ramakrishnan e7799fef1c appstore: fail properly for non-200 when downloading icon 2025-07-21 12:11:26 +02:00
Girish Ramakrishnan d857ca46e0 test: add more system tests 2025-07-20 10:25:33 +02:00
Girish Ramakrishnan 0e3cc97ee6 system: use last mountpoint like before 2025-07-20 10:18:06 +02:00
Girish Ramakrishnan 66107cf7a4 system: make filesystem return value an array
Filesystem of df output is not unique
2025-07-20 10:06:01 +02:00
Girish Ramakrishnan 1e8df5c9d0 system: check if mountpoint is array 2025-07-19 13:06:50 +02:00
Girish Ramakrishnan 4f608bdc5f Fix tasks test 2025-07-18 20:55:54 +02:00
Girish Ramakrishnan 48559d3358 tasks: distinguish runtime crash vs task error in worker 2025-07-18 20:02:06 +02:00
Girish Ramakrishnan 5d8871a044 boxerror: remove usage of Object.assign 2025-07-18 19:33:34 +02:00
Girish Ramakrishnan a684fadf43 metrics: fix crash 2025-07-18 19:32:04 +02:00
Girish Ramakrishnan 7e0803c4b4 clean up task locks 2025-07-18 18:12:07 +02:00
Girish Ramakrishnan cb52dfdd0f backups.backupApp was used by the app update logic 2025-07-18 17:44:22 +02:00
Girish Ramakrishnan c10593e4ac tasks: remove the prefix for invokation lookup 2025-07-18 14:33:26 +02:00
Girish Ramakrishnan 0fa281083e apps: backup is not a state anymore
this is launched as a separate task
2025-07-18 14:14:54 +02:00
Girish Ramakrishnan 0aca6c2588 locks: rename lock types to make it clearer 2025-07-18 13:40:15 +02:00
Johannes Zellner e181abe797 Polish disk usage 2025-07-18 13:36:48 +02:00
Girish Ramakrishnan 7818219763 system: query docker size lazily 2025-07-18 13:05:33 +02:00
Girish Ramakrishnan 25d20266b8 diskusage: emit other entry 2025-07-18 13:02:53 +02:00
Girish Ramakrishnan 17ce6f7291 apptaskmanager: release lock and clear active task on task failure 2025-07-17 14:54:47 +02:00
Girish Ramakrishnan 7047ee9391 shell: add timeout logic and rework error handling
what's important:

* if task code ran, it exits with 0. this code is regardless of (error, result)
  * when it exited cleanly, we will get the values from the database

* if task timed out, the box code kills it and it has a flag tracking timedOut. we can
  ignore exit code in this case.

* if task code was stopped, box code will send SIGTERM which ideally it will handle and end with 70.

* if task code crashed and it caught the exception, it will return 50

* if task code crashed and node nuked us, it will exit with 1

* if task code was killed with some unhandleabe signal, taskworker.sh will return the signal (9=SIGKILL)
2025-07-17 12:44:24 +02:00
Girish Ramakrishnan 5e1c32b606 shell: rename signal to abortSignal
this prevents accidental typos with child_process signal handling
2025-07-17 09:50:43 +02:00
Girish Ramakrishnan 38032f0b77 remove the ignored debug 2025-07-17 09:47:26 +02:00
Girish Ramakrishnan 6364ea8e57 grammar 2025-07-17 08:30:51 +02:00
Girish Ramakrishnan c796e724aa shell/task: better logs 2025-07-17 02:04:50 +02:00
Girish Ramakrishnan 63053f46a8 shell: remove sudoCallback 2025-07-17 01:54:39 +02:00
Girish Ramakrishnan 8bf8c278f0 system: add tests for fs usage route 2025-07-17 01:42:28 +02:00
Girish Ramakrishnan aa0c186c8c logStream is not used anymore 2025-07-17 00:37:29 +02:00
Girish Ramakrishnan 5539f74bea system: add disk usage task 2025-07-17 00:09:50 +02:00
Johannes Zellner ce63dbde1b Check current subscription status once a day 2025-07-16 22:11:11 +02:00
Girish Ramakrishnan 989d843fcb shell: make shell.sudo promise based and waitable 2025-07-16 22:04:24 +02:00
Girish Ramakrishnan 32d07e7959 add spurious log 2025-07-16 21:37:30 +02:00
Girish Ramakrishnan 50b585c1dd shell: merge some options 2025-07-16 21:32:27 +02:00
Girish Ramakrishnan e03beba9bc sudo: add kill-child.sh
ultimately, a non-previlieged child cannot kill previlieged parent.
all the notes and research in shell.js are not useful.
2025-07-16 21:26:57 +02:00
Girish Ramakrishnan e4ceedcac6 logs: use child_process.spawn directly for sudo
shell.sudo will move to a promise based API shortly
2025-07-16 20:23:57 +02:00
Johannes Zellner ed288317c4 Use the same app label in login and app grid 2025-07-16 18:21:34 +02:00
Johannes Zellner 3754021ae8 Make the proxyauth login visually distinctive from oidc login 2025-07-16 18:20:43 +02:00
Girish Ramakrishnan 7214ce2ede support: remove ssh manipulation routes
this is now moved entirely to cloudron-support --enable-remote-access.

this emphasizes more that users have to get ssh access to the server before
we can do anything about it. it's far too simple for people to click this
button.

we have now also added clear terms to understand what remote access entails.
(what happens if support personnel makes a mistake. who is liable? etc)
2025-07-16 17:53:19 +02:00