Johannes Zellner
f179d92c9c
Sync email template button colors with pankow colors
2025-08-10 15:30:01 +02:00
Johannes Zellner
3ea9192f79
Validate user account input during account setup
2025-08-08 10:07:14 +02:00
Johannes Zellner
6a5cd698a4
Remove unused requires
2025-08-08 09:58:55 +02:00
Johannes Zellner
8143ef1057
Fix autologin after account creation
2025-08-07 17:16:46 +02:00
Girish Ramakrishnan
e390a56f05
users: ensure all user objects have groupIds
...
this prevents ldap/sftp code from detecting user groups
and thus fails to detect membership of a user via operator groups.
2025-08-07 12:32:21 +02:00
Johannes Zellner
063c272aea
Add language for the setupaccount rendering
2025-08-07 12:15:26 +02:00
Johannes Zellner
98ea5a7b70
Setup backup encryption in extra step
2025-08-06 13:53:06 +02:00
Girish Ramakrishnan
f8d74bbb6d
backuptarget: add default at provisioning time (again)
...
we clear the db in the tests. the tests run the setup again and again.
so, it's easier to add default values in provision time instead of
migration.
2025-08-06 11:11:11 +02:00
Girish Ramakrishnan
c184f1e42e
mailer: handle error at the caller instead
...
the send test email logic breaks if we disable throwing error in send
2025-08-06 10:18:09 +02:00
Girish Ramakrishnan
5c7d19ce13
mailer: set timeouts
2025-08-06 10:00:56 +02:00
Girish Ramakrishnan
3d4b3edc3a
mailer: log error and do not throw
...
this suppresses eventlog exceptions when mail is down or the
mail is rejected because outbound is disabled.
in apphealthmonitor, we hit a case where eventlog entries are
continuously added since mailer was not sending emails. the health
state of the app is never switched because mail sending failed.
2025-08-06 09:59:40 +02:00
Girish Ramakrishnan
a7ffc8a172
mailer: node-mailer supports async natively
2025-08-06 08:26:57 +02:00
Girish Ramakrishnan
618d2b993a
apphealth: print healthcheck exceptions
2025-08-06 08:26:08 +02:00
Girish Ramakrishnan
70cf212178
promise-retry: only print stack on last attempt
2025-08-05 14:38:12 +02:00
Girish Ramakrishnan
5992658164
restore: fix restore
2025-08-05 14:38:12 +02:00
Girish Ramakrishnan
c4ee21bdb0
Revert "provision: add default backup target after setup"
...
This reverts commit 1a0d1f7d79 .
20171205124434-settings-default-backupConfig.js already adds the default
2025-08-05 13:41:26 +02:00
Girish Ramakrishnan
1d1197e18a
restore: use PENDING_RESTORE instead of PENDING_IMPORT
2025-08-05 12:46:50 +02:00
Johannes Zellner
4fa65099f9
Add multipleBackupTargets and encryptedBackups to features
2025-08-05 12:03:32 +02:00
Girish Ramakrishnan
2a90a0a278
backup target: add password hint and encryption route
2025-08-05 11:26:02 +02:00
Girish Ramakrishnan
36ab052dda
restore: import with the latest backup on cloudron restore
...
in previous versions, the single backup target was replaced during
restore. we cannot do this anymore with multiple backup targets.
during cloudron restore, a pseudo target is created and all the apps
are restored using this backup target.
2025-08-04 23:24:06 +02:00
Girish Ramakrishnan
fddbe6a574
Fixup tests
2025-08-04 23:11:50 +02:00
Johannes Zellner
a887be432b
Create correct mount objects for mountpoint validation
2025-08-04 15:25:27 +02:00
Johannes Zellner
705311f01f
Fix typo
2025-08-04 15:17:27 +02:00
Johannes Zellner
1016d41d7a
Rename backup label to name and separate backup listing into new view
2025-08-04 15:00:24 +02:00
Johannes Zellner
0ff760fe4a
Ensure we pass mount object also from volumes code
2025-08-04 14:40:35 +02:00
Johannes Zellner
90c82ab1e7
make sure we only use mount objects with the mounts api
2025-08-04 14:40:35 +02:00
Girish Ramakrishnan
1a0d1f7d79
provision: add default backup target after setup
2025-08-04 14:33:12 +02:00
Girish Ramakrishnan
132132307f
backuptarget: rename label to name
2025-08-04 14:28:37 +02:00
Johannes Zellner
cf1e1aac77
Fixup some refactoring issues in mounting ext4
2025-08-04 13:32:12 +02:00
Girish Ramakrishnan
7ef9e7eb51
storage: add getStatus hook
2025-08-04 11:01:20 +02:00
Girish Ramakrishnan
28e23dfdab
backuptargets: add test that archives/backups are removed when target is deleted
2025-08-04 10:21:29 +02:00
Girish Ramakrishnan
2c80c4a7d5
backuptargets: fix del to delete archives as well
2025-08-04 10:16:19 +02:00
Johannes Zellner
410d4a47ed
Fix typo
2025-08-03 21:05:46 +02:00
Girish Ramakrishnan
ead6d9c7d3
Fix app import
2025-08-02 20:42:12 +02:00
Girish Ramakrishnan
547d8ae113
filesystem: rename backupFolder to backupDir
2025-08-02 10:37:37 +02:00
Girish Ramakrishnan
4fcaae8053
backup: fix listDir to return path instead of fullPath
2025-08-02 10:24:51 +02:00
Girish Ramakrishnan
c935744f4c
backups: root ~~canal~~ path surgery
...
remove rootPath and getBackupFilePath from the backup target and
make this backend specific.
2025-08-02 10:15:34 +02:00
Girish Ramakrishnan
a01e1bad0f
backuptarget: pseudo target for import and restore
2025-08-02 00:06:47 +02:00
Girish Ramakrishnan
3cabbc1328
backupformat: getFileExtension
2025-08-01 22:58:26 +02:00
Girish Ramakrishnan
7192439b2c
no need for format specific getBackupFilePath
2025-08-01 20:49:11 +02:00
Girish Ramakrishnan
ff6cbf6628
backups: encode extension into the remotePath
2025-08-01 20:42:12 +02:00
Girish Ramakrishnan
53e9925880
backups: make id, provider a backend specific setting
...
the backend can stash whatever values it wants in the config.
just like the DNS backends, we make verifyConfig return a sanitized config.
added benefit is that extra user fields (via API) are also not dumped into the db.
2025-08-01 18:55:04 +02:00
Girish Ramakrishnan
9dfe6242b9
mounts: rename name to description
...
this makes it clear that the field is not important
2025-08-01 15:48:11 +02:00
Girish Ramakrishnan
ea419509f1
backups: add setup/teardown
...
1. add setup, teardown hooks
2. move the managed mount setup and teardown to filesystem backend
3. remove this vague storage.js
we should convert storageApi into a real object, so we don't have to
keep passing apiConfig around
2025-08-01 15:36:25 +02:00
Girish Ramakrishnan
a1a683ec56
import: use inPlace flag
2025-08-01 13:22:12 +02:00
Girish Ramakrishnan
ae3a34287a
backup target: create snapshot and cache files per target
...
snapshot file tracks the snapshot directory. when app gets deleted,
the cleaner will remove the upstream snapshot directory when it runs.
cache files are used in rsync logic to track what was uploading into
snapshot in the previous run without needing to rescan upstream.
2025-07-30 11:44:42 +02:00
Girish Ramakrishnan
b971f2ab22
Fix tests
2025-07-28 13:11:57 +02:00
Girish Ramakrishnan
cbc73f5c9a
remove uuid module
...
built into node.js now
2025-07-28 12:54:09 +02:00
Girish Ramakrishnan
373ef5b7e1
import: make the ui work again
2025-07-28 12:12:43 +02:00
Girish Ramakrishnan
89388940ed
backups: make backup download config work
2025-07-28 11:18:02 +02:00