<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>docker &amp;mdash; Marcin Modest Trzaska</title>
    <link>https://blog.argilus.online/czach/tag:docker</link>
    <description>Piszę, co mi przyjdzie do głowy. Na tematy różne.</description>
    <pubDate>Tue, 06 Oct 2026 21:03:11 +0200</pubDate>
    <item>
      <title>Grimory </title>
      <link>https://blog.argilus.online/czach/grimory</link>
      <description>&lt;![CDATA[Na dzień dobry - brak kawy. Skończyła się. Znaczy ta bezkofeinowa. Placebo z rana. Potem aktualizacja Grimory w Dockerze. &#xA;&#xA;Nic tam nie ruszałem a pełno błędów.&#xA;&#xA;$ sudo docker compose pull &amp;&amp; sudo docker compose up -d &amp;&amp; sudo docker image prune -f &#xA;yaml: while parsing a block mapping at line 1, column 3: line 22, column 4: did not find expected key&#xA;&#xA;I tak w dwóch miejscach. Wcięcia się nie podobały w docker-compose.yml.&#xA;&#xA;A później — jeszcze lepiej:&#xA;&#xA;$ sudo docker compose pull &amp;&amp; sudo docker compose up -d &amp;&amp; sudo docker image prune -f &#xA;[+] pull 2/2&#xA; ✔ Image grimmory/grimmory:latest           Pulled                                                                                                                             0.9s&#xA; ✔ Image lscr.io/linuxserver/mariadb:11.4.5 Pulled                                                                                                                             1.1s&#xA;[+] up 1/1&#xA; ✘ Contain... Error response from daemon: Conflict. The container name &#34;/mariadb&#34; is already in use by container &#34;52aa973123812b440acab7f257f1c82c11d0955b4f7297cf3df939dbe1dcb12c&#34;. You have to remove (or rename) that container to be able to reuse that name. 0.0s&#xA;Error response from daemon: Conflict. The container name &#34;/mariadb&#34; is already in use by container &#34;52aa973123812b440acab7f257f1c82c11d0955b4f7297cf3df939dbe1dcb12c&#34;. You have to remove (or rename) that container to be able to reuse that name.&#xA;$ sudo docker rm -f mariadb &amp;&amp; sudo docker compose up -d&#xA;mariadb&#xA;[+] up 1/2&#xA; ✔ Container mariadb Healthy                                                                                                                                                   5.7s&#xA; ⠸ Container grimory Starting                                                                                                                                                  5.9s&#xA;Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint grimory (cbaf0f9b92de56ca146fa409f048a2006818886df531fd5fe37a343f9e2e0244): Bind for 0.0.0.0:6060 failed: port is already allocated&#xA;$ sudo docker ps | grep 6060&#xA;26dd551ae886   d35cf2753c67                                                     &#34;/usr/local/bin/entr…&#34;   3 weeks ago      Up 3 weeks (healthy)        0.0.0.0:6060-  6060/tcp, [::]:6060-  6060/tcp                                                          booklore&#xA;$ sudo docker rm -f booklore&#xA;WTF? Skąd tam się wzięło booklore — przecież kilka miesięcy temu zastąpiłem to właśnie Grimory?!&#xA;&#xA;Ale poszło w końcu:&#xA;$ sudo docker compose pull &amp;&amp; sudo docker compose up -d &amp;&amp; sudo docker image prune -f &#xA;[+] pull 2/2&#xA; ✔ Image lscr.io/linuxserver/mariadb:11.4.5 Pulled                                                                                                                             1.2s&#xA; ✔ Image grimmory/grimmory:latest           Pulled                                                                                                                             1.1s&#xA;[+] up 2/2&#xA; ✔ Container mariadb Healthy                                                                                                                                                   0.5s&#xA; ✔ Container grimory Started                                                                                                                                                   0.1s&#xA;Deleted Images:&#xA;untagged: grimmory/grimmory@sha256:fffd0ae0bfccd64ca00441e8fa58a14e286b9115e5df1cb47eecf294ad09e6ff&#xA;deleted: sha256:d35cf2753c677d31165845383f86417225d8a1f3b9126d9ba7312d834d996feb&#xA;deleted: sha256:90e89d354d35b795e700b78a50aef55188cdc59d3a3acf7c3bf3feece59c2683&#xA;&#xA;Total reclaimed space: 107.4MB&#xA;&#xA;#docker #grimmory #booklore&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Na dzień dobry – brak kawy. Skończyła się. Znaczy ta bezkofeinowa. Placebo z rana. Potem aktualizacja <a href="https://github.com/grimmory-tools/grimmory" rel="nofollow"><em>Grimory</em></a> w <em>Dockerze</em>.</p>

<p>Nic tam nie ruszałem a pełno błędów.</p>

<pre><code>$ sudo docker compose pull &amp;&amp; sudo docker compose up -d &amp;&amp; sudo docker image prune -f 
yaml: while parsing a block mapping at line 1, column 3: line 22, column 4: did not find expected key
</code></pre>

<p>I tak w dwóch miejscach. Wcięcia się nie podobały w <em>docker-compose.yml</em>.</p>

<p>A później — jeszcze lepiej:</p>

<pre><code>$ sudo docker compose pull &amp;&amp; sudo docker compose up -d &amp;&amp; sudo docker image prune -f 
[+] pull 2/2
 ✔ Image grimmory/grimmory:latest           Pulled                                                                                                                             0.9s
 ✔ Image lscr.io/linuxserver/mariadb:11.4.5 Pulled                                                                                                                             1.1s
[+] up 1/1
 ✘ Contain... Error response from daemon: Conflict. The container name &#34;/mariadb&#34; is already in use by container &#34;52aa973123812b440acab7f257f1c82c11d0955b4f7297cf3df939dbe1dcb12c&#34;. You have to remove (or rename) that container to be able to reuse that name. 0.0s
Error response from daemon: Conflict. The container name &#34;/mariadb&#34; is already in use by container &#34;52aa973123812b440acab7f257f1c82c11d0955b4f7297cf3df939dbe1dcb12c&#34;. You have to remove (or rename) that container to be able to reuse that name.
$ sudo docker rm -f mariadb &amp;&amp; sudo docker compose up -d
mariadb
[+] up 1/2
 ✔ Container mariadb Healthy                                                                                                                                                   5.7s
 ⠸ Container grimory Starting                                                                                                                                                  5.9s
Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint grimory (cbaf0f9b92de56ca146fa409f048a2006818886df531fd5fe37a343f9e2e0244): Bind for 0.0.0.0:6060 failed: port is already allocated
$ sudo docker ps | grep 6060
26dd551ae886   d35cf2753c67                                                     &#34;/usr/local/bin/entr…&#34;   3 weeks ago      Up 3 weeks (healthy)        0.0.0.0:6060-&gt;6060/tcp, [::]:6060-&gt;6060/tcp                                                          booklore
$ sudo docker rm -f booklore
</code></pre>

<p>WTF? Skąd tam się wzięło <em>booklore</em> — przecież kilka miesięcy temu zastąpiłem to właśnie <em>Grimory</em>?!</p>

<p>Ale poszło w końcu:</p>

<pre><code>$ sudo docker compose pull &amp;&amp; sudo docker compose up -d &amp;&amp; sudo docker image prune -f 
[+] pull 2/2
 ✔ Image lscr.io/linuxserver/mariadb:11.4.5 Pulled                                                                                                                             1.2s
 ✔ Image grimmory/grimmory:latest           Pulled                                                                                                                             1.1s
[+] up 2/2
 ✔ Container mariadb Healthy                                                                                                                                                   0.5s
 ✔ Container grimory Started                                                                                                                                                   0.1s
Deleted Images:
untagged: grimmory/grimmory@sha256:fffd0ae0bfccd64ca00441e8fa58a14e286b9115e5df1cb47eecf294ad09e6ff
deleted: sha256:d35cf2753c677d31165845383f86417225d8a1f3b9126d9ba7312d834d996feb
deleted: sha256:90e89d354d35b795e700b78a50aef55188cdc59d3a3acf7c3bf3feece59c2683

Total reclaimed space: 107.4MB
</code></pre>

<p><a href="/czach/tag:docker" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">docker</span></a> <a href="/czach/tag:grimmory" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">grimmory</span></a> <a href="/czach/tag:booklore" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">booklore</span></a></p>

<p>—
Marcin “czach” Trzaska
reply-to: <a href="https://blog.argilus.online/@/czach@mastodon.argilus.online" class="u-url mention" rel="nofollow">@<span>czach@mastodon.argilus.online</span></a></p>
]]></content:encoded>
      <guid>https://blog.argilus.online/czach/grimory</guid>
      <pubDate>Tue, 15 Sep 2026 06:42:11 +0000</pubDate>
    </item>
    <item>
      <title>FitPub</title>
      <link>https://blog.argilus.online/czach/fitpub</link>
      <description>&lt;![CDATA[Pierwotnie wpis dotyczący FitPub był jako zapowiedź nowości na Argilusie, ale jest to na tyle ciekawy projekt, że poświęcam mu osobny wpis.&#xA;&#xA;FitPub is a self-hosted fitness tracking platform for the Fediverse. It lets people upload workout files, review their activities with maps and metrics, and share them through ActivityPub instead of locking them into a closed social network.&#xA;&#xA;Muszę przyznać, że z instalacją FitPub była ostra jazda. Coś nie chciało to ruszyć i dopiero z pomocą Gemini AI udało mi się postawić własną instancję.&#xA;Wrzuciłem do FitPuba całą tegoroczną aktywność z Garmina i… Jakoś to wygląda. &#xA;&#xA;Screenshot 2026 06 17 at 08.55.56&#xA;&#xA;Dodając w ustawieniach klucz API do OpenWeatherMap w aktywności pojawi się informacja o pogodzie z danego dnia.&#xA;&#xA;Screenshot 2026 06 17 at 08.59.03&#xA;&#xA;Problemem chyba jest federacja albo nie wiem co, bo z poziomu mojej instancji GoToSocial nie jestem w stanie dać sobie follow. Nie mogę się też wbić za pomocą klientów takich jak Ivory, czy Ice Cubes — chyba jeszcze brak obsługi.&#xA;&#xA;Mogę dać follow komuś z instancji fitpub.social i działa to też w drugą stronę (sprawdzone ;-)).&#xA;&#xA;Próbowałem też zautomatyzować wrzucanie treningów, bo na razie trzeba to robić ręcznie, ale poległem i jedyne co udało mi się uzyskać, to krótki skrypt do ściągania aktywności z Garmina i ręczne wrzucenie jej do FitPuba. Zawsze coś. &#xA;&#xA;Aplikacja udostępnia kilka ciekawych funkcji dostępnych w komercyjnych aplikacjach.&#xA;&#xA;Activity Dashboard&#xA; &#xA;Screenshot 2026 06 17 at 08.56.58&#xA;&#xA;Personal Records&#xA;&#xA;Screenshot 2026 06 17 at 08.57.12&#xA;&#xA;Training Loads&#xA;&#xA;Screenshot 2026 06 17 at 08.57.44&#xA;&#xA;No i, oczywiście, nie trzeba korzystać z wersji selfhosted. Jest ogólnodostępna instancja FitPub.&#xA;&#xA;Visited Peaks&#xA;&#xA;Zaciekawiony danymi na FitPub.social ściągnąłem na serwer mapę Polski &#xA;$ wget https://download.geofabrik.de/europe/poland-latest.osm.pbf&#xA;a następnie wrzuciłem ją na swoją instancję:&#xA;$ sudo docker compose -f /opt/fitpub/docker-compose.yml run --rm   -v /srv/fitpub/osm/poland-latest.osm.pbf:/data/poland-latest.osm.pbf:ro   --entrypoint java   fitpub   -jar /app/import-peaks.jar --truncate --backfill /data/poland-latest.osm.pbf&#xA;I otrzymałem:&#xA;2026-06-17T14:34:16.906Z  INFO 1 --- [           main] n.j.f.t.peaks.PlanetPeakImportService    : Peak import summary: entities=272178230, nodes=238757866, candidates=16456, staged=12810, inserted=12810, updated=0, skippedUnnamed=3646, skippedUnsupported=238741410, elevationParsed=10171, elevationMissingOrInvalid=2639&#xA;2026-06-17T14:34:16.906Z  INFO 1 --- [           main] n.j.fitpub.tools.peaks.PeakImportRunner  : Peak import finished successfully&#xA;2026-06-17T14:34:16.906Z  INFO 1 --- [           main] n.j.fitpub.tools.peaks.PeakImportRunner  : Starting peak backfill&#xA;2026-06-17T14:34:16.943Z  INFO 1 --- [           main] n.j.fitpub.service.PeakDetectionService  : Starting retroactive peak detection for 91 activities&#xA;FitPub znalazł i zrobił update dla wszystkich aktywności.&#xA;&#xA;Visited Peaks &#xA;&#xA;#fitpub #selfhosting #docker #Linux&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Pierwotnie wpis dotyczący <em>FitPub</em> był jako zapowiedź nowości na Argilusie, ale jest to na tyle ciekawy projekt, że poświęcam mu osobny wpis.</p>

<pre><code>FitPub is a self-hosted fitness tracking platform for the Fediverse. It lets people upload workout files, review their activities with maps and metrics, and share them through ActivityPub instead of locking them into a closed social network.
</code></pre>

<p>Muszę przyznać, że z instalacją <em>FitPub</em> była ostra jazda. Coś nie chciało to ruszyć i dopiero z pomocą <em>Gemini AI</em> udało mi się postawić własną instancję.
Wrzuciłem do FitPuba całą tegoroczną aktywność z Garmina i… Jakoś to wygląda.</p>

<p><a href="https://blgpht.argilus.online/api/files/84/original/Screenshot_2026-06-17_at_08.55.56.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/84/variants/ffmpeg-1280x1280-in/Screenshot_2026-06-17_at_08.55.56.png" alt="Screenshot 2026 06 17 at 08.55.56"></a></p>

<p>Dodając w ustawieniach klucz API do OpenWeatherMap w aktywności pojawi się informacja o pogodzie z danego dnia.</p>

<p><a href="https://blgpht.argilus.online/api/files/77/original/Screenshot_2026-06-17_at_08.59.03.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/77/variants/ffmpeg-1280x1280-in/Screenshot_2026-06-17_at_08.59.03.png" alt="Screenshot 2026 06 17 at 08.59.03"></a></p>

<p>Problemem chyba jest federacja albo nie wiem co, bo z poziomu mojej instancji <a href="https://codeberg.org/superseriousbusiness/gotosocial#what-is-gotosocial" rel="nofollow"><em>GoToSocial</em></a> nie jestem w stanie dać sobie follow. Nie mogę się też wbić za pomocą klientów takich jak <em>Ivory</em>, czy <em>Ice Cubes</em> — chyba jeszcze brak obsługi.</p>

<p>Mogę dać follow komuś z instancji <em>fitpub.social</em> i działa to też w drugą stronę (sprawdzone ;–)).</p>

<p>Próbowałem też zautomatyzować wrzucanie treningów, bo na razie trzeba to robić ręcznie, ale poległem i jedyne co udało mi się uzyskać, to krótki skrypt do ściągania aktywności z Garmina i ręczne wrzucenie jej do FitPuba. Zawsze coś.</p>

<p>Aplikacja udostępnia kilka ciekawych funkcji dostępnych w komercyjnych aplikacjach.</p>

<h2 id="activity-dashboard">Activity Dashboard</h2>

<p><a href="https://blgpht.argilus.online/api/files/26/original/Screenshot_2026-06-17_at_08.56.58.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/26/variants/ffmpeg-1280x1280-in/Screenshot_2026-06-17_at_08.56.58.png" alt="Screenshot 2026 06 17 at 08.56.58"></a></p>

<h2 id="personal-records">Personal Records</h2>

<p><a href="https://blgpht.argilus.online/api/files/41/original/Screenshot_2026-06-17_at_08.57.12.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/41/variants/ffmpeg-1280x1280-in/Screenshot_2026-06-17_at_08.57.12.png" alt="Screenshot 2026 06 17 at 08.57.12"></a></p>

<h2 id="training-loads">Training Loads</h2>

<p><a href="https://blgpht.argilus.online/api/files/139/original/Screenshot_2026-06-17_at_08.57.44.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/139/variants/ffmpeg-1280x1280-in/Screenshot_2026-06-17_at_08.57.44.png" alt="Screenshot 2026 06 17 at 08.57.44"></a></p>

<p>No i, oczywiście, nie trzeba korzystać z wersji selfhosted. Jest ogólnodostępna instancja <a href="https://fitpub.social" title="FitPub.social" rel="nofollow">FitPub</a>.</p>

<h2 id="visited-peaks">Visited Peaks</h2>

<p>Zaciekawiony danymi na <em>FitPub.social</em> ściągnąłem na serwer mapę Polski</p>

<pre><code>$ wget https://download.geofabrik.de/europe/poland-latest.osm.pbf
</code></pre>

<p>a następnie wrzuciłem ją na swoją instancję:</p>

<pre><code>$ sudo docker compose -f /opt/fitpub/docker-compose.yml run --rm   -v /srv/fitpub/osm/poland-latest.osm.pbf:/data/poland-latest.osm.pbf:ro   --entrypoint java   fitpub   -jar /app/import-peaks.jar --truncate --backfill /data/poland-latest.osm.pbf
</code></pre>

<p>I otrzymałem:</p>

<pre><code>2026-06-17T14:34:16.906Z  INFO 1 --- [           main] n.j.f.t.peaks.PlanetPeakImportService    : Peak import summary: entities=272178230, nodes=238757866, candidates=16456, staged=12810, inserted=12810, updated=0, skippedUnnamed=3646, skippedUnsupported=238741410, elevationParsed=10171, elevationMissingOrInvalid=2639
2026-06-17T14:34:16.906Z  INFO 1 --- [           main] n.j.fitpub.tools.peaks.PeakImportRunner  : Peak import finished successfully
2026-06-17T14:34:16.906Z  INFO 1 --- [           main] n.j.fitpub.tools.peaks.PeakImportRunner  : Starting peak backfill
2026-06-17T14:34:16.943Z  INFO 1 --- [           main] n.j.fitpub.service.PeakDetectionService  : Starting retroactive peak detection for 91 activities
</code></pre>

<p><em>FitPub</em> znalazł i zrobił update dla wszystkich aktywności.</p>

<p><img src="https://blgpht.argilus.online/api/files/44/original/Screenshot_2026-06-17_at_16.41.32.png" alt="Visited Peaks" title="Visited Peaks"></p>

<p><a href="/czach/tag:fitpub" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">fitpub</span></a> <a href="/czach/tag:selfhosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfhosting</span></a> <a href="/czach/tag:docker" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">docker</span></a> <a href="/czach/tag:Linux" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Linux</span></a></p>

<p>—
Marcin “czach” Trzaska
reply-to: <a href="https://blog.argilus.online/@/czach@mastodon.argilus.online" class="u-url mention" rel="nofollow">@<span>czach@mastodon.argilus.online</span></a></p>
]]></content:encoded>
      <guid>https://blog.argilus.online/czach/fitpub</guid>
      <pubDate>Wed, 17 Jun 2026 14:51:34 +0000</pubDate>
    </item>
  </channel>
</rss>