Radicale is inactive

Yesterday, I noticed that radicale was inactive on my rockpro64 with freedombox installed on top of Debian 13, so I disabled and re-enabled it.

Today, radicale was inactive again. After I disabled and re-enabled it, it works again. I ran diagnostics, all are successfull.

Did other people have the same situation?

I did not take the time to look at the journal (rather busy now), but I will do it at some point.

Yes, I’m having same issue. Haven’t tried debugging yet. Rebooting only temporarily solves the issue.

The new setup with radicale is such that there is a ‘socket’ unit that always keeps listening for new connections and a ‘service’ unit that may (not verified yet) automatically shutdown when not being used. As soon a new connection arrives on /radicale/ URL, systemd should automatically start the radicale service and pass on the incoming connection. All this work transparently to reduce resource usage when services are not being used. Users should not notice it and for them it appears as if service is always running.

But it looks like things are not working as expected. Since you are able to consistently reproduce the issue after a day, I will try to do the same and find out what’s going wrong.

Yesterday, what made me notice that radicale was not running was a failed diagnostic. Today, it was that I had evolution fail to access radicale. Both times, on the plinth page for radicale, there was a notification that the service was inactive.

We are tracking a bug on why diagnostic test is failing. But evolution failing to access should not happen.

This morning, none of my clients complain so radicale probably works but on the plinth page for radicale, there is the warning message that radicale is not working.

I’ve also been facing issues with Radicale for a few days now, diagnostics showing errors and the service not being available to clients.

Re-running the setup through plinth (which did try a re-installation) did not solve the issue, so I logged in via SSH to look at the logs.

I saw that the service was disabled and enabled & started it:

kopfkind@fbox:~ $ sudo systemctl status radicale
○ radicale.service - A simple CalDAV (calendar) and CardDAV (contact) server
     Loaded: loaded (/usr/lib/systemd/system/radicale.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:radicale(1)

kopfkind@fbox:~ $ sudo systemctl enable radicale
Synchronizing state of radicale.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable radicale
Created symlink '/etc/systemd/system/multi-user.target.wants/radicale.service' → '/usr/lib/systemd/system/radicale.service'.

kopfkind@fbox:~ $ sudo systemctl start radicale

kopfkind@fbox:~ $ sudo systemctl status radicale
× radicale.service - A simple CalDAV (calendar) and CardDAV (contact) server
     Loaded: loaded (/usr/lib/systemd/system/radicale.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Sun 2026-04-12 11:22:39 CEST; 9s ago
   Duration: 674ms
 Invocation: 79d1fa740a3141dc9205528ab9486deb
       Docs: man:radicale(1)
   Main PID: 788497 (code=exited, status=1/FAILURE)

Apr 12 11:22:39 fbox systemd[1]: radicale.service: Scheduled restart job, restart counter is at 5.
Apr 12 11:22:39 fbox systemd[1]: radicale.service: Start request repeated too quickly.
Apr 12 11:22:39 fbox systemd[1]: radicale.service: Failed with result 'exit-code'.
Apr 12 11:22:39 fbox systemd[1]: Failed to start radicale.service - A simple CalDAV (calendar) and CardDAV (contact) server.

Logs with journalctl -u radicale are showing errors:

Apr 12 11:22:38 fbox radicale[788497]: [788497] [INFO] Storage location: '/var/lib/radicale/collections'
Apr 12 11:22:38 fbox radicale[788497]: [788497] [WARNING] Storage location: '/var/lib/radicale/collections' does not exist, creating now
Apr 12 11:22:38 fbox radicale[788497]: [788497] [CRITICAL] An exception occurred during server startup: [Errno 17] File exists: '/var/lib/radicale'

The storage location did (and does) exist already - I’ve been running radicale for years now. The folder /var/lib/radicale is a symlink to /var/lib/private/radicale, but the radicale user cannot access it:

# folder exists and belongs to radicale user:
root@fbox:~# ls -ld /var/lib/radicale/collections/
drwxr-x--- 3 radicale radicale 4096 Jun 16  2024 /var/lib/radicale/collections/

# But radicale user not allowed to access it:
root@fbox:~# sudo -u radicale ls -ld /var/lib/radicale/collections/
ls: cannot access '/var/lib/radicale/collections/': Permission denied

# folder is a symlink from /var/lib/radicale:
root@fbox:~# ls -l /var/lib/radicale
lrwxrwxrwx 1 root root 16 Apr  1 07:17 /var/lib/radicale -> private/radicale

# 'private' is owned by root and has mod 700:
root@fbox:~# ls -ld /var/lib/private
drwx------ 6 root root 4096 Apr  1 07:17 /var/lib/private

The service somehow does not recognize the existing storage location, and this leads to the error File exists: '/var/lib/radicale' above. I am unsure about the /var/lib/private thing here. I believe this is a systemd ‘DynamicUser’ thing and the permissions are there for a reason, so I would not want to change permissions on it (e. g. by allowing o+x).

Any other ideas?

Update after doing some more digging:

uswgi

I did not realize that FB uses uswgi for managing the service via systemd. I stumbled across it in this Salsa issue. I am not familiar with uswgi and how this affects my analysis of standard systemd units above.

However, I noticed that my FB showed bepasty to be installed and broken on the diagnostics, on top of radicale. I never installed not used bepasty on my FB and was quite surprised to see it popping up sometime after FB 26.5.1 - which was installed on April 1 through unattended-upgrades on my machine.

  • Question: Is there some kind of (wrong & broken) dependency that installs bepasty alongside any updates to radicale and/or uwsgi?

I’ve not found the root cause, yet. But I’ve managed to get my radicale installation back into working state by doing the following:

  • Make a backup copy of all data from /var/lib/private/radicale
  • Uninstall radicale via plinth web UI
  • Verify that data folders have been purged, nothing remains
  • Reinstall radicale via plinth
  • Check the data folders, they were still missing
    • This is not surprising, since radicale is activated by socket, so without a connecting client, the service will stay disabled.
  • Connect with a client once, connect & refresh, then verify that the data folders are now existing
    • This actually dropped all collections and data from the client since the server-side is blank after reinstallation. But I expected this and I’ve the backup copy made above.
  • Copy back my backed up data files into the (now existing) collection folders.
  • Make sure permissions are correct by running chown -R nobody:nogroup /var/lib/private/radicale/collections/collection-root/*
  • Reload & refresh on the client again. This time, everything is there and synchronization works again :white_check_mark:

One thing I noticed was that previous to the reinstallation all the data files would belong to the radicale user:group. After reinstallation, all the data belonged to nobody:nogroup, so I adopted this in my last step above. Not sure, but maybe this was somehow contributing to my issues.

Cheers & HTH,
Axel

This may have something to do with my post last night: Fail2ban Periodically Locking access to Freedombox. It might not look like it at first, but I’m having a LOT of the same issues as Ya’ll, both Bepasty, and Radicale are acting WEIRD, and throwing a LOT of logged errors, and their services are showing as failing in the web browser when I navigate to my https://thegeekden.net/radicale/. Here is a screenshot:

Here is the error in my logs from radicale re-run setup command from within plinth interface:

Just to save myself the headaches of trying to troubleshoot this issue right now, I have uninstalled both Bepasty and Radicale. I have not seen another error pop up since I did so this morning, about 5 hours ago. I will report back here if I see more errors regarding this.

The plinth page is still saying the service is inactive, I have a failed diagnostic for uwsgi-app@radicale.socket (the last one) but radicale is actually working.

Hi all!
I’m seeing a similar issue.
Radicale is shown as active in plinth.
Radicale is working.
uwsgi-app@radicale.socket is failing in the diagnostic.

Additional info:
uwsgi-app@radicale.socket is dead
uwsgi-app@radicale.service is running

I am trying to reproduce this issue and still could not. Apparently, everyone else is facing the issue. Please note that we don’t use radicale.service or uwsgi.service (anymore). That correct services are uwsgi-app@radicale.socket (this will be enabled and started) and uwsgi-app@radicale.service (this will be started the .socket service when user accesses the service). When the failures occurs could someone post the output of the following commands?

journalctl -u uwsgi-app@radicale.socket
journalctl -u uwsgi-app@radicale.service
systemctl show uwsgi-app@radicale.socket
systemctl show uwsgi-app@radicale.service

I’m having the same issue with both radicale and bepasty.

After some investigation, for whatever reason, the socket isn’t started but the service is.

here are the logs:

journalctl -u uwsgi-app@radicale.socket (inactive)

-- No entries --

journalctl -u uwsgi-app@radicale.service (truncated and anonymized, there isn't any other information in the log)
avril 23 10:23:04 freedombox radicale[1404]: [1404] [INFO] PROPFIND request for '/famille/60870e65-9ebb-0c4c-4c9b-f1a4333f6e07/' with depth '0' received from 2001:xxx:xxxx:xxxx:xxxx:xxxx:cd6e:a6b9 using 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Thunderbird/140.9.1'  
avril 23 10:23:04 freedombox radicale[1404]: [1404] [WARNING] Base prefix (from HTTP_X_SCRIPT_NAME) must not end with '/': '/radicale/'
avril 23 10:23:04 freedombox radicale[1404]: [1404] [INFO] Successful login: 'famille' (remote_user)
avril 23 10:23:06 freedombox radicale[1404]: [1404] [INFO] PROPFIND response status for '/famille/60870e65-9ebb-0c4c-4c9b-f1a4333f6e07/' with depth '0' in 1.644 seconds: 207 Multi-Status
avril 23 10:23:06 freedombox uwsgi[1404]: [pid: 1404|app: 0|req: 186/540] 2001:xxx:xxxx:xxxx:xxxx:xxxx:cd6e:a6b9 (famille) {106 vars in 1778 bytes} [Thu Apr 23 10:23:04 2026] PROPFIND /radicale/famille/60870e65-9ebb-0c4c-4c9b-f1a4333f6e07/ => generated 553 bytes in 1651 msecs (HTTP/2.0 207) 4 headers in 173 bytes (1 switches on core 0)
avril 23 10:23:06 freedombox radicale[1404]: [1404/uWSGIWorker2Core3] [INFO] OPTIONS request for '/famille/' received from 2001:xxx:xxxx:xxxx:xxxx:xxxx:cd6e:a6b9 using 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Thunderbird/140.9.1'  
avril 23 10:23:06 freedombox radicale[1404]: [1404/uWSGIWorker2Core3] [WARNING] Base prefix (from HTTP_X_SCRIPT_NAME) must not end with '/': '/radicale/'
avril 23 10:23:06 freedombox radicale[1404]: [1404/uWSGIWorker2Core3] [INFO] Successful login: 'famille' (remote_user)
avril 23 10:23:06 freedombox radicale[1404]: [1404/uWSGIWorker2Core3] [INFO] OPTIONS response status for '/famille/' in 0.012 seconds: 200 OK
avril 23 10:23:06 freedombox uwsgi[1404]: [pid: 1404|app: 0|req: 187/541] 2001:xxx:xxxx:xxxx:xxxx:xxxx:cd6e:a6b9 (famille) {100 vars in 1591 bytes} [Thu Apr 23 10:23:06 2026] OPTIONS /radicale/famille/ => generated 0 bytes in 18 msecs (HTTP/2.0 200) 2 headers in 179 bytes (1 switches on core 3)
avril 23 10:23:06 freedombox radicale[1404]: [1404/uWSGIWorker2Core2] [INFO] REPORT request for '/famille/60870e65-9ebb-0c4c-4c9b-f1a4333f6e07/' with depth '1' received from 2001:xxx:xxxx:xxxx:xxxx:xxxx:cd6e:a6b9 using 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Thunderbird/140.9.1'  
avril 23 10:23:06 freedombox radicale[1404]: [1404/uWSGIWorker2Core2] [WARNING] Base prefix (from HTTP_X_SCRIPT_NAME) must not end with '/': '/radicale/'
avril 23 10:23:06 freedombox radicale[1404]: [1404/uWSGIWorker2Core2] [INFO] Successful login: 'famille' (remote_user)
avril 23 10:23:08 freedombox radicale[1404]: [1404/uWSGIWorker2Core2] [INFO] REPORT response status for '/famille/60870e65-9ebb-0c4c-4c9b-f1a4333f6e07/' with depth '1' in 2.211 seconds: 207 Multi-Status
avril 23 10:23:08 freedombox uwsgi[1404]: [pid: 1404|app: 0|req: 188/542] 2001:xxx:xxxx:xxxx:xxxx:xxxx:cd6e:a6b9 (famille) {106 vars in 1778 bytes} [Thu Apr 23 10:23:06 2026] REPORT /radicale/famille/60870e65-9ebb-0c4c-4c9b-f1a4333f6e07/ => generated 175 bytes in 2219 msecs (HTTP/2.0 207) 3 headers in 113 bytes (2 switches on core 2)
systemctl show uwsgi-app@radicale.socket
BindIPv6Only=default
Backlog=2147483647
TimeoutUSec=1min 30s
SocketUser=www-data
SocketMode=0600
DirectoryMode=0755
Accept=no
FlushPending=no
Writable=no
KeepAlive=no
KeepAliveTimeUSec=0
KeepAliveIntervalUSec=0
KeepAliveProbes=0
DeferAcceptUSec=0
NoDelay=no
Priority=-1
ReceiveBuffer=0
SendBuffer=0
IPTOS=-1
IPTTL=-1
PipeSize=0
FreeBind=no
Transparent=no
Broadcast=no
PassCredentials=no
PassFileDescriptorsToExec=no
PassSecurity=no
PassPacketInfo=no
Timestamping=off
RemoveOnStop=no
Listen=/run/uwsgi/radicale.socket (Stream)
Mark=-1
MaxConnections=64
MaxConnectionsPerSource=0
MessageQueueMaxMessages=0
MessageQueueMessageSize=0
ReusePort=no
ControlPID=0
Result=success
NConnections=0
NAccepted=0
NRefused=0
FileDescriptorName=uwsgi-app@radicale.socket
SocketProtocol=0
TriggerLimitIntervalUSec=2s
TriggerLimitBurst=20
PollLimitIntervalUSec=2s
PollLimitBurst=15
UID=[not set]
GID=[not set]
Slice=system-uwsgi\x2dapp.slice
ControlGroupId=4294969105
MemoryCurrent=[not set]
MemoryPeak=262144
MemorySwapCurrent=[not set]
MemorySwapPeak=0
MemoryZSwapCurrent=[not set]
MemoryAvailable=574828544
EffectiveMemoryMax=1040752640
EffectiveMemoryHigh=1040752640
CPUUsageNSec=4797000
TasksCurrent=[not set]
EffectiveTasksMax=2087
IPIngressBytes=[no data]
IPIngressPackets=[no data]
IPEgressBytes=[no data]
IPEgressPackets=[no data]
IOReadBytes=[not set]
IOReadOperations=[not set]
IOWriteBytes=[not set]
IOWriteOperations=[not set]
Delegate=no
CPUAccounting=yes
CPUWeight=[not set]
StartupCPUWeight=[not set]
CPUShares=[not set]
StartupCPUShares=[not set]
CPUQuotaPerSecUSec=infinity
CPUQuotaPeriodUSec=infinity
IOAccounting=no
IOWeight=[not set]
StartupIOWeight=[not set]
BlockIOAccounting=no
BlockIOWeight=[not set]
StartupBlockIOWeight=[not set]
MemoryAccounting=yes
DefaultMemoryLow=0
DefaultStartupMemoryLow=0
DefaultMemoryMin=0
MemoryMin=0
MemoryLow=0
StartupMemoryLow=0
MemoryHigh=infinity
StartupMemoryHigh=infinity
MemoryMax=infinity
StartupMemoryMax=infinity
MemorySwapMax=infinity
StartupMemorySwapMax=infinity
MemoryZSwapMax=infinity
StartupMemoryZSwapMax=infinity
MemoryZSwapWriteback=yes
MemoryLimit=infinity
DevicePolicy=auto
TasksAccounting=yes
TasksMax=2087
IPAccounting=no
ManagedOOMSwap=auto
ManagedOOMMemoryPressure=auto
ManagedOOMMemoryPressureLimit=0
ManagedOOMMemoryPressureDurationUSec=[not set]
ManagedOOMPreference=none
MemoryPressureWatch=auto
MemoryPressureThresholdUSec=200ms
CoredumpReceive=no
UMask=0022
LimitCPU=infinity
LimitCPUSoft=infinity
LimitFSIZE=infinity
LimitFSIZESoft=infinity
LimitDATA=infinity
LimitDATASoft=infinity
LimitSTACK=infinity
LimitSTACKSoft=8388608
LimitCORE=infinity
LimitCORESoft=0
LimitRSS=infinity
LimitRSSSoft=infinity
LimitNOFILE=524288
LimitNOFILESoft=1024
LimitAS=infinity
LimitASSoft=infinity
LimitNPROC=6958
LimitNPROCSoft=6958
LimitMEMLOCK=8388608
LimitMEMLOCKSoft=8388608
LimitLOCKS=infinity
LimitLOCKSSoft=infinity
LimitSIGPENDING=6958
LimitSIGPENDINGSoft=6958
LimitMSGQUEUE=819200
LimitMSGQUEUESoft=819200
LimitNICE=0
LimitNICESoft=0
LimitRTPRIO=0
LimitRTPRIOSoft=0
LimitRTTIME=infinity
LimitRTTIMESoft=infinity
RootEphemeral=no
OOMScoreAdjust=0
CoredumpFilter=0x33
Nice=0
IOSchedulingClass=2
IOSchedulingPriority=4
CPUSchedulingPolicy=0
CPUSchedulingPriority=0
CPUAffinityFromNUMA=no
NUMAPolicy=n/a
TimerSlackNSec=50000
CPUSchedulingResetOnFork=no
NonBlocking=no
StandardInput=null
StandardOutput=journal
StandardError=inherit
TTYReset=no
TTYVHangup=no
TTYVTDisallocate=no
SyslogPriority=30
SyslogLevelPrefix=yes
SyslogLevel=6
SyslogFacility=3
LogLevelMax=-1
LogRateLimitIntervalUSec=0
LogRateLimitBurst=0
SecureBits=0
CapabilityBoundingSet=cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_fsetid cap_kill cap_setgid cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config cap_mknod cap_lease cap_audit_write cap_audit_control cap_setfcap cap_mac_override cap_mac_admin cap_syslog cap_wake_alarm cap_block_suspend cap_audit_read cap_perfmon cap_bpf cap_checkpoint_restore
DynamicUser=no
SetLoginEnvironment=no
RemoveIPC=no
PrivateTmp=no
PrivateTmpEx=no
PrivateDevices=no
ProtectClock=no
ProtectKernelTunables=no
ProtectKernelModules=no
ProtectKernelLogs=no
ProtectControlGroups=no
ProtectControlGroupsEx=no
PrivateNetwork=no
PrivateUsers=no
PrivateUsersEx=no
PrivateMounts=no
PrivateIPC=no
PrivatePIDs=no
ProtectHome=no
ProtectSystem=no
SameProcessGroup=no
UtmpMode=init
IgnoreSIGPIPE=yes
NoNewPrivileges=no
SystemCallErrorNumber=2147483646
LockPersonality=no
RuntimeDirectoryPreserve=no
RuntimeDirectoryMode=0755
StateDirectoryMode=0755
CacheDirectoryMode=0755
LogsDirectoryMode=0755
ConfigurationDirectoryMode=0755
TimeoutCleanUSec=infinity
MemoryDenyWriteExecute=no
RestrictRealtime=no
RestrictSUIDSGID=no
RestrictNamespaces=no
MountAPIVFS=no
BindLogSockets=no
KeyringMode=shared
ProtectProc=default
ProcSubset=all
ProtectHostname=no
MemoryKSM=no
RootImagePolicy=root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent
MountImagePolicy=root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent
ExtensionImagePolicy=root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent
KillMode=control-group
KillSignal=15
RestartKillSignal=15
FinalKillSignal=9
SendSIGKILL=yes
SendSIGHUP=no
WatchdogSignal=6
Id=uwsgi-app@radicale.socket
Names=uwsgi-app@radicale.socket
Requires=-.mount sysinit.target "system-uwsgi\\x2dapp.slice"
WantedBy=sockets.target
Conflicts=shutdown.target
Before=uwsgi-app@radicale.service sockets.target shutdown.target
After=-.mount sysinit.target "system-uwsgi\\x2dapp.slice"
Triggers=uwsgi-app@radicale.service
RequiresMountsFor=/run/uwsgi/radicale.socket
Documentation="man:uwsgi(1)" file:/usr/share/doc/uwsgi-core/README.Debian
Description=Socket for uWSGI app radicale
LoadState=loaded
ActiveState=inactive
FreezerState=running
SubState=dead
FragmentPath=/usr/lib/systemd/system/uwsgi-app@.socket
UnitFileState=enabled
UnitFilePreset=enabled
StateChangeTimestamp=Wed 2026-04-08 22:32:05 CEST
StateChangeTimestampMonotonic=48881415351
InactiveExitTimestamp=Wed 2026-04-08 08:57:46 CEST
InactiveExitTimestampMonotonic=28500936
ActiveEnterTimestamp=Wed 2026-04-08 08:57:46 CEST
ActiveEnterTimestampMonotonic=28543394
ActiveExitTimestamp=Wed 2026-04-08 22:32:05 CEST
ActiveExitTimestampMonotonic=48881415351
InactiveEnterTimestamp=Wed 2026-04-08 22:32:05 CEST
InactiveEnterTimestampMonotonic=48881415351
CanStart=yes
CanStop=yes
CanReload=no
CanIsolate=no
CanFreeze=no
CanLiveMount=no
StopWhenUnneeded=no
RefuseManualStart=no
RefuseManualStop=no
AllowIsolate=no
DefaultDependencies=yes
SurviveFinalKillSignal=no
OnSuccessJobMode=fail
OnFailureJobMode=replace
IgnoreOnIsolate=no
NeedDaemonReload=no
JobTimeoutUSec=infinity
JobRunningTimeoutUSec=infinity
JobTimeoutAction=none
ConditionResult=yes
AssertResult=yes
ConditionTimestamp=Wed 2026-04-08 22:32:32 CEST
ConditionTimestampMonotonic=48908376115
AssertTimestamp=Wed 2026-04-08 22:32:32 CEST
AssertTimestampMonotonic=48908376136
Transient=no
Perpetual=no
StartLimitIntervalUSec=10s
StartLimitBurst=5
StartLimitAction=none
FailureAction=none
SuccessAction=none
InvocationID=a215331ee095473f8867a0c1caf1b1e8
CollectMode=inactive
DebugInvocation=no
systemctl show uwsgi-app@radicale.service
Type=notify
ExitType=main
Restart=no
RestartMode=normal
NotifyAccess=main
RestartUSec=100ms
RestartSteps=0
RestartMaxDelayUSec=infinity
RestartUSecNext=100ms
TimeoutStartUSec=1min 30s
TimeoutStopUSec=1min 30s
TimeoutAbortUSec=1min 30s
TimeoutStartFailureMode=terminate
TimeoutStopFailureMode=terminate
RuntimeMaxUSec=infinity
RuntimeRandomizedExtraUSec=0
WatchdogUSec=0
WatchdogTimestampMonotonic=0
RootDirectoryStartOnly=no
RemainAfterExit=no
GuessMainPID=yes
MainPID=1396
ControlPID=0
FileDescriptorStoreMax=0
NFileDescriptorStore=0
FileDescriptorStorePreserve=restart
StatusText=uWSGI is ready
StatusErrno=0
Result=success
ReloadResult=success
CleanResult=success
LiveMountResult=success
UID=112
GID=119
NRestarts=0
OOMPolicy=stop
ReloadSignal=1
ExecMainStartTimestamp=Wed 2026-04-08 09:01:02 CEST
ExecMainStartTimestampMonotonic=218343967
ExecMainExitTimestampMonotonic=0
ExecMainHandoffTimestamp=Wed 2026-04-08 09:01:03 CEST
ExecMainHandoffTimestampMonotonic=218535175
ExecMainPID=1396
ExecMainCode=0
ExecMainStatus=0
ExecStart={ path=/usr/bin/uwsgi ; argv[]=/usr/bin/uwsgi --ini /etc/uwsgi/apps-available/radicale.ini ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
ExecStartEx={ path=/usr/bin/uwsgi ; argv[]=/usr/bin/uwsgi --ini /etc/uwsgi/apps-available/radicale.ini ; flags= ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }
Slice=system-uwsgi\x2dapp.slice
ControlGroup=/system.slice/system-uwsgi\x2dapp.slice/uwsgi-app@radicale.service
ControlGroupId=4294971201
MemoryCurrent=42160128
MemoryPeak=56590336
MemorySwapCurrent=22921216
MemorySwapPeak=30314496
MemoryZSwapCurrent=0
MemoryAvailable=572448768
EffectiveMemoryMax=1040752640
EffectiveMemoryHigh=1040752640
CPUUsageNSec=1720323591000
TasksCurrent=13
EffectiveTasksMax=2087
IPIngressBytes=[no data]
IPIngressPackets=[no data]
IPEgressBytes=[no data]
IPEgressPackets=[no data]
IOReadBytes=[not set]
IOReadOperations=[not set]
IOWriteBytes=[not set]
IOWriteOperations=[not set]
Delegate=no
CPUAccounting=yes
CPUWeight=[not set]
StartupCPUWeight=[not set]
CPUShares=[not set]
StartupCPUShares=[not set]
CPUQuotaPerSecUSec=infinity
CPUQuotaPeriodUSec=infinity
IOAccounting=no
IOWeight=[not set]
StartupIOWeight=[not set]
BlockIOAccounting=no
BlockIOWeight=[not set]
StartupBlockIOWeight=[not set]
MemoryAccounting=yes
DefaultMemoryLow=0
DefaultStartupMemoryLow=0
DefaultMemoryMin=0
MemoryMin=0
MemoryLow=0
StartupMemoryLow=0
MemoryHigh=infinity
StartupMemoryHigh=infinity
MemoryMax=infinity
StartupMemoryMax=infinity
MemorySwapMax=infinity
StartupMemorySwapMax=infinity
MemoryZSwapMax=infinity
StartupMemoryZSwapMax=infinity
MemoryZSwapWriteback=yes
MemoryLimit=infinity
DevicePolicy=auto
TasksAccounting=yes
TasksMax=2087
IPAccounting=no
ManagedOOMSwap=auto
ManagedOOMMemoryPressure=auto
ManagedOOMMemoryPressureLimit=0
ManagedOOMMemoryPressureDurationUSec=[not set]
ManagedOOMPreference=none
MemoryPressureWatch=auto
MemoryPressureThresholdUSec=200ms
CoredumpReceive=no
UMask=0022
LimitCPU=infinity
LimitCPUSoft=infinity
LimitFSIZE=infinity
LimitFSIZESoft=infinity
LimitDATA=infinity
LimitDATASoft=infinity
LimitSTACK=infinity
LimitSTACKSoft=8388608
LimitCORE=infinity
LimitCORESoft=0
LimitRSS=infinity
LimitRSSSoft=infinity
LimitNOFILE=524288
LimitNOFILESoft=1024
LimitAS=infinity
LimitASSoft=infinity
LimitNPROC=6958
LimitNPROCSoft=6958
LimitMEMLOCK=8388608
LimitMEMLOCKSoft=8388608
LimitLOCKS=infinity
LimitLOCKSSoft=infinity
LimitSIGPENDING=6958
LimitSIGPENDINGSoft=6958
LimitMSGQUEUE=819200
LimitMSGQUEUESoft=819200
LimitNICE=0
LimitNICESoft=0
LimitRTPRIO=0
LimitRTPRIOSoft=0
LimitRTTIME=infinity
LimitRTTIMESoft=infinity
RootEphemeral=no
OOMScoreAdjust=0
CoredumpFilter=0x33
Nice=0
IOSchedulingClass=2
IOSchedulingPriority=4
CPUSchedulingPolicy=0
CPUSchedulingPriority=0
CPUAffinityFromNUMA=no
NUMAPolicy=n/a
TimerSlackNSec=50000
CPUSchedulingResetOnFork=no
NonBlocking=no
StandardInput=null
StandardOutput=journal
StandardError=inherit
TTYReset=no
TTYVHangup=no
TTYVTDisallocate=no
SyslogPriority=30
SyslogLevelPrefix=yes
SyslogLevel=6
SyslogFacility=3
LogLevelMax=-1
LogRateLimitIntervalUSec=0
LogRateLimitBurst=0
SecureBits=0
CapabilityBoundingSet=cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_fsetid cap_kill cap_setgid cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config cap_mknod cap_lease cap_audit_write cap_audit_control cap_setfcap cap_mac_override cap_mac_admin cap_syslog cap_wake_alarm cap_block_suspend cap_audit_read cap_perfmon cap_bpf cap_checkpoint_restore
User=radicale
Group=radicale
DynamicUser=yes
SetLoginEnvironment=yes
RemoveIPC=yes
PrivateTmp=yes
PrivateTmpEx=disconnected
PrivateDevices=no
ProtectClock=no
ProtectKernelTunables=no
ProtectKernelModules=no
ProtectKernelLogs=no
ProtectControlGroups=no
ProtectControlGroupsEx=no
PrivateNetwork=no
PrivateUsers=no
PrivateUsersEx=no
PrivateMounts=no
PrivateIPC=no
PrivatePIDs=no
ProtectHome=read-only
ProtectSystem=strict
SameProcessGroup=no
UtmpMode=init
IgnoreSIGPIPE=yes
NoNewPrivileges=yes
SystemCallErrorNumber=2147483646
LockPersonality=no
RuntimeDirectoryPreserve=no
RuntimeDirectoryMode=0755
StateDirectorySymlink=radicale:
StateDirectorySymlink=uwsgi/radicale:
StateDirectoryMode=0755
StateDirectory=radicale uwsgi/radicale
CacheDirectoryMode=0755
LogsDirectoryMode=0755
ConfigurationDirectoryMode=0755
TimeoutCleanUSec=infinity
MemoryDenyWriteExecute=no
RestrictRealtime=no
RestrictSUIDSGID=yes
RestrictNamespaces=no
MountAPIVFS=no
BindLogSockets=no
KeyringMode=private
ProtectProc=default
ProcSubset=all
ProtectHostname=no
MemoryKSM=no
RootImagePolicy=root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent
MountImagePolicy=root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent
ExtensionImagePolicy=root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent
KillMode=control-group
KillSignal=3
RestartKillSignal=3
FinalKillSignal=9
SendSIGKILL=yes
SendSIGHUP=no
WatchdogSignal=6
Id=uwsgi-app@radicale.service
Names=uwsgi-app@radicale.service
Requires=-.mount sysinit.target "system-uwsgi\\x2dapp.slice"
Conflicts=shutdown.target
Before=shutdown.target
After=systemd-remount-fs.service uwsgi-app@radicale.socket systemd-journald.socket sysinit.target "system-uwsgi\\x2dapp.slice" -.mount basic.target
TriggeredBy=uwsgi-app@radicale.socket
RequiresMountsFor=/var/lib/radicale /var/lib/uwsgi/radicale
Documentation="man:uwsgi(1)" file:/usr/share/doc/uwsgi-core/README.Debian
Description=radicale uWSGI app
LoadState=loaded
ActiveState=active
FreezerState=running
SubState=running
FragmentPath=/usr/lib/systemd/system/uwsgi-app@.service
DropInPaths=/usr/lib/systemd/system/uwsgi-app@radicale.service.d/freedombox.conf
UnitFileState=static
UnitFilePreset=enabled
StateChangeTimestamp=Wed 2026-04-08 09:01:05 CEST
StateChangeTimestampMonotonic=221080692
InactiveExitTimestamp=Wed 2026-04-08 09:01:02 CEST
InactiveExitTimestampMonotonic=218349560
ActiveEnterTimestamp=Wed 2026-04-08 09:01:05 CEST
ActiveEnterTimestampMonotonic=221080692
ActiveExitTimestampMonotonic=0
InactiveEnterTimestampMonotonic=0
CanStart=yes
CanStop=yes
CanReload=no
CanIsolate=no
CanClean=state
CanFreeze=yes
CanLiveMount=yes
StopWhenUnneeded=no
RefuseManualStart=no
RefuseManualStop=no
AllowIsolate=no
DefaultDependencies=yes
SurviveFinalKillSignal=no
OnSuccessJobMode=fail
OnFailureJobMode=replace
IgnoreOnIsolate=no
NeedDaemonReload=no
JobTimeoutUSec=infinity
JobRunningTimeoutUSec=infinity
JobTimeoutAction=none
ConditionResult=yes
AssertResult=yes
ConditionTimestamp=Wed 2026-04-08 09:01:02 CEST
ConditionTimestampMonotonic=218330662
AssertTimestamp=Wed 2026-04-08 09:01:02 CEST
AssertTimestampMonotonic=218330679
Transient=no
Perpetual=no
StartLimitIntervalUSec=10s
StartLimitBurst=5
StartLimitAction=none
FailureAction=none
SuccessAction=none
InvocationID=ceb0bdb6f8e9469f88b25a3066561a16
CollectMode=inactive
DebugInvocation=no

I’m using a Freedombox Pioneer installed in August 2025 and updated since (with upgrade to trixie somewhere in september).

Thank you, @Mjules and others for reports and data. I have found the cause and submitted a fix.

Problem: During backups, FreedomBox temporarily shuts down services (to preserve data integrity). When service is a systemd .socket unit, the corresponding .service unit is not being shutdown. When trying to restart the .socket unit, it fails due the socket being already listened on.

Impact: The impact is minimal in that only diagnostic tests fail. Service continues to run so radicale/bepasty continue to work as expected. If machine is restarted, the services are started properly again as well.

Fix: We implemented properly handling the socket units during backup/restore and other operations. The fix will become available with next release in about 2 weeks. Meanwhile, please ignore failing diagnostic tests.

3 Likes