Update README.md

This commit is contained in:
Paweł Orzech 2025-08-03 13:07:44 +02:00
parent cc30aa668c
commit 05a6c435fb

103
README.md
View file

@ -1,8 +1,8 @@
<p align="center">
<a href="#">
<img src="https://img.shields.io/badge/AutoScript-v4.0-blue.svg" alt="AutoScript Version">
<img src="https://img.shields.io/badge/AutoScript-v4.1-blue.svg" alt="AutoScript Version">
</a>
<a href="#6-licencja">
<a href="#8-licencja">
<img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License">
</a>
<a href="#">
@ -10,45 +10,85 @@
</a>
</p>
<h1 align="center">AutoScript: Zautomatyzowana Platforma Mastodon</h1>
<h1 align="center">AutoScript: Zautomatyzowana Platforma Serwerowa</h1>
**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.