<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Pika Software</title><link>http://p1ka.eu/</link><description>Recent content on Pika Software</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>admin@p1ka.eu (Retro)</managingEditor><webMaster>admin@p1ka.eu (Retro)</webMaster><copyright>Pika Software (CC BY 4.0)</copyright><lastBuildDate>Wed, 07 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://p1ka.eu/index.xml" rel="self" type="application/rss+xml"/><item><title>Why doesn't Passkeys work between KeePassXC and KeePassDX?</title><link>http://p1ka.eu/posts/2026/01/07/keepassxc-keepassdx-passkey-interopability/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><author>admin@p1ka.eu (Retro)</author><guid>http://p1ka.eu/posts/2026/01/07/keepassxc-keepassdx-passkey-interopability/</guid><description>&lt;h2 id="tldr"&gt;TLDR&lt;/h2&gt;
&lt;p&gt;In &lt;a href="https://github.com/Kunzisoft/KeePassDX"&gt;KeepassDX&lt;/a&gt; go to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Form filling&lt;/strong&gt; &amp;gt; &lt;strong&gt;Passkeys settings&lt;/strong&gt; and disable &lt;strong&gt;Backup Eligibility&lt;/strong&gt; option.&lt;/p&gt;
&lt;img src="./passkey_settings.jpg" alt="KeePassDX Passkey Settings"&gt;&lt;h2 id="long-version"&gt;Long version&lt;/h2&gt;
&lt;p&gt;So, recently at Pika Software we started using &lt;a href="https://github.com/pocket-id/pocket-id"&gt;PocketID&lt;/a&gt; + &lt;a href="https://github.com/steveiliop56/tinyauth"&gt;Tinyauth&lt;/a&gt; as our authetication.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/pocket-id/pocket-id"&gt;PocketID&lt;/a&gt; is used as OIDC provider, which means an application requests user information for authentication,
like when you sing in with Google.&lt;/p&gt;
&lt;p&gt;And &lt;a href="https://github.com/steveiliop56/tinyauth"&gt;Tinyauth&lt;/a&gt; protects our page that does not support OIDC, for example like &lt;a href="https://github.com/louislam/uptime-kuma"&gt;Uptime Kuma&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;well, until &lt;a href="https://github.com/louislam/uptime-kuma/pull/6276"&gt;BetterAuth PR&lt;/a&gt; is not merged&lt;/em&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="tldr">TLDR</h2>
<p>In <a href="https://github.com/Kunzisoft/KeePassDX">KeepassDX</a> go to <strong>Settings</strong> &gt; <strong>Form filling</strong> &gt; <strong>Passkeys settings</strong> and disable <strong>Backup Eligibility</strong> option.</p>
<img src="./passkey_settings.jpg" alt="KeePassDX Passkey Settings"><h2 id="long-version">Long version</h2>
<p>So, recently at Pika Software we started using <a href="https://github.com/pocket-id/pocket-id">PocketID</a> + <a href="https://github.com/steveiliop56/tinyauth">Tinyauth</a> as our authetication.</p>
<p><a href="https://github.com/pocket-id/pocket-id">PocketID</a> is used as OIDC provider, which means an application requests user information for authentication,
like when you sing in with Google.</p>
<p>And <a href="https://github.com/steveiliop56/tinyauth">Tinyauth</a> protects our page that does not support OIDC, for example like <a href="https://github.com/louislam/uptime-kuma">Uptime Kuma</a></p>
<p><em>well, until <a href="https://github.com/louislam/uptime-kuma/pull/6276">BetterAuth PR</a> is not merged</em></p>
<p>One thing of <a href="https://github.com/pocket-id/pocket-id">PocketID</a> that sets it apart, it uses <strong>Passkeys</strong> as its main and <em>only</em> method of authentication.
And also it is simple to use, fast, and does not consume much memory.</p>
<p><em>56M for <a href="https://github.com/pocket-id/pocket-id">PocketID</a> + 38M <a href="https://github.com/steveiliop56/tinyauth">Tinyauth</a></em></p>
<img src="./pika_auth_sign_in.png" alt="PocketID Auth Page Example"><p>Compared to <a href="https://github.com/authelia/authelia">Authelia</a> it was a breeze to setup! No need to read <a href="https://www.authelia.com/configuration/prologue/common/">throughly the documentation</a></p>
<img src="./ratatouille_meme.webp" alt="Ratatouille chef reading something very bad"><p>Here is an example of values that <a href="https://github.com/pocket-id/pocket-id">PocketID</a> provide for your OIDC clients:
<img src="./oidc_values_example.png" alt="OIDC values example from PocketID"></p>
<hr>
<p>Anyway, where were we?
Oh, yeah, since <a href="https://github.com/pocket-id/pocket-id">PocketID</a> uses <strong>passkeys</strong>, you need to somehow <em>use</em> and <em>store</em> somewhere the passkeys.
And it mostly depends on your:</p>
<ol>
<li>Browser</li>
<li>Operating System</li>
<li>Devices (including security keys)</li>
</ol>
<p>So, if use latest browser version on all OSes, you can store a passkey on a <strong>security key</strong>.
If you are on Windows or MacOS with bluetooth, <a href="https://docs.github.com/en/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey#signing-in-with-a-passkey-using-a-nearby-device">you can use a phone for passkey authentication</a>.</p>
<p>Lastly, on Windows you can store passkeys locally. <a href="https://fy.blackhats.net.au/blog/2024-04-26-passkeys-a-shattered-dream/#the-enshittocene-period">On MacOS too, but I wouldn&rsquo;t recommend it</a></p>
<blockquote>
<p>Apple Keychain has personally wiped out all my Passkeys on three separate occasions.
There are external reports we have recieved of other users who&rsquo;s Keychain Passkeys have been wiped just like mine.</p>
<p>UPDATE 2025-05: It&rsquo;s four times now my passkey have been wiped out.</p>
</blockquote>
<p><em>any you can&rsquo;t even use Apple Keychain without an Apple account</em></p>
<p>On Android there is also shady support for passkeys. I could setup Samsung Pass to save passkey on my phone,
but my friend with Xiaomi could only do it in Microsoft Authentication App.</p>
<p>As you can see, Linux is absent in last two methods, you can&rsquo;t store passkeys locally or use a phone for passkeys.
That only leaves you with a security key.</p>
<p>So, what are your options?</p>
<h2 id="finally-keepass-part">Finally, KeePass part!</h2>
<p>Instead you can rely on password manager application, be it <a href="https://github.com/keepassxreboot/keepassxc">KeePassXC</a> or <a href="https://bitwarden.com/">Bitwarden</a>. Personally I use <a href="https://github.com/keepassxreboot/keepassxc">KeePassXC</a> on PC, <a href="https://github.com/Kunzisoft/KeePassDX">KeePassDX</a> on phone, and everything is synced with <a href="https://github.com/syncthing/syncthing">Syncthing</a>.</p>
<p>But after I have tried using a passkey saved with <a href="https://github.com/Kunzisoft/KeePassDX">KeePassDX</a> in <a href="https://github.com/keepassxreboot/keepassxc">KeePassXC</a>, I would get an error. Same with <a href="https://github.com/keepassxreboot/keepassxc">KeePassXC</a> passkeys on <a href="https://github.com/Kunzisoft/KeePassDX">KeePassDX</a>.</p>
<p>The solution was found at <a href="https://github.com/Kunzisoft/KeePassDX/issues/2172">https://github.com/Kunzisoft/KeePassDX/issues/2172</a></p>
<p>You just need in <a href="https://github.com/Kunzisoft/KeePassDX">KeePassDX</a> go to <strong>Settings</strong> &gt; <strong>Form filling</strong> &gt; <strong>Passkeys settings</strong> and disable <strong>Backup Eligibility</strong> option.</p>
<p>If you have created previously a passkey in <a href="https://github.com/Kunzisoft/KeePassDX">KeePassDX</a>, and it still does not work, try to recreate it with the option disabled.</p>
<hr>
<p><em>- written by Retro with ❤️</em></p>
]]></content:encoded></item><item><title>The Painful Seafile Experience</title><link>http://p1ka.eu/posts/2026/01/04/seafile-experience/</link><pubDate>Sun, 04 Jan 2026 00:00:00 +0000</pubDate><author>admin@p1ka.eu (Retro)</author><guid>http://p1ka.eu/posts/2026/01/04/seafile-experience/</guid><description>&lt;p&gt;Hello everyone, I&amp;rsquo;ve spent the last few days trying unsuccessfully to configure Seafile, and now I&amp;rsquo;d like to share my painful experience.&lt;/p&gt;
&lt;img src="p8.png" alt="hiii"&gt;&lt;h1 id="nextcloud-vs-seafile"&gt;Nextcloud vs Seafile&lt;/h1&gt;
&lt;p&gt;I had previously tried using Nextcloud (4-5 years ago), but let&amp;rsquo;s just say that I quickly became disappointed with PHP projects, and if I may say so, they are devilishly slow and sad.&lt;/p&gt;
&lt;img src="https://external-preview.redd.it/dhAKbqhZS4yLvlm99jPvuqM9RLcwRYi-8URHDAXxGEw.jpg?width=640&amp;amp;crop=smart&amp;amp;auto=webp&amp;amp;s=2ae86b62ffadefa3a8ff1a0e18340f280841d1f4" alt="lovely"&gt;&lt;p&gt;Of all the options, Seafile was the only one that didn&amp;rsquo;t require money and looked good in terms of functionality. It was also stated that its daemon was written in C, which gave hope for high-quality implementation.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Hello everyone, I&rsquo;ve spent the last few days trying unsuccessfully to configure Seafile, and now I&rsquo;d like to share my painful experience.</p>
<img src="p8.png" alt="hiii"><h1 id="nextcloud-vs-seafile">Nextcloud vs Seafile</h1>
<p>I had previously tried using Nextcloud (4-5 years ago), but let&rsquo;s just say that I quickly became disappointed with PHP projects, and if I may say so, they are devilishly slow and sad.</p>
<img src="https://external-preview.redd.it/dhAKbqhZS4yLvlm99jPvuqM9RLcwRYi-8URHDAXxGEw.jpg?width=640&amp;crop=smart&amp;auto=webp&amp;s=2ae86b62ffadefa3a8ff1a0e18340f280841d1f4" alt="lovely"><p>Of all the options, Seafile was the only one that didn&rsquo;t require money and looked good in terms of functionality. It was also stated that its daemon was written in C, which gave hope for high-quality implementation.</p>
<h2 id="shitty-sign-on">Shitty Sign-On</h2>
<p>I tried to avoid stupid problems using seafile-ce, but unfortunately I encountered terrible documentation while trying to set up SSO.</p>
<p>The SSO documentation is terribly brief, without proper descriptions of the fields and with awful examples of integration with all kinds of junk like Azure.</p>
<img src="img2.png" alt="nice docs bro"><p>The problem was that fields not described in the documentation turned out to be extremely important, and without them, the server simply caught an error.</p>
<h2 id="permission-issues">Permission issues</h2>
<p>After I resigned myself to the fact that it wouldn&rsquo;t work out nicely and I would have to do it badly, I was faced with my eternal problem with seafile.</p>
<p>| So what&rsquo;s the problem?</p>
<p>Oh it&rsquo;s pretty simple, by default seafile writes files as the <code>root</code> user and reads them as the <code>root</code> user, and it seems like:</p>
<p>| wow, that&rsquo;s cool, there can&rsquo;t be any problems here, right? right?</p>
<img src="img1.png" alt="the problems"><p>Well, no, the built-in nginx that streams the contents of these directories is not able to read the files that Seafile itself wrote, because nginx is using <code>www-data</code> user by default, and we get a terribly stupid situation where the user sets an avatar for themselves, and this avatar becomes a <code>403</code> error.</p>
<img src="image.png" alt="where my logo"><p>This problem has existed since 2020-2021 for sure, and developers definitely know about it.</p>
<h2 id="okay">Okay</h2>
<p>A new user will google and find the mysterious <code>NON_ROOT</code> mode and think that this is the solution to their problems, because if we write files not as <code>root</code>, then everything is fine.</p>
<p>But hell no, the developers didn&rsquo;t give a damn about this feature, and therefore enabling this mode will simply break your instance and it will be impossible to start it, displaying a message:</p>
<p><code>To use non root, change the folder permission of seafile folder in your host machine by 'chmod -R a+rwx /opt/seafile-data/seafile/'</code></p>
<h2 id="okay-x2">Okay x2</h2>
<p>Unfortunately, the imbecile developer doesn&rsquo;t write that he&rsquo;s not just waiting for <code>a+rwx</code> permissions on the folder, but also waiting for the <del>magical</del> <code>seafile</code> user, which of course isn&rsquo;t mentioned in the documentation, and you won&rsquo;t find out about it without looking into the script.</p>
<img src="img3.png" alt="sssscript"><p>Exhausted and weary from wasting six hours of your worthless life, you create a user and a group on the server following the script, after which you enjoy a f***ing Python error that can only be solved by forking the project.</p>
<img src="yay.gif" alt="yay"><h2 id="beautiful-logs">Beautiful logs</h2>
<p>The cherry on top of this “cake” is the completely broken logs, which makes the process of debugging dumb documentation examples an adventure lasting dozens of hours.</p>
<p>In my case, I simply did not receive any application error logs in either the Docker logs or Seafile logs files.</p>
<img src="https://i.redd.it/0e01h7lal0od1.png" alt="no logs"><h3 id="harmed-in-the-making-of-this-post">&ldquo;harmed&rdquo; in the making of this post</h3>
<ul>
<li>one ampere server</li>
<li>one developer</li>
<li>one debian 13</li>
<li>one docker</li>
<li>two seafile 11-13 installations</li>
</ul>
]]></content:encoded></item><item><title>The Blog</title><link>http://p1ka.eu/posts/2025/11/04/first-post/</link><pubDate>Tue, 04 Nov 2025 00:00:00 +0000</pubDate><author>admin@p1ka.eu (Retro)</author><guid>http://p1ka.eu/posts/2025/11/04/first-post/</guid><description>&lt;p&gt;Hey, this is my first blog post. I am experimenting with using &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt;,
since I wan&amp;rsquo;t to write my first post about fixing resolve of AAAA records in IPv4 only networks with IPv6 only VPN &lt;em&gt;(coming soon TM)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I plan to host to host this blog on Github Pages, update with Github Actions and connect my domain &lt;a href="%22https://p1ka.eu%22"&gt;p1ka.eu&lt;/a&gt;. Maybe even my friend Unknown Developer will write some blog posts!&lt;/p&gt;
&lt;p&gt;Anyway, here it is, &lt;strong&gt;Pika Software&lt;/strong&gt; blog!&lt;/p&gt;</description><content:encoded><![CDATA[<p>Hey, this is my first blog post. I am experimenting with using <a href="https://gohugo.io/">Hugo</a>,
since I wan&rsquo;t to write my first post about fixing resolve of AAAA records in IPv4 only networks with IPv6 only VPN <em>(coming soon TM)</em></p>
<p>I plan to host to host this blog on Github Pages, update with Github Actions and connect my domain <a href="%22https://p1ka.eu%22">p1ka.eu</a>. Maybe even my friend Unknown Developer will write some blog posts!</p>
<p>Anyway, here it is, <strong>Pika Software</strong> blog!</p>
<hr>
<p>Also I wanted to add something personal to this post, so there is one of my photos I made during <a href="https://www.tallinn.ee/et/valguskonnib">Valgus kõnnib day</a>.</p>
<img src="photo.jpg" alt="trees at night under red light">]]></content:encoded></item></channel></rss>