Przejdź do treści

Projekty:

🧠 Projekt Smart Home z Raspberry Pi 5

W ramach tego projektu stworzyłem własny system Smart Home oparty na Raspberry Pi 5, który działa całkowicie lokalnie — bez chmury i bez zewnętrznych usług.
Chciałem zbudować środowisko, które pozwoli mi zarządzać urządzeniami w domu, monitorować kamery i mieć dostęp zdalny do sieci, a jednocześnie nauczyć się praktycznie, jak działa Linux, konteneryzacja, automatyzacja i bezpieczny dostęp przez VPN.

🔧 Jak to działa

Sercem całego systemu jest Raspberry Pi 5 z zainstalowanym Ubuntu Server 24.04 LTS.
Całość działa w trybie „headless” — bez monitora, a ja łączę się z serwerem zdalnie przez SSH.
Na tym serwerze uruchamiam różne usługi w kontenerach Dockera, co pozwala mi lepiej zrozumieć zarządzanie środowiskami i izolację aplikacji.

Do automatyki domowej wykorzystuję Home Assistant, z którego poziomu mogę sterować np. klimatyzacją w sypialni oraz podglądać obraz z kamer PoE.
Za zapis nagrań i monitoring odpowiada aplikacja MotionEye, która rejestruje obraz z kamer na zewnętrznym dysku USB podłączonym do Raspberry Pi.

Aby mieć bezpieczny dostęp z dowolnego miejsca, skonfigurowałem VPN WireGuard — dzięki temu mogę łączyć się z domową siecią, Home Assistantem i monitoringiem z laptopa lub telefonu, bez narażania systemu na ryzyko ataków z zewnątrz.

🧩 Wykorzystane technologie i sprzęt

  • Raspberry Pi 5 – główny serwer systemu

  • Ubuntu Server – lekki i stabilny system Linux

  • Docker – uruchamianie aplikacji w kontenerach

  • Home Assistant – centrum zarządzania urządzeniami i automatyzacją

  • MotionEye – system monitoringu i zapisu obrazu

  • WireGuard VPN – bezpieczne połączenie zdalne

  • Kamery PoE + switch PoE – zasilanie i połączenie sieciowe w jednym kablu

Połączenie przez SSH z serverem UBUNTU na RaspberryPi5

🏠 Home Assistant

  • Aplikacja do zarządzania automatyką domową.

  • Używana do sterowania klimatyzacją w mojej sypialni oraz podglądu kamer PoE.

📹 MotionEye

  • System do monitoringu z zapisem wideo.

  • Przechowuje nagrania z kamer PoE na zewnętrznym dysku USB podpiętym do RaspberryPi5

🔌 Kamery PoE + Switch PoE

  • Kamery zasilane przez Ethernet.

  • Połączone przez switch PoE z siecią lokalną i RPi5.

🌐 WireGuard VPN

  • Bezpieczny dostęp zdalny do sieci domowej z laptopa i telefonu.

  • Możliwość połączenia z Raspberry Pi, Home Assistant i MotionEye spoza domu.

💡 Co daje mi ten projekt

Dzięki temu projektowi łączę w praktyce wiele aspektów, które są ważne w nowoczesnym podejściu do zarządzania infrastrukturą IT:
– konfigurację systemu Linux i pracę w terminalu,
– konteneryzację i utrzymanie środowisk w Dockerze,
– automatyzację i integrację usług w jednym ekosystemie,
– zapewnianie bezpieczeństwa i zdalnego dostępu poprzez VPN.

To wszystko przekłada się na realne umiejętności w kierunku zarządzania i utrzymania środowisk serwerowych — tylko że tutaj moim „środowiskiem produkcyjnym” jest… mój dom.

🚀 Co dalej

Projekt wciąż się rozwija.
Planuję zintegrować sterowanie bramą garażową i wjazdową, dodać powiadomienia push do aplikacji Home Assistant, a także rozszerzyć system o nowe urządzenia IoT i automatyzacje.
Każdy nowy element to dla mnie okazja, żeby uczyć się kolejnych narzędzi, konfiguracji i sposobów pracy, które przydadzą mi się w przyszłości.

Docker

W tym projekcie pokazuję swoje pierwsze praktyczne kroki z Dockerem w środowisku domowym. Na serwerze Ubuntu, uruchomionym na Raspberry Pi 5, stworzyłem trzy kontenery: jeden dla Home Assistant, drugi dla WordPressa i trzeci dla bazy danych , na której działa moja strona internetowa.

Projekt pozwola mi zrozumieć podstawy pracy z kontenerami, zarządzanie ich konfiguracją oraz integrację usług w sieci domowej. To pierwszy krok w kierunku automatyzacji i pracy w środowisku DevOps, który rozwijam i planuję dalej rozszerzać.

Docker Compose

Aby ułatwić zarządzanie kontenerami i automatyzować uruchamianie usług, zainstalowałem Docker Compose i przygotowałem plik docker-compose.yml. Dzięki temu mogę jednym poleceniem uruchomić wszystkie kontenery, zapewniając ich poprawną konfigurację, podpięcie odpowiednich wolumenów z danymi oraz zachowanie sieci między usługami.

Zastosowanie Docker Compose pozwoliło mi zrozumieć, jak:

  • definiować i grupować wiele usług w jednym pliku,

  • zarządzać zależnościami między kontenerami,

  • utrzymywać spójność konfiguracji przy restartach i aktualizacjach,

  • podpiąć istniejące dane do nowych kontenerów, zachowując ciągłość działania WordPressa i Home Assistanta.

Czego uczę się dzięki konteneryzacji i co mi to daje

Pracując z Dockerem, uczę się jak porządkować i oddzielać różne aplikacje od siebie. Dzięki temu każda działa w swoim własnym środowisku i nie wchodzi w konflikt z innymi. Widzę też, jak ważne jest przechowywanie danych w odpowiedni sposób, tak żeby po restarcie czy aktualizacji nic nie zniknęło.

Konteneryzacja daje mi dużą wygodę – mogę łatwo uruchamiać i zatrzymywać usługi, przenosić je na inne urządzenia czy do chmury i wszystko działa tak samo. Do tego jednym poleceniem mogę uruchomić cały zestaw potrzebnych aplikacji, co oszczędza czas i daje pewność, że konfiguracja zawsze jest spójna.

Co dalej chcę rozwijać

Chcę nauczyć się bardziej automatyzować to, co robię – tak, żeby kopie zapasowe, aktualizacje czy wdrożenia działy się same. Interesuje mnie też, jak takie rozwiązania są używane w większej skali – np. w Kubernetesie, gdzie zarządza się setkami kontenerów. Do tego chcę poznać narzędzia do monitorowania i pilnowania bezpieczeństwa, żeby lepiej rozumieć, jak utrzymać stabilne i bezpieczne środowisko.

W ramach rozwoju mojego projektu opartego na Dockerze, stworzyłem własny skrypt w Bashu, który automatyzuje proces tworzenia kopii zapasowej mojej strony internetowej (WordPress + MariaDB).

Skrypt działa w następujący sposób:

  • 📂 Archiwizuje wszystkie pliki WordPressa z katalogu var/www/html,

  • 🗄️ Tworzy dump bazy danych MariaDB (mysqldump),

  • 💾 Zapisuje kopie w wybranym przeze mnie  katalogu na dysku zewnętrznym podpiętym do Raspberry Pi,

  • 🧹 Automatycznie usuwa backupy starsze niż 30 dni, żeby oszczędzać miejsce.

Automatyzacja za pomocą crontab

Do uruchamiania mojego skryptu backupu wykorzystałem wbudowany w Linuxa system harmonogramu zadań – crontab.
Dodałem wpis: 0 3 * * 0 /mnt/dysk/backup_wordpres.sh >> /mnt/dysk/backup/backup.log 2>&1

Co oznacza każdy fragment?

  • 0 3 * * 0 – harmonogram uruchamiania:

    • 0 → minuta (00),

    • 3 → godzina (03:00 w nocy),

    • * → każdy dzień miesiąca,

    • * → każdy miesiąc,

    • 0 → niedziela (w cronie dni tygodnia są numerowane od 0 = niedziela do 6 = sobota).

👉 czyli raz w tygodniu w niedzielę o 3:00 w nocy.

  • /mnt/dysk/backup_wordpres.sh – pełna ścieżka do mojego skryptu Bash, który wykonuje backup plików i bazy danych.

  • /mnt/dysk/backup/backup.log 2>&1 – zapisuje wynik działania skryptu (oraz ewentualne błędy) do pliku logów backup.log. Dzięki temu mam pełną historię wykonywania kopii zapasowych i mogę łatwo sprawdzić, czy coś poszło nie tak.

🚀 Co chcę rozwijać dalej

Chcę poszerzyć wiedzę o:

  • bardziej zaawansowane skrypty Bash z obsługą błędów i warunków,

  • użycie zmiennych środowiskowych i plików .env do bezpiecznego przechowywania haseł,

  • integrację skryptów z powiadomieniami (np. e-mail po wykonanym backupie),

  • automatyzację na wyższym poziomie – np. Ansible albo CI/CD (GitHub Actions, GitLab CI).

🏫 School Portal – nowoczesny portal rekrutacyjny dla szkół niepublicznych

Opis projektu:
Projekt School Portal tworzę z myślą o uczniach, którzy chcą łatwo znaleźć szkołę niepubliczną dopasowaną do swoich potrzeb — wszystko w jednym miejscu.
Aplikacja ma umożliwić:

  • 👩‍🎓 uczniom – przeglądanie ofert edukacyjnych wielu szkół i składanie zgłoszeń online,

  • 🏫 szkołom – zarządzanie swoimi profilami, aktualizowanie ogłoszeń i przeglądanie zgłoszeń uczniów,

  • 👨‍💻 administratorowi – nadzór nad systemem i weryfikację szkół przed ich publikacją.

Obecnie projekt jest w fazie aktywnego rozwoju — dopieszczam stronę backendową opartą o Django REST Framework i PostgreSQL, aby w kolejnym etapie przejść do tworzenia frontendowej części aplikacji.
Docelowo interfejs użytkownika ma być intuicyjny, nowoczesny i przyjazny dla uczniów oraz szkół.


Cechy projektu:

  • 🔐 Rejestracja i logowanie użytkowników z wykorzystaniem JWT Authentication

  • 🧩 Dwa typy kont: Uczeń i Szkoła

  • 🏛️ Szkoły oczekują na akceptację przez administratora przed publikacją ogłoszeń

  • 📚 Uczniowie mogą przeglądać oferty i wysyłać zgłoszenia online

  • ⚙️ Backend oparty o Django REST Framework, przygotowany do integracji z frontendem (np. React)

  • 🐳 Uruchamiany w pełni w kontenerach Docker + PostgreSQL

  • 🔧 Konfiguracja środowiska developerskiego z WSL2 i VS Code Remote

  • 🔒 Bezpieczne przechowywanie danych i konfiguracji w pliku .env


Technologie:
Python 3.12 · Django 5.2 · Django REST Framework · PostgreSQL 15 · Docker & Docker Compose · JWT Authentication · WSL2 (Ubuntu)

Status projektu:
🚧 W trakcie prac – aktualnie rozwijana warstwa backendowa, w planach implementacja frontendu.

Link do repozytorium:
👉 GitHub – School Portal