Das ist eine für den Ausdruck optimierte Ansicht des gesamten Kapitels inkl. Unterseiten. Druckvorgang starten.

Zur Standardansicht zurückkehren.

Erste Schritte

Betriebsanleitung, Installation und erste Inbetriebnahme

Ersteinrichtung

1) Systemanforderungen (Host System)

Mindestandforderung Empfohlen
CPU 2 Cores 4 Cores
RAM 2GB 8GB
Speicherplatz 500GB (HDD mit SSD Cache) 1000GB (SSD)
Betriebssystem Debian 12 Debian 12
CPU Architektur amd64, arm64 amd64, arm64
Dateisystem btrfs btrfs
Download/Upload 16Mbit 100Mbit

2) Installation

                apt update
apt install -f ./repo-sync.deb

3) Konfiguration

3.1) Archiv Konfiguration

Eine umfangreiche Template Konfiguration kann aus dem Beispielverzeichnis kopiert werden:

                cp /usr/share/deb-repo-diff/examples/config.yaml /etc/deb-repo-diff/config.yaml

Eine sehr einfache Konfiguration kann zu Testzwecken verwendet werden.

                license: "INSERT YOUR LICENSE KEY HERE"
repos:
  - uid: 1
    display_name: debian-12-security
    host: http://security.debian.org
    url_path: debian-security
    snapshot_directory: /srv/snapshots/debian-12-security
    working_directory: /srv/workdirs/debian-12-security
    source: true
    endpoints:
      - name: debian12/stable
      - name: debian12/testing
    architectures:
      - amd64
    components:
      - main
    releases:
      - bookworm-security

3.1) Benutzer Konfiguration

Die Benutzerkonfiguration kann volgendermaßen erzeugt werden:

                USERNAME=admin PASSWORD=adminadmin CONFIG_PASSWORD=changeme deb-repo-passgen  > /etc/deb-repo-diff/users.yaml

Die Konfiguration sieht folgendermaßen aus:

                captcha_enabled: true
anonymous_access: false
users:
  - name: admin
    role: user
    password:
      content: $2b$12$TLYtz98vP7A.RtIWVzueeu6nzD.gSufrwsG9tz1/fdIZV4rUNHouO
      hash_type: bcrypt

TODO: Siehe Referenz

Das deb-repo-passgen tool kann verwendet werden um neue Benutzer anzulegen.

3.1) Erstellen der Arbeitsverzeichnisse

Die Arbeitsverzeichnisse die in der Konfiguration angegeben wurden müssen manuell erzeugt werden.

                mkdir -p /srv/snapshots/debian-12-security
mkdir -p /srv/workdirs/
btrfs subvolume create /srv/workdirs/debian-12-security
chown -R debrepo:debrepo /srv/snapshots/debian-12-security /srv/workdirs/debian-12-security

3.2) Servicekonfiguration

Nach der Installation sind die relvanten Services standardmäßig deaktiviert.

TODO: Siehe Service Referenz

Der Service zur Spiegelung der Repositories wird manuell oder über einen systemd timer gestartet.

Zur Ersten Synchronisation kann er manuell gestartet werden:

                systemctl start repo-sync.service

Der Status kann folgendermaßen abgefragt werden:

                systemctl status repo-sync.service

Wenn der Prozess erfolgreich abgeschlossen ist der Status Success.

                ○ repo-sync.service - Repo sync service
     Loaded: loaded (/lib/systemd/system/repo-sync.service; static)
     Active: inactive (dead) since Thu 2024-11-28 17:15:28 CET; 49min ago
   Duration: 1.574s
TriggeredBy: ● repo-sync.timer
    Process: 10992 ExecStart=/usr/libexec/repo-sync (code=exited, status=0/SUCCESS)
   Main PID: 10992 (code=exited, status=0/SUCCESS)
     Status: "Service successful: Success"
        CPU: 1.165s

Bei Fehlern kann der Log folgendermaßen eingesehen werden:

                journalctl -b0 -u repo-sync.service -p warning # Nur Warnungen und Fehler
