From ba023e9f59554b8af08a4f2f40d5cac2a726624f Mon Sep 17 00:00:00 2001 From: julien Date: Tue, 3 Dec 2024 00:49:51 +0100 Subject: [PATCH] first commit --- README.md | 22 +++++++++++++++ config/sources.list | 11 ++++++++ modules/docker.sh | 29 +++++++++++++++++++ modules/pkgs.sh | 15 ++++++++++ modules/repos.sh | 10 +++++++ modules/scripts.sh | 10 +++++++ modules/update.sh | 11 ++++++++ modules/volumes.sh | 28 ++++++++++++++++++ modules/zram.sh | 19 +++++++++++++ run.sh | 28 ++++++++++++++++++ scripts/netig-srv-backup | 61 ++++++++++++++++++++++++++++++++++++++++ 11 files changed, 244 insertions(+) create mode 100755 README.md create mode 100644 config/sources.list create mode 100755 modules/docker.sh create mode 100755 modules/pkgs.sh create mode 100755 modules/repos.sh create mode 100755 modules/scripts.sh create mode 100755 modules/update.sh create mode 100755 modules/volumes.sh create mode 100755 modules/zram.sh create mode 100755 run.sh create mode 100755 scripts/netig-srv-backup diff --git a/README.md b/README.md new file mode 100755 index 0000000..1b53dde --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# debian + +Server (Debian Stable) system general configuration, prepares the system on first boot or anytime. + +## Usage + +Run the `run.sh` script. + +## Manual tasks + +### Server + +Edit crontab with : +``` +# crontab -e +``` + +And add the following content : +``` +# Run the NETig backup script at 4h every monday +0 4 * * mon /usr/local/sbin/netig-srv-backup +``` diff --git a/config/sources.list b/config/sources.list new file mode 100644 index 0000000..25a0464 --- /dev/null +++ b/config/sources.list @@ -0,0 +1,11 @@ +deb http://deb.debian.org/debian bookworm main contrib non-free-firmware +# deb-src http://deb.debian.org/debian bookworm main contrib non-free-firmware + +deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware +# deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware + +# deb http://deb.debian.org/debian bookworm-backports main contrib non-free-firmware +# deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free-firmware + +deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware +# deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware diff --git a/modules/docker.sh b/modules/docker.sh new file mode 100755 index 0000000..12454c5 --- /dev/null +++ b/modules/docker.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +############# +### Docker + +echo +echo " => Docker" +echo + +if [ -f /usr/bin/docker ] +then + echo " -> Already done !" +else + # Add Docker's official GPG key + mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg --yes + chmod a+rx /etc/apt/keyrings + chmod a+r /etc/apt/keyrings/docker.gpg + + # Add the repository to Apt sources + echo \ + "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bullseye stable" \ + | tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update + + # Install packages + apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y +fi + diff --git a/modules/pkgs.sh b/modules/pkgs.sh new file mode 100755 index 0000000..24558cc --- /dev/null +++ b/modules/pkgs.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +####################### +### Install packages + +echo +echo " => Packages" +echo + +pkglist="git + htop + tree + rsync" + +apt-get install $pkglist -y diff --git a/modules/repos.sh b/modules/repos.sh new file mode 100755 index 0000000..813267e --- /dev/null +++ b/modules/repos.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +########################### +### Repos configuration + +echo +echo " => Repos configuration" +echo + +cp config/sources.list /etc/apt/sources.list diff --git a/modules/scripts.sh b/modules/scripts.sh new file mode 100755 index 0000000..1ceff49 --- /dev/null +++ b/modules/scripts.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +################### +### Copy scripts + +echo +echo " => Scripts" +echo + +cp scripts/* /usr/local/sbin diff --git a/modules/update.sh b/modules/update.sh new file mode 100755 index 0000000..6c860d5 --- /dev/null +++ b/modules/update.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +############# +### Update + +echo +echo " => Update" +echo + +apt-get update +apt-get upgrade -y diff --git a/modules/volumes.sh b/modules/volumes.sh new file mode 100755 index 0000000..22e2a4d --- /dev/null +++ b/modules/volumes.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +########################## +### Volumes mountpoints + +echo +echo " => Volumes mountpoints" +echo + +if [ -d /var/netig/srv ] +then + echo " -> Already done !" +else + mkdir -p /var/netig/srv + echo + echo " => Adjust /etc/fstab accordingly !" + echo +fi + +if [ -d /var/netig/bak ] +then + echo " -> Already done !" +else + mkdir -p /var/netig/bak + echo + echo " => Adjust /etc/fstab accordingly !" + echo +fi diff --git a/modules/zram.sh b/modules/zram.sh new file mode 100755 index 0000000..2e34de6 --- /dev/null +++ b/modules/zram.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +########### +### ZRAM + +echo +echo " => ZRAM" +echo + +if [ -f /usr/bin/zramswap ] +then + echo " -> Already done !" +else + apt-get install zram-tools -y + sed -i '/#ALGO=lz4/s/^#//g' /etc/default/zramswap + sed -i '/#PERCENT=50/s/^#//g' /etc/default/zramswap + sed -i 's/ALGO=lz4/ALGO=zstd/g' /etc/default/zramswap + systemctl restart zramswap.service +fi diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..afa5c0b --- /dev/null +++ b/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# If root +ID=$(id -u) +if [ "$ID" -ne 0 ] +then + echo + echo "Please run as root !" + exit +fi + +# Post-installation +modules="repos.sh + update.sh + pkgs.sh + docker.sh + zram.sh + scripts.sh + volumes.sh" + +for i in $modules +do + modules/$i +done + +# End message +echo +echo "Post-installation done !" diff --git a/scripts/netig-srv-backup b/scripts/netig-srv-backup new file mode 100755 index 0000000..5e8d013 --- /dev/null +++ b/scripts/netig-srv-backup @@ -0,0 +1,61 @@ +#!/bin/bash + +################################################################################ +### Variables + +# Source directory +source="/var/netig/srv" + +# Destination directory +destination="/var/netig/bak" + +# Backup file name +backup="bak_$(hostname -f)_$(date +"%Y%m%d").tar.zst" + +################################################################################ +### Down services + +( cd /var/netig/srv/status.netig.net && docker compose down ) + +for f in /var/netig/srv/* +do + if [ -d "$f" ]; then + cd $f + docker compose down + fi +done + +################################################################################ +### Making the backup archive + +echo +echo " Making the backup archive." +echo +tar --zstd -cf $destination/$backup -C $source . + +################################################################################ +### Up services + +for f in /var/netig/srv/* +do + if [ -d "$f" ]; then + cd $f + if [ -d "django" ] + then + docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d + else + docker compose up -d + fi + fi +done + +################################################################################ +### Remove destination archives older than n days +find $destination -name "bak_*" -type f -mtime +20 -delete + +################################################################################ +### End message + +echo +echo " Backup done." +echo