Virtual Machine Setup

VM Virtual Box

Debian 11

  1. Graphical Install without much to add
  2. GNOME Desktop Environment
  3. Change Screen to 1920×1200 & Timezone
  4. Add user “wolfgang” to sudoers
su -
usermod -aG sudo wolfgang
getent group sudo
su - wolfgang

Restart

Working Environment

… install the HTTPS support for apt to get packages from Microsoft and other repositories:

sudo apt install -y curl apt-transport-https

Surface

… make a folder for the themes:

mkdir ~/.themes

… enable user themes in the tweak tool:

Owncloud-Client

… download and add the repositories key:

wget -nv https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/Debian_11/Release.key -O - | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/owncloud.gpg > /dev/null

… add repository:

echo 'deb https://download.owncloud.com/desktop/ownCloud/stable/latest/linux/Debian_11/ /' | sudo tee -a /etc/apt/sources.list.d/owncloud.list

… update the repository list and install:

sudo apt update && sudo apt install owncloud-client

Chrome

… download and add the repositories key:

curl -sSL https://dl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/googlechrome-linux-keyring.gpg

… add repository:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/googlechrome-linux-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list

… update the repository list and install:

sudo apt update && sudo apt install -y google-chrome-stable

Visual Code

… download and import the Microsoft signing GPG key:

curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/ms-vscode-keyring.gpg

… add repository:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/ms-vscode-keyring.gpg] https://packages.microsoft.com/repos/vscode stable main" | sudo tee /etc/apt/sources.list.d/vscode.list

… update the repository list and install:

sudo apt update && sudo apt install -y code

MySQL Workbench

… unfortunately only with snap:

sudo apt install snapd && snap install mysql-workbench-community

… connect the snap-sandbox and the password-manager-service to store the passwords:

sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service

… connect the snap-sandbox and the ssh-keys to store the ssh connections:

sudo snap connect mysql-workbench-community:ssh-keys :ssh-keys

Container Environment

… install required Docker dependencies:

sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common

… download and import the Docker signing GPG key:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

… add repository:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

… install the latest version of the Docker engine and container:

sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io

… check version:

docker –version

… check service:

sudo systemctl status docker

… add the docker user with a docker-home directory:

sudo useradd -m -g docker docker

BIND DNS Server

Based on Ubuntu Server, Bind9 & Webmin.

Solving the “127.0.0.53” isse:

sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

Solving issue on “NDC command failed : rndc: connect failed: 127.0.0.1#953: connection refused” by just installing it on BIND with “Setup RNDC”.

SSH – Secure Shell

How it works?

Client knocks at the servers door. Server sends public key.
Client checks if he knows the public key according to ˜/.ssh/known_host and if not it can be added by manual confirmation –> the server becomes accepted.

Client and server negotiate based on the ‘Deffie-Hellman-Algorithm’ an session key, that is shared equally and used for encryption & decryption.

Client sends and ID for a key pair (public/private). Server generates a random number, encrypts it with the public key and sends it to the client.
Client decrypts the number with the private key, calculates an MD5 hash and sends it to the server. The server compares the MD5 hash with and own calculated MD5 hash based on the original random number and identifies the client.

SSH without entering a password

Generate a public key with 8192 bit and use no password (just type enter):

ssh-keygen -b 8192

Upload the public key to the server:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

Test the connection:

ssh 'user@server'

GitHub accelerator

Initialising

Go into your local folder and make it suitable for git.

git init

Build a connection between local and remote repository.

git remote add origin https://github.com/wofuerGitHub/Fundamentals_Overview.git

Create a remote git-repository – easiest to remember – with the same folder name.

Add all local files.

git add .

Create a first commit called “init”.

git commit -m "init"

With the first upload define the standard branch.

git push --force --set-upstream origin master

Information about the repository-status

Getting all available information about the repository.

git status

Push local changes

To push your local changes to the repository.

git add .
git commit -m "message"
git push

Pull remote changes

To get the newest changes in the repository to your local storage.

git pull

Clone repository

To get a complete repository locally installed.

git clone https://github.com/wofuerGitHub/Fundamentals_Overview.git

Further information

Special thanks to Roger Dudler and Thomas Leister for their instructions.