Brave auf apt, Kitty, FaceTime-Webcam, WireGuard wg-quick, SSH-Setup, HiDPI-Verbesserungen
- Brave Browser: von Flatpak auf apt mit offiziellem Repo umgestellt - Kitty Terminal: Installation (apt) + Konfiguration in setup-desktop.sh - FaceTime HD Webcam: Firmware + DKMS-Treiber (bcwc_pcie) - WireGuard: von NetworkManager auf wg-quick umgestellt, DNS fuer m13 - SSH-Key-Generierung + automatische HTTPS→SSH Umstellung der Repos - Thunderbird: von apt auf Snap (wegen .deb-Bug) - XFCE HiDPI: Noto Sans 10pt, Panel 28px, fuer beide MBPs vereinheitlicht - Tastatur: ctrl:swap_lwin_lctl fuer Mac-like Cmd+C/V - Standard-Apps: Brave (Browser), Thunderbird (Mail) - CLAUDE.md: Doku aktualisiert Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
273978b78f
commit
aa24f89511
4 changed files with 234 additions and 92 deletions
41
CLAUDE.md
41
CLAUDE.md
|
|
@ -36,17 +36,17 @@ die Setup-Skripte nicht heruntergeladen werden.
|
||||||
- Wenn Befehle auf dem MacBook noetig sind: per `ssh rene@<ip>` verbinden und dort ausfuehren (statt den User bitten, Befehle abzutippen)
|
- Wenn Befehle auf dem MacBook noetig sind: per `ssh rene@<ip>` verbinden und dort ausfuehren (statt den User bitten, Befehle abzutippen)
|
||||||
|
|
||||||
## Paketquellen-Zuordnung
|
## Paketquellen-Zuordnung
|
||||||
- **apt:** System-Pakete, xubuntu-desktop, Thunderbird, KeePassXC, default-jre etc.
|
- **apt:** System-Pakete, xubuntu-desktop, KeePassXC, Kitty, Brave Browser, default-jre etc.
|
||||||
- **Snap:** FreeCAD, LibreOffice (wegen "benutzerdefinierte Installation nicht abgeschlossen" Bug bei .deb), Bitwarden
|
- **Snap:** FreeCAD, LibreOffice (wegen "benutzerdefinierte Installation nicht abgeschlossen" Bug bei .deb), Bitwarden, Thunderbird
|
||||||
- **Flatpak:** Brave Browser (wegen SIGTRAP/int3 Crash bei .deb auf aelterer HW), PrusaSlicer
|
- **Flatpak:** PrusaSlicer
|
||||||
- flatpak muss in setup-base.sh (root) installiert werden, nicht in setup-desktop.sh (user)
|
- flatpak muss in setup-base.sh (root) installiert werden, nicht in setup-desktop.sh (user)
|
||||||
|
|
||||||
## Geloeste Probleme (Lessons Learned)
|
## Geloeste Probleme (Lessons Learned)
|
||||||
|
|
||||||
### Brave Browser
|
### Brave Browser
|
||||||
- .deb Version crasht mit SIGTRAP (int3) auf aelterer Hardware
|
- .deb Version crashte frueher mit SIGTRAP (int3) auf aelterer Hardware
|
||||||
- AppArmor `apparmor_restrict_unprivileged_userns=1` war NICHT die Ursache
|
- Inzwischen funktioniert .deb/apt mit offiziellem Brave-Repo
|
||||||
- Loesung: Flatpak verwenden
|
- Loesung: apt mit Brave-Repo (in setup-base.sh)
|
||||||
|
|
||||||
### LibreOffice
|
### LibreOffice
|
||||||
- .deb Version zeigt "benutzerdefinierte Installation nicht abgeschlossen"
|
- .deb Version zeigt "benutzerdefinierte Installation nicht abgeschlossen"
|
||||||
|
|
@ -56,15 +56,37 @@ die Setup-Skripte nicht heruntergeladen werden.
|
||||||
### HiDPI / Retina Display
|
### HiDPI / Retina Display
|
||||||
- GDK WindowScalingFactor=2 + DPI=96 (NICHT 128!)
|
- GDK WindowScalingFactor=2 + DPI=96 (NICHT 128!)
|
||||||
- Cursor-Groesse: 48
|
- Cursor-Groesse: 48
|
||||||
|
- GTK-Schrift: Noto Sans 10, Titelschrift: Noto Sans Bold 10
|
||||||
|
- Panel-Hoehe: 28px (passend zur Schriftgroesse bei 2x-Skalierung)
|
||||||
|
- Referenz-Schriftgroesse: Kitty 18pt MesloLGS NF — Systemschriften sollen visuell dazu passen
|
||||||
- xfwm4: Default-xhdpi Theme
|
- xfwm4: Default-xhdpi Theme
|
||||||
- XFCE Compositor deaktivieren
|
- XFCE Compositor deaktivieren
|
||||||
- xfce4-display-settings deaktivieren (verursacht Endlosschleife)
|
- xfce4-display-settings deaktivieren (verursacht Endlosschleife)
|
||||||
|
|
||||||
|
### FaceTime HD Webcam
|
||||||
|
- Broadcom 1570, haengt am PCIe-Bus (nicht USB) — kein Treiber im Kernel
|
||||||
|
- Firmware: github.com/patjak/facetimehd-firmware (extrahiert aus macOS-Treiber)
|
||||||
|
- Treiber: github.com/patjak/bcwc_pcie, installiert via DKMS (automatischer Rebuild bei Kernel-Updates)
|
||||||
|
- Modul: facetimehd, autoload via /etc/modules-load.d/facetimehd.conf
|
||||||
|
|
||||||
### Tastatur
|
### Tastatur
|
||||||
- iso_layout=1 + de (mit Dead Keys, NICHT nodeadkeys) + lv3:lalt_switch
|
- iso_layout=1 + de (mit Dead Keys, NICHT nodeadkeys) + lv3:lalt_switch + ctrl:swap_lwin_lctl
|
||||||
- nodeadkeys verhindert Akzent-Kombination (´e statt é)
|
- nodeadkeys verhindert Akzent-Kombination (´e statt é)
|
||||||
|
- ctrl:swap_lwin_lctl tauscht Cmd und Ctrl (Mac-like Copy/Paste mit Cmd+C/V)
|
||||||
- XFCE Keyboard-Override deaktivieren (XkbDisable)
|
- XFCE Keyboard-Override deaktivieren (XkbDisable)
|
||||||
|
|
||||||
|
### Terminal
|
||||||
|
- Kitty als Standard-Terminal (statt xfce4-terminal)
|
||||||
|
- xfce4-terminal bleibt installiert als Fallback
|
||||||
|
- Kitty Config: MesloLGS NF 18pt, copy_or_interrupt fuer Cmd+C (kopiert bei Selektion, sonst SIGINT)
|
||||||
|
- xfce4-terminal unterstuetzt kein Remapping von Ctrl+C/V auf Copy/Paste
|
||||||
|
|
||||||
|
### Git / SSH
|
||||||
|
- SSH-Key (ed25519) wird in setup-desktop.sh generiert
|
||||||
|
- Forgejo SSH laeuft auf dsm.motocamp.de:2222 (nicht git.motocamp.de, nicht Port 22)
|
||||||
|
- Alle Repos werden automatisch von HTTPS auf SSH umgestellt
|
||||||
|
- git credential.helper store als Fallback bis SSH-Key in Forgejo hinterlegt ist
|
||||||
|
|
||||||
### Netzwerk & WLAN
|
### Netzwerk & WLAN
|
||||||
- NetworkManager statt netplan fuer WLAN
|
- NetworkManager statt netplan fuer WLAN
|
||||||
- WLAN-Config beim netplan-zu-NM Umstieg erhalten
|
- WLAN-Config beim netplan-zu-NM Umstieg erhalten
|
||||||
|
|
@ -73,8 +95,9 @@ die Setup-Skripte nicht heruntergeladen werden.
|
||||||
- /etc/hosts: dsm.motocamp.de → 10.47.11.10 (Synology direkt), git.motocamp.de → 10.47.11.23 (NPM/macvlan, da Gitea hinter Reverse Proxy)
|
- /etc/hosts: dsm.motocamp.de → 10.47.11.10 (Synology direkt), git.motocamp.de → 10.47.11.23 (NPM/macvlan, da Gitea hinter Reverse Proxy)
|
||||||
|
|
||||||
### WireGuard VPN
|
### WireGuard VPN
|
||||||
- Konfiguration via NetworkManager .nmconnection (nicht wg-quick)
|
- Konfiguration via wg-quick (Config in /etc/wireguard/wg-vps.conf)
|
||||||
- DNS + dns-search direkt im NM-Profil
|
- DNS = 10.47.11.20 (Pihole) direkt in der WireGuard-Config
|
||||||
|
- Autostart via systemctl enable wg-quick@wg-vps
|
||||||
- **Key-Verwechslung:** m16/m13 hatten eigenen PublicKey als Peer-PublicKey eingetragen. NM zeigt keinen Fehler, wg show zeigt einfach keine Peers. Immer pruefen: local public key darf NICHT gleich dem Peer-PublicKey sein.
|
- **Key-Verwechslung:** m16/m13 hatten eigenen PublicKey als Peer-PublicKey eingetragen. NM zeigt keinen Fehler, wg show zeigt einfach keine Peers. Immer pruefen: local public key darf NICHT gleich dem Peer-PublicKey sein.
|
||||||
- Server-PublicKey gegen funktionierende Clients verifizieren
|
- Server-PublicKey gegen funktionierende Clients verifizieren
|
||||||
|
|
||||||
|
|
|
||||||
176
setup-base.sh
176
setup-base.sh
|
|
@ -41,7 +41,7 @@ echo " setup-base.sh für MBP $MODEL\" startet"
|
||||||
echo "════════════════════════════════════════════"
|
echo "════════════════════════════════════════════"
|
||||||
|
|
||||||
# ── 0. sudoers reparieren (macOS-Installer hinterlässt macOS-sudoers) ──────
|
# ── 0. sudoers reparieren (macOS-Installer hinterlässt macOS-sudoers) ──────
|
||||||
echo -e "\n=== 0/11 sudoers ==="
|
echo -e "\n=== 0/12 sudoers ==="
|
||||||
cat > /etc/sudoers <<'SUDOEOF'
|
cat > /etc/sudoers <<'SUDOEOF'
|
||||||
Defaults env_reset
|
Defaults env_reset
|
||||||
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
|
@ -58,7 +58,7 @@ chmod 440 /etc/sudoers.d/rene
|
||||||
ok "sudoers: Linux-Standard + NOPASSWD fuer rene"
|
ok "sudoers: Linux-Standard + NOPASSWD fuer rene"
|
||||||
|
|
||||||
# ── 1. Kritische Hardware-Fixes ZUERST (vor allem anderen) ───────────────
|
# ── 1. Kritische Hardware-Fixes ZUERST (vor allem anderen) ───────────────
|
||||||
echo -e "\n=== 1/11 Hardware-Fixes ==="
|
echo -e "\n=== 1/12 Hardware-Fixes ==="
|
||||||
|
|
||||||
# GPU: AMD Radeon blacklisten (MBP 16")
|
# GPU: AMD Radeon blacklisten (MBP 16")
|
||||||
if [[ "$MODEL" == "16" ]]; then
|
if [[ "$MODEL" == "16" ]]; then
|
||||||
|
|
@ -89,7 +89,7 @@ cat > /etc/default/keyboard <<EOF
|
||||||
XKBMODEL="macbook79"
|
XKBMODEL="macbook79"
|
||||||
XKBLAYOUT="de"
|
XKBLAYOUT="de"
|
||||||
XKBVARIANT=""
|
XKBVARIANT=""
|
||||||
XKBOPTIONS="lv3:lalt_switch,terminate:ctrl_alt_bksp"
|
XKBOPTIONS="lv3:lalt_switch,terminate:ctrl_alt_bksp,ctrl:swap_lwin_lctl"
|
||||||
EOF
|
EOF
|
||||||
dpkg-reconfigure -f noninteractive keyboard-configuration 2>/dev/null || true
|
dpkg-reconfigure -f noninteractive keyboard-configuration 2>/dev/null || true
|
||||||
ok "Tastatur: mac_deadkeys"
|
ok "Tastatur: mac_deadkeys"
|
||||||
|
|
@ -105,23 +105,23 @@ update-initramfs -u 2>/dev/null || true
|
||||||
ok "initramfs aktualisiert"
|
ok "initramfs aktualisiert"
|
||||||
|
|
||||||
# ── 2. Sleep/Suspend verhindern während Installation ─────────────────────
|
# ── 2. Sleep/Suspend verhindern während Installation ─────────────────────
|
||||||
echo -e "\n=== 2/11 Sleep verhindern ==="
|
echo -e "\n=== 2/12 Sleep verhindern ==="
|
||||||
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 2>/dev/null || true
|
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 2>/dev/null || true
|
||||||
ok "Sleep/Suspend deaktiviert (für Installation)"
|
ok "Sleep/Suspend deaktiviert (für Installation)"
|
||||||
|
|
||||||
# ── 3. Eventuelle unterbrochene Installationen reparieren ────────────────
|
# ── 3. Eventuelle unterbrochene Installationen reparieren ────────────────
|
||||||
echo -e "\n=== 3/11 dpkg reparieren ==="
|
echo -e "\n=== 3/12 dpkg reparieren ==="
|
||||||
dpkg --configure -a 2>/dev/null || true
|
dpkg --configure -a 2>/dev/null || true
|
||||||
apt install -f -y 2>/dev/null || true
|
apt install -f -y 2>/dev/null || true
|
||||||
ok "dpkg/apt repariert"
|
ok "dpkg/apt repariert"
|
||||||
|
|
||||||
# ── 4. System aktualisieren ──────────────────────────────────────────────
|
# ── 4. System aktualisieren ──────────────────────────────────────────────
|
||||||
echo -e "\n=== 4/11 System aktualisieren ==="
|
echo -e "\n=== 4/12 System aktualisieren ==="
|
||||||
apt update && apt upgrade -y || warn "apt upgrade hatte Probleme"
|
apt update && apt upgrade -y || warn "apt upgrade hatte Probleme"
|
||||||
ok "System aktuell"
|
ok "System aktuell"
|
||||||
|
|
||||||
# ── 5. Pakete installieren ───────────────────────────────────────────────
|
# ── 5. Pakete installieren ───────────────────────────────────────────────
|
||||||
echo -e "\n=== 5/11 Pakete installieren ==="
|
echo -e "\n=== 5/12 Pakete installieren ==="
|
||||||
apt install -y \
|
apt install -y \
|
||||||
xubuntu-core \
|
xubuntu-core \
|
||||||
bcmwl-kernel-source \
|
bcmwl-kernel-source \
|
||||||
|
|
@ -130,7 +130,7 @@ apt install -y \
|
||||||
tlp tlp-rdw \
|
tlp tlp-rdw \
|
||||||
git curl wget stow \
|
git curl wget stow \
|
||||||
zsh neovim \
|
zsh neovim \
|
||||||
build-essential \
|
build-essential dkms \
|
||||||
python3 python3-pip python3-venv \
|
python3 python3-pip python3-venv \
|
||||||
nodejs npm \
|
nodejs npm \
|
||||||
wireguard wireguard-tools \
|
wireguard wireguard-tools \
|
||||||
|
|
@ -140,8 +140,8 @@ apt install -y \
|
||||||
zoxide \
|
zoxide \
|
||||||
micro \
|
micro \
|
||||||
flatpak \
|
flatpak \
|
||||||
thunderbird thunderbird-locale-de \
|
|
||||||
keepassxc \
|
keepassxc \
|
||||||
|
kitty \
|
||||||
htop btop cmatrix libcurses-perl cowsay fortune-mod fortunes-de \
|
htop btop cmatrix libcurses-perl cowsay fortune-mod fortunes-de \
|
||||||
bat eza fd-find fzf ripgrep tldr ncdu duf \
|
bat eza fd-find fzf ripgrep tldr ncdu duf \
|
||||||
timeshift \
|
timeshift \
|
||||||
|
|
@ -194,13 +194,62 @@ fi
|
||||||
snap install freecad 2>/dev/null || warn "FreeCAD Snap uebersprungen"
|
snap install freecad 2>/dev/null || warn "FreeCAD Snap uebersprungen"
|
||||||
snap install libreoffice 2>/dev/null || warn "LibreOffice Snap uebersprungen"
|
snap install libreoffice 2>/dev/null || warn "LibreOffice Snap uebersprungen"
|
||||||
snap install bitwarden 2>/dev/null || warn "Bitwarden Snap uebersprungen"
|
snap install bitwarden 2>/dev/null || warn "Bitwarden Snap uebersprungen"
|
||||||
|
snap install thunderbird 2>/dev/null || warn "Thunderbird Snap uebersprungen"
|
||||||
|
|
||||||
# ── 6. Brave Browser (wird in setup-desktop.sh als Flatpak installiert) ──
|
# ── 6. FaceTime HD Webcam (Broadcom 1570, PCIe) ─────────────────────────
|
||||||
echo -e "\n=== 6/11 Brave Browser ==="
|
echo -e "\n=== 6/12 FaceTime HD Webcam ==="
|
||||||
ok "Brave wird als Flatpak in setup-desktop.sh installiert"
|
if lspci | grep -qi "facetime"; then
|
||||||
|
if ! dkms status 2>/dev/null | grep -q "facetimehd"; then
|
||||||
|
# Firmware extrahieren
|
||||||
|
FTMP=$(mktemp -d)
|
||||||
|
git clone --depth 1 https://github.com/patjak/facetimehd-firmware.git "$FTMP/fw" \
|
||||||
|
&& make -C "$FTMP/fw" \
|
||||||
|
&& make -C "$FTMP/fw" install \
|
||||||
|
&& ok "facetimehd Firmware installiert" \
|
||||||
|
|| warn "facetimehd Firmware fehlgeschlagen"
|
||||||
|
# Treiber bauen und via DKMS installieren
|
||||||
|
git clone --depth 1 https://github.com/patjak/bcwc_pcie.git /usr/src/facetimehd-1.0 \
|
||||||
|
&& cat > /usr/src/facetimehd-1.0/dkms.conf <<'DKMSEOF'
|
||||||
|
PACKAGE_NAME="facetimehd"
|
||||||
|
PACKAGE_VERSION="1.0"
|
||||||
|
MAKE[0]="make -C /lib/modules/${kernelver}/build M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build modules"
|
||||||
|
CLEAN="make -C /lib/modules/${kernelver}/build M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean"
|
||||||
|
BUILT_MODULE_NAME[0]="facetimehd"
|
||||||
|
DEST_MODULE_LOCATION[0]="/updates"
|
||||||
|
AUTOINSTALL="yes"
|
||||||
|
DKMSEOF
|
||||||
|
dkms add facetimehd/1.0 \
|
||||||
|
&& dkms build facetimehd/1.0 \
|
||||||
|
&& dkms install facetimehd/1.0 \
|
||||||
|
&& ok "facetimehd DKMS-Treiber installiert" \
|
||||||
|
|| warn "facetimehd DKMS fehlgeschlagen"
|
||||||
|
rm -rf "$FTMP"
|
||||||
|
else
|
||||||
|
ok "facetimehd bereits via DKMS installiert"
|
||||||
|
fi
|
||||||
|
# Modul beim Boot laden
|
||||||
|
echo "facetimehd" > /etc/modules-load.d/facetimehd.conf
|
||||||
|
# Modul jetzt laden (falls nicht in chroot)
|
||||||
|
if [[ "$(stat -c %d:%i /)" == "$(stat -c %d:%i /proc/1/root/.)" ]] 2>/dev/null; then
|
||||||
|
modprobe facetimehd 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ok "Keine FaceTime-Kamera erkannt — uebersprungen"
|
||||||
|
fi
|
||||||
|
|
||||||
# ── 7. Systemkonfigurationen ─────────────────────────────────────────────
|
# ── 7. Brave Browser (apt-Repo) ──────────────────────────────────────────
|
||||||
echo -e "\n=== 7/11 Systemkonfigurationen ==="
|
echo -e "\n=== 7/12 Brave Browser ==="
|
||||||
|
if ! command -v brave-browser &>/dev/null; then
|
||||||
|
curl -fsSLo /tmp/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
|
||||||
|
install -o root -g root -m 644 /tmp/brave-browser-archive-keyring.gpg /usr/share/keyrings/brave-browser-archive-keyring.gpg
|
||||||
|
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main" > /etc/apt/sources.list.d/brave-browser-release.list
|
||||||
|
apt update -qq && apt install -y brave-browser
|
||||||
|
rm -f /tmp/brave-browser-archive-keyring.gpg
|
||||||
|
fi
|
||||||
|
ok "Brave Browser installiert (apt)"
|
||||||
|
|
||||||
|
# ── 8. Systemkonfigurationen ─────────────────────────────────────────────
|
||||||
|
echo -e "\n=== 8/12 Systemkonfigurationen ==="
|
||||||
|
|
||||||
# mbpfan (modellabhängig)
|
# mbpfan (modellabhängig)
|
||||||
if [[ -n "$REPO_DIR" && -f "$REPO_DIR/mbpfan-${MODEL}.conf" ]]; then
|
if [[ -n "$REPO_DIR" && -f "$REPO_DIR/mbpfan-${MODEL}.conf" ]]; then
|
||||||
|
|
@ -220,55 +269,23 @@ else
|
||||||
chmod +x /usr/local/bin/temp-watch.sh || warn "temp-watch.sh Download fehlgeschlagen"
|
chmod +x /usr/local/bin/temp-watch.sh || warn "temp-watch.sh Download fehlgeschlagen"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# WireGuard via NetworkManager (.nmconnection direkt schreiben, kein nmcli noetig)
|
# WireGuard via wg-quick (einfacher als NetworkManager, Config 1:1 verwendbar)
|
||||||
WG_CONF="$REPO_DIR/wireguard/m${MODEL}.conf"
|
WG_CONF="$REPO_DIR/wireguard/m${MODEL}.conf"
|
||||||
if [[ -n "$REPO_DIR" && -f "$WG_CONF" ]]; then
|
if [[ -n "$REPO_DIR" && -f "$WG_CONF" ]]; then
|
||||||
# Alte wg-quick-Config entfernen falls vorhanden
|
# Alte NM-WireGuard-Verbindung entfernen falls vorhanden
|
||||||
systemctl disable --now wg-quick@wg0 2>/dev/null || true
|
nmcli connection delete wg0 2>/dev/null || true
|
||||||
# Werte aus der WireGuard-Conf lesen
|
rm -f /etc/NetworkManager/system-connections/wg0.nmconnection
|
||||||
WG_PRIVKEY=$(grep -oP 'PrivateKey\s*=\s*\K.*' "$WG_CONF")
|
# wg-quick Config installieren (Dateiname = Interface-Name)
|
||||||
WG_LISTEN=$(grep -oP 'ListenPort\s*=\s*\K.*' "$WG_CONF")
|
WG_NAME="wg-vps"
|
||||||
WG_ADDR=$(grep -oP 'Address\s*=\s*\K.*' "$WG_CONF")
|
cp "$WG_CONF" "/etc/wireguard/${WG_NAME}.conf"
|
||||||
WG_PUBKEY=$(grep -oP 'PublicKey\s*=\s*\K.*' "$WG_CONF")
|
chmod 600 "/etc/wireguard/${WG_NAME}.conf"
|
||||||
WG_PSK=$(grep -oP 'PresharedKey\s*=\s*\K.*' "$WG_CONF")
|
# Service aktivieren (startet automatisch beim Boot)
|
||||||
WG_ALLOWED=$(grep -oP 'AllowedIPs\s*=\s*\K.*' "$WG_CONF" | tr -d ' ' | tr ',' ';')
|
systemctl enable wg-quick@${WG_NAME} 2>/dev/null || true
|
||||||
WG_ENDPOINT=$(grep -oP 'Endpoint\s*=\s*\K.*' "$WG_CONF")
|
# Starten falls nicht in chroot
|
||||||
WG_KEEPALIVE=$(grep -oP 'PersistentKeepalive\s*=\s*\K.*' "$WG_CONF")
|
if [[ "$(stat -c %d:%i /)" == "$(stat -c %d:%i /proc/1/root/.)" ]] 2>/dev/null; then
|
||||||
# NM-Verbindungsdatei direkt schreiben (laeuft als root, Keys persistent)
|
wg-quick up "$WG_NAME" 2>/dev/null || true
|
||||||
NM_CONN_DIR="/etc/NetworkManager/system-connections"
|
fi
|
||||||
mkdir -p "$NM_CONN_DIR"
|
ok "WireGuard ${WG_NAME} installiert (wg-quick, DNS: Pihole, autostart)"
|
||||||
cat > "$NM_CONN_DIR/wg0.nmconnection" <<WGEOF
|
|
||||||
[connection]
|
|
||||||
id=wg0
|
|
||||||
type=wireguard
|
|
||||||
interface-name=wg0
|
|
||||||
autoconnect=true
|
|
||||||
|
|
||||||
[wireguard]
|
|
||||||
listen-port=$WG_LISTEN
|
|
||||||
private-key=$WG_PRIVKEY
|
|
||||||
private-key-flags=0
|
|
||||||
|
|
||||||
[wireguard-peer.${WG_PUBKEY}]
|
|
||||||
preshared-key=$WG_PSK
|
|
||||||
preshared-key-flags=0
|
|
||||||
allowed-ips=$WG_ALLOWED;
|
|
||||||
endpoint=$WG_ENDPOINT
|
|
||||||
persistent-keepalive=$WG_KEEPALIVE
|
|
||||||
|
|
||||||
[ipv4]
|
|
||||||
method=manual
|
|
||||||
address1=$WG_ADDR
|
|
||||||
dns=10.47.11.20;10.47.11.1;
|
|
||||||
dns-search=~.;
|
|
||||||
|
|
||||||
[ipv6]
|
|
||||||
method=ignore
|
|
||||||
WGEOF
|
|
||||||
chmod 600 "$NM_CONN_DIR/wg0.nmconnection"
|
|
||||||
nmcli connection reload 2>/dev/null || true
|
|
||||||
nmcli connection up wg0 2>/dev/null || true
|
|
||||||
ok "WireGuard wg0.nmconnection geschrieben (DNS: 10.47.11.20, 10.47.11.1, autoconnect)"
|
|
||||||
else
|
else
|
||||||
warn "WireGuard: keine lokale Config gefunden — manuell einrichten"
|
warn "WireGuard: keine lokale Config gefunden — manuell einrichten"
|
||||||
fi
|
fi
|
||||||
|
|
@ -276,7 +293,7 @@ fi
|
||||||
ok "Systemkonfigurationen gesetzt"
|
ok "Systemkonfigurationen gesetzt"
|
||||||
|
|
||||||
# ── 8. XFCE-Konfiguration (beide MBPs haben Retina-Displays) ─────────────
|
# ── 8. XFCE-Konfiguration (beide MBPs haben Retina-Displays) ─────────────
|
||||||
echo -e "\n=== 8/11 XFCE-Konfiguration (HiDPI) ==="
|
echo -e "\n=== 8/12 XFCE-Konfiguration (HiDPI) ==="
|
||||||
XFCE_XML_DIR="/home/rene/.config/xfce4/xfconf/xfce-perchannel-xml"
|
XFCE_XML_DIR="/home/rene/.config/xfce4/xfconf/xfce-perchannel-xml"
|
||||||
mkdir -p "$XFCE_XML_DIR"
|
mkdir -p "$XFCE_XML_DIR"
|
||||||
|
|
||||||
|
|
@ -287,7 +304,7 @@ cat > "$XFCE_XML_DIR/xfwm4.xml" <<XFEOF
|
||||||
<property name="general" type="empty">
|
<property name="general" type="empty">
|
||||||
<property name="use_compositing" type="bool" value="false"/>
|
<property name="use_compositing" type="bool" value="false"/>
|
||||||
<property name="theme" type="string" value="Default-xhdpi"/>
|
<property name="theme" type="string" value="Default-xhdpi"/>
|
||||||
<property name="title_font" type="string" value="Sans Bold 9"/>
|
<property name="title_font" type="string" value="Noto Sans Bold 10"/>
|
||||||
</property>
|
</property>
|
||||||
</channel>
|
</channel>
|
||||||
XFEOF
|
XFEOF
|
||||||
|
|
@ -304,6 +321,7 @@ cat > "$XFCE_XML_DIR/xsettings.xml" <<XSEOF
|
||||||
</property>
|
</property>
|
||||||
<property name="Gtk" type="empty">
|
<property name="Gtk" type="empty">
|
||||||
<property name="CursorThemeSize" type="int" value="48"/>
|
<property name="CursorThemeSize" type="int" value="48"/>
|
||||||
|
<property name="FontName" type="string" value="Noto Sans 10"/>
|
||||||
</property>
|
</property>
|
||||||
</channel>
|
</channel>
|
||||||
XSEOF
|
XSEOF
|
||||||
|
|
@ -312,11 +330,27 @@ XSEOF
|
||||||
dpkg-divert --local --rename --divert /usr/bin/xfce4-display-settings.real /usr/bin/xfce4-display-settings 2>/dev/null || true
|
dpkg-divert --local --rename --divert /usr/bin/xfce4-display-settings.real /usr/bin/xfce4-display-settings 2>/dev/null || true
|
||||||
ln -sf /usr/bin/true /usr/bin/xfce4-display-settings
|
ln -sf /usr/bin/true /usr/bin/xfce4-display-settings
|
||||||
|
|
||||||
chown -R 1000:1000 /home/rene/.config/xfce4
|
# Panel-Konfiguration (Höhe passend zur Schriftgröße)
|
||||||
ok "XFCE: Compositor aus, Retina-Skalierung, Display-Settings deaktiviert"
|
PANEL_XML="$XFCE_XML_DIR/xfce4-panel.xml"
|
||||||
|
if [[ ! -f "$PANEL_XML" ]]; then
|
||||||
|
cat > "$PANEL_XML" <<PEOF
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<channel name="xfce4-panel" version="1.0">
|
||||||
|
<property name="panels" type="array">
|
||||||
|
<value type="int" value="1"/>
|
||||||
|
<property name="panel-1" type="empty">
|
||||||
|
<property name="size" type="uint" value="28"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
|
PEOF
|
||||||
|
fi
|
||||||
|
|
||||||
# ── 9. Netzwerk: NetworkManager statt netplan ─────────────────────────────
|
chown -R 1000:1000 /home/rene/.config/xfce4
|
||||||
echo -e "\n=== 9/11 Netzwerk ==="
|
ok "XFCE: Compositor aus, Retina-Skalierung, Schriften 10pt, Panel 28px, Display-Settings deaktiviert"
|
||||||
|
|
||||||
|
# ── 10. Netzwerk: NetworkManager statt netplan ────────────────────────────
|
||||||
|
echo -e "\n=== 10/12 Netzwerk ==="
|
||||||
|
|
||||||
# WLAN-Zugangsdaten aus bestehender netplan-Config übernehmen (falls vorhanden)
|
# WLAN-Zugangsdaten aus bestehender netplan-Config übernehmen (falls vorhanden)
|
||||||
WLAN_SSID=""
|
WLAN_SSID=""
|
||||||
|
|
@ -361,8 +395,8 @@ if [ -f "$EFI_VAR" ]; then
|
||||||
ok "auto-boot deaktiviert (kein Start beim Netzteil-Anstecken)"
|
ok "auto-boot deaktiviert (kein Start beim Netzteil-Anstecken)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 10. Energieeinstellungen & Lokalisierung ─────────────────────────────
|
# ── 11. Energieeinstellungen & Lokalisierung ─────────────────────────────
|
||||||
echo -e "\n=== 10/11 Energie & Lokalisierung ==="
|
echo -e "\n=== 11/12 Energie & Lokalisierung ==="
|
||||||
|
|
||||||
tee /etc/systemd/sleep.conf > /dev/null <<EOF
|
tee /etc/systemd/sleep.conf > /dev/null <<EOF
|
||||||
[Sleep]
|
[Sleep]
|
||||||
|
|
@ -379,8 +413,8 @@ update-locale LANG=de_DE.UTF-8 LC_ALL=de_DE.UTF-8
|
||||||
timedatectl set-timezone Europe/Berlin 2>/dev/null || ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
|
timedatectl set-timezone Europe/Berlin 2>/dev/null || ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
|
||||||
ok "Energie & Lokalisierung gesetzt"
|
ok "Energie & Lokalisierung gesetzt"
|
||||||
|
|
||||||
# ── 11. Services aktivieren ──────────────────────────────────────────────
|
# ── 12. Services aktivieren ──────────────────────────────────────────────
|
||||||
echo -e "\n=== 11/11 Services & Shell ==="
|
echo -e "\n=== 12/12 Services & Shell ==="
|
||||||
systemctl enable mbpfan 2>/dev/null || true
|
systemctl enable mbpfan 2>/dev/null || true
|
||||||
systemctl enable thermald 2>/dev/null || true
|
systemctl enable thermald 2>/dev/null || true
|
||||||
systemctl enable tlp 2>/dev/null || true
|
systemctl enable tlp 2>/dev/null || true
|
||||||
|
|
|
||||||
108
setup-desktop.sh
108
setup-desktop.sh
|
|
@ -71,16 +71,14 @@ export PATH="$HOME/.npm-global/bin:$PATH"
|
||||||
npm install -g @anthropic-ai/claude-code
|
npm install -g @anthropic-ai/claude-code
|
||||||
ok "Claude Code installiert"
|
ok "Claude Code installiert"
|
||||||
|
|
||||||
# ── 5. Flatpak-Apps (PrusaSlicer + Brave) ──────────────────────────────
|
# ── 5. Flatpak-Apps (PrusaSlicer) ──────────────────────────────────────
|
||||||
echo -e "\n=== 5/8 Flatpak-Apps ==="
|
echo -e "\n=== 5/10 Flatpak-Apps ==="
|
||||||
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
flatpak install --user -y flathub com.prusa3d.PrusaSlicer
|
flatpak install --user -y flathub com.prusa3d.PrusaSlicer
|
||||||
ok "PrusaSlicer installiert (Flatpak)"
|
ok "PrusaSlicer installiert (Flatpak)"
|
||||||
flatpak install --user -y flathub com.brave.Browser
|
|
||||||
ok "Brave Browser installiert (Flatpak)"
|
|
||||||
|
|
||||||
# ── 6. PlatformIO (pipx) ────────────────────────────────────────────────
|
# ── 6. PlatformIO (pipx) ────────────────────────────────────────────────
|
||||||
echo -e "\n=== 6/8 PlatformIO ==="
|
echo -e "\n=== 6/10 PlatformIO ==="
|
||||||
if ! command -v pio &>/dev/null; then
|
if ! command -v pio &>/dev/null; then
|
||||||
pipx install platformio
|
pipx install platformio
|
||||||
pipx ensurepath
|
pipx ensurepath
|
||||||
|
|
@ -88,7 +86,7 @@ fi
|
||||||
ok "PlatformIO installiert (pipx)"
|
ok "PlatformIO installiert (pipx)"
|
||||||
|
|
||||||
# ── 7. Dot-Files ────────────────────────────────────────────────────────
|
# ── 7. Dot-Files ────────────────────────────────────────────────────────
|
||||||
echo -e "\n=== 7/8 Dot-Files ==="
|
echo -e "\n=== 7/10 Dot-Files ==="
|
||||||
DOTFILES_DIR="$HOME/git-projekte/dotfiles-rene"
|
DOTFILES_DIR="$HOME/git-projekte/dotfiles-rene"
|
||||||
if [[ ! -d "$DOTFILES_DIR" ]]; then
|
if [[ ! -d "$DOTFILES_DIR" ]]; then
|
||||||
mkdir -p "$HOME/git-projekte"
|
mkdir -p "$HOME/git-projekte"
|
||||||
|
|
@ -146,8 +144,87 @@ else
|
||||||
warn ".p10k.zsh nicht im Dotfiles-Repo — beim ersten zsh-Start 'p10k configure' ausfuehren"
|
warn ".p10k.zsh nicht im Dotfiles-Repo — beim ersten zsh-Start 'p10k configure' ausfuehren"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 8. XFCE-Einstellungen ───────────────────────────────────────────────
|
# ── 8. Kitty Terminal ──────────────────────────────────────────────────
|
||||||
echo -e "\n=== 8/8 XFCE-Einstellungen ==="
|
echo -e "\n=== 8/10 Kitty Terminal ==="
|
||||||
|
KITTY_CONF_DIR="$HOME/.config/kitty"
|
||||||
|
mkdir -p "$KITTY_CONF_DIR"
|
||||||
|
cat > "$KITTY_CONF_DIR/kitty.conf" <<'KITTYEOF'
|
||||||
|
# Font
|
||||||
|
font_family MesloLGS NF
|
||||||
|
font_size 18.0
|
||||||
|
|
||||||
|
# Fenster
|
||||||
|
initial_window_width 120c
|
||||||
|
initial_window_height 35c
|
||||||
|
|
||||||
|
# Scrollback
|
||||||
|
scrollback_lines 10000
|
||||||
|
|
||||||
|
# Kein Glockenspiel
|
||||||
|
enable_audio_bell no
|
||||||
|
|
||||||
|
# Copy/Paste mit Ctrl+C/V (= Cmd auf Mac-Keyboard nach Swap)
|
||||||
|
map ctrl+c copy_or_interrupt
|
||||||
|
map ctrl+v paste_from_clipboard
|
||||||
|
|
||||||
|
# Tab-Verwaltung
|
||||||
|
map ctrl+t new_tab
|
||||||
|
map ctrl+w close_tab
|
||||||
|
map ctrl+shift+left previous_tab
|
||||||
|
map ctrl+shift+right next_tab
|
||||||
|
|
||||||
|
# Scrolling
|
||||||
|
map ctrl+shift+up scroll_line_up
|
||||||
|
map ctrl+shift+down scroll_line_down
|
||||||
|
map ctrl+shift+page_up scroll_page_up
|
||||||
|
map ctrl+shift+page_down scroll_page_down
|
||||||
|
|
||||||
|
# Keine Scrollbar
|
||||||
|
scrollback_indicator_color none
|
||||||
|
KITTYEOF
|
||||||
|
ok "Kitty Terminal konfiguriert"
|
||||||
|
|
||||||
|
# Kitty als Standard-Terminal
|
||||||
|
sudo update-alternatives --set x-terminal-emulator /usr/bin/kitty 2>/dev/null || true
|
||||||
|
ok "Kitty als Standard-Terminal"
|
||||||
|
|
||||||
|
# ── 9. SSH-Key + Git auf SSH umstellen ────────────────────────────────
|
||||||
|
echo -e "\n=== 9/10 SSH-Key + Git ==="
|
||||||
|
SSH_KEY="$HOME/.ssh/id_ed25519"
|
||||||
|
if [[ ! -f "$SSH_KEY" ]]; then
|
||||||
|
ssh-keygen -t ed25519 -C "rene@$(hostname)" -f "$SSH_KEY" -N ""
|
||||||
|
ok "SSH-Key erstellt"
|
||||||
|
echo ""
|
||||||
|
warn "SSH Public Key in Forgejo hinterlegen:"
|
||||||
|
echo " https://git.motocamp.de/user/settings/keys"
|
||||||
|
echo ""
|
||||||
|
cat "${SSH_KEY}.pub"
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
ok "SSH-Key vorhanden"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Forgejo SSH Host-Key akzeptieren
|
||||||
|
ssh-keyscan -p 2222 dsm.motocamp.de >> ~/.ssh/known_hosts 2>/dev/null
|
||||||
|
ok "Forgejo Host-Key akzeptiert"
|
||||||
|
|
||||||
|
# Git Remotes auf SSH umstellen
|
||||||
|
GIT_BASE="$HOME/git-projekte"
|
||||||
|
for repo in "$GIT_BASE"/*/; do
|
||||||
|
[[ -d "$repo/.git" ]] || continue
|
||||||
|
old_url=$(git -C "$repo" remote get-url origin 2>/dev/null)
|
||||||
|
if [[ "$old_url" == https://git.motocamp.de/rene/* ]]; then
|
||||||
|
name=$(basename "$old_url" .git)
|
||||||
|
git -C "$repo" remote set-url origin "ssh://git@dsm.motocamp.de:2222/rene/${name}.git"
|
||||||
|
ok "SSH: $(basename "$repo")"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Git Credential-Store (Fallback falls SSH-Key noch nicht in Forgejo)
|
||||||
|
git config --global credential.helper store
|
||||||
|
|
||||||
|
# ── 10. XFCE-Einstellungen ──────────────────────────────────────────────
|
||||||
|
echo -e "\n=== 10/10 XFCE-Einstellungen ==="
|
||||||
|
|
||||||
# Keyboard: XFCE soll /etc/default/keyboard respektieren (nicht eigenes Layout erzwingen)
|
# Keyboard: XFCE soll /etc/default/keyboard respektieren (nicht eigenes Layout erzwingen)
|
||||||
if command -v xfconf-query &>/dev/null; then
|
if command -v xfconf-query &>/dev/null; then
|
||||||
|
|
@ -208,6 +285,12 @@ else
|
||||||
fi
|
fi
|
||||||
ok "WezTerm: XFCE Standard-Terminal gesetzt"
|
ok "WezTerm: XFCE Standard-Terminal gesetzt"
|
||||||
|
|
||||||
|
# Standard-Apps: Brave als Browser, Thunderbird als Mail
|
||||||
|
xdg-settings set default-web-browser brave-browser.desktop 2>/dev/null || true
|
||||||
|
xdg-mime default thunderbird.desktop x-scheme-handler/mailto 2>/dev/null || true
|
||||||
|
xdg-mime default thunderbird.desktop message/rfc822 2>/dev/null || true
|
||||||
|
ok "Standard-Apps: Brave (Browser), Thunderbird (Mail)"
|
||||||
|
|
||||||
# ── Autostart entfernen ─────────────────────────────────────────────────
|
# ── Autostart entfernen ─────────────────────────────────────────────────
|
||||||
AUTOSTART_FILE="$HOME/.config/autostart/macbook-setup-desktop.desktop"
|
AUTOSTART_FILE="$HOME/.config/autostart/macbook-setup-desktop.desktop"
|
||||||
if [[ -f "$AUTOSTART_FILE" ]]; then
|
if [[ -f "$AUTOSTART_FILE" ]]; then
|
||||||
|
|
@ -222,7 +305,8 @@ echo -e " ${GREEN}Desktop-Setup abgeschlossen!${NC}"
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
echo ""
|
echo ""
|
||||||
warn "Noch manuell erledigen:"
|
warn "Noch manuell erledigen:"
|
||||||
echo " 1. Synology Drive Client installieren (.deb von synology.com)"
|
echo " 1. SSH Public Key in Forgejo hinterlegen (falls noch nicht geschehen)"
|
||||||
echo " 2. Thunderbird starten → Profil aus Synology Drive einbinden"
|
echo " 2. Synology Drive Client installieren (.deb von synology.com)"
|
||||||
echo " 3. Brave starten → Synchronisation einrichten"
|
echo " 3. Thunderbird starten → Profil aus Synology Drive einbinden"
|
||||||
echo " 4. Falls p10k-Icons fehlen: Terminal-Schriftart auf 'MesloLGS NF' setzen"
|
echo " 4. Brave starten → Synchronisation einrichten"
|
||||||
|
echo " 5. Falls p10k-Icons fehlen: Terminal-Schriftart auf 'MesloLGS NF' setzen"
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
PrivateKey = sIxh2D50+9bpWe6O6ezrfybW9Iy6QKcrwr9hmFpuGn0=
|
PrivateKey = sIxh2D50+9bpWe6O6ezrfybW9Iy6QKcrwr9hmFpuGn0=
|
||||||
ListenPort = 51820
|
ListenPort = 51820
|
||||||
Address = 10.13.13.8/24
|
Address = 10.13.13.8/24
|
||||||
|
DNS = 10.47.11.20
|
||||||
|
|
||||||
[Peer]
|
[Peer]
|
||||||
PublicKey = mp0YKEjsUbnld3aTAnF6cSzTfixhZETQCoKiFHIcF30=
|
PublicKey = mp0YKEjsUbnld3aTAnF6cSzTfixhZETQCoKiFHIcF30=
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue