====== Setting up a new Linux VM ======
This is similar to [[setup_new_box|Setup New Liux (Physical) Box]]
This page goes through the various settings that take place to setup a new Ubuntu VM. In this case I was setting Ubuntu 20.10 Groovy Gorilla.
===== Debian / Bookworm =====
Specific steps for Debian/Bookworm
==== Add non-free repositories ====
In the past (Debian Buster) you will have to update ''/etc/apt/sources.list'' by adding ''contrib non-free'' to the end of line. However, this time around, this file was empty! Below are the lines obtained from [[https://wiki.debian.org/SourcesList|Debian sources list]]. Also added ''non-free-firmware'' to the end.
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
==== Install packages ====
apt update
apt-get install aptitude
aptitude install vim sudo sysstat locate postfix ssl-cert bsd-mailx net-tools zip unzip rsync git screen
ln -s /usr/sbin/ifconfig /usr/local/bin/ifconfig
updatedb
Optional packages to install
aptitude install ncdu htop nload pydf iotop
Use ''tasksel'' to install GUI such as KDE Plasma.
==== Other changes ====
* vim: Besides other .vimrc setting, also include ''set mouse=''
echo "set mouse=" > ~/.vimrc
sudo echo "set mouse=" | sudo tee -a /root/.vimrc
==== Comments on Minimum Memory requirements ====
https://unix.stackexchange.com/questions/616137/kernel-panic-on-debian-buster-with-128-mb-of-memory
==== Update root password ====
When cloning, make sure to update the root password on the clone. Debian requires it when you need to rescue the system.
==== SSHD Config Changes ====
Update ''/etc/ssh/sshd_config'' to include
PermitRootLogin prohibit-password
PermitEmptyPasswords no
TCPKeepAlive yes
To temporarily enable Root Login
PermitRootLogin yes
==== Network configuration ====
Specify the Static IP address and DNS address in ''/etc/network/interfaces''
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug enp0s3
#iface enp0s3 inet dhcp
auto enp0s3
iface enp0s3 inet static
address 192.168.1.47
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.1
broadcast 192.168.1.255
dns-nameservers 192.168.1.48
dns-nameservers 192.168.1.10
dns-nameservers 192.168.1.1
dns-nameservers 8.8.8.8
# This is an autoconfigured IPv6 interface
#iface enp0s3 inet6 auto
#
# The network interface for Host-Only Network
auto enp0s8
iface enp0s8 inet static
address 192.168.56.47
netmask 255.255.255.0
network 192.168.56.0
gateway 192.168.56.1
broadcast 192.168.56.255
Update ''/etc/resolv.conf'' as well to indicate the DNS entries and DNS configuration
nameserver 192.168.1.48
nameserver 192.168.1.10
nameserver 192.168.1.1
nameserver 8.8.8.8
options timeout:1
options attempts:1
==== Include DNS entry in DNS Servers ====
Include the new server in the DNS entries on the DNS servers: ''ubv47'' and ''ubv10''.
Add the entry in ''/etc/hosts.dnsmasq'' as below:
192.168.1.50 server50 server50.example.org
Restart dnsmasq
systemctl restart dnsmasq
# OR
service dnsmasq restart
==== Backuppc configuration ====
Add new server in Backuppc (ubv33) ''/etc/hosts''. Then copy SSH keys to be able to log in as root from backuppc user.
ssh-copy-id root@
==== Nagios configuration ====
Below is the list of Nagios configurations
aptitude install nagios-nrpe-server
# On /etc/nagios/nrpe.cfg, update line to ''allowed_hosts=127.0.0.1,::1,192.168.1.0/24''
# Copy /etc/nagios/nrpe.d/cu_nrpe.cfg configuration from an existing server
# Copy the following files from another server to ''/usr/lib/nagios/plugins/''.
# check_deleted_lsof
# check_cpu.sh
# check_uptime
# check_template
# check_mem.pl
# check_lost_found
# check_log1
# check_file_per
# check_mailq
# Make nagios user part of sudo group
systemctl restart nagios-nrpe-server
Update file ''/etc/nagios/nrpe.cfg'' and change line as below
allowed_hosts=127.0.0.1,::1,192.168.1.0/24
Create file ''/etc/nagios/nrpe.d/cu_nrpe.cfg'' with the below
command[check_cu_users]=/usr/lib/nagios/plugins/check_users -w 10 -c 15
command[check_cu_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 20,15,10
command[check_cu_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 1 -c 2 -s Z
command[check_cu_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
command[check_cu_swap]=/usr/lib/nagios/plugins/check_swap -w 20 -c 10
command[check_cu_mailq]=/usr/lib/nagios/plugins/check_mailq -w 1 -c 5 -M postfix
command[check_cu_ntp_time]=/usr/lib/nagios/plugins/check_ntp_time -H pool.ntp.org -w 30 -c 60
command[check_cu_memory]=/usr/lib/nagios/plugins/check_mem.pl -u -C -w 80 -c 90
command[check_cu_raid]=/usr/lib/nagios/plugins/check_raid
command[check_cu_cron]=/usr/lib/nagios/plugins/check_procs -w 1:1 -c 1:1024 -C cron
command[check_cu_pcpu]=/usr/lib/nagios/plugins/check_procs -w 40 -c 45 --metric=CPU -v
command[check_cu_fp_tmp]=/usr/lib/nagios/plugins/check_file_per -f /tmp -p 1777
command[check_cu_disk]=/usr/lib/nagios/plugins/check_disk -w 15% -c 10% -N ext4 -f
command[check_cu_uptime]=/usr/lib/nagios/plugins/check_uptime --warning 60: --critical 60:
command[check_cu_cpu]=/usr/lib/nagios/plugins/check_cpu.sh -w 90 -c 95
command[check_cu_lostfound]=/usr/bin/sudo /usr/lib/nagios/plugins/check_lost_found -w 1 -c 2
command[check_cu_kernlog]=/usr/bin/sudo /usr/lib/nagios/plugins/check_log1 -F /var/log/kern.log -O /tmp/kern.log -q ^
command[check_cu_deleted_lsof]=/usr/bin/sudo /usr/lib/nagios/plugins/check_deleted_lsof -w 50000000 -c 60000000
Add nagios to sudo group to execute commands that need root access
usermod -a -G sudo nagios
==== Tools Directory ====
Copy /home/senthil/tools directory to the new server
==== Postfix ====
Validate Postfix configuration
==== MySQL ====
* Choose a password: ''date|md5sum''
* Run ''mysql_secure_installation'' to make db secure.
* Use the above password
* Run [[tech:mysql:creating_mysql_users_for_a_database#creating_root_user|Create root user]] and set password for remote user
* Copy /etc/cron.daily/mysql_backup
* [[tech1:linux:nagios3#create_a_mysql_user_and_database|Create MySQL User and Database]] ''ncheck'' and ''ucheck'' (not ''nagioscheck'') for Monitoring.
===== Install Configuration / Steps =====
* Postfix is no longer installed by default on Groovy - so please install
===== System Configuration =====
* Update system by running "aptitude"
* Completed Security Upgrades
* Complete Package Upgrades
* Reboot
* Network configuration
* Settings are at [[setup_network_groovy|/etc/netplan/00-installer-config.yaml]]
* Update user settings with [[etc_skel|this]] set
* Install the [[most_common_packages_v2|most common packages]] that will the required
===== apt related =====
* [[tech:linux:apt_upgrades|Automatic apt upgrades]]
* [[tech:linux:apt_update_resource_overload|APT update resource overload]]
===== More items =====
* Mail
* Setup postfix
* Configure ''/etc/aliases'' to include
root: system@example.org
user: system@example.org
Then run ''newaliases''
* SSH
* Generate SSH private and public keys
* Tuning
* Change swapiness and other parameters based on server needs - [[tech:linux:sysctl_config|sysctl.conf]]
* Others
* Optionally ask server to reboot automatically on [[tech1:linux:kernel_panic|kernel panic]]
* [[tech1:linux:others:i2c_piix4|Disable module i2c_piix4]] on Virtual Machines
* Install NRPE to be monitored
* nagios-nrpe-server nagios-plugins
* Install x11-utils x11-xserver-utils
===== Other Items configuration =====
* [[apache_configuration|Apache Configuration]]
* [[tech:linux:etc_skel#sudo_without_password|Setup to sudo without password]]
* [[tech:linux:mail_server_setup|Mail Server Configuration]]
* [[tech:linux:mysql:backups|MySQL Backups]]
* [[tech:linux:others:ntp_update|Reset System Clock with NTP Update]]
* [[tech:linux:others:pflogsumm_mail_report|Setup mail reporting using pflogsumm]]
* [[tech:linux:others:notify_reboot_req|Notify if the system requires a reboot]]
* [[tech:others:mounting_usb_drive_in_ubuntupermanently_mount_the_usb_drive|Mounting a USB drive permanently for Backups]]
* Install telnetd - To be used in case SSH server is down. Remember to change password immediately if doing a remote connection.
* [[tech:linux:php_ini|Update php.ini]] configuration file to improve on default limits
* [[apt_update_resource_overload|Disable APT update resource overload]]
* Nagios
* If only setting this up for being monitored install nagios-nrpe-server nagios-plugins
* Share keys between Nagios host and the new VM
* Backuppc
* Setup key share access between backuppc host and the new VM