Docker Quickinstall

Quick Install Script

Below is the content of the docker.sh script, which is used to install Docker on a Debian-based system.

#!/bin/bash

# Check if the script is run as root, otherwise use sudo
if [ "$(whoami)" != "root" ]; then
    SUDO=sudo
fi

# Add Docker's official GPG key
${SUDO} apt-get update
${SUDO} apt-get install ca-certificates curl
${SUDO} install -m 0755 -d /etc/apt/keyrings
${SUDO} curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
${SUDO} chmod a+r /etc/apt/keyrings/docker.asc

# Add the Docker repository to Apt sources
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  ${SUDO} tee /etc/apt/sources.list.d/docker.list > /dev/null

${SUDO} apt-get update

# Install Docker packages
${SUDO} apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

This script will add Docker's official GPG key, set up the Docker repository, and install Docker along with its associated tools on a Debian-based system.


Wireguard VPN Setup

This guide assumes you have a clean Debian box with root access.

VPN Setup Script

Below is a bash script to set up a Wireguard VPN server and client configuration.

#!/bin/bash

# Update and install necessary packages
apt-get update
apt-get -y install wireguard wireguard-tools curl

# Prepare variables
export IFACE_NAME=$(ip route | awk '/default/ { print $5 }')
export PUBLIC_IP=$(curl -4 "ifconfig.me")

# Generate server keys
mkdir -p /etc/wireguard/server
wg genkey | tee /etc/wireguard/server/privatekey | wg pubkey > /etc/wireguard/server/publickey

# Generate client keys
mkdir -p /etc/wireguard/clients/client-1
wg genkey | tee /etc/wireguard/clients/client-1/privatekey | wg pubkey > /etc/wireguard/clients/client-1/publickey

# Server configuration
echo "[Interface]"                                                              > /etc/wireguard/wg0.conf
echo "PrivateKey = $(cat /etc/wireguard/server/privatekey)"                    >> /etc/wireguard/wg0.conf
echo "Address = 10.4.5.1/24"                                                   >> /etc/wireguard/wg0.conf
echo "ListenPort = 51820"                                                      >> /etc/wireguard/wg0.conf
echo ""                                                                        >> /etc/wireguard/wg0.conf
echo "PostUp = sysctl net.ipv4.ip_forward=1"                                   >> /etc/wireguard/wg0.conf
echo "PostUp = iptables -A FORWARD -i $IFACE_NAME -o %i -j ACCEPT"             >> /etc/wireguard/wg0.conf
echo "PostUp = iptables -A FORWARD -i %i -j ACCEPT"                            >> /etc/wireguard/wg0.conf
echo "PostUp = iptables -t nat -A POSTROUTING -o $IFACE_NAME -j MASQUERADE"    >> /etc/wireguard/wg0.conf
echo ""                                                                        >> /etc/wireguard/wg0.conf
echo "PostDown = sysctl net.ipv4.ip_forward=0"                                 >> /etc/wireguard/wg0.conf
echo "PostDown = iptables -D FORWARD -i $IFACE_NAME -o %i -j ACCEPT"           >> /etc/wireguard/wg0.conf
echo "PostDown = iptables -D FORWARD -i %i -j ACCEPT"                          >> /etc/wireguard/wg0.conf
echo "PostDown = iptables -t nat -D POSTROUTING -o $IFACE_NAME -j MASQUERADE"  >> /etc/wireguard/wg0.conf
echo ""                                                                        >> /etc/wireguard/wg0.conf
echo "[Peer]"                                                                  >> /etc/wireguard/wg0.conf
echo "PublicKey = $(cat /etc/wireguard/clients/client-1/publickey)"            >> /etc/wireguard/wg0.conf
echo "AllowedIPs = 10.4.5.0/24"                                                >> /etc/wireguard/wg0.conf
echo "PersistentKeepalive = 15"                                                >> /etc/wireguard/wg0.conf

# Client configuration
echo "[Interface]"                                                      > /etc/wireguard/clients/client-1/wg0.conf
echo "PrivateKey = $(cat /etc/wireguard/clients/client-1/privatekey)"  >> /etc/wireguard/clients/client-1/wg0.conf
echo "Address = 10.4.5.2/24"                                           >> /etc/wireguard/clients/client-1/wg0.conf
echo "DNS = 8.8.8.8,8.8.4.4,1.1.1.1"                                   >> /etc/wireguard/clients/client-1/wg0.conf
echo ""                                                                >> /etc/wireguard/clients/client-1/wg0.conf
echo "[Peer]"                                                          >> /etc/wireguard/clients/client-1/wg0.conf
echo "PublicKey = $(cat /etc/wireguard/server/publickey)"              >> /etc/wireguard/clients/client-1/wg0.conf
echo "Endpoint = ${PUBLIC_IP}:51820"                                   >> /etc/wireguard/clients/client-1/wg0.conf
echo "AllowedIPs = 0.0.0.0/0"                                          >> /etc/wireguard/clients/client-1/wg0.conf
echo "PersistentKeepalive = 15"                                        >> /etc/wireguard/clients/client-1/wg0.conf

# Start and enable the Wireguard service
systemctl start wg-quick@wg0
systemctl enable wg-quick@wg0

This script will install Wireguard, generate keys for the server and a client, and configure both the server and client settings. It also sets up the necessary iptables rules for forwarding traffic and starts the Wireguard service.