RouterOS Backup Manager
RouterOS Backup Manager to aplikacja Flask umożliwiająca zarządzanie kopiami zapasowymi urządzeń Mikrotik RouterOS. Aplikacja pozwala na eksport konfiguracji, tworzenie backupów binarnych, ich przechowywanie, porównywanie oraz przywracanie.
Instalacja
1. Klonowanie repozytorium
git clone https://gitea.linuxiarz.pl/gru/routeros_backup.git
cd routeros_backup
2. Tworzenie i aktywacja środowiska wirtualnego (opcjonalnie)
python3 -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
3. Instalacja zależności
pip install -r requirements.txt
4. Uruchomienie aplikacji lokalnie
python run_waitress.py
Aplikacja będzie dostępna pod adresem: http://127.0.0.1:5581/
Uruchamianie w Dockerze
- Zbudowanie obrazu Docker
docker-compose build
- Uruchomienie kontenera
docker-compose up -d
Aplikacja uruchomi się na porcie 5581.
Funkcjonalności
- System użytkowników (rejestracja, logowanie, zmiana hasła)
- Połączenie SSH do routerów MikroTik
- Eksport konfiguracji i tworzenie backupów binarnych
- Porównywanie backupów (
diff) - Powiadomienia e-mail oraz Pushover
- Harmonogram automatycznych backupów (APScheduler)
- Automatyczne czyszczenie starych backupów i logów
- Obsługa przez interfejs webowy
Konfiguracja
Zmiana ustawień
Plik app.py zawiera konfigurację bazy danych oraz inne ustawienia aplikacji:
app.config['SECRET_KEY'] = 'super-secret-key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///backup_routeros.db'
Konfiguracja SMTP (E-mail)
Aby skonfigurować powiadomienia e-mail, wprowadź dane w sekcji ustawień:
- Serwer SMTP
- Login/hasło SMTP
- Port (587 dla TLS, 465 dla SSL)
Powiadomienia Pushover
Aby włączyć powiadomienia Pushover, uzupełnij pushover_token oraz pushover_userkey w ustawieniach.
API & Health Check
Aplikacja zawiera endpoint /health, który zwraca status bazy danych:
curl http://127.0.0.1:5581/health
Przykładowa odpowiedź:
{
"status": "ok",
"timestamp": "2024-02-26T12:34:56Z"
}
Autor i licencja
Projekt stworzony przez Mateusz Gruszczyński @linuxiarz.pl - dostępny na licencji MIT.