journalctl -b0 -u repo-sync.service # Alles

War der Vorgang erfolgreich kann der Timer zu regelmäßigen synchronisation aktiviert werden:

                systemctl enable --now repo-sync.timer

Die Aktivierungsvorgänge können folgendermaßen abgefragt werden:

                systemctl list-timers repo-sync.timer

3.3) Webinterfacekonfiguration

Nach der Installation ist der Service standardmäßig deaktiviert.

Er kann folgendermaßen aktiviert werden:

                systemctl enable deb-repo-diff.service

Er kann folgendermaßen gestartet werden:

                systemctl start deb-repo-diff.service

Der Status kann folgendermaßen abgefragt werden:

                systemctl status deb-repo-diff.service
                ● deb-repo-diff.service - deb repo diff
     Loaded: loaded (/lib/systemd/system/deb-repo-diff.service; enabled; preset: enabled)
     Active: active (running) since Thu 2024-12-12 18:13:59 CET; 3 days ago
   Main PID: 348058 (deb-repo-diff)
     Status: "Waiting for requests..."
      Tasks: 5 (limit: 2314)
     Memory: 8.0M
        CPU: 253ms
     CGroup: /system.slice/deb-repo-diff.service
             └─348058 /usr/libexec/deb-repo-diff

3.3.1) Webinterfacekonfiguration

Nach dem Start ist das Webinterface nur auf localhost verfügbar.

Es wird ein Reverse Proxy server benötigt um das Webinterface im Netzwerk bereitzustellen.

Eine vollständige und aktuelle Beispielkonfiguration finden Sie unter /usr/share/deb-repo-diff/examples/nginx.conf.

Die Konfiguration muss nach /etc/nginx/sites-available/webinterface.conf kopiert werden.

Die Konfiguration kann folgendermaßen aktiviert werden:

                ln -s /etc/nginx/sites-available/webinterface.conf /etc/nginx/sites-enabled/webinterface.conf # Enable config
nginx -t # Check config
systemctl restart nginx.service # Restart service

Beispielkonfiguration:

                server {
        listen 8080; # IPv4
        listen [::]:8080; # IPv6

        include /var/lib/deb-repo-diff/nginx.conf;

        # https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/
        sendfile           on;
        sendfile_max_chunk 1m;
        tcp_nopush on;
        autoindex off;

        # Limit download speed to avoid system influence
        # This is balancing no DDOS protection!
        limit_rate 15m; # 15 Mbit
        limit_rate_after 1m; # First mbit is not limited

        location /deb-repo-diff {
                auth_basic off;

                include proxy_params;
                proxy_pass http://127.0.0.1:2222;

                root /usr/share/deb-repo-diff/;

                access_log /var/log/nginx/deb-repo-diff-access.log;
                error_log /var/log/nginx/deb-repo-diff-error.log;

                location ~* \.(js|css|png|jpg|jpeg|gif|ico|webp|svg|woff2)$ {
                    # Enable client side cache for this files
                    # This is a client speed improvement
                    expires 12h;
                    add_header Cache-Control "private, no-transform";
                    
                    include proxy_params;
                    proxy_pass http://127.0.0.1:2222;
                }

                # Enables sever side gzip compression for "text" content
                # This is a client speed improvement
                gzip on;
                gzip_vary on;

                gzip_comp_level 6;
                gzip_min_length 1100;
                gzip_buffers 16 4k;
                gzip_proxied any;
                gzip_types
                    text/plain
                    text/css
                    text/js
                    text/xml
                    text/javascript
                    application/javascript
                    application/json
                    application/xml
                    application/rss+xml
                    image/svg+xml svg svgz;

                # Default charset
                charset utf-8;
        }
}

3.4) Zugriff auf das Webinterface

Der Zugriff auf das Webinterface mit der gegeben Konfiguration ist nun möglich:

http://<SERVER_IP>:8080/deb-repo-diff