Defender app update (harbour-defender) - my very own ‘Sailfish Devember’

For some reason I post it here.

Defender was (and is) a very nice and handy tool. And it eases ad blocking and adds some privacy measures. All kudos to nodevel!

Unfortunately it is not maintained anymore and even worse it caused encrypted devices to stop booting (it could be resolved by using recovery image and deinstalling ‘rpm -e harbour-defender’ (or editing path unit manually).

I could not (and still cannot) understand that systemd can be so bold to ‘support’ such situation causing full boot freezes.
It took me some efforts to grab what caused this but in the end found and solved it.

Furthermore I modified some code to handle as well nemo as defaultuser as valid GUI users.

New package is on openrepos

and code is on github


Aaaawesooome! Danke dir, das ist ja super!

This was the last obstacle keeping me from updating to 3.4. You kinda made my day.

Would you like to share some details what you did exactly to the systemd unit to fix it? And could you share the modified sources once you got the opportunity?


A really good deed! Thank you very much.

1 Like

Awesome! Thank you so much!

1 Like

Awesome !
It was so awaited by many of us.

1 Like

Excellent contribution!

1 Like

Thanks ! That’s awesome.

1 Like

I thought I tested thoroughly but …

I would have sworn I tested this but maybe I was so happy that my test device booted up I forgot.
And (almost) nobody noticed.

In v0.4.1 I fixed the boot loop but the path unit (responsible to register/start the triggered update) was not started after boot.
I recognized only now after a frozen device reboot.
So back to systemd and finding that my chosen start (WantedBy / After) criteria were plain wrong. One was just mistyped and the other can only be used within user unit.
But now I am pretty sure it is okay :hushed:

So v0.4.2 out in the wild and ready on openrepos.

P.S.: thanks for the thanks,
this was something I really really was keen to solve.


i can not install it on my xa2, do you have suggestions? no possibility via storeman nor direct dl from the webpage :frowning:

What happens if you try? Is there an error message you can share?

1 Like

Yes, as nephros says: a bit more info could help us to help you.
I just tried once more and did not run into any problem…

sorry, ok, storeman tells me he is installing but nothing happens, just the ring does infinitly loop.

with the download he asks for the Installation but then simply says “Installation fehlgeschlagen” which simply means could not install, no error msg. i have no idea if i can try it by console, i’m not that good in coding etc. i just like sailfish and its unlike ux (even if it gets worse so often with updates)’

Well first for the spinner (ring) not stopping to spin: This might be a small bug in Storeman. Happens for me, too. But it’s not necessarily an indicator for issues, I see it on successful installs as well.

Now, to the error message : Normally, when you tap the notification Storeman emmits, you should see some details about why the install failed.

Probably the most straight forward solution - without knowing the specific reason why installing failed (check you error message for that):
Try to refresh you package cache. You can do this using the terminal with developer mode enabled by issuing the command devel-su pkcon refresh.
Alternatively the more ‘average user way’ is to install Sailfish Utilities from the Jolla store and refresh the cache from there (see section “Paket-Zwischenspeicher”).

1 Like

Yes, was looking for a possibility of

pkcon refresh

without devel-su.

Thus is an infamous ‘bug’ that after an OS update you need to update your package cache on your own.

This here -using rozgwi’s explanation- is more than just a pkcon refresh but the only possibility I see without terminal and devel-su…

ok, i may be a more average user compred to most of you but i’m not afraid to use console ( on my work i’m the one using shell scripts) :slight_smile:

i did pkcon refresh on decel-su first. now i did it without being root. then i tried to pkcon install habour-defender and got a fatal exception: a conflict with sailfishos-hosts-adblock. i hsd no idea that this is still on my device. after removing it i went to storeman and installed the defender. thanks for your help. i do not get why nowadays i have to be not under devel-su but this is my fault :slight_smile: so as said before compred to nost of you i’m just an average user with some experience.
thanks all, defender is already installed now.


This great update has been working for months but recently I have run into the issue where updating the blocking lists loops forever. I’m using 0.4.2 and am still on SFOS 3.4.0.
I have disabled any sources except the Unified Hosts, and hpHosts. Individually enabling any of these and restarting the update doesn’t help. Even after reinstalling Defender the update progress bar displays just the same
What can I do? Could it be that all the subscription sources have become unavailable ?
Right now blocking isn’t working at all.

Has anyone got an idea?

1 Like

short/fast answer…did you reboot or make sure with killall that ni python defender moduke was still running
afair this really hangs
so just reconfiguring and trying ti get it running okay will not work…

I have the same issue. Uninstalled, restarted, then installed again with the same problem.

Also, some of the sources went offline long time ago:

Maybe, they should be removed from the app?

1 Like


I need to confirm that it looks like the StevenBlack compilation (unified) causes defender to update-loop.
The hosts file are reachable as normal at

I have no idea what may cause this. Some blocking or useragent voodoo changed on github?

So workflow in case your defender loops:

  • disable all non-working sources
  • pulley and choose update again
  • close defender
  • reopen defender
  • (choose working sources) and update again

hphosts is also known to not work!
I have enabled:


That worked. Thanks!

Just a quick thought: should these stop working too or be insufficient for the need of some - maybe looking at lists provided for PiHole is an option?

1 Like