Moja historia

Moja droga od pracy ze sprzętem, przez pisanie prostych aplikacji, do projektowania i utrzymania własnej infrastruktury.

2021

Rok 2021 to moment, w którym technologia przestała być dla mnie tylko narzędziem, a stała się pasją.

Sprzęt

2021 to rok, w którym na poważnie zacząłem moją przygodę z technologią. Zajmowałem się wtedy głównie sprzętem:

  • W samym środku kryzysu na rynku kart graficznych złożyłem stację roboczą. Z drobnymi modyfikacjami (wymiana uszkodzonego RAM-u, upgrade GPU) służy mi ona bezawaryjnie do dziś.

  • W laptopie zmigrowałem system z dysku HDD na SSD.

    • Pozwoliło to na optymalizację czasu uruchomienia z 1:50 min do 15 sekund.
    • Ciekawostka: Dyski klonowałem bezpośrednio przez SATA, bez dedykowanego sprzętu.

2023

W 2023 roku rozpocząłem naukę w technikum na profilu Technik programista. Było to impulsem do nauki profesjonalnych języków programowania takich jak JavaScript czy PHP.

Pierwszy kod

  • Podstawy CRUD: moje pierwsze projekty skupiały się na zrozumieniu komunikacji między frontendem a bazą danych.
  • Podstawy logiki aplikacji: nauka obsługi sesji i podstawowych operacji na danych.
<?php
 
session_start();
 
require_once "dbconnect.php";
 
$connect = new mysqli($host, $user, $pass, $name);
 
if ($connect->connect_error) {
    $_SESSION =  "Error: " . $connect->connect_errno;
} else {
    $query = "SELECT * FROM zadania";
 
    if ($result = $connect->query($query)) {
 
        if ($result->num_rows > 0) {
            echo "<table>";
            echo "<tr>
                    <th>ID. Zadania:</th>
                    <th>Opis zadania:</th>
                    <th>Data utworzenia:</th>
                    <th>Termin zadania:</th>
                  </tr>";
            while ($row = $result->fetch_assoc()) {
                echo "<tr>
                        <td>" . $row["idzadania"] . "</td>
                        <td>" . $row["zadanie"] . "</td>
                        <td>" . $row["data_zapisu"] . "</td>
                        <td>" . $row["termin"] . "</td>
                      </tr>";
            }
            echo "</table>";
        } else {
            echo "<b>Tabela jest pusta.</b>";
        }
 
        $result->close();
 
    } else {
        $_SESSION = "Nieprawidłowa kwerenda.";
    }
 
    $connect->close();
}

Początki administracji i hostingu

Równolegle z nauką programowania, zacząłem zgłębiać temat utrzymania usług. Moim poligonem doświadczalnym były serwery Minecraft, które hostowałem dla znajomych.

Te skromne początki w Windowsowym CMD były bezpośrednim impulsem do późniejszego przejścia na Linuxa, konteneryzację w Dockerze i ostatecznie do zbudowania własnego homelabu opartego na Proxmoxie.

2024

W 2024 roku nastąpił przełom w moim podejściu. Zrozumiałem, że kod nie istnieje w próżni, tylko jest jednym z elementów większej układanki. Doświadczenia z hostowaniem serwerów gier na Windowsie pokazały mi, że potrzebuję profesjonalnych narzędzi do zarządzania i hostowania aplikacji.

Homelab

  • Wdrożyłem pierwszy serwer wirtualizacji oparty na Proxmox VE, tworząc tym samym pierwszy homelab.

  • Poczyniłem pierwsze kroki w konfigurowaniu sieci (VLAN-y, Podsieci, Port Forwarding, itp.).

Organizacja pracy

Nauczyłem się pracować z systemem Git. Przeniesienie projektów na GitHub wymusiło na mnie naukę czystszego kodu oraz dokumentowania zmian.

Rozwój umiejętności programistycznych

Wraz ze zmianą podejścia zacząłem również zwracać większą uwagę na jakość kodu i strukturę projektów. Moje aplikacje przestały być jednorazowymi skryptami, a zaczęły przypominać spójne, rozwijalne systemy.

Przykładem jest jeden z projektów z tego okresu - aplikacja internetowa do tworzenia i zarządzania quizami:

2025

Rok 2025 był spokojniejszy - skupiłem się na uporządkowaniu wiedzy i potwierdzeniu jej w praktyce.

Egzamin zawodowy

Egzamin INF.03: uzyskałem 97% z egzaminu praktycznego, co było formalnym potwierdzeniem moich umiejętności.

Projekty

  • Lepsza konfiguracja środowiska: zacząłem wykorzystywać bibliotekę Dotenv w projektach PHP, co pozwoliło na lepszą strukturę organizacyjną projektu i separację danych wrażliwych.
<?php
 
session_start();
 
require "../vendor/autoload.php";
use Dotenv\Dotenv;
 
$dotenv = Dotenv::createImmutable("../");
$dotenv->load();
 
try{
 
    $connect = new mysqli($_ENV['DB_HOST'], $_ENV['DB_USER'], $_ENV['DB_PASS'], $_ENV['DB_NAME']);
 
    if($connect->connect_error){
        throw new Exception();
    } else {
        $query = "SELECT * FROM accounts";
        if($result = $connect->query($query)){
            if($result->num_rows != 0){
                header('Location: /');
                $result->free();
                $connect->close();
                exit();
            }
            $result->free();
        } else {
            throw new Exception();
        }
        $connect->close();
    }
 
} catch (Exception $e){
    $_SESSION['login_error'] = "Błąd serwera.";
    file_put_contents('../logs/error.log', date("Y-m-d H:i:s - ") . $e->getMessage() . PHP_EOL, FILE_APPEND | LOCK_EX);
}
  • Bezpieczeństwo: przeprowadziłem audyt własnych projektów. To wtedy wyeliminowałem błędy takie jak brak zabezpieczenia plików .env przez .htaccess.
RewriteEngine On
 
RewriteRule (^|/)\.env$ - [F,L]
  • Conventional Commits: wraz z rosnącą liczbą utrzymywanych projektów, wdrożyłem standard semantycznych commitów w celu lepszej dokumentacji zmian.

2026

Obecnie mój rozwój koncentruje się na łączeniu umiejętności programistycznych z zaawansowaną administracją systemami.

Rozwój homelabu

Obecnie rozwijam własną infrastrukturę homelabową, skupiając się na automatyzacji, backupach i bezpieczeństwie usług.

Co zmieniłem w 2026:

  • Dodałem drugiego node'a, na którym zainstalowałem Proxmox Backup Server i skonfigurowałem optymalny system backupów.
  • Zautomatyzowałem aktualizację usług w Dockerze z użyciem Renovate, na wzór metodologii GitOps. Skonfigurowałem Renovate, tak aby automatycznie otwierał Pull Requesty z aktualizacjami tagów obrazów Dockera. Przy okazji zrobiłem refactor plików docker-compose.yml migrując named volumes na bind mounty w celu uporządkowania danych.
  • Poprawiłem system monitorowania, poprzez wdrożenie Pulse, rekonfigurację BetterStacka i dopracowanie systemu powiadomień mailowych.
  • Dopracowałem reguły firewalla dla krytycznych maszyn.

Szczegółowy opis tych wdrożeń znajdziesz w opisie mojego homelabu.

Pozostałe osiągnięcia

Podsumowanie

Z czasem przeszedłem od pracy ze sprzętem, przez pisanie prostych aplikacji, do projektowania i utrzymania własnej infrastruktury.

Powiązane linki