update scripts and work on server setup
This commit is contained in:
66
scripts/disk-array
Executable file
66
scripts/disk-array
Executable file
@@ -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 <missing_drive>${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}"
|
||||||
|
|
||||||
61
scripts/install-docker
Executable file
61
scripts/install-docker
Executable file
@@ -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"
|
||||||
@@ -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.'
|
|
||||||
@@ -1,17 +1,33 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
YELLOW="\e[33m"
|
YELLOW="\e[33m"
|
||||||
|
GRAY="\e[90m"
|
||||||
NC="\e[0m"
|
NC="\e[0m"
|
||||||
|
|
||||||
printf "%b\n" "${YELLOW}Updating apt...${NC}"
|
printf "%b\n" "${YELLOW}[+]${NC} Updating repos..."
|
||||||
sudo apt update
|
printf "%b" "${GRAY}"
|
||||||
sudo apt upgrade
|
sudo apt-get update
|
||||||
sudo apt full-upgrade
|
printf "%b" "${NC}"
|
||||||
sudo apt autoremove
|
|
||||||
sudo apt autoclean
|
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
|
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 update
|
||||||
flatpak uninstall --unused --delete-data
|
flatpak uninstall --unused --delete-data
|
||||||
|
printf "%b" "${NC}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
2
server/upnpc-close.sh → scripts/upnpc-close
Normal file → Executable file
2
server/upnpc-close.sh → scripts/upnpc-close
Normal file → Executable file
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
# Close all upnpc ports
|
# 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 -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"
|
upnpc -d "$port" "$proto"
|
||||||
done
|
done
|
||||||
16
server/.env
16
server/.env
@@ -1,9 +1,21 @@
|
|||||||
|
TZ=Europe/Lisbon
|
||||||
|
|
||||||
# Nginx
|
# Nginx
|
||||||
NGINX_DATA=/mnt/md0/nginx/data
|
NGINX_DATA=/mnt/md0/nginx/data
|
||||||
NGINX_LETSENCRYPT=/mnt/md0/nginx/letsencrypt
|
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
|
# Immich
|
||||||
TZ=Europe/Lisbon
|
|
||||||
IMMICH_UPLOAD_LOCATION=/mnt/md0/immich/uploads
|
IMMICH_UPLOAD_LOCATION=/mnt/md0/immich/uploads
|
||||||
IMMICH_DB_DATA_LOCATION=/mnt/md0/immich/db
|
IMMICH_DB_DATA_LOCATION=/mnt/md0/immich/db
|
||||||
IMMICH_VERSION=release
|
IMMICH_VERSION=release
|
||||||
@@ -24,8 +36,6 @@ PIHOLE=/mnt/md0/pihole
|
|||||||
FTLCONF_webserver_api_password="wX<|h(mav(;rGU}FTrz<)x<(J"
|
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'
|
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
|
||||||
FILEBROWSER_DATA=/mnt/md0/files
|
FILEBROWSER_DATA=/mnt/md0/files
|
||||||
|
|||||||
@@ -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
|
|
||||||
Reference in New Issue
Block a user