From e949a1cf6ea4377da6dd15a7d2e96404267e73fc Mon Sep 17 00:00:00 2001 From: TrudeEH Date: Wed, 23 Jul 2025 18:43:58 +0100 Subject: [PATCH] update scripts and work on server setup --- scripts/disk-array | 66 ++++++++++++++++++++ scripts/install-docker | 61 ++++++++++++++++++ scripts/steam-setup | 14 ----- scripts/update | 30 ++++++--- server/upnpc-close.sh => scripts/upnpc-close | 2 + server/.env | 16 ++++- server/install-docker.sh | 43 ------------- 7 files changed, 165 insertions(+), 67 deletions(-) create mode 100755 scripts/disk-array create mode 100755 scripts/install-docker delete mode 100755 scripts/steam-setup rename server/upnpc-close.sh => scripts/upnpc-close (85%) mode change 100644 => 100755 delete mode 100644 server/install-docker.sh diff --git a/scripts/disk-array b/scripts/disk-array new file mode 100755 index 00000000..e7792821 --- /dev/null +++ b/scripts/disk-array @@ -0,0 +1,66 @@ +#!/bin/sh + +# Variables (edit these as needed) +ARRAY_NAME="md0" +MOUNT_POINT="/mnt/md0" +MDADM_CONF="/etc/mdadm/mdadm.conf" + +# Colors +RED="\e[31m" +GREEN="\e[32m" +YELLOW="\e[33m" +MAGENTA="\e[35m" +CYAN="\e[36m" +BOLD="\e[1m" +NC="\e[0m" + +echo "${CYAN}${BOLD}=== RAID Array Setup Script ===${NC}" + +if ! sudo mdadm --help >/dev/null 2>&1; then + echo "${YELLOW}[+]${NC} Installing mdadm package..." + sudo apt install mdadm -y + echo "${GREEN}[✓]${NC} mdadm installed successfully" +else + echo "${GREEN}[✓]${NC} mdadm is already installed" +fi + +# Check if array is already assembled +if [ "/dev/${ARRAY_NAME}" ]; then + echo "${GREEN}[✓]${NC} Array /dev/${ARRAY_NAME} exists." + sudo mdadm --detail "/dev/${ARRAY_NAME}" + cat /proc/mdstat + + # Check if array is degraded + if sudo mdadm --detail "/dev/${ARRAY_NAME}" | grep -q "degraded"; then + echo "${RED}[!] WARNING:${NC} Array is degraded! Check which drives need to be re-added." + echo "${YELLOW}[i]${NC} You may need to run: ${CYAN}sudo mdadm --manage /dev/${ARRAY_NAME} --re-add ${NC}" + fi +else + echo "${YELLOW}[+]${NC} Assembling RAID array..." + sudo mdadm --assemble --scan +fi + +# Optionally update mdadm.conf +if ! grep -q "/dev/${ARRAY_NAME}" "$MDADM_CONF"; then + echo "${YELLOW}[+]${NC} Updating $MDADM_CONF..." + sudo mdadm --detail --scan | sudo tee -a "$MDADM_CONF" +fi + +# Mount the array +if [ ! -d "$MOUNT_POINT" ]; then + sudo mkdir -p "$MOUNT_POINT" + echo "${GREEN}[✓]${NC} Mount point created" +fi + +if ! mountpoint -q "$MOUNT_POINT"; then + echo "${YELLOW}[+]${NC} Mounting /dev/${ARRAY_NAME} to $MOUNT_POINT..." + sudo mount "/dev/${ARRAY_NAME}" "$MOUNT_POINT" + echo "${GREEN}[✓]${NC} Array mounted successfully at $MOUNT_POINT" +else + echo "${GREEN}[✓]${NC} Array is already mounted at $MOUNT_POINT" +fi + +echo "${CYAN}${BOLD}=== Setup Complete ===${NC}" +echo "${CYAN}[i]${NC} Array device: ${CYAN}/dev/${ARRAY_NAME}${NC}" +echo "${CYAN}[i]${NC} Mount point: ${CYAN}$MOUNT_POINT${NC}" + diff --git a/scripts/install-docker b/scripts/install-docker new file mode 100755 index 00000000..8689c4bc --- /dev/null +++ b/scripts/install-docker @@ -0,0 +1,61 @@ +#!/bin/sh + +# Colors +RED="\e[31m" +GREEN="\e[32m" +YELLOW="\e[33m" +MAGENTA="\e[35m" +CYAN="\e[36m" +GRAY="\e[90m" +BOLD="\e[1m" +NC="\e[0m" + +echo "${CYAN}${BOLD}=== Docker Installation Script ===${NC}" + +echo "${YELLOW}[+]${NC} Updating APT..." +echo "${GRAY}" +sudo apt-get update +echo "${NC}" + +echo "${YELLOW}[+]${NC} Installing required packages..." +echo "${GRAY}" +sudo apt-get install -y ca-certificates curl gnupg lsb-release +echo "${NC}" + +echo "${YELLOW}[+]${NC} Adding Docker's official GPG key..." +echo "${GRAY}" +sudo mkdir -p /etc/apt/keyrings +curl -fsSL "https://download.docker.com/linux/$( + . /etc/os-release + echo "$ID" +)/gpg" | sudo gpg --dearmor >/tmp/docker.gpg +sudo mv /tmp/docker.gpg /etc/apt/keyrings/docker.gpg +sudo chmod 644 /etc/apt/keyrings/docker.gpg + +echo "${YELLOW}[+]${NC} Setting up the Docker repository..." +echo "${GRAY}" +ARCH=$(dpkg --print-architecture) +OS_ID=$(awk -F= '/^ID=/{gsub(/\"/, "", $2); print $2}' /etc/os-release) +RELEASE=$(lsb_release -cs) +echo "deb [arch=$ARCH signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$OS_ID $RELEASE stable" | + sudo tee /etc/apt/sources.list.d/docker.list >/dev/null + +echo "${YELLOW}[+]${NC} Updating APT..." +echo "${GRAY}" +sudo apt-get update +echo "${NC}" + +echo "${YELLOW}[+]${NC} Installing Docker Engine..." +echo "${GRAY}" +sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + +echo "${GREEN}[✓]${NC} Docker installation complete!" +echo "${GRAY}" +docker --version +echo "${NC}" + +echo "${YELLOW}[+]${NC} Allowing Docker use without sudo..." +echo "${GRAY}" +sudo usermod -aG docker ${USER} +exec sg docker newgrp +echo "${NC}${GREEN}[✓]${NC} User added to docker group" \ No newline at end of file diff --git a/scripts/steam-setup b/scripts/steam-setup deleted file mode 100755 index b26368d4..00000000 --- a/scripts/steam-setup +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/sh - -# This script is a temporary solution to a GNOME bug where the cursor leaves the game window instead of being locked to the screen. - -sudo apt install gamescope -flatpak install com.valvesoftware.Steam -flatpak install org.freedesktop.Platform.VulkanLayer.gamescope -echo -echo -echo 'If the cursor escapes the screen in a game, enable gamescope with the launch arguments: `gamescope -- %command%`.' -echo 'Add the `--force-grab-cursor` flag if the issue persists.' -echo 'Add the `-f` flag to launch in fullscreen.' -echo 'Add the `-h 720 -H 1440 -F fsr` flags to upscale the game (change the values accordingly).' -echo 'You can use gamescope outside of Steam as well. Replace `%command%` with the launch command for your game.' diff --git a/scripts/update b/scripts/update index 0c6bb82c..b11a3f9a 100755 --- a/scripts/update +++ b/scripts/update @@ -1,17 +1,33 @@ #! /bin/sh YELLOW="\e[33m" +GRAY="\e[90m" NC="\e[0m" -printf "%b\n" "${YELLOW}Updating apt...${NC}" -sudo apt update -sudo apt upgrade -sudo apt full-upgrade -sudo apt autoremove -sudo apt autoclean +printf "%b\n" "${YELLOW}[+]${NC} Updating repos..." +printf "%b" "${GRAY}" +sudo apt-get update +printf "%b" "${NC}" + +printf "%b\n" "${YELLOW}[+]${NC} Upgrading packages..." +printf "%b" "${GRAY}" +sudo apt-get full-upgrade +printf "%b" "${NC}" + +printf "%b\n" "${YELLOW}[+]${NC} Removing orphaned dependencies..." +printf "%b" "${GRAY}" +sudo apt-get autoremove +printf "%b" "${NC}" + +printf "%b\n" "${YELLOW}[+]${NC} Cleaning up..." +printf "%b" "${GRAY}" +sudo apt-get autoclean +printf "%b" "${NC}" if command -v flatpak >/dev/null 2>&1; then - printf "%b\n" "${YELLOW}Updating flatpak...${NC}" + printf "%b\n" "${YELLOW}[+]${NC} Updating flatpak packages..." + printf "%b" "${GRAY}" flatpak update flatpak uninstall --unused --delete-data + printf "%b" "${NC}" fi diff --git a/server/upnpc-close.sh b/scripts/upnpc-close old mode 100644 new mode 100755 similarity index 85% rename from server/upnpc-close.sh rename to scripts/upnpc-close index ec174636..e89346e1 --- a/server/upnpc-close.sh +++ b/scripts/upnpc-close @@ -2,6 +2,8 @@ # Close all upnpc ports +sudo apt install miniupnpc -y + upnpc -l | sed -n 's/^[[:space:]]*[0-9]\+\s\+\(TCP\|UDP\)\s\+\([0-9]\+\).*/\1 \2/p' | while read proto port; do upnpc -d "$port" "$proto" done diff --git a/server/.env b/server/.env index 3e9acf82..9c7f16aa 100644 --- a/server/.env +++ b/server/.env @@ -1,9 +1,21 @@ +TZ=Europe/Lisbon + # Nginx NGINX_DATA=/mnt/md0/nginx/data NGINX_LETSENCRYPT=/mnt/md0/nginx/letsencrypt +# Nextcloud +NEXTCLOUD_DATA=/mnt/md0/nextcloud/data +NEXTCLOUD_DB_DATA=/mnt/md0/nextcloud/db +NEXTCLOUD_DB_PASSWORD=K7m9P2xQ8vN3rY6sL4dF1jH5eW9zB2cX +REDIS_PASSWORD=R3d1sP@ssw0rd2025SecureCache + +# Gitea +GITEA=/mnt/md0/gitea + +# ------------------- + # Immich -TZ=Europe/Lisbon IMMICH_UPLOAD_LOCATION=/mnt/md0/immich/uploads IMMICH_DB_DATA_LOCATION=/mnt/md0/immich/db IMMICH_VERSION=release @@ -24,8 +36,6 @@ PIHOLE=/mnt/md0/pihole FTLCONF_webserver_api_password="wX<|h(mav(;rGU}FTrz<)x<(J" FTLCONF_dns_listeningMode=all # If using Docker's default `bridge` network setting the dns listening mode should be set to 'all' -# Gitea -GITEA=/mnt/md0/gitea # FileBrowser FILEBROWSER_DATA=/mnt/md0/files diff --git a/server/install-docker.sh b/server/install-docker.sh deleted file mode 100644 index 23e433d7..00000000 --- a/server/install-docker.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -set -e - -if ! command -v curl >/dev/null 2>&1; then - echo "curl is required. Installing curl..." - sudo apt update - sudo apt install -y curl -fi - -echo "Updating package index..." -sudo apt update - -echo "Installing required packages..." -sudo apt install -y ca-certificates curl gnupg lsb-release - -echo "Adding Docker's official GPG key..." -sudo mkdir -p /etc/apt/keyrings -curl -fsSL "https://download.docker.com/linux/$( - . /etc/os-release - echo "$ID" -)/gpg" | sudo gpg --dearmor >/tmp/docker.gpg -sudo mv /tmp/docker.gpg /etc/apt/keyrings/docker.gpg -sudo chmod 644 /etc/apt/keyrings/docker.gpg - -echo "Setting up the Docker repository..." -ARCH=$(dpkg --print-architecture) -OS_ID=$(awk -F= '/^ID=/{gsub(/\"/, "", $2); print $2}' /etc/os-release) -RELEASE=$(lsb_release -cs) -echo "deb [arch=$ARCH signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$OS_ID $RELEASE stable" | - sudo tee /etc/apt/sources.list.d/docker.list >/dev/null - -echo "Updating package index (with Docker repo)..." -sudo apt update - -echo "Installing Docker Engine..." -sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - -echo "Docker installation complete!" -docker --version - -echo "Allowing Docker use without sudo..." -sudo usermod -aG docker ${USER} -exec sg docker newgrp \ No newline at end of file