<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>selfhosting &amp;mdash; Marcin Modest Trzaska</title>
    <link>https://blog.argilus.online/czach/tag:selfhosting</link>
    <description>Piszę, co mi przyjdzie do głowy. Na tematy różne.</description>
    <pubDate>Sat, 22 Aug 2026 14:03:40 +0200</pubDate>
    <item>
      <title>GoatCounter</title>
      <link>https://blog.argilus.online/czach/goatcounter</link>
      <description>&lt;![CDATA[Zainstalowałem na serwerze GoatCounter, aby mieć trochę informacji, co? gdzie? kiedy?&#xA;&#xA;  GoatCounter is an open source web analytics platform available as a free donation-supported hosted service or self-hosted app. It aims to offer easy to use and meaningful privacy-friendly web analytics as an alternative to Google Analytics or Matomo.&#xA;&#xA;#goatcounter #selfhosting &#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Zainstalowałem na serwerze <a href="https://www.goatcounter.com" title="GoatCounter" rel="nofollow"><em>GoatCounter</em></a>, aby mieć trochę informacji, co? gdzie? kiedy?</p>

<blockquote><p>GoatCounter is an open source web analytics platform available as a free donation-supported hosted service or self-hosted app. It aims to offer easy to use and meaningful privacy-friendly web analytics as an alternative to Google Analytics or Matomo.</p></blockquote>

<p><a href="/czach/tag:goatcounter" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">goatcounter</span></a> <a href="/czach/tag:selfhosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfhosting</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/goatcounter</guid>
      <pubDate>Wed, 05 Aug 2026 07:42:06 +0000</pubDate>
    </item>
    <item>
      <title>Nebulis</title>
      <link>https://blog.argilus.online/czach/nebulis</link>
      <description>&lt;![CDATA[wersja wpisu&#xA;1.0 — 2026-08-02, 21:25&#xA;1.1 — 2026-08-02, 23:45 — katalog Messiera &#xA;1.11 — 2026-08-03, 08:17 — link do GitHuba 🫣&#xA;&#xA;Dzisiejsze odkrycie.&#xA;Aplikacja selfhosted do obsługi smart teleskopów typu Seestar, Dwarf.&#xA;&#xA;  A full image library, observation planner, and sky forecast for your smart telescope. Self-hosted, runs on your own hardware, accessible from any browser on your network.&#xA;&#xA;Nebulis na Githubie&#xA;&#xA;Dostępne są także aplikacje na macOS, Windows, iOS, tvOS i Androida.&#xA;&#xA;Instalacja za pomocą Dockera jest banalnie prosta. Kopiuj-wklej przykładowego pliku docker-compose.yml, edycja portów i IP i… &#xA;$ sudo docker compose up -d&#xA;Gotowe.&#xA;&#xA;Następnie, po wejściu na stronę, trzeba stworzyć konto administratora, skonfigurować teleskop - w moim przypadku to wybrać Seestar S50 i podać IP.&#xA;Można przystąpić do pracy. &#xA;&#xA;Możliwości są naprawdę niesamowite.&#xA;Postaram się je przedstawić na grafikach. Jeżeli będą jakieś pytania to poproszę o komentarz tutaj, lub na Masto albo 📲. Ewentualnie 📥. :-)&#xA;&#xA;Dobra, zaczynam opis. Znaczy wrzucam screenshoty a opisy będę uzupełniać&#xA;&#xA;Planer&#xA;Jak zaplanować astronockę? To proste. Wybieramy Plannera i…&#xA;&#xA;Set Visible Sky&#xA;Z pomocą tego narzędzia ustawiamy jakie mamy pole widzenia. Całość nieba podzielona jest na 288 kawałków, które zaznaczamy myszką.&#xA;&#xA;Screenshot 2026 08 02 at 20.34.57&#xA;&#xA;Catalogs&#xA;Screenshot 2026 08 02 at 20.53.58&#xA;&#xA;Night schedule&#xA;Screenshot 2026 08 02 at 20.59.40&#xA;&#xA;Forecast&#xA;Screenshot 2026 08 02 at 21.02.09&#xA;&#xA;Catalogs&#xA;&#xA;Messier&#xA;Screenshot 2026 08 02 at 23.42.57&#xA;&#xA;#selfhosting #astrofotografia #Seestar &#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<h5 id="wersja-wpisu">wersja wpisu</h5>

<pre><code>1.0 — 2026-08-02, 21:25
1.1 — 2026-08-02, 23:45 — katalog Messiera 
1.11 — 2026-08-03, 08:17 — link do GitHuba 🫣
</code></pre>

<p>Dzisiejsze odkrycie.
Aplikacja selfhosted do obsługi smart teleskopów typu <em>Seestar</em>, <em>Dwarf</em>.</p>

<blockquote><p>A full image library, observation planner, and sky forecast for your smart telescope. Self-hosted, runs on your own hardware, accessible from any browser on your network.</p></blockquote>

<p><a href="https://github.com/nebulis-app/nebulis" rel="nofollow">Nebulis na Githubie</a></p>

<p>Dostępne są także aplikacje na <em>macOS</em>, <em>Windows</em>, <em>iOS</em>, <em>tvOS</em> i <em>Androida</em>.</p>

<p>Instalacja za pomocą <em>Dockera</em> jest banalnie prosta. Kopiuj-wklej przykładowego pliku <em>docker-compose.yml</em>, edycja portów i IP i…</p>

<pre><code>$ sudo docker compose up -d
</code></pre>

<p>Gotowe.</p>

<p>Następnie, po wejściu na stronę, trzeba stworzyć konto administratora, skonfigurować teleskop – w moim przypadku to wybrać <em>Seestar S50</em> i podać IP.
Można przystąpić do pracy.</p>

<p>Możliwości są naprawdę niesamowite.
Postaram się je przedstawić na grafikach. Jeżeli będą jakieś pytania to poproszę o komentarz tutaj, lub na Masto albo 📲. Ewentualnie 📥. :–)</p>

<p>Dobra, zaczynam opis. Znaczy wrzucam screenshoty a opisy będę uzupełniać</p>

<h2 id="planer">Planer</h2>

<p>Jak zaplanować astronockę? To proste. Wybieramy <em>Plannera</em> i…</p>

<h3 id="set-visible-sky">Set Visible Sky</h3>

<p>Z pomocą tego narzędzia ustawiamy jakie mamy pole widzenia. Całość nieba podzielona jest na 288 kawałków, które zaznaczamy myszką.</p>

<p><a href="https://blgpht.argilus.online/api/files/87/original/Screenshot_2026-08-02_at_20.34.57.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/87/variants/ffmpeg-1280x1280-in/Screenshot_2026-08-02_at_20.34.57.png" alt="Screenshot 2026 08 02 at 20.34.57"></a></p>

<h2 id="catalogs">Catalogs</h2>

<p><a href="https://blgpht.argilus.online/api/files/86/original/Screenshot_2026-08-02_at_20.53.58.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/86/variants/ffmpeg-1280x1280-in/Screenshot_2026-08-02_at_20.53.58.png" alt="Screenshot 2026 08 02 at 20.53.58"></a></p>

<h2 id="night-schedule">Night schedule</h2>

<p><a href="https://blgpht.argilus.online/api/files/88/original/Screenshot_2026-08-02_at_20.59.40.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/88/variants/ffmpeg-1280x1280-in/Screenshot_2026-08-02_at_20.59.40.png" alt="Screenshot 2026 08 02 at 20.59.40"></a></p>

<h2 id="forecast">Forecast</h2>

<p><a href="https://blgpht.argilus.online/api/files/89/original/Screenshot_2026-08-02_at_21.02.09.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/89/variants/ffmpeg-1280x1280-in/Screenshot_2026-08-02_at_21.02.09.png" alt="Screenshot 2026 08 02 at 21.02.09"></a></p>

<h2 id="catalogs-1">Catalogs</h2>

<h3 id="messier">Messier</h3>

<p><a href="https://blgpht.argilus.online/api/files/90/original/Screenshot_2026-08-02_at_23.42.57.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/90/variants/ffmpeg-1280x1280-in/Screenshot_2026-08-02_at_23.42.57.png" alt="Screenshot 2026 08 02 at 23.42.57"></a></p>

<p><a href="/czach/tag:selfhosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfhosting</span></a> <a href="/czach/tag:astrofotografia" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">astrofotografia</span></a> <a href="/czach/tag:Seestar" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Seestar</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/nebulis</guid>
      <pubDate>Sun, 02 Aug 2026 19:17:27 +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/69/original/Screenshot_2026-06-17_at_08.55.56.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/69/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/68/original/Screenshot_2026-06-17_at_08.59.03.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/68/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/65/original/Screenshot_2026-06-17_at_08.56.58.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/65/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/66/original/Screenshot_2026-06-17_at_08.57.12.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/66/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/71/original/Screenshot_2026-06-17_at_08.57.44.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/71/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/72/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>
    <item>
      <title>Dvinyl, FitPub…</title>
      <link>https://blog.argilus.online/czach/dvinyl-fitpub</link>
      <description>&lt;![CDATA[czyli nowości w argilusowym ogródku.&#xA;&#xA;Dvinyl&#xA;&#xA;Na pierwszy ogień poszła aplikacja do organizowania sobie nośników przyjemności: ;-)&#xA;&#xA;płyt winylowych&#xA;kaset magnetofonowych&#xA;płyt CD&#xA;kpłyt DVD&#xA;książek&#xA;gier &#xA;&#xA;Jak na razie zdecydowałem się jedynie na moduł płyt winylowych, bo tych mam mniej do ogarnięcia. ;-) &#xA;No i trzeba zakładać konta w serwisach typu Discogs. &#xA;&#xA;Miałem dwa podejścia do instalacji. Za pierwszym razem mi się nie udało. Niby Docker stwierdził, że wszystko wstało, ale aplikacja nie miała interfejsu sieciowego, na którym by nasłuchiwała. &#xA;&#xA;Odpuściłem&#xA;&#xA;Za dwa dni siadłem jeszcze raz i… poszło.&#xA;Dodałem pierwsze 10 płyt (tych w najlepszym stanie).&#xA;Dodawać można podając tytuł, wykonawcę a można podać lub zeskanować kod kreskowy.&#xA;&#xA;Screenshot 2026 06 17 at 08.24.43&#xA;&#xA;Każdą płytę można sprawdzić pod kątem wartości na podstawie danych z Discogs.&#xA;&#xA;Screenshot 2026 06 17 at 08.25.21&#xA;&#xA;h3 id=&#34;FitPub&#34;FitPub/h3&#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;Oj, tutaj była ostra jazda z instalacją. 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;h4 id=&#34;Peaks&#34;Visited Peaks/h4&#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;#dvinyl #fitpub #selfhosting&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<h2 id="czyli-nowości-w-argilusowym-ogródku">czyli nowości w argilusowym ogródku.</h2>

<h3 id="dvinyl">Dvinyl</h3>

<p>Na pierwszy ogień poszła aplikacja do organizowania sobie nośników przyjemności: ;–)</p>
<ul><li>płyt winylowych</li>
<li>kaset magnetofonowych</li>
<li>płyt CD</li>
<li>kpłyt DVD</li>
<li>książek</li>
<li>gier</li></ul>

<p>Jak na razie zdecydowałem się jedynie na moduł płyt winylowych, bo tych mam mniej do ogarnięcia. ;–)
No i trzeba zakładać konta w serwisach typu <a href="https://www.discogs.com/" title="Discogs" rel="nofollow"><em>Discogs</em></a>.</p>

<p>Miałem dwa podejścia do instalacji. Za pierwszym razem mi się nie udało. Niby <em>Docker</em> stwierdził, że wszystko wstało, ale aplikacja nie miała interfejsu sieciowego, na którym by nasłuchiwała.</p>

<p>Odpuściłem</p>

<p>Za dwa dni siadłem jeszcze raz i… poszło.
Dodałem pierwsze 10 płyt (tych w najlepszym stanie).
Dodawać można podając tytuł, wykonawcę a można podać lub zeskanować kod kreskowy.</p>

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

<p>Każdą płytę można sprawdzić pod kątem wartości na podstawie danych z <em>Discogs</em>.</p>

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

<h3 id="FitPub">FitPub</h3>

<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>Oj, tutaj była ostra jazda z instalacją. 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/69/original/Screenshot_2026-06-17_at_08.55.56.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/69/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/68/original/Screenshot_2026-06-17_at_08.59.03.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/68/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>

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

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

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

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

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

<p><a href="https://blgpht.argilus.online/api/files/71/original/Screenshot_2026-06-17_at_08.57.44.png" rel="nofollow"><img src="https://blgpht.argilus.online/api/files/71/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>

<h4 id="Peaks">Visited Peaks</h4>

<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/72/original/Screenshot_2026-06-17_at_16.41.32.png" alt="Visited Peaks" title="Visited Peaks"></p>

<p><a href="/czach/tag:dvinyl" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">dvinyl</span></a> <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></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/dvinyl-fitpub</guid>
      <pubDate>Wed, 17 Jun 2026 06:30:54 +0000</pubDate>
    </item>
    <item>
      <title>Oikos (2)</title>
      <link>https://blog.argilus.online/czach/oikos-2</link>
      <description>&lt;![CDATA[Uzupełnienie wpisu Oikos.&#xA;&#xA;Aplikacja się rozwija i ma coraz więcej przydatnych funkcji. Od pewnego czasu obsługuje także język polski.&#xA;&#xA;Screenshot z uruchomioną w przeglądarce aplikacją Oikos&#xA;&#xA;#selfhosting #oikos&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p><strong>Uzupełnienie wpisu <a href="https://blog.argilus.online/czach/oikos" rel="nofollow">Oikos</a></strong>.</p>

<p>Aplikacja się rozwija i ma coraz więcej przydatnych funkcji. Od pewnego czasu obsługuje także język polski.</p>

<p><img src="https://blgpht.argilus.online/api/files/51/original/oikos.jpg" alt="Screenshot z uruchomioną w przeglądarce aplikacją *Oikos*"></p>

<p><a href="/czach/tag:selfhosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfhosting</span></a> <a href="/czach/tag:oikos" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">oikos</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/oikos-2</guid>
      <pubDate>Sun, 17 May 2026 15:52:52 +0000</pubDate>
    </item>
    <item>
      <title>Oikos</title>
      <link>https://blog.argilus.online/czach/oikos</link>
      <description>&lt;![CDATA[Dziś krótki wpis ze świata selfhostingu.&#xA;&#xA;Wczoraj do argilusowego ogródka wpadło następne narzędzie.&#xA;&#xA;Oikos&#xA;&#xA;The self-hosted family planner&#xA;&#xA;I wiecie co? Nawet mojej żonie się to spodobało.&#xA;Zalogowala się, uzupełniła kalendarz i stwierdziła:&#xA;Wreszcie mam kalendarz bez Googla&#xA;&#xA;Nom. Mi też się podoba.&#xA;Po skonfigurowaniu (ech ten język niemiecki ;-)) pulpit wita nas między innymi pogodą.&#xA;Dodałem eventy, rozpiskę swoich zestawów śniadaniowych (żeby bylo wiadome, kiedy się kończą) oraz planowane obiady i związane z nimi zakupy — wraz z przydzieleniem obowiązków.&#xA;Screenshot przeglądarki internetowej z selfhostowaną aplikacją Oikos. Widoczne są zadania do zrobienia, posiłki&#xA;Aplikacja świetnie działa jako PWA.&#xA;&#xA;#selfhosting #oikos&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Dziś krótki wpis ze świata selfhostingu.</p>

<p>Wczoraj do argilusowego ogródka wpadło następne narzędzie.</p>

<h2 id="oikos-https-ulsklyc-github-io-oikos-ref-blog-argilus-online-oikos"><a href="https://ulsklyc.github.io/oikos/?ref=blog.argilus.online" title="Oikos" rel="nofollow">Oikos</a></h2>

<p><em>The self-hosted family planner</em></p>

<p>I wiecie co? Nawet mojej żonie się to spodobało.
Zalogowala się, uzupełniła kalendarz i stwierdziła:
<em>Wreszcie mam kalendarz bez Googla</em></p>

<p>Nom. Mi też się podoba.
Po skonfigurowaniu (ech ten język niemiecki ;–)) pulpit wita nas między innymi pogodą.
Dodałem eventy, rozpiskę swoich zestawów śniadaniowych (żeby bylo wiadome, kiedy się kończą) oraz planowane obiady i związane z nimi zakupy — wraz z przydzieleniem obowiązków.
<img src="https://blgpht.argilus.online/api/files/26/original/Screenshot%202026-04-21%20at%2012.53.51.png" alt="Screenshot przeglądarki internetowej z selfhostowaną aplikacją Oikos. Widoczne są zadania do zrobienia, posiłki" title="Oikos w akcji">
Aplikacja świetnie działa jako <em>PWA</em>.</p>

<p><a href="/czach/tag:selfhosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfhosting</span></a> <a href="/czach/tag:oikos" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">oikos</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/oikos</guid>
      <pubDate>Tue, 21 Apr 2026 10:51:52 +0000</pubDate>
    </item>
    <item>
      <title>Nowości w argilusowym ogródku</title>
      <link>https://blog.argilus.online/czach/nowosci-w-argilusowym-ogrodku</link>
      <description>&lt;![CDATA[WishList&#xA;WishList&#xA;&#xA;Baaardzo fajne narzędzie do sporządzania listy życzeń prezentowych.&#xA;W moim przypadku to głównie płyty winylowe.&#xA;&#xA;Te z Allegro musiałem ręcznie dodawać.&#xA;Te z Muzikera - podałem URL reszta pól (w tym cena i okładka) dodały się same.&#xA;No fajne.&#xA;&#xA;Screenshot przeglądarki internetowej z otworzoną stroną z działającą instancją WishList&#xA;&#xA;#selfhosting #WishList&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<h2 id="wishlist">WishList</h2>

<p><a href="https://github.com/cmintey/wishlist" title="WishList" rel="nofollow">WishList</a></p>

<p>Baaardzo fajne narzędzie do sporządzania listy życzeń prezentowych.
W moim przypadku to głównie płyty winylowe.</p>

<p>Te z Allegro musiałem ręcznie dodawać.
Te z Muzikera – podałem URL reszta pól (w tym cena i okładka) dodały się same.
No fajne.</p>

<p><img src="https://blgpht.argilus.online/api/files/12/original/01KNE7Y05QNVNVK5DQV0EK1WFF.jpeg" alt="Screenshot przeglądarki internetowej z otworzoną stroną z działającą instancją WishList" title="WishList w akcji"></p>

<p><a href="/czach/tag:selfhosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfhosting</span></a> <a href="/czach/tag:WishList" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">WishList</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/nowosci-w-argilusowym-ogrodku</guid>
      <pubDate>Sun, 05 Apr 2026 07:32:35 +0000</pubDate>
    </item>
    <item>
      <title>Office</title>
      <link>https://blog.argilus.online/czach/office</link>
      <description>&lt;![CDATA[Poszedłem za ciosem i wreszcie się udało. Postawiłem OnlyOffice, który współpracuje z NextCloudem na argilusowym serwerze.&#xA;Trochę okrężną drogą, bo jednak, co by nie pisać, NC, OO jakoś nie lubią się z FreeBSD.&#xA;&#xA;Koniec końców — udało się. I to nawet na dwa sposoby: &#xA;integracja z NextCloudem&#xA;jako osobna usługa z własną domeną.&#xA;&#xA;screenshot przeglądarki internetowej z uruchomioną chmurową wersją OnlyOffice poprzez NextClouda&#xA;&#xA;#selfhosting #nextcloud #onlyoffice&#xA;&#xA;-- &#xD;&#xA;Marcin &#34;czach&#34; Trzaska&#xD;&#xA;reply-to: @czach@mastodon.argilus.online]]&gt;</description>
      <content:encoded><![CDATA[<p>Poszedłem za ciosem i wreszcie się udało. Postawiłem OnlyOffice, który współpracuje z <em>NextCloudem</em> na argilusowym serwerze.
Trochę okrężną drogą, bo jednak, co by nie pisać, NC, OO jakoś nie lubią się z <em>FreeBSD</em>.</p>

<p>Koniec końców — udało się. I to nawet na dwa sposoby:
– integracja z NextCloudem
– jako osobna usługa z własną domeną.</p>

<p><img src="https://blgpht.argilus.online/api/files/8/original/Screenshot%202026-03-31%20at%2008.22.01.png" alt="screenshot przeglądarki internetowej z uruchomioną chmurową wersją OnlyOffice poprzez NextClouda"></p>

<p><a href="/czach/tag:selfhosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfhosting</span></a> <a href="/czach/tag:nextcloud" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">nextcloud</span></a> <a href="/czach/tag:onlyoffice" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">onlyoffice</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/office</guid>
      <pubDate>Tue, 31 Mar 2026 06:30:06 +0000</pubDate>
    </item>
  </channel>
</rss>