Erste Schritte
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 |
Achtung
Die CPU Architektur und Betriebssystem einschränkungen gelten ausschließlich für das Host System.Die Speicherplatzanforderungen richten sich nach den zu spiegelnden Archiven. 500GB pro Hauptversion haben sich etabliert.
Das Dateisystem auf dem die Daten gespeichert werden muss zwingend BTRFS sein.
Es wird empfohlen die Software in einer Virtuellen Machine auszuführen die außschließlich für diesen Zweck reserviert ist.
Eine Bare-Metal Installation ist möglich wird allerdings nicht empfohlen.
Eine Installation in Docker oder LXD Containern ist nicht sinnvoll möglich da die Software zum Erstellen der Snapshots privilegierten Zugriff auf das Dateisystem benötigt.
Sicherheitswarnung
Die Software ist nicht dazu bestimmt in öffentlichen Netzwerken erreichbar zu sein.Es ist notwendig die Zugriffsmöglichkeiten auf die Software über das Netzwerk strikt auf den bestimmten Personenkreis einzuschränken!
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
Achtung
Bitte füge unterlicense
den Lizenzschlüssel ein.
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.
Achtung
Standardmäßig sind nur Pfade unter/srv
und
/var
erlaubt.
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
Achtung
Die Erste Synchronisation kann je nach Interngeschwindigkeit mehrere Stunden/Tage dauern!!Für das Debian 12 Security Repository beträgt die Downloadgröße ca. 30GB.
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.
Achtung
Es wird ausschließlichnginx
als reverse proxy
unterstützt da der Service ein dynamisches nginx
Konfigurationsfile erzeugt!Dieses wird über die Direktive
include
/var/lib/deb-repo-diff/nginx.conf;
eingebunden
und sorgt für die Bereitstellung der Repos im
Netzwerk!
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: