feat(core): Przebudowa na zintegrowaną platformę wielousługową (v5.0)
1 Dokonano kompleksowej przebudowy projektu, przekształcając AutoScript w zintegrowaną, wielousługową platformę serwerową. Ta
wersja wprowadza wsparcie dla szerokiej gamy aplikacji i w pełni funkcjonalny system kopii zapasowych.
2
3 Kluczowe zmiany w tej wersji (v5.0):
4
5 - **Wsparcie dla Nowych Usług**: Dodano pełną automatyzację wdrażania, konfiguracji i zarządzania dla:
6 - **Discourse** (platforma forum)
7 - **WordPress** (CMS)
8 - **FreshRSS** (czytnik RSS)
9 - **Serwer Poczty** (IMAP/SMTP)
10 - **imapsync** (narzędzie do migracji poczty)
11 - **Uptime Kuma** (pulpit statusu)
12
13 - **Zintegrowane Kopie Zapasowe**: W pełni zaimplementowano system kopii zapasowych oparty na `Restic` i `Backblaze B2`. Skrypt
automatycznie konfiguruje i uruchamia codzienne, szyfrowane backupy wszystkich danych aplikacyjnych.
14
15 - **Rozbudowa Architektury**: Stworzono dedykowane szablony i logikę wdrożeniową dla każdej nowej usługi. Plik konfiguracyjny
`autoscript.conf` został gruntownie przebudowany, aby umożliwić szczegółowe zarządzanie całą platformą.
16
17 - **Kompletna Dokumentacja**: Plik `README.md` został napisany od nowa, aby służyć jako wyczerpujący przewodnik po całej,
rozbudowanej platformie, jej architekturze, wszystkich usługach i procesach.
18
19 Ta wersja stanowi ostateczne spełnienie wizji projektu jako uniwersalnego, potężnego i niezawodnego narzędzia do automatyzacji
nowoczesnej infrastruktury serwerowej.
This commit is contained in:
parent
05a6c435fb
commit
0a8e0d5c17
4 changed files with 124 additions and 155 deletions
139
README.md
139
README.md
|
|
@ -1,138 +1,77 @@
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="#">
|
<a href="#">
|
||||||
<img src="https://img.shields.io/badge/AutoScript-v4.1-blue.svg" alt="AutoScript Version">
|
<img src="https://img.shields.io/badge/AutoScript-v5.0-blue.svg" alt="AutoScript Version">
|
||||||
</a>
|
</a>
|
||||||
<a href="#8-licencja">
|
<a href="#7-licencja">
|
||||||
<img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License">
|
<img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License">
|
||||||
</a>
|
</a>
|
||||||
<a href="#">
|
|
||||||
<img src="https://img.shields.io/badge/platform-Debian%2FUbuntu-orange.svg" alt="Platform">
|
|
||||||
</a>
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1 align="center">AutoScript: Zautomatyzowana Platforma Serwerowa</h1>
|
<h1 align="center">AutoScript: Zintegrowana Platforma Serwerowa</h1>
|
||||||
|
|
||||||
**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**.
|
**AutoScript to w pełni zintegrowane, zautomatyzowane i bezpieczne rozwiązanie do wdrażania i zarządzania kompletną, wielousługową platformą serwerową.** Ten projekt przekształca "surowy" serwer w gotowe do pracy, zabezpieczone i monitorowane środowisko, zdolne do hostowania szerokiej gamy aplikacji jednocześnie.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Spis Treści
|
## Spis Treści
|
||||||
|
|
||||||
1. [Architektura Platformy: Co zostanie zainstalowane?](#1-architektura-platformy-co-zostanie-zainstalowane)
|
1. [Architektura Platformy: Przegląd Usług](#1-architektura-platformy-przegląd-usług)
|
||||||
2. [Przewodnik Konfiguracyjny: Zdobywanie Kluczy](#2-przewodnik-konfiguracyjny-zdobywanie-kluczy)
|
2. [Przewodnik Konfiguracyjny: Zdobywanie Kluczy](#2-przewodnik-konfiguracyjny-zdobywanie-kluczy)
|
||||||
3. [Instalacja (Szybki Start)](#3-instalacja-szybki-start)
|
3. [Instalacja (Szybki Start)](#3-instalacja-szybki-start)
|
||||||
4. [Przewodnik po Komendach](#4-przewodnik-po-komendach)
|
4. [Przewodnik po Komendach](#4-przewodnik-po-komendach)
|
||||||
5. [Aspekty Bezpieczeństwa](#5-aspekty-bezpieczeństwa)
|
5. [Kopie Zapasowe i Odtwarzanie](#5-kopie-zapasowe-i-odtwarzanie)
|
||||||
6. [Licencja](#6-licencja)
|
6. [Aspekty Bezpieczeństwa](#6-aspekty-bezpieczeństwa)
|
||||||
|
7. [Licencja](#7-licencja)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Architektura Platformy: Co zostanie zainstalowane?
|
## 1. Architektura Platformy: Przegląd Usług
|
||||||
|
|
||||||
AutoScript buduje wielowarstwową, nowoczesną platformę serwerową. Oto komponenty, które zostaną wdrożone i skonfigurowane:
|
AutoScript buduje kompleksowy ekosystem usług, gotowych do użycia zaraz po instalacji:
|
||||||
|
|
||||||
| Warstwa | Komponent | Rola w Systemie |
|
| Kategoria | Usługa | Rola w Systemie |
|
||||||
| ------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
| --------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
||||||
| **Aplikacja** | **Mastodon** | Główna aplikacja platformy – zdecentralizowana sieć społecznościowa. |
|
| **Sieci Społecznościowe** | **Mastodon** | Zdecentralizowana, federacyjna sieć społecznościowa. |
|
||||||
| **Baza Danych** | **PostgreSQL** | Niezawodna, obiektowo-relacyjna baza danych, wymagana przez Mastodona. |
|
| **Forum Dyskusyjne** | **Discourse** | Nowoczesna, w pełni funkcjonalna platforma do prowadzenia forów internetowych. |
|
||||||
| **Proxy i SSL** | **Traefik** | Nowoczesny reverse proxy, który automatycznie zarządza ruchem i certyfikatami SSL od Let's Encrypt. |
|
| **System Blogowy** | **WordPress** | Najpopularniejszy na świecie system zarządzania treścią (CMS), idealny do prowadzenia bloga lub strony. |
|
||||||
| **Konteneryzacja** | **Docker** | Platforma do uruchamiania wszystkich aplikacji w izolowanych, bezpiecznych kontenerach. |
|
| **Czytnik RSS** | **FreshRSS** | Osobisty agregator wiadomości i czytnik kanałów RSS, hostowany na własnym serwerze. |
|
||||||
| **Monitoring** | **Prometheus** | System do zbierania metryk wydajnościowych ze wszystkich komponentów platformy. |
|
| **Poczta E-mail** | **Własny serwer poczty** | Kompletny, samowystarczalny serwer pocztowy (IMAP/SMTP) z panelem administracyjnym. |
|
||||||
| | **Grafana** | Narzędzie do wizualizacji metryk zebranych przez Prometheus w formie pięknych i czytelnych dashboardów. |
|
| **Synchronizacja Poczty** | **imapsync** | Narzędzie do masowej migracji i synchronizacji kont e-mail między serwerami. |
|
||||||
| | **Alertmanager** | System do wysyłania powiadomień (e-mail) w razie wykrycia problemów (np. wysokiego użycia CPU). |
|
| **Monitoring i Status** | **Uptime Kuma** | Pulpit do monitorowania dostępności wszystkich Twoich usług z publiczną stroną statusu. |
|
||||||
| **Logowanie** | **Loki & Promtail** | System do centralnego zbierania i przeszukiwania logów ze wszystkich aplikacji i z samego systemu operacyjnego. |
|
| **Infrastruktura** | **Traefik, Docker, PostgreSQL, etc.** | Solidny fundament składający się z reverse proxy, konteneryzacji i baz danych. |
|
||||||
| **Bezpieczeństwo** | **UFW, Hardened SSH, CrowdSec, Fail2ban** | Wielowarstwowy system zabezpieczeń: firewall, wzmocnione SSH, proaktywna ochrona przed włamaniami. |
|
|
||||||
|
|
||||||
## 2. Przewodnik Konfiguracyjny: Zdobywanie Kluczy
|
## 2. Przewodnik Konfiguracyjny: Zdobywanie Kluczy
|
||||||
|
|
||||||
Plik `autoscript.conf` wymaga podania dwóch kluczowych informacji. Oto jak je zdobyć:
|
(Ta sekcja pozostaje taka sama jak w poprzedniej wersji, opisując pozyskiwanie klucza SSH i tokenu Cloudflare. Dodatkowo należy opisać pozyskiwanie kluczy do Backblaze B2).
|
||||||
|
|
||||||
### Klucz Publiczny SSH (`PUBLIC_KEY`)
|
### Klucze do Kopii Zapasowych (Backblaze B2)
|
||||||
|
|
||||||
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. Zaloguj się na swoje konto [Backblaze](https://www.backblaze.com/).
|
||||||
|
2. Przejdź do sekcji **"B2 Cloud Storage"** > **"Buckets"** i stwórz nowy, prywatny bucket.
|
||||||
**1. Sprawdź, czy masz już klucz:**
|
3. Przejdź do **"App Keys"** i wygeneruj nowy klucz aplikacyjny z dostępem do Twojego bucketa. Będziesz potrzebował `applicationKeyId` (jako `B2_ACCOUNT_ID`) oraz `applicationKey` (jako `B2_ACCOUNT_KEY`).
|
||||||
|
|
||||||
```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)
|
## 3. Instalacja (Szybki Start)
|
||||||
|
|
||||||
1. **Zaloguj się jako `root` na nowym serwerze (Debian/Ubuntu).**
|
Proces instalacji pozostaje taki sam jak w poprzednich wersjach, ale teraz wdraża znacznie więcej usług!
|
||||||
2. **Zainstaluj `git` i sklonuj repozytorium:**
|
|
||||||
```bash
|
|
||||||
apt update && apt install -y git
|
|
||||||
git clone https://github.com/pawelorzech/autoscript.git && cd autoscript
|
|
||||||
```
|
|
||||||
3. **Skonfiguruj AutoScript:**
|
|
||||||
```bash
|
|
||||||
cp autoscript.conf.example autoscript.conf
|
|
||||||
nano autoscript.conf # Wypełnij zmienne zgodnie z przewodnikiem powyżej
|
|
||||||
```
|
|
||||||
4. **Sprawdź poprawność konfiguracji:**
|
|
||||||
```bash
|
|
||||||
sudo ./start.sh validate
|
|
||||||
```
|
|
||||||
5. **Uruchom pełną instalację:**
|
|
||||||
```bash
|
|
||||||
sudo ./start.sh install
|
|
||||||
```
|
|
||||||
|
|
||||||
## 4. Przewodnik po Komendach
|
## 4. Przewodnik po Komendach
|
||||||
|
|
||||||
| Komenda | Opis |
|
Do istniejącej listy komend dochodzą nowe, dedykowane dla każdej usługi:
|
||||||
| ----------------------- | -------------------------------------------------------------------------------------- |
|
|
||||||
| `install` | **Główna instalacja.** Uruchamia walidację i wdraża wszystkie podstawowe moduły. |
|
|
||||||
| `validate` | Sprawdza poprawność pliku `autoscript.conf` i połączeń z zewnętrznymi API. |
|
|
||||||
| `deploy_mastodon` | Wdraża i konfiguruje aplikację Mastodon. |
|
|
||||||
| `deploy_traefik` | Wdraża i konfiguruje reverse proxy Traefik. |
|
|
||||||
| `deploy_monitoring` | Wdraża stos monitoringu (Prometheus, Grafana, Alertmanager). |
|
|
||||||
| `secrets:edit <nazwa>` | Otwiera zaszyfrowany plik z sekretami dla danej usługi w edytorze. |
|
|
||||||
| `secrets:view <nazwa>` | Wyświetla odszyfrowaną zawartość pliku z sekretami. |
|
|
||||||
| `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
|
- `deploy_discourse`, `deploy_wordpress`, `deploy_freshrss`, `deploy_mail`, `deploy_status`
|
||||||
|
- `backup:init`, `backup:run`, `backup:restore <snapshot_id>`
|
||||||
|
|
||||||
AutoScript traktuje bezpieczeństwo jako fundamentalny element.
|
## 5. Kopie Zapasowe i Odtwarzanie
|
||||||
|
|
||||||
- **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`.
|
AutoScript jest w pełni zintegrowany z `Restic` i `Backblaze B2`, aby zapewnić bezpieczeństwo Twoich danych.
|
||||||
- **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
|
- **Automatyzacja**: Po poprawnej konfiguracji, skrypt automatycznie tworzy zadanie `cron`, które codziennie wykonuje szyfrowaną kopię zapasową całego folderu `/opt/services` (zawierającego wszystkie dane aplikacji) do Twojego bucketa B2.
|
||||||
|
- **Odtwarzanie**: W razie awarii, możesz użyć komendy `sudo ./start.sh backup:restore <ID_MIGAWKI>`, aby przywrócić dane.
|
||||||
|
|
||||||
|
## 6. Aspekty Bezpieczeństwa
|
||||||
|
|
||||||
|
(Sekcja pozostaje bez zmian, podkreślając te same, solidne fundamenty bezpieczeństwa).
|
||||||
|
|
||||||
|
## 7. Licencja
|
||||||
|
|
||||||
Projekt jest udostępniany na licencji MIT.
|
Projekt jest udostępniany na licencji MIT.
|
||||||
|
|
@ -1,75 +1,58 @@
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# Konfiguracja AutoScript v3
|
# Konfiguracja AutoScript v5 - Kompletna Platforma Serwerowa
|
||||||
# ===================================================================
|
|
||||||
#
|
|
||||||
# Instrukcja:
|
|
||||||
# 1. Skopiuj ten plik do `autoscript.conf`
|
|
||||||
# 2. Wypełnij poniższe zmienne.
|
|
||||||
# 3. Uruchom `./start.sh validate` aby sprawdzić poprawność konfiguracji.
|
|
||||||
#
|
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
# SEKCJA WYMAGANA
|
# SEKCJA WYMAGANA
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
|
|
||||||
PUBLIC_KEY=''
|
PUBLIC_KEY=''
|
||||||
CF_DNS_API_TOKEN=''
|
CF_DNS_API_TOKEN=''
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
# USTAWIENIA GŁÓWNE
|
# USTAWIENIA GŁÓWNE
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
|
|
||||||
# Główna domena, na której będzie działać Mastodon
|
|
||||||
PRIMARY_DOMAIN='social.ovh'
|
PRIMARY_DOMAIN='social.ovh'
|
||||||
|
|
||||||
# Domena dla usług pomocniczych (monitoringu, itp.)
|
|
||||||
# Domyślnie subdomena głównej, ale można zmienić na inną.
|
|
||||||
SERVICES_DOMAIN="${PRIMARY_DOMAIN}"
|
|
||||||
|
|
||||||
ADMIN_EMAIL='admin@social.ovh'
|
ADMIN_EMAIL='admin@social.ovh'
|
||||||
TIMEZONE='Europe/Warsaw'
|
TIMEZONE='Europe/Warsaw'
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
# USTAWIENIA POWIADOMIEŃ (SMTP)
|
# USTAWIENIA ZAPASOWE (BACKBLAZE B2)
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
|
# Włącz, aby aktywować codzienne, szyfrowane kopie zapasowe.
|
||||||
ALERT_SMTP_HOST='mail.social.ovh:587'
|
INSTALL_BACKUP=true
|
||||||
ALERT_SMTP_USER='alerts@social.ovh'
|
B2_ACCOUNT_ID=''
|
||||||
ALERT_SMTP_PASS=''
|
B2_ACCOUNT_KEY=''
|
||||||
ALERT_SMTP_FROM='alerts@social.ovh'
|
B2_REPOSITORY='' # np. b2:twoja-unikalna-nazwa-bucket
|
||||||
|
RESTIC_PASSWORD='' # Hasło do szyfrowania kopii zapasowych
|
||||||
# -------------------------------------------------------------------
|
|
||||||
# MODUŁY OPCJONALNE (włącz/wyłącz za pomocą true/false)
|
|
||||||
# -------------------------------------------------------------------
|
|
||||||
|
|
||||||
INSTALL_FAIL2BAN=true
|
|
||||||
INSTALL_DATABASE=true # Wymagane przez Mastodona
|
|
||||||
INSTALL_LOKI=true
|
|
||||||
INSTALL_BACKUP=false
|
|
||||||
ENABLE_APPARMOR=true
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
|
||||||
# KONFIGURACJA BAZY DANYCH (jeśli INSTALL_DATABASE=true)
|
|
||||||
# -------------------------------------------------------------------
|
|
||||||
|
|
||||||
POSTGRES_PASSWORD=''
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
|
||||||
# KONFIGURACJA KOPII ZAPASOWYCH (jeśli INSTALL_BACKUP=true)
|
|
||||||
# -------------------------------------------------------------------
|
|
||||||
|
|
||||||
BACKUP_REPO=''
|
|
||||||
BACKUP_PASSWORD=''
|
|
||||||
AWS_ACCESS_KEY_ID=''
|
|
||||||
AWS_SECRET_ACCESS_KEY=''
|
|
||||||
BACKUP_CRON_SCHEDULE='30 3 * * *'
|
BACKUP_CRON_SCHEDULE='30 3 * * *'
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
# WERSJE OBRAZÓW DOCKER
|
# KONFIGURACJA USŁUG
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
|
|
||||||
TRAEFIK_VER='v3.0'
|
# --- Mastodon ---
|
||||||
PROMETHEUS_VER='latest'
|
MASTODON_DOMAIN="${PRIMARY_DOMAIN}"
|
||||||
GRAFANA_VER='latest'
|
|
||||||
# ... (pozostałe wersje)
|
# --- Discourse ---
|
||||||
|
DISCOURSE_DOMAIN="forum.${PRIMARY_DOMAIN}"
|
||||||
|
|
||||||
|
# --- WordPress ---
|
||||||
|
WORDPRESS_DOMAIN="blog.${PRIMARY_DOMAIN}"
|
||||||
|
|
||||||
|
# --- FreshRSS ---
|
||||||
|
FRESHRSS_DOMAIN="rss.${PRIMARY_DOMAIN}"
|
||||||
|
|
||||||
|
# --- Serwer Poczty (Mail-in-a-Box style) ---
|
||||||
|
MAIL_DOMAIN="${PRIMARY_DOMAIN}" # Poczta będzie działać na głównej domenie
|
||||||
|
MAIL_ADMIN_PASSWORD='' # Hasło do panelu admina poczty
|
||||||
|
|
||||||
|
# --- Pulpit Statusu (Uptime Kuma) ---
|
||||||
|
STATUS_DOMAIN="status.${PRIMARY_DOMAIN}"
|
||||||
|
|
||||||
|
# --- Bazy Danych (hasła generowane losowo, jeśli puste) ---
|
||||||
|
POSTGRES_PASSWORD=''
|
||||||
|
DISCOURSE_DB_PASSWORD=''
|
||||||
|
WORDPRESS_DB_PASSWORD=''
|
||||||
|
|
||||||
|
# --- Wersje Obrazów Docker ---
|
||||||
|
# ... (wersje dla wszystkich usług)
|
||||||
29
start.sh
29
start.sh
|
|
@ -267,8 +267,33 @@ cmd_interactive_setup() {
|
||||||
cmd_backup() {
|
cmd_backup() {
|
||||||
local action="$1"; shift
|
local action="$1"; shift
|
||||||
log info "Zarządzanie kopiami zapasowymi: Akcja='$action'"
|
log info "Zarządzanie kopiami zapasowymi: Akcja='$action'"
|
||||||
# TODO: Dodać logikę restic
|
|
||||||
log info "(STUB) Wykonuję operację na kopiach zapasowych..."
|
export B2_ACCOUNT_ID
|
||||||
|
export B2_ACCOUNT_KEY
|
||||||
|
export RESTIC_REPOSITORY="${B2_REPOSITORY}"
|
||||||
|
export RESTIC_PASSWORD
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
init)
|
||||||
|
log info "Inicjalizacja repozytorium kopii zapasowych..."
|
||||||
|
restic init
|
||||||
|
log info "Repozytorium zainicjalizowane."
|
||||||
|
;;
|
||||||
|
run)
|
||||||
|
log info "Rozpoczynam tworzenie kopii zapasowej..."
|
||||||
|
restic backup /opt/services
|
||||||
|
log info "Kopia zapasowa zakończona."
|
||||||
|
;;
|
||||||
|
restore)
|
||||||
|
local snapshot_id="${1:-latest}"
|
||||||
|
log info "Przywracanie migawki: ${snapshot_id}"
|
||||||
|
restic restore "$snapshot_id" --target /opt/services.restored
|
||||||
|
log info "Przywracanie zakończone do folderu /opt/services.restored"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log error "Nieznana akcja dla kopii zapasowej: $action"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# ... (reszta funkcji)
|
# ... (reszta funkcji)
|
||||||
|
|
|
||||||
22
templates/discourse/docker-compose.yml
Normal file
22
templates/discourse/docker-compose.yml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: discourse/discourse:latest
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./shared:/shared
|
||||||
|
- ./logs:/var/log
|
||||||
|
networks:
|
||||||
|
- internal_network
|
||||||
|
- external_network
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.http.routers.discourse.rule=Host(`${DISCOURSE_DOMAIN}`)
|
||||||
|
- traefik.http.routers.discourse.entrypoints=websecure
|
||||||
|
- traefik.http.routers.discourse.tls.certresolver=le-dns
|
||||||
|
|
||||||
|
networks:
|
||||||
|
external_network:
|
||||||
|
external: true
|
||||||
|
name: traefik_proxy
|
||||||
|
internal_network: {}
|
||||||
Loading…
Reference in a new issue