From f12ca2775ce3d0974e9e855806c18c3846d48579 Mon Sep 17 00:00:00 2001 From: Marcin Kwiatkowski Date: Wed, 24 Sep 2025 20:36:23 +0200 Subject: [PATCH] feat: added article about setting up next cloud pi + added footer to all posts --- Blog.md | 1 + .../AI is taking away our independence.md | 4 +- ...Caesar Cipher Implementation in C Sharp.md | 5 +- .../Historical cryptography algorithms.md | 6 +- ...te from Astro.build to Obsidian publish.md | 4 +- ...extcloud on Raspberry Pi 5 using Docker.md | 108 ++++++++++++++++++ Blog/2025/The authenticity of leadership.md | 3 + ...nfirmed when I did a kitchen renovation.md | 3 + ...erator for the Obsidian Publish website.md | 5 +- ...eaching kids how to program is not easy.md | 6 +- x/templates/Blog template.md | 7 ++ 11 files changed, 133 insertions(+), 19 deletions(-) create mode 100644 Blog/2025/Setting up Nextcloud on Raspberry Pi 5 using Docker.md create mode 100644 x/templates/Blog template.md diff --git a/Blog.md b/Blog.md index b1dcb8e..ba14c9a 100644 --- a/Blog.md +++ b/Blog.md @@ -1,5 +1,6 @@ ## 2025 +- [Setting up Nextcloud on Raspberry Pi 5 using Docker](Setting%20up%20Nextcloud%20on%20Raspberry%20Pi%205%20using%20Docker.md) - [The authenticity of leadership](The%20authenticity%20of%20leadership.md) - [AI is taking away our independence](AI%20is%20taking%20away%20our%20independence.md) - [What well-known life laws I confirmed when I did a kitchen renovation](What%20well-known%20life%20laws%20I%20confirmed%20when%20I%20did%20a%20kitchen%20renovation.md) diff --git a/Blog/2025/AI is taking away our independence.md b/Blog/2025/AI is taking away our independence.md index 87d257a..52bcfac 100644 --- a/Blog/2025/AI is taking away our independence.md +++ b/Blog/2025/AI is taking away our independence.md @@ -2,8 +2,6 @@ date: 2025-12-09 title: AI is taking away our independence --- -*Published: 12/09/2025* - I have been working with Cursor AI for 8 months intensively in my corporate job. Recently, I conducted an experiment that is quite unusual these days. I wanted to solve the task without using any help from AI. I have used web searches, Stack Overflow, and, more importantly, I have started writing code with my hands. Guess what? I have felt mental pain because I needed to write this code. After a few hours, I was exhausted. Is this me? Am I the same person who some time ago could write code for hours in hyperfocus? @@ -63,4 +61,4 @@ _If you’re unsure where to start, I recommend installing NeoVim. I did this, a Artificial intelligence is supposed to improve our quality of life and work, but the hidden cost is that we become dependent and subservient to machines and the corporations that produce them. We’ve outsourced so much thinking that we risk becoming consumers, rather than creators of knowledge. When we use AI, we need to consider whether we are using AI or if AI is actually using us. --- -#AIImpact #FutureOfWork #AISkills #programming #CursorAI #digitalwellbeing +*Published: 12/09/2025* #blog #AIImpact #FutureOfWork #AISkills #programming #CursorAI #digitalwellbeing diff --git a/Blog/2025/Caesar Cipher Implementation in C Sharp.md b/Blog/2025/Caesar Cipher Implementation in C Sharp.md index 1520b0e..2560b38 100644 --- a/Blog/2025/Caesar Cipher Implementation in C Sharp.md +++ b/Blog/2025/Caesar Cipher Implementation in C Sharp.md @@ -2,8 +2,6 @@ date: 2025-03-26 title: Caesar Cipher Implementation in C Sharp --- -*Published at: 26/03/2025* - In this tutorial I'll show you how to implement a Caesar cipher in C# using traditional TDD approach. You can learn two things. How: @@ -365,4 +363,5 @@ By following this TDD approach, we've created a Caesar Cipher implementation tha - [Tests](https://github.com/Frodigo/garage/blob/main/sandbox/cybersecurity/cryptography/HistoricalCiphersDemo/Tests/CaesarCipherTests.cs) - [Other historical ciphers implementations](https://github.com/Frodigo/garage/tree/main/sandbox/cybersecurity/cryptography/HistoricalCiphersDemo) -#ProgrammingFundamentals #Cybersecurity #CSharp #CSharp #xUnit #DotNet #Tutorial #ConceptExplanation #Intermediate #AutomatedTesting +--- +*Published at: 26/03/2025* #blog #ProgrammingFundamentals #Cybersecurity #CSharp #CSharp #xUnit #DotNet #Tutorial #ConceptExplanation #Intermediate #AutomatedTesting diff --git a/Blog/2025/Historical cryptography algorithms.md b/Blog/2025/Historical cryptography algorithms.md index e6fcd36..3420a9d 100644 --- a/Blog/2025/Historical cryptography algorithms.md +++ b/Blog/2025/Historical cryptography algorithms.md @@ -2,9 +2,6 @@ date: 2025-03-28 title: Historical cryptography algorithms --- - -*Last updated: 22/03/2025* - My first task on the [Cybersecurity learning roadmap](Cybersecurity%20learning%20roadmap.md) course at studies was about experimenting with historical cryptography algorithms. I was sitting in the computer room, it was quite stuffy, and around me were 30 other students. It was the third class of the day. The lecturer came in, who looked like a rather strict gentleman. He explained to us briefly what the course would look like and what the rules were for passing. @@ -401,4 +398,5 @@ During my studying I visited many places in the internet and also used Claude an Thanks for reading! -#Cybersecurity #ProgrammingFundamentals #CSharp #Shell/Bash #Git #Cryptool #Tutorial #DeepDive #ProjectSetup #Intermediate #HistoricalCryptography +--- +*Last updated: 22/03/2025* #Cybersecurity #ProgrammingFundamentals #CSharp #Shell/Bash #Git #Cryptool #Tutorial #DeepDive #ProjectSetup #Intermediate #HistoricalCryptography diff --git a/Blog/2025/I migrated website from Astro.build to Obsidian publish.md b/Blog/2025/I migrated website from Astro.build to Obsidian publish.md index 0840fdd..82b94d2 100644 --- a/Blog/2025/I migrated website from Astro.build to Obsidian publish.md +++ b/Blog/2025/I migrated website from Astro.build to Obsidian publish.md @@ -2,7 +2,6 @@ date: 2025-04-05 title: I migrated website from Astro.build to Obsidian publish --- - ## TL;DR Programmers who want to be writers should focus on writing, not on endlessly rebuilding their blog platforms. @@ -10,3 +9,6 @@ Programmers who want to be writers should focus on writing, not on endlessly reb If I could turn back time, I’d stop chasing the perfect blog setup and just write. Reinventing the wheel was a great excuse to avoid the hard part: writing. Read more in my Medium story: [https://medium.com/@frodigo/how-i-failed-at-writing-a-blog-many-times-d1e5040763a7](https://medium.com/@frodigo/how-i-failed-at-writing-a-blog-many-times-d1e5040763a7) + +--- +*Published 05/04/2025* #blog #obsidian #astro diff --git a/Blog/2025/Setting up Nextcloud on Raspberry Pi 5 using Docker.md b/Blog/2025/Setting up Nextcloud on Raspberry Pi 5 using Docker.md new file mode 100644 index 0000000..aa3ad58 --- /dev/null +++ b/Blog/2025/Setting up Nextcloud on Raspberry Pi 5 using Docker.md @@ -0,0 +1,108 @@ +--- +date: 2025-09-24 +title: Setting up Nextcloud on Raspberry Pi 5 using Docker +--- +My goal was simple – to move photos from Google Photos and Apple Photos "to my own server." I decided to try NextCloud and installed it using NextCloudPI, a custom-built distribution for Raspberry Pi. + +I purchased a brand new Raspberry Pi 5, a cooler, and an external USB drive. I also needed to run an Ethernet cable to my ~~office~~ garage, which I should have done a long time ago anyway. +## NextCloudPi. It should work, but it shouldn't work for me + +My initial attempts to launch NextCloud were unsuccessful. I couldn't even get past the first launch. Here are the errors I encountered: + +```bash +[FAILED] failed to start avahi-deamon.service - Avahi mDNS/DNS-SD stack +run `systemctl status avahi-daemon.service` for details + +[FAILED] failed to start systemd-logind.service - User login management + +[failed] failed to start bluetooth.service - + +[failed] failed to start udisk2.service - disk manager + +[failed] failed to start dbus.service - D-Bus System message bus +``` + +I tried to fix them, but I couldn't even log in because the system never finished the first boot. It was frustrating. At least as frustrating as Dembele winning the Ballon d'Or (okay, a little less so). + +Imagine that even a restart didn't help. Nor did turning it off and on. Interestingly, I downloaded an older version of NextCloudPi, but I still had no success. I tried two versions: v1.55.3 and v1.55.2. + +It's open-source software, developed by the community. No one said it would work, and I don't blame anyone for it not working. Perhaps there was something wrong with my configuration. I didn't pursue the issue further; I just tried a different approach. +## NextCloud on Docker. It must work + +I did a small research and I have found this guide: [https://help.nextcloud.com/t/guide-setting-up-nextcloud-on-raspberry-pi-ssl-advanced-app-support-high-performance-postgresql-and-cloudflare-zero-trust-integration/185757](https://help.nextcloud.com/t/guide-setting-up-nextcloud-on-raspberry-pi-ssl-advanced-app-support-high-performance-postgresql-and-cloudflare-zero-trust-integration/185757]). It was good as a starting point. + +But it couldn't just work, right? +### "Data Directory Invalid" Error + +I initially ran NextCloud on an SD card, but ultimately wanted to store the data on an external SSD. I achieved this by setting the `datadirectory` as a Docker volume, mounted on an external drive. + +```bash +/media/frodigo/nextcloud-data:/var/www/html/data:z +``` + +After restarting NextCloud I saw this error: + +```bash +Data directory is invalid. +Make sure there is a file called ".ncdata" in the root of the data directory. +The data directory is not writable. +``` + +I did a research and I have realized that Nextcloud requires a specific marker file `.ncdata` in the data directory root to validate the directory structure. + +I checked if the file exist, and It didn't exist so I created a new one: + +```bash +# Check if the file exists +ls -la /media/frodigo/nextcloud-data/.ncdata + +# Create if missing +echo "# Nextcloud data directory" > /media/frodigo/nextcloud-data/.ncdata + +``` + +However, that didn't completely resolve the issue. I moved forward a bit, but then saw another error saying that the data directory is not writable. +### User ID Mismatches + +Initially, I set permissions on the data directory so that the `www-data` user could access it. To my surprise, it turned out that the `www-data` user ID on the host was different from the `www-data` user ID in the container, which is why I was experiencing problems. + +- Host system `www-data` user: UID 33 +- Container `www-data` user: UID 82 + +The solution for this problem was to align file ownership with the container's expectations: + +```bash +# Check what UID www-data has inside the container +docker exec -it nextcloud id www-data + +# Set ownership to match container UID +sudo chown -R 82:82 /path/to/nextcloud-data/ +sudo chmod -R 755 /path/to/nextcloud-data/ + +``` + +#### Troubleshooting workflow + +When facing data directory issues: + +1. **Verify the external drive is mounted**: `df -h` +2. **Check Docker volume mappings**: Review your `docker-compose.yml` +3. **Inspect file permissions**: `ls -la /path/to/data/` +4. **Check container user IDs**: `docker exec -it container_name id www-data` +5. **Verify .ncdata file exists and is readable** +6. **Restart containers after making changes**: `docker-compose down && docker-compose up -d` +7. **Debug container user context**: `docker-compose exec -u www-data nextcloud touch /var/www/html/data/test.txt` + +Note: Docker introduces multiple abstraction layers that can mask the root cause of issues. The key to successful troubleshooting is understanding these layers and testing each one systematically. Always verify your assumptions at each level: + +- network connectivity +- volume mounting +- file permissions, +- application configuration + +## It works. Somehow + +After overcoming these setbacks, my NextCloud on Pi started working, but it seems this is more the beginning of an adventure than the end. The rest of my adventures might come in the near future, if I don't give up. We'll see. + +--- +*Published: 24/09/2025* #blog #nectcloud #raspberrypi #diy #cloud #docker diff --git a/Blog/2025/The authenticity of leadership.md b/Blog/2025/The authenticity of leadership.md index 3f7cc2f..7723941 100644 --- a/Blog/2025/The authenticity of leadership.md +++ b/Blog/2025/The authenticity of leadership.md @@ -45,3 +45,6 @@ I tried a lot to recover, but finally, after three years, I decided that I neede I spent too long trying to be a tech lead, instead of simply being myself. The most valuable lesson I learned wasn't about management techniques or project planning. Actually, it was about the power of authenticity. A team leader doesn't have to be the same as all other managers. The goal is to build a team around your strengths and be honest about your weaknesses. + +--- +*Published: 12/09/2025* #blog #leadership diff --git a/Blog/2025/What well-known life laws I confirmed when I did a kitchen renovation.md b/Blog/2025/What well-known life laws I confirmed when I did a kitchen renovation.md index 574e236..eeca538 100644 --- a/Blog/2025/What well-known life laws I confirmed when I did a kitchen renovation.md +++ b/Blog/2025/What well-known life laws I confirmed when I did a kitchen renovation.md @@ -11,3 +11,6 @@ Some time ago I decided to renovate my kitchen instead of hiring professionals, The best from this story is I survived. Read full story on [Medium](https://medium.com/@frodigo/913f7569e0c8). + +--- +*Published 13/04/2025* #blog #diy diff --git a/Blog/2025/Why I built my own RSS feed generator for the Obsidian Publish website.md b/Blog/2025/Why I built my own RSS feed generator for the Obsidian Publish website.md index 8879b06..33ebc85 100644 --- a/Blog/2025/Why I built my own RSS feed generator for the Obsidian Publish website.md +++ b/Blog/2025/Why I built my own RSS feed generator for the Obsidian Publish website.md @@ -2,7 +2,6 @@ date: 2025-04-17 title: Why I build my own RSS feed for Obsidian Publish website --- - Obsidian and Obsidian Publish are great tools and they allow you to write and publish content like a nitro. I couldn't imagine what can go wrong when using Obsidian publish. Then after a few weeks I realized what is the weak point that i haven't seen before: **RSS feed**. Autogenerated RSS feed on Obsidian publish is really simple. I realized it when I talked with my colleague and he asked me about RSS feed. I shared a link with him. He added it to his RSS reader. I saw it. It looked like something hastily written. Just titles, nothing. I felt a bit ashamed. @@ -205,6 +204,4 @@ I am wondering how to do this changes in a way that someone else can have such a --- -_Written by Marcin Kwiatkowski at 17.04.2025 in Poland._ - -#RSS #Obsidian #ObsidianPublish #WebDevelopment #ContentSyndication #JavaScript #StaticSite #BloggingTools #WebAutomation #Markdown #GitHubActions #CloudflareSites #KnowledgeManagement #DigitalGarden #RSSFeeds #ContentCreation #WebsiteCustomization #AIAssistants #ProgrammingChallenge #PersonalProject #FrontendDevelopment #NodeJS #Git #CI/CDtools #Cloudflare #Tutorial #CaseStudy #ProjectSetup #Intermediate #APISecurity #AutomatedTesting +*Published 17/04/2025* #blog #Obsidian #ObsidianPublish #WebDevelopment #ContentSyndication #JavaScript #StaticSite #BloggingTools #WebAutomation #Markdown #GitHubActions #CloudflareSites #KnowledgeManagement #DigitalGarden #RSSFeeds #ContentCreation #WebsiteCustomization #AIAssistants #ProgrammingChallenge #PersonalProject #FrontendDevelopment #NodeJS #Git #CI/CDtools #Cloudflare #Tutorial #CaseStudy #ProjectSetup #Intermediate #APISecurity #AutomatedTesting diff --git a/Blog/2025/Why teaching kids how to program is not easy.md b/Blog/2025/Why teaching kids how to program is not easy.md index 40e9f2d..8f1959e 100644 --- a/Blog/2025/Why teaching kids how to program is not easy.md +++ b/Blog/2025/Why teaching kids how to program is not easy.md @@ -1,9 +1,6 @@ --- date: 2025-04-07 --- - -#ProgrammingFundamentals #Python #BestPractices #ConceptExplanation #CaseStudy #Beginner - ## TL;DR Teaching kids programming isn’t as simple as sharing your passion. @@ -19,4 +16,5 @@ And most importantly — patience to match their learning pace. Read more on Medium: -Learning roadmap: [Programming for Kids](Programming%20for%20Kids.md) +--- +*Published 07/04/2025* #blog #ProgrammingFundamentals #Python #BestPractices #ConceptExplanation #CaseStudy #Beginner diff --git a/x/templates/Blog template.md b/x/templates/Blog template.md new file mode 100644 index 0000000..2fe1f32 --- /dev/null +++ b/x/templates/Blog template.md @@ -0,0 +1,7 @@ +--- +date: 2025-02-09 +title: Blog +--- + +--- +#blog