autoscript/README.md
Paweł Orzech ee90c4b52d Wprowadzenie modularności i kompleksowa rozbudowa skryptu (v2.0)
1 Przeprowadzono gruntowną refaktoryzację i rozbudowę skryptu, przekształcając go w modularne i w pełni funkcjonalne narzędzie do
      zarządzania cyklem życia serwera.
    2
    3 Kluczowe zmiany w tej wersji (v2.0):
    4
    5 - **Modularna architektura**: Skrypt obsługuje teraz komendy (np. `install`, `uninstall`, `deploy_monitoring`), co pozwala na
      elastyczne zarządzanie poszczególnymi komponentami bez potrzeby uruchamiania całości.
    6
    7 - **Idempotentność**: Wszystkie operacje sprawdzają stan systemu przed wykonaniem, co gwarantuje bezpieczeństwo i
      przewidywalność przy wielokrotnym uruchamianiu.
    8
    9 - **Separacja konfiguracji**: Konfiguracje usług (Docker Compose, Prometheus itp.) zostały przeniesione do folderu `templates/`,
      oddzielając logikę skryptu od danych konfiguracyjnych.
   10
   11 - **Nowe moduły opcjonalne**: Dodano możliwość łatwej instalacji i konfiguracji:
   12   - `Fail2ban` dla dodatkowego bezpieczeństwa.
   13   - Bazy danych `PostgreSQL`.
   14   - Systemu agregacji logów `Loki`.
   15   - Systemu kopii zapasowych `Restic`.
   16
   17 - **Ulepszone logowanie i bezpieczeństwo**: Skrypt weryfikuje kompatybilność OS, a wszystkie jego działania są logowane do pliku
      `/var/log/autoscript.log`.
   18
   19 - **Funkcja `uninstall`**: Dodano możliwość czystego i bezpiecznego usunięcia wszystkich komponentów wdrożonych przez skrypt.
   20
   21 - **Aktualizacja dokumentacji**: `README.md` i `CHANGELOG.md` zostały w pełni zaktualizowane, aby odzwierciedlać nową
      funkcjonalność.
   22
   23 Ta wersja stanowi kamień milowy w rozwoju projektu, czyniąc go potężnym i niezawodnym narzędziem dla administratorów.
2025-08-03 12:43:29 +02:00

4.4 KiB

AutoScript v2 - Zautomatyzowana Konfiguracja i Zarządzanie Serwerem

1. Przegląd

AutoScript to potężne narzędzie do automatyzacji pełnego cyklu życia serwera opartego o system Debian/Ubuntu. Skrypt przekształca "surowy" serwer w gotowe do pracy, zabezpieczone i monitorowane środowisko produkcyjne. Dzięki modularnej budowie, możesz używać go zarówno do wstępnej konfiguracji, jak i do późniejszego zarządzania poszczególnymi komponentami.

2. Główne Funkcje

  • Modularność: Uruchamiaj tylko te części skryptu, których potrzebujesz (install, deploy_monitoring, uninstall itp.).
  • Automatyzacja i Idempotentność: Skrypt można bezpiecznie uruchamiać wielokrotnie - zawsze doprowadzi system do pożądanego stanu.
  • Hardening (Wzmacnianie Zabezpieczeń): Kompleksowe zabezpieczenie serwera, w tym firewall, niestandardowy port SSH, blokada roota, uwierzytelnianie kluczem, CrowdSec i opcjonalnie Fail2ban.
  • Środowisko Docker: Wdrożenie Dockera z Traefikiem jako reverse proxy i automatycznymi certyfikatami SSL.
  • Monitoring i Alerty: Pełny stos monitoringu (Prometheus, Grafana, Alertmanager) z prekonfigurowanymi regułami.
  • Zarządzanie Sekretami: Bezpieczne przechowywanie haseł i kluczy API dzięki sops.
  • Funkcje Opcjonalne: Możliwość łatwego doinstalowania bazy danych PostgreSQL, systemu logów Loki czy kopii zapasowych Restic.
  • Czysta Deinstalacja: Możliwość wycofania wszystkich zmian za pomocą jednej komendy.

3. Struktura Projektu

autoscript/
├── templates/           # Szablony plików konfiguracyjnych
│   ├── monitoring/
│   └── traefik/
├── autoscript.conf.example # Przykład pliku konfiguracyjnego
├── CHANGELOG.md         # Dziennik zmian
├── README.md            # Ta dokumentacja
└── start.sh             # Główny skrypt wykonawczy

4. Użycie

Krok 1: Konfiguracja

  1. Sklonuj repozytorium na serwer: git clone ...
  2. Przejdź do folderu: cd autoscript
  3. Stwórz plik konfiguracyjny z szablonu: cp autoscript.conf.example autoscript.conf
  4. Otwórz autoscript.conf i dokładnie wypełnij wszystkie zmienne, zwłaszcza te w sekcji WYMAGANE.

Krok 2: Uruchomienie Skryptu

Skryptem zarządza się za pomocą komend. Wszystkie komendy należy wykonywać z uprawnieniami root (np. sudo ./start.sh <komenda>).

Główne Komendy:

  • sudo ./start.sh install Pełna, pierwsza instalacja. Wykonuje wszystkie niezbędne kroki: instaluje pakiety, konfiguruje zabezpieczenia, wdraża Dockera, Traefika i stos monitoringu. Uruchom tę komendę na nowym serwerze.

  • sudo ./start.sh uninstall Pełna deinstalacja. Zatrzymuje i usuwa wszystkie usługi, kontenery, wolumeny, a także odinstalowuje pakiety i wycofuje zmiany konfiguracyjne. Używaj z ostrożnością!

Komendy do Zarządzania Modułami:

Możesz zarządzać poszczególnymi częściami systemu niezależnie.

  • sudo ./start.sh deploy_traefik
  • sudo ./start.sh deploy_monitoring
  • sudo ./start.sh deploy_database (jeśli włączone w konfigu)

Komendy Pomocnicze:

  • sudo ./start.sh reboot - Bezpieczny restart serwera.
  • sudo ./start.sh update - Aktualizacja pakietów systemowych.

5. Opis Modułów Opcjonalnych

Możesz włączyć je w pliku autoscript.conf.

  • Fail2ban: Dodatkowa ochrona, która analizuje logi i blokuje adresy IP wykazujące złośliwą aktywność (np. próby logowania brute-force).
  • PostgreSQL: Wdraża kontener z popularną bazą danych. Hasło jest zarządzane przez sops.
  • Loki: System do agregacji logów z Twoich kontenerów. Umożliwia ich wygodne przeszukiwanie w Grafanie.
  • Restic Backup: Instaluje i konfiguruje restic do tworzenia regularnych, szyfrowanych kopii zapasowych do chmury (np. AWS S3, Backblaze B2). Wymaga dodatkowej konfiguracji po stronie dostawcy chmury!

6. Co robić po instalacji?

Po zakończeniu komendy install:

  1. Nowy Port SSH: Został zmieniony na losowy. Znajdziesz go w pliku /root/ssh_port.txt.
  2. Logowanie: Logowanie na root jest zablokowane. Użyj użytkownika admin z Twoim kluczem SSH i nowym portem: ssh admin@<IP> -p <PORT>.
  3. TOTP (2FA): Przy pierwszym użyciu sudo zostaniesz poproszony o skonfigurowanie aplikacji do uwierzytelniania (np. Google Authenticator).
  4. Dostęp do usług: Usługi będą dostępne pod subdomenami Twojej domeny (np. https://grafana.twojadomena.pl).