setup_weeder.sh
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| setup_weeder.sh [2025/12/20 15:35] – 46.109.187.144 | setup_weeder.sh [2026/05/29 07:14] (current) – 46.109.187.144 | ||
|---|---|---|---|
| Line 13: | Line 13: | ||
| echo "=== Install & enable NetworkManager ===" | echo "=== Install & enable NetworkManager ===" | ||
| sudo apt update || true | sudo apt update || true | ||
| - | sudo apt install -y network-manager | + | sudo apt install -y network-manager |
| + | echo "=== Disable background updates / indexing / notifications ===" | ||
| + | |||
| + | # Keep correct time sync ON | ||
| + | sudo timedatectl set-timezone Europe/Riga || true | ||
| + | sudo timedatectl set-ntp true || true | ||
| + | |||
| + | # Disable apt automatic update timers/ | ||
| + | sudo systemctl disable --now apt-daily.timer apt-daily-upgrade.timer 2>/ | ||
| + | sudo systemctl disable --now apt-daily.service apt-daily-upgrade.service 2>/ | ||
| + | sudo systemctl mask apt-daily.timer apt-daily-upgrade.timer apt-daily.service apt-daily-upgrade.service 2>/ | ||
| + | |||
| + | # Disable unattended upgrades | ||
| + | sudo systemctl disable --now unattended-upgrades.service 2>/ | ||
| + | sudo systemctl mask unattended-upgrades.service 2>/ | ||
| + | |||
| + | # Disable PackageKit / GUI package refresh | ||
| + | sudo systemctl disable --now packagekit.service packagekit-offline-update.service 2>/ | ||
| + | sudo systemctl mask packagekit.service packagekit-offline-update.service 2>/ | ||
| + | |||
| + | # Disable update notifier | ||
| + | sudo systemctl disable --now update-notifier-download.timer update-notifier-download.service 2>/ | ||
| + | sudo systemctl mask update-notifier-download.timer update-notifier-download.service 2>/ | ||
| + | |||
| + | sudo systemctl disable --now update-notifier-motd.timer update-notifier-motd.service 2>/ | ||
| + | sudo systemctl mask update-notifier-motd.timer update-notifier-motd.service 2>/ | ||
| + | |||
| + | # Disable plocate daily database indexing | ||
| + | sudo systemctl disable --now plocate-updatedb.timer plocate-updatedb.service 2>/ | ||
| + | sudo systemctl mask plocate-updatedb.timer plocate-updatedb.service 2>/ | ||
| + | |||
| + | # Disable firmware update daemon refresh | ||
| + | sudo systemctl disable --now fwupd-refresh.timer fwupd-refresh.service 2>/ | ||
| + | sudo systemctl mask fwupd-refresh.timer fwupd-refresh.service 2>/ | ||
| + | |||
| + | # Disable anacron daily jobs | ||
| + | sudo systemctl disable --now anacron.timer anacron.service 2>/ | ||
| + | sudo systemctl mask anacron.timer anacron.service 2>/ | ||
| + | |||
| + | # Disable snap background refresh/ | ||
| + | sudo systemctl disable --now snapd.service snapd.socket snapd.seeded.service 2>/ | ||
| + | sudo systemctl mask snapd.service snapd.socket snapd.seeded.service 2>/ | ||
| + | |||
| + | # Disable printing services if printer support is not needed | ||
| + | sudo systemctl disable --now cups.service cups.socket cups.path cups-browsed.service 2>/ | ||
| + | sudo systemctl mask cups.service cups.socket cups.path cups-browsed.service 2>/ | ||
| + | |||
| + | # Disable GNOME tracker file indexing for user pi | ||
| + | sudo -u pi systemctl --user stop tracker-miner-fs-3.service tracker-extract-3.service 2>/ | ||
| + | sudo -u pi systemctl --user mask tracker-miner-fs-3.service tracker-extract-3.service 2>/ | ||
| + | |||
| + | # Kill already running background processes | ||
| + | pkill -f tracker-miner-fs-3 2>/ | ||
| + | pkill -f update-notifier 2>/ | ||
| + | pkill -f apt-check 2>/ | ||
| + | pkill -f snap-store 2>/ | ||
| + | pkill -f snapd-desktop-integration 2>/ | ||
| + | |||
| + | # Disable APT periodic config | ||
| + | sudo bash -c 'cat > / | ||
| + | APT:: | ||
| + | APT:: | ||
| + | APT:: | ||
| + | APT:: | ||
| + | EOF' | ||
| sudo systemctl enable --now NetworkManager | sudo systemctl enable --now NetworkManager | ||
| + | sudo systemctl enable --now ssh | ||
| echo "=== Netplan: NetworkManager renderer + static eth0 (link-local) ===" | echo "=== Netplan: NetworkManager renderer + static eth0 (link-local) ===" | ||
| Line 81: | Line 146: | ||
| sleep 5 | sleep 5 | ||
| sudo reboot | sudo reboot | ||
| + | |||
| </ | </ | ||
| + | |||
| + | |||
| + | < | ||
| + | #!/bin/bash | ||
| + | set -euo pipefail | ||
| + | |||
| + | # ====== CONFIG ====== | ||
| + | USER=" | ||
| + | HOME_DIR="/ | ||
| + | APP_DIR=" | ||
| + | SERVICE_NAME=" | ||
| + | USB_MOUNT="/ | ||
| + | USB_IMG_DIR=" | ||
| + | PATH_STORAGE=" | ||
| + | |||
| + | echo "=== Install & enable NetworkManager ===" | ||
| + | sudo apt update || true | ||
| + | sudo apt install -y network-manager openssh-server | ||
| + | sudo systemctl enable --now NetworkManager | ||
| + | sudo systemctl enable --now ssh | ||
| + | |||
| + | echo "=== Netplan: NetworkManager renderer + static eth0 (link-local) ===" | ||
| + | sudo bash -c "cat <<' | ||
| + | network: | ||
| + | version: 2 | ||
| + | renderer: NetworkManager | ||
| + | ethernets: | ||
| + | eth0: | ||
| + | dhcp4: no | ||
| + | addresses: | ||
| + | - 169.254.1.244/ | ||
| + | routes: | ||
| + | - to: default | ||
| + | via: 169.254.1.1 | ||
| + | EOF" | ||
| + | |||
| + | sudo netplan apply || true | ||
| + | |||
| + | echo "=== Prepare USB mount folder ===" | ||
| + | sudo mkdir -p " | ||
| + | sudo chown " | ||
| + | sudo chmod 777 " | ||
| + | |||
| + | echo "=== Update path_storage.json img_folder_path ===" | ||
| + | if [ -f " | ||
| + | python3 - <<PY | ||
| + | import json | ||
| + | |||
| + | path = " | ||
| + | |||
| + | with open(path, " | ||
| + | data = json.load(f) | ||
| + | |||
| + | data[" | ||
| + | |||
| + | with open(path, " | ||
| + | json.dump(data, | ||
| + | |||
| + | print(" | ||
| + | PY | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | echo "=== Create systemd service: $SERVICE_NAME ===" | ||
| + | sudo bash -c "cat <<EOF > / | ||
| + | [Unit] | ||
| + | Description=Weeder Premium Multi server startup script | ||
| + | Wants=network-online.target | ||
| + | After=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | Type=simple | ||
| + | User=$USER | ||
| + | WorkingDirectory=$APP_DIR | ||
| + | |||
| + | # Create stable USB mount point | ||
| + | ExecStartPre=/ | ||
| + | |||
| + | # Unmount old mount if exists. ' | ||
| + | ExecStartPre=-/ | ||
| + | |||
| + | # Find first USB storage partition and mount it to $USB_MOUNT. | ||
| + | # If USB exists, mount with pi permissions. | ||
| + | # If no USB exists, service still starts and uses local / | ||
| + | ExecStartPre=/ | ||
| + | |||
| + | # Create image folder | ||
| + | ExecStartPre=/ | ||
| + | ExecStartPre=/ | ||
| + | |||
| + | ExecStart=/ | ||
| + | |||
| + | Environment=PATH=/ | ||
| + | Restart=always | ||
| + | RestartSec=5 | ||
| + | StandardOutput=append: | ||
| + | StandardError=append: | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | EOF" | ||
| + | |||
| + | echo "=== Disable old weeder.service if it exists ===" | ||
| + | sudo systemctl disable weeder.service 2>/ | ||
| + | sudo systemctl stop weeder.service 2>/ | ||
| + | |||
| + | echo "=== Enable and start $SERVICE_NAME ===" | ||
| + | sudo systemctl daemon-reload | ||
| + | sudo systemctl enable " | ||
| + | sudo systemctl restart " | ||
| + | |||
| + | echo "=== Desktop shortcut (optional) ===" | ||
| + | mkdir -p " | ||
| + | cat <<EOF > " | ||
| + | [Desktop Entry] | ||
| + | Version=1.0 | ||
| + | Name=weeder | ||
| + | Comment=Run WEEDER server | ||
| + | Exec=/ | ||
| + | Terminal=true | ||
| + | Type=Application | ||
| + | Categories=Utility; | ||
| + | EOF | ||
| + | |||
| + | gio set " | ||
| + | chmod +x " | ||
| + | chown " | ||
| + | |||
| + | echo "=== Sudoers (safe) ===" | ||
| + | sudo bash -c "cat <<EOF > / | ||
| + | $USER ALL=(ALL) NOPASSWD: / | ||
| + | EOF" | ||
| + | |||
| + | sudo chmod 0440 / | ||
| + | |||
| + | echo "=== Setup complete ===" | ||
| + | echo " | ||
| + | echo "Image path: $USB_IMG_DIR/" | ||
| + | echo "" | ||
| + | echo "Check with:" | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo " | ||
| + | sleep 5 | ||
| + | sudo reboot | ||
| + | </ | ||
| + | |||
| + | sudo systemctl disable --now apt-daily.timer | ||
| + | sudo systemctl disable --now apt-daily-upgrade.timer | ||
| + | sudo systemctl disable --now unattended-upgrades.service | ||
| + | sudo systemctl disable --now packagekit.service | ||
setup_weeder.sh.1766244931.txt.gz · Last modified: by 46.109.187.144 · Currently locked by: 216.73.217.69
