Zusammenfassung der vorgenommenen Änderungen und Konfigurationen

Inhaltsverzeichnis

Zusammenfassung der vorgenommenen Änderungen und Konfigurationen

Dieses Dokument fasst die wichtigsten Änderungen und Konfigurationen zusammen, die wir besprochen und durchgeführt haben.


1. Python Logging (sync.py und logging_config.py)

Um die Log-Ausgabe des sync.py-Skripts zu verbessern, wurde eine modulare Logging-Konfiguration mit Log-Rotation erstellt und in eine separate Datei ausgelagert.

logging_config.py erstellt

Zweck: Enthält die Funktion setup_logging() zur Konfiguration eines Root-Loggers, der Logs in eine Datei (sync_log.log) schreibt, diese bei Erreichen einer Größe von 5 MB rotiert und 5 Backups behält. Optional kann auch ein Konsolen-Logger aktiviert werden.

Inhalt der Datei (/home/jonnybravo/Projekte/python_tests/rclone/logging_config.py):

import logging
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler
import os

def setup_logging(console_logging=False):
    """Konfiguriert das Root-Logging für die Anwendung mit Rotation.

    Diese Funktion richtet einen Root-Logger ein, der Log-Nachrichten in eine Datei schreibt,
    welche bei Erreichen einer bestimmten Größe rotiert wird.

    :param console_logging: Wenn True, werden Logs zusätzlich zur Datei auch auf der Konsole ausgegeben.
                            Standardmäßig ist dies deaktiviert (False).
    """
    
    # --- Allgemeine Einstellungen ---
    log_file = "sync_log.log" # Name der Log-Datei

    # Maximale Größe der Log-Datei in Bytes, bevor sie rotiert wird (hier 5 MB)
    max_log_size = 5 * 1024 * 1024

    # Anzahl der rotierenden Backup-Dateien, die behalten werden sollen (hier 5)
    backup_count = 5

    # --- Logger-Initialisierung ---
    logger = logging.getLogger()

    if logger.hasHandlers():
        return

    # --- Logging-Level einstellen ---
    # Mögliche Levels: DEBUG, INFO, WARNING, ERROR, CRITICAL
    logger.setLevel(logging.INFO)
    
    # --- Formatter erstellen ---
    # Definiert das Layout der Log-Nachrichten.
    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

    # --- Handler erstellen und dem Logger hinzufügen ---

    # 1. RotatingFileHandler (immer aktiv)
    file_handler = RotatingFileHandler(
        log_file,
        maxBytes=max_log_size,
        backupCount=backup_count,
        encoding='utf-8'
    )
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)

    # 2. StreamHandler für Konsolen-Ausgabe (optional)
    if console_logging:
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(formatter)
        logger.addHandler(console_handler)

    # --- Weitere Referenzen und alternative Handler ---
    # (Ausführliche Kommentare sind in der Datei enthalten, hier gekürzt)

sync.py angepasst

Zweck: Importiert die setup_logging-Funktion und ruft sie ganz am Anfang des Skripts auf, um die Logging-Konfiguration zu initialisieren.

Relevanten Änderungen in /home/jonnybravo/Projekte/python_tests/rclone/sync.py:

from logging_config import setup_logging

# Logging so früh wie möglich einrichten
setup_logging() # Optional: setup_logging(console_logging=True) für Konsolen-Logs

from rclone_python import rclone as rc
from rclone_python.utils import RcloneException
import os
import logging
# ... (restlicher Code)

2. DNS-Konfiguration auf dem Manjaro-System

Um den AdGuard Home-Server 10.50.0.3 als primären DNS-Server für das gesamte System und alle Verbindungen zu nutzen, wurden folgende Schritte durchgeführt:

Globale systemd-resolved Konfiguration

Zweck: Setzt 10.50.0.3 als systemweiten DNS-Server für systemd-resolved.

Änderungen in /etc/systemd/resolved.conf:

[Resolve]
DNS=10.50.0.3
# FallbackDNS=  # Auskommentieren oder auf FallbackDNS= setzen, um Fallback zu verhindern

Nach der Bearbeitung: sudo systemctl restart systemd-resolved

NetworkManager Überschreibung für alle Verbindungen

Zweck: Weist NetworkManager an, bei allen Netzwerkverbindungen (bestehende und neue) den vom DHCP-Server angebotenen DNS zu ignorieren. Dadurch wird der globale DNS von systemd-resolved verwendet.

Neue Datei erstellt: /etc/NetworkManager/conf.d/99-global-dns-override.conf

[connection]
# Diese Einstellung gilt für alle neuen und bestehenden Verbindungen.
# Sie weist NetworkManager an, den DNS-Server vom DHCP zu ignorieren.
ipv4.ignore-auto-dns=true
ipv6.ignore-auto-dns=true

Nach der Erstellung: sudo systemctl restart NetworkManager

Anpassung des spezifischen WLAN-Profils (SweetHome-5G)

Zweck: Hinzufügen der DNS-Suchdomäne, damit lokale Hostnamen ohne vollen Domain-Namen aufgelöst werden können.

Befehle für die Kommandozeile (nmcli): (Ersetzen Sie “Ihr Verbindungsname” durch den tatsächlichen Namen, z.B. “SweetHome-5G”)

nmcli connection modify "Ihr Verbindungsname" ipv4.dns-search "speedport.ip"
# optional für IPv6: nmcli connection modify "Ihr Verbindungsname" ipv6.dns-search "speedport.ip"
nmcli connection up "Ihr Verbindungsname"

3. AdGuard Home Konfiguration

Installation & SSL-Einrichtung

Zweck: Installation von AdGuard Home auf einem Linux-Server und Absicherung der Weboberfläche mit einem selbstsignierten SSL-Zertifikat und eigener CA.

Schritte (ausführlich in vorherigen Antworten beschrieben):

  1. AdGuard Home installieren (curl ... install.sh).
  2. Eigene CA (MyCA.key, MyCA.pem) und Server-Zertifikat (adguard.key, adguard.crt) mit openssl erstellen, inklusive SAN-Erweiterung für IP-Adresse/lokalen Hostnamen.
  3. Zertifikate in AdGuard Home (adguard.crt, adguard.key) unter Einstellungen → Verschlüsselungseinstellungen konfigurieren.
  4. MyCA.pem auf Client-Geräten als vertrauenswürdige Stammzertifizierungsstelle installieren.

Bedingte Weiterleitung für lokale Namen

Zweck: Ermöglicht AdGuard Home die Auflösung lokaler Hostnamen durch Weiterleitung an den Router.

Konfiguration in der AdGuard Home Weboberfläche:

  1. Gehen Sie zu Einstellungen → DNS-Einstellungen.
  2. Im Abschnitt “Upstream-DNS-Server” die folgende Zeile hinzufügen (zusätzlich zu öffentlichen DNS-Servern):
    [/speedport.ip/]192.168.50.1
    
  3. Einstellungen speichern.

4. Problembehebung WireGuard DNS

Zweck: Behebung des Konflikts, bei dem WireGuard die DNS-Einstellungen überschrieben und auf einen nicht existierenden Server (10.50.0.3 ohne installierten DNS-Dienst) gezeigt hat.

Änderung in der WireGuard-Konfigurationsdatei:

  • In /etc/wireguard/wg0.conf (im Abschnitt [Interface]) die Zeile DNS = 10.50.0.3 auskommentieren oder auf einen anderen DNS-Server ändern.
    [Interface]
    # DNS = 10.50.0.3
    
  • WireGuard neu starten: sudo systemctl restart wg-quick@wg0 (oder sudo wg-quick down wg0 && sudo wg-quick up wg0).