# 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 ```sh git clone https://gitea.linuxiarz.pl/gru/routeros_backup.git cd routeros_backup ``` ### 2. Tworzenie i aktywacja środowiska wirtualnego (opcjonalnie) ```sh python3 -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows ``` ### 3. Instalacja zależności ```sh pip install -r requirements.txt ``` ### 4. Uruchomienie aplikacji lokalnie ```sh python run_waitress.py ``` Aplikacja będzie dostępna pod adresem: `http://127.0.0.1:5581/` --- ## Uruchamianie w Dockerze 1. **Zbudowanie obrazu Docker** ```sh docker-compose build ``` 2. **Uruchomienie kontenera** ```sh 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: ```python 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: ```sh curl http://127.0.0.1:5581/health ``` Przykładowa odpowiedź: ```json { "status": "ok", "timestamp": "2024-02-26T12:34:56Z" } ``` --- ## Autor i licencja Projekt stworzony przez Mateusz Gruszczyński @linuxiarz.pl - dostępny na licencji MIT.