LW IT Solutions
« Blog Overview /Raspberry Pi / Zautomatyzowane wdrożenia Docker na Raspberry Pi: Środowiska...
This post in other languages:

Zautomatyzowane wdrożenia Docker na Raspberry Pi: Środowiska deweloperskie Local-First

Część 3 z 3 serii Homelab na Raspberry Pi

Spis treści
  1. 1. Konteneryzacja środowiska brzegowego za pomocą Docker Compose
  2. 2. Automatyzacja utrzymania: Watchtower a potoki CI/CD
  3. 3. Implementacja potoku wdrożeniowego w GitHub Actions
  4. Podsumowanie
  5. Źródła

Utrzymanie własnych usług — takich jak Home Assistant, Node-RED czy lokalne środowiska śledzenia analitycznego — na platformie Raspberry Pi w klasycznym modelu często wymaga ręcznych aktualizacji oprogramowania oraz doraźnych modyfikacji konfiguracji. Podejście to pochłania znaczny czas administracyjny i generuje ryzyko operacyjne, w tym rozbieżności konfiguracyjne (configuration drift), konflikty zależności oraz nieoczekiwane przestoje.

W celu stworzenia niezawodnej, deterministycznej infrastruktury lokalnej warstwa usług musi zostać ściśle odseparowana od systemu operacyjnego hosta. Pełna konteneryzacja środowiska Smart Home oraz narzędzi analitycznych za pomocą Docker Compose w połączeniu ze zautomatyzowanymi potokami wdrożeniowymi — przy użyciu lokalnego mechanizmu Watchtower lub struktur CI/CD w GitHub Actions — gwarantuje w pełni powtarzalne środowiska brzegowe o zerowym czasie niedostępności.

1. Konteneryzacja środowiska brzegowego za pomocą Docker Compose

Docker Compose stanowi deklaratywną podstawę nowoczesnych architektur Local-First. Zdefiniowanie wszystkich usług, wolumenów trwałych oraz wirtualnych mostków sieciowych w jednym pliku konfiguracyjnym objętym kontrolą wersji zapewnia całkowitą powtarzalność stanu infrastruktury.

# docker-compose.yml: Zintegrowany stos Smart Home i analityki lokalnej
services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - /opt/homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    network_mode: host

  nodered:
    container_name: nodered
    image: nodered/node-red:latest
    environment:
      - TZ=Europe/Warsaw
    volumes:
      - /opt/nodered/data:/data
    ports:
      - "1880:1880"
    restart: unless-stopped

  watchtower:
    container_name: watchtower
    image: containrrr/watchtower:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_SCHEDULE=0 0 4 * * *
    restart: unless-stopped

Uwaga dotycząca stanu utrzymania: pierwotny projekt containrrr/watchtower został zarchiwizowany 17 grudnia 2025 roku i od tego czasu pozostaje w trybie tylko do odczytu, przez co obraz nie otrzymuje kolejnych aktualizacji ani poprawek bezpieczeństwa. Pierwotni opiekunowie nie wskazali oficjalnego następcy. Dalszy rozwój odbywa się w forkach społecznościowych — nickfedor/watchtower (publikowany również jako ghcr.io/nicholas-fedor/watchtower) zachowuje zgodność konfiguracyjną i nadal ukazuje się w regularnych wydaniach. Przed zastosowaniem produkcyjnym warto zatem zweryfikować ścieżkę aktualizacji tej usługi.

W przedstawionej architekturze katalogi z danymi trwałymi znajdują się na zewnętrznej, bezpiecznej przestrzeni dyskowej (np. udziale NAS lub dysku SSD), dzięki czemu aktualizacje kontenerów nigdy nie nadpisują krytycznych konfiguracji ani zebranych danych historycznych.

Diagram do artykułu: Konteneryzacja środowiska brzegowego za pomocą…, Automatyzacja utrzymania: Watchtower a potoki CI/CD, Implementacja potoku wdrożeniowego w GitHub Actions
3 elementów artykułu w skrócie: Konteneryzacja środowiska brzegowego za pomocą…, Automatyzacja utrzymania: Watchtower a potoki CI/CD, Implementacja potoku wdrożeniowego w GitHub Actions.

2. Automatyzacja utrzymania: Watchtower a potoki CI/CD

Automatyzacja procesów wdrożeniowych oraz zarządzania cyklem życia oprogramowania może być realizowana w oparciu o dwa główne wzorce architektoniczne, w zależności od złożoności systemu i wymagań governance:

Wzorzec wdrożeniowyMechanizm wykonawczyOptymalne zastosowanieKluczowa zaleta
Automatyzacja lokalna (Watchtower)Usługa w tle codziennie weryfikuje rejestry obrazów i automatycznie restartuje zaktualizowane kontenery.Standardowe, gotowe obrazy (Home Assistant, Node-RED, Eclipse Mosquitto).Brak konieczności utrzymywania infrastruktury zewnętrznej; w pełni autonomiczna praca.
GitOps / CI/CD (GitHub Actions)Zmiany w kodzie inicjują zdalne potoki wdrożeniowe, które łączą się przez SSH z Raspberry Pi.Własne aplikacje, dedykowane narzędzia analityczne lub infrastruktury rozproszone.Pełna kontrola wersji, automatyczne testy przed wdrożeniem i szybkie wycofywanie zmian.

3. Implementacja potoku wdrożeniowego w GitHub Actions

W przypadku autorskich aplikacji brzegowych lub strukturalnych repozytoriów Infrastructure-as-Code (IaC), wdrożenie przy użyciu GitHub Actions zapewnia pełną historię audytową każdej zmiany konfiguracyjnej. Po opublikowaniu zmian w gałęzi głównej, zautomatyzowany przepływ pracy łączy się bezpiecznie przez SSH z Raspberry Pi, pobiera aktualizacje i przebudowuje stos kontenerów.

# .github/workflows/deploy-edge.yml
name: Deploy Stack to Raspberry Pi

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Execute Remote Deployment via SSH
        uses: appleboy/ssh-action@v1.0.0
        with:
          host: ${{ secrets.RPI_HOST }}
          username: ${{ secrets.RPI_USER }}
          key: ${{ secrets.RPI_SSH_KEY }}
          script: |
            cd /opt/edge-stack
            git pull origin main
            docker compose pull
            docker compose up -d --remove-orphans
            docker system prune -f

Podsumowanie

Przekształcenie Raspberry Pi z ręcznie konfigurowanego komputera jednopłytkowego w zautomatyzowany, skonteneryzowany serwer brzegowy redukuje narzut administracyjny do minimum. Zarówno autonomiczne aktualizacje realizowane przez Watchtower, jak i deterministyczne wdrożenia GitOps w GitHub Actions gwarantują stabilne, bezpieczne i niewymagające stałego nadzoru środowisko operacyjne dla systemów Smart Home oraz infrastruktury analitycznej.

Homelab na Raspberry Pi

  1. Przyspiesz swoje Raspberry Pi 4 i 5: Jak uruchomić system z dysku SSD
  2. Zasilanie awaryjne (UPS) dla Raspberry Pi 4 i 5: Top 5 urządzeń do wymagających projektów
  3. Zautomatyzowane wdrożenia Docker na Raspberry Pi: Środowiska deweloperskie Local-First
Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

ALL ARTICLES & CATEGORIES

CCTV

Śledź tę kategorię przez RSS

Data Privacy

Śledź tę kategorię przez RSS

Digital Analytics

Śledź tę kategorię przez RSS

Digital Marketing

Śledź tę kategorię przez RSS

IT & Networks

Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

Smart Home

Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Śledź tę kategorię przez RSS

Wordpress Hacks

Śledź tę kategorię przez RSS