Files
mates-server-maintenance/README.md
T
mates 1eede74dc6 fix: odstranit emoji ze vsech souboru
Kompletne odstraneno:
- Emoji (smajliky, symboly, boxes, arrows) z README
- Emoji ze skriptu (sipky, symboly)
- Emoji z docker-compose (adresare)

Nahrano za:
- Textove alternativy (sipky -> '->', boxes -> '+', atd.)
- ASCII pouze kde to slo

Ciste vsechny 7 repo (overeno Python skriptem).
2026-08-02 08:50:13 +02:00

224 lines
5.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# mates-server-maintenance
Systemd timery a skripty pro automatickou údržbu serveru.
**Docker update, zálohy, denní report na Telegram, systémový update.**
> Toto repo je **1:1 kopie** systemd timerů a skriptů, které běží na produkčním serveru.
---
## Co tu je
```
mates-server-maintenance/
+-- README.md # Tento soubor
+-- LICENSE # MIT
+-- .gitignore
+-- scripts/
| +-- update.sh # Systémový update + Telegram
| +-- docker-update.sh # Docker compose pull + up
| +-- docker-zalohy.sh # Záloha Docker dat
| +-- server-report.sh # Denní Telegram report
+-- systemd/
| +-- docker-update.{service,timer}
| +-- docker-zalohy.{service,timer}
| +-- server-report.{service,timer}
| +-- update-rpi.{service,timer}
+-- conf/
+-- telegram.conf.example # Šablona pro Telegram credentials
```
---
## Quickstart
### 1. Naklonuj
```bash
git clone http://<server-ip>:3000/mates/mates-server-maintenance.git ~/server-maintenance
```
### 2. Vytvoř Telegram konfiguraci
Získej **BOT_TOKEN** z [@BotFather](https://t.me/BotFather) a **CHAT_ID** z [@userinfobot](https://t.me/userinfobot):
```bash
mkdir -p ~/.config/telegram
cp ~/server-maintenance/conf/telegram.conf.example ~/.telegram.conf
nano ~/.telegram.conf # doplň reálné hodnoty
chmod 600 ~/.telegram.conf
```
### 3. Nainstaluj systemd timery
```bash
# Pro kazdy timer: nakopiruj service+timer do /etc/systemd/system
sudo cp ~/server-maintenance/systemd/*.{service,timer} /etc/systemd/system/
# Aktivuj (napr. docker-update)
sudo systemctl daemon-reload
sudo systemctl enable --now docker-update.timer
sudo systemctl enable --now docker-zalohy.timer
sudo systemctl enable --now server-report.timer
sudo systemctl enable --now update-rpi.timer
# Over stav
systemctl list-timers --all | grep -E "docker|server-report|update"
```
### 4. Ověř
```bash
# Rucne spust report (melo by prijit Telegram zprava)
sudo systemctl start server-report.service
sudo journalctl -u server-report.service -f
# Rucne spust Docker update (melo by aktualizovat kontejnery)
sudo systemctl start docker-update.service
sudo journalctl -u docker-update.service -f
```
---
## ⏰ Plán úloh (timery)
| Timer | Kdy | Co dělá |
|---|---|---|
| `update-rpi.timer` | **Pátek 18:00** | `apt update && apt upgrade`, restart když nutný |
| `docker-update.timer` | **Sobota 18:00** | `docker compose pull && up -d` pro všechny služby |
| `docker-zalohy.timer` | **Úterý 20:00** | Záloha `data/` adresářů na NAS |
| `server-report.timer` | **Denně 09:30** | Telegram report (uptime, RAM, disk, Docker, teplota) |
---
## Detail skriptů
### `update.sh`
Aktualizuje systém (`apt update && apt upgrade`).
- **Spustí:** `sudo bash update.sh` nebo přes timer `update-rpi.timer`
- **Restartuje server** pokud `/var/run/reboot-required` existuje (1 minuta grace time)
- **Telegram notifikace:** start, hotovo / chyba, varování před restartem
### `docker-update.sh`
Aktualizuje všechny Docker Compose projekty.
- **Seznam služeb:** edituj `AKTUALIZOVAT` pole v skriptu
- **Log:** `/home/mates/skripty/update-docker-script/docker-update.log`
- **Telegram:** start, souhrn (úspěch/chyby), seznam aktualizovaných
### `docker-zalohy.sh`
Zálohuje `data/` adresáře Docker projektů.
- **Formát:** `tar.zst` (vysoká komprese)
- **Cíl:** `/home/mates/zalohy/docker/<YYYYMMDD>/`
- **Log:** `/home/mates/zalohy/docker/docker.log`
### `server-report.sh`
Denní Telegram report o stavu serveru.
- **Co reportuje:** uptime, load, RAM, disk, CPU teplota, Docker kontejnery, poslední update/záloha
- **Alert prahy:** disk 80% (warn) / 90% (crit), CPU 70°C / 80°C
- **Kdy:** denně 09:30
---
## Konfigurace
### Telegram credentials
Všechny skripty čtou z `/home/<user>/.telegram.conf`:
```bash
BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
CHAT_ID=123456789
```
`conf/telegram.conf.example` je šablona.
### Cesty (v systemd service souborech)
Pokud máš **jiného uživatele nebo cesty**, uprav `WorkingDirectory` a `ExecStart` v `systemd/*.service`:
```ini
[Service]
User=tvy-user
WorkingDirectory=/home/tvy-user/skripty/update-docker-script
ExecStart=/home/tvy-user/skripty/update-docker-script/docker-update.sh
```
### Seznam služeb k aktualizaci
V `scripts/docker-update.sh`, pole `AKTUALIZOVAT`:
```bash
AKTUALIZOVAT=(
audiobookshelf
calibre-web
vaultwarden
# pridej dalsi...
)
```
---
## Bezpečnost
- **`/home/<user>/.telegram.conf` s `chmod 600`** - nikdy necommitovat reálný token
- **Service běží jako `User=mates`** - ne root (omezení škod v případě chyby)
- **`set -euo pipefail`** ve všech skriptech - fail-fast
- **Logy** - vše se loguje, snadné debugování
---
## Struktura na serveru
```
/home/mates/
+-- .telegram.conf # Telegram credentials (chmod 600)
+-- update.log # Log ze systemoveho update
+-- docker/ # Docker projekty
+-- skripty/
| +-- server-report.sh # Tento skript
| +-- update-docker-script/
| +-- docker-update.sh # Tento skript
| +-- docker-update.log # Log z Docker update
+-- zalohy/
+-- docker.log # Log ze zaloh
+-- docker/
+-- <YYYYMMDD>/ # Zalohy (tar.zst)
+-- <sluzba>-<HHMMSS>.tar.zst
```
---
## Úprava schedule
Edituj `*.timer` soubory:
```ini
[Timer]
# Kazdou nedeli v 02:00
OnCalendar=Sun *-*-* 02:00:00
# Kazdych 15 minut
OnCalendar=*:0/15
# Kazdy patek v 18:00 (puvodni)
OnCalendar=Fri *-*-* 18:00:00
```
Po úpravě: `sudo systemctl daemon-reload`.
---
## Licence
MIT - viz [LICENSE](LICENSE)
---
**Poslední update:** 2026-08-01