diff --git a/README.md b/README.md index e3b8c4a..b64759e 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@

- AutoScript Version + AutoScript Version - + License @@ -10,45 +10,85 @@

-

AutoScript: Zautomatyzowana Platforma Mastodon

+

AutoScript: Zautomatyzowana Platforma Serwerowa

-**AutoScript to w pełni zautomatyzowane, bezpieczne i gotowe do użycia rozwiązanie do wdrażania i zarządzania serwerem Mastodon oraz jego kompletnym środowiskiem.** Zapomnij o ręcznej konfiguracji – ten projekt przekształca "surowy" serwer w gotową do pracy, zabezpieczoną i monitorowaną platformę za pomocą kilku prostych komend. +**AutoScript to w pełni zautomatyzowane, bezpieczne i gotowe do użycia rozwiązanie do wdrażania i zarządzania kompletnym środowiskiem serwerowym.** Projekt ten przekształca "surowy" serwer w gotową do pracy, zabezpieczoną i monitorowaną platformę, na której główną, przykładową aplikacją jest **Mastodon**. --- ## Spis Treści -1. [Filozofia Projektu](#1-filozofia-projektu) -2. [Kluczowe Funkcje](#2-kluczowe-funkcje) -3. [Architektura w Pigułce](#3-architektura-w-pigułce) -4. [Instalacja (Szybki Start)](#4-instalacja-szybki-start) -5. [Przewodnik po Komendach](#5-przewodnik-po-komendach) +1. [Architektura Platformy: Co zostanie zainstalowane?](#1-architektura-platformy-co-zostanie-zainstalowane) +2. [Przewodnik Konfiguracyjny: Zdobywanie Kluczy](#2-przewodnik-konfiguracyjny-zdobywanie-kluczy) +3. [Instalacja (Szybki Start)](#3-instalacja-szybki-start) +4. [Przewodnik po Komendach](#4-przewodnik-po-komendach) +5. [Aspekty Bezpieczeństwa](#5-aspekty-bezpieczeństwa) 6. [Licencja](#6-licencja) --- -## 1. Filozofia Projektu +## 1. Architektura Platformy: Co zostanie zainstalowane? -- **Automatyzacja ponad wszystko**: Od instalacji pakietów, przez hardening systemu, po wdrożenie Mastodona – wszystko jest zautomatyzowane. -- **Bezpieczeństwo Domyślnie (Secure by Default)**: Wdrażamy najlepsze praktyki bezpieczeństwa od samego początku, nie jako opcję. -- **Idempotentność i Niezawodność**: Skrypt można bezpiecznie uruchamiać wielokrotnie. Zawsze doprowadzi system do pożądanego stanu. +AutoScript buduje wielowarstwową, nowoczesną platformę serwerową. Oto komponenty, które zostaną wdrożone i skonfigurowane: -## 2. Kluczowe Funkcje +| Warstwa | Komponent | Rola w Systemie | +| ------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| **Aplikacja** | **Mastodon** | Główna aplikacja platformy – zdecentralizowana sieć społecznościowa. | +| **Baza Danych** | **PostgreSQL** | Niezawodna, obiektowo-relacyjna baza danych, wymagana przez Mastodona. | +| **Proxy i SSL** | **Traefik** | Nowoczesny reverse proxy, który automatycznie zarządza ruchem i certyfikatami SSL od Let's Encrypt. | +| **Konteneryzacja** | **Docker** | Platforma do uruchamiania wszystkich aplikacji w izolowanych, bezpiecznych kontenerach. | +| **Monitoring** | **Prometheus** | System do zbierania metryk wydajnościowych ze wszystkich komponentów platformy. | +| | **Grafana** | Narzędzie do wizualizacji metryk zebranych przez Prometheus w formie pięknych i czytelnych dashboardów. | +| | **Alertmanager** | System do wysyłania powiadomień (e-mail) w razie wykrycia problemów (np. wysokiego użycia CPU). | +| **Logowanie** | **Loki & Promtail** | System do centralnego zbierania i przeszukiwania logów ze wszystkich aplikacji i z samego systemu operacyjnego. | +| **Bezpieczeństwo** | **UFW, Hardened SSH, CrowdSec, Fail2ban** | Wielowarstwowy system zabezpieczeń: firewall, wzmocnione SSH, proaktywna ochrona przed włamaniami. | -- **Automatyczne Wdrożenie Mastodona**: Pełna instalacja i konfiguracja Mastodona, włącznie z bazą danych i Redis. -- **Hardening Systemu**: Wzmacnianie zabezpieczeń SSH, firewall UFW, `CrowdSec` i `Fail2ban`. -- **Zintegrowany Monitoring i Logowanie**: Pełny stos monitoringu (Prometheus, Grafana) i logów (Loki, Promtail) z automatycznym odkrywaniem usług. -- **Automatyczne Certyfikaty SSL**: Integracja Traefika z Let's Encrypt i Cloudflare. -- **Bezpieczne Zarządzanie Sekretami**: Szyfrowanie wszystkich wrażliwych danych za pomocą `sops`. -- **Walidacja Konfiguracji**: Sprawdzanie poprawności ustawień przed wprowadzeniem zmian w systemie. +## 2. Przewodnik Konfiguracyjny: Zdobywanie Kluczy -## 3. Architektura w Pigułce +Plik `autoscript.conf` wymaga podania dwóch kluczowych informacji. Oto jak je zdobyć: -- **Modularność**: Każdą operację wykonuje się dedykowaną komendą (np. `./start.sh deploy_traefik`). -- **Idempotentność**: Skrypt śledzi ukończone instalacje. Można go bezpiecznie uruchamiać wielokrotnie. -- **Walidacja "Pre-flight"**: Komenda `validate` sprawdza poprawność konfiguracji *przed* dokonaniem jakichkolwiek zmian. +### Klucz Publiczny SSH (`PUBLIC_KEY`) -## 4. Instalacja (Szybki Start) +Klucz SSH służy do bezpiecznego logowania na serwer bez hasła. Skrypt zablokuje logowanie hasłem, więc ten krok jest **niezbędny**. + +**1. Sprawdź, czy masz już klucz:** + +```bash +ls ~/.ssh/id_ed25519.pub +``` + +Jeśli plik istnieje, przejdź do kroku 2. Jeśli nie, **wygeneruj nowy klucz**, wpisując w terminalu na **swoim lokalnym komputerze**: + +```bash +ssh-keygen -t ed25519 -C "twoj_email@example.com" +``` + +Naciśnij Enter, aby zaakceptować domyślną lokalizację zapisu. Możesz opcjonalnie podać hasło do klucza dla dodatkowego bezpieczeństwa. + +**2. Wyświetl i skopiuj klucz publiczny:** + +```bash +cat ~/.ssh/id_ed25519.pub +``` + +Skopiuj **całą wyświetloną linię** (zaczynającą się od `ssh-ed25519 ...`) i wklej ją jako wartość zmiennej `PUBLIC_KEY` w pliku `autoscript.conf`. + +### Token API Cloudflare (`CF_DNS_API_TOKEN`) + +Ten token pozwala Traefikowi na automatyczne potwierdzenie, że jesteś właścicielem domeny, co jest niezbędne do generowania certyfikatów SSL. + +1. **Zaloguj się** na swoje konto [Cloudflare](https://dash.cloudflare.com). +2. Przejdź do sekcji **"My Profile"** (w prawym górnym rogu) > **"API Tokens"**. + - *Bezpośredni link:* [https://dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens) +3. Kliknij przycisk **"Create Token"**. +4. Znajdź szablon **"Edit zone DNS"** i kliknij **"Use template"**. +5. Skonfiguruj token: + - **Permissions**: Upewnij się, że jest `Zone:DNS:Edit`. + - **Zone Resources**: Wybierz `Include` > `Specific zone` > i wybierz z listy swoją domenę (`social.ovh` w domyślnej konfiguracji). +6. Kliknij **"Continue to summary"**, a następnie **"Create Token"**. +7. **Skopiuj wygenerowany token.** To jedyny moment, kiedy jest on w pełni widoczny. Wklej go jako wartość zmiennej `CF_DNS_API_TOKEN` w pliku `autoscript.conf`. + +## 3. Instalacja (Szybki Start) 1. **Zaloguj się jako `root` na nowym serwerze (Debian/Ubuntu).** 2. **Zainstaluj `git` i sklonuj repozytorium:** @@ -59,7 +99,7 @@ 3. **Skonfiguruj AutoScript:** ```bash cp autoscript.conf.example autoscript.conf - nano autoscript.conf # Wypełnij wszystkie zmienne + nano autoscript.conf # Wypełnij zmienne zgodnie z przewodnikiem powyżej ``` 4. **Sprawdź poprawność konfiguracji:** ```bash @@ -70,7 +110,7 @@ sudo ./start.sh install ``` -## 5. Przewodnik po Komendach +## 4. Przewodnik po Komendach | Komenda | Opis | | ----------------------- | -------------------------------------------------------------------------------------- | @@ -84,6 +124,15 @@ | `self-update` | Aktualizuje skrypt AutoScript do najnowszej wersji z repozytorium Git. | | `uninstall` | **Niebezpieczne!** Usuwa wszystkie komponenty, dane i konfiguracje stworzone przez skrypt. | +## 5. Aspekty Bezpieczeństwa + +AutoScript traktuje bezpieczeństwo jako fundamentalny element. + +- **Hardening Systemu**: Skrypt automatycznie zmienia domyślny port SSH, blokuje logowanie na konto `root`, wyłącza logowanie hasłem (wymuszając użycie kluczy SSH) i konfiguruje uwierzytelnianie dwuetapowe (TOTP) dla komendy `sudo`. +- **Firewall (UFW)**: Konfigurowana jest zapora sieciowa, która domyślnie blokuje cały ruch przychodzący, otwierając tylko niezbędne porty. +- **Ochrona przed Włamaniami**: Instalowany jest `CrowdSec` (nowoczesny, oparty na reputacji IPS) oraz `Fail2ban` (klasyczna ochrona logów). +- **Bezpieczeństwo Kontenerów**: Docker jest konfigurowany z `userns-remap`, co znacząco ogranicza potencjalne szkody w razie "ucieczki" z kontenera. + ## 6. Licencja -Projekt jest udostępniany na licencji MIT. +Projekt jest udostępniany na licencji MIT. \ No newline at end of file