500 internal server error when adding remote backup

Problem Description
I had a remote backup that was successfully working, but I wanted to create a new repo. So I deleted the old backup and tried to add a new one (same ssh host, just a different folder) and now it’s giving me a 500 internal error.

How do I resolve this and get my backup working again?

Steps to Reproduce

  1. Go to Backups
  2. Click on “Add remote backup location”
  3. Add ssh host (I was attempting ssh://user@user.rsync.net/data3/home/user/freedombox-2024-01-16/)

Expected Results
The Backup page with the added remote backup location.

Actual results
500 error.

Logs

Internal Server Error: /plinth/sys/backups/repositories/add-remote/
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/views/generic/edit.py", line 141, in post
    if form.is_valid():
       ^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/forms/forms.py", line 175, in is_valid
    return self.is_bound and not self.errors
                                 ^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/forms/forms.py", line 170, in errors
    self.full_clean()
  File "/usr/lib/python3/dist-packages/django/forms/forms.py", line 372, in full_clean
    self._clean_fields()
  File "/usr/lib/python3/dist-packages/django/forms/forms.py", line 390, in _clean_fields
    value = field.clean(value)
            ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/django/forms/fields.py", line 151, in clean
    self.run_validators(value)
  File "/usr/lib/python3/dist-packages/django/forms/fields.py", line 136, in run_validators
    v(value)
  File "/usr/lib/python3/dist-packages/plinth/modules/backups/forms.py", line 149, in repository_validator
    username, hostname, dir_path = split_path(path)
                                   ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/plinth/modules/backups/__init__.py", line 157, in split_path
    return re.findall(r'^(.*)@([^/]*):(.*)$', path)[0]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range

CODE_ARGS
    ('Internal Server Error', '/plinth/sys/backups/repositories/add-remote/')
CODE_FILE
    /usr/lib/python3/dist-packages/django/utils/log.py
CODE_FUNC
    log_response
CODE_LINE
    224
EXCEPTION_INFO
    (<class 'IndexError'>, IndexError('list index out of range'), <traceback object at 0x7fa1802a5740>)
EXCEPTION_TEXT
    Traceback (most recent call last): File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/views/generic/base.py", line 70, in view return self.dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/views/generic/base.py", line 98, in dispatch return handler(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/views/generic/edit.py", line 141, in post if form.is_valid(): ^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/forms/forms.py", line 175, in is_valid return self.is_bound and not self.errors ^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/forms/forms.py", line 170, in errors self.full_clean() File "/usr/lib/python3/dist-packages/django/forms/forms.py", line 372, in full_clean self._clean_fields() File "/usr/lib/python3/dist-packages/django/forms/forms.py", line 390, in _clean_fields value = field.clean(value) ^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/django/forms/fields.py", line 151, in clean self.run_validators(value) File "/usr/lib/python3/dist-packages/django/forms/fields.py", line 136, in run_validators v(value) File "/usr/lib/python3/dist-packages/plinth/modules/backups/forms.py", line 149, in repository_validator username, hostname, dir_path = split_path(path) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/plinth/modules/backups/__init__.py", line 157, in split_path return re.findall(r'^(.*)@([^/]*):(.*)$', path)[0] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^ IndexError: list index out of range
LOGGER
    django.request
PRIORITY
    3
PROCESS_NAME
    MainProcess
SYSLOG_IDENTIFIER
    /usr/bin/plinth
THREAD_NAME
    CP Server Thread-14
_BOOT_ID
    10e6147f989046c1a6553d15e760e456
_CAP_EFFECTIVE
    0
_CMDLINE
    /usr/bin/python3 /usr/bin/plinth
_COMM
    plinth
_EXE
    /usr/bin/python3.11
_GID
    118
_HOSTNAME
    aangat-lahat
_MACHINE_ID
    6c0dd0506cea4286b2e405e917cd21cb
_PID
    1009
_RUNTIME_SCOPE
    system
_SELINUX_CONTEXT
    unconfined 
_SOURCE_REALTIME_TIMESTAMP
    1705439673306104
_SYSTEMD_CGROUP
    /system.slice/plinth.service
_SYSTEMD_INVOCATION_ID
    68777e7877f54a73861bda4b6b9821d8
_SYSTEMD_SLICE
    system.slice
_SYSTEMD_UNIT
    plinth.service
_TRANSPORT
    journal
_UID
    112
__CURSOR
    s=200d9a41e44d4ab3906b21290b361e61;i=41f;b=10e6147f989046c1a6553d15e760e456;m=11bfdd81;t=60f169de9cc16;x=650e385bbab4d6f0
__MONOTONIC_TIMESTAMP
    297786753
__REALTIME_TIMESTAMP
    1705439673306134

Information

  • FreedomBox version: 24.1
  • Hardware: VPS on Vultr
  • How did you install FreedomBox?: apt install freedombox

Ah I spoke too soon. It looks like it worked when I changed the format of the backup location to user@user.rsync.net:~/freedombox-2024-01-16/!