Files
setup-ubuntu/setup-ubuntu.sh

250 lines
12 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -e # Fail on errors
# Pre-req: Use OS with apt - like Ubuntu, POP_OS!, etc.
# Update apt and all existing applications
# Install Nala - enables multithreading when installing apt packages
echo "🚧 APT update/upgrade + installing nala..."
sudo apt-get update > /dev/null && sudo apt-get upgrade -y > /dev/null
sudo apt-get update > /dev/null && sudo apt-get install -y nala > /dev/null
sudo nala install -y apt-transport-https ca-certificates cifs-utils cksfv curl curl git gnupg golang-go jq mc nano pipx python3 sshpass unrar unzip wget > /dev/null
# Change work-dir to /tmp/
cd /tmp/
# Install apps from APT
echo " Installing a few more applications from apt/nala..."
software=(
doublecmd-common # Double Commander
mc # Midnight Commander
nextcloud-desktop # Nextcloud Desktop Client
notepadqq # NotepadQQ
openscad # OpenSCAD - for drawing 3D
rpi-imager # Raspberry Pi Imager
solaar # Solaar - Logitech keyboard/mouse software for Linux
)
# Run nala install for all software in the array
sudo nala install -y "${software[@]}" > /dev/null
# Install apps from Snap
echo " Installing applications from Snap..."
sudo snap install slack # Slack
# Flatpak and flathub repo
echo " Installing applications from Flathub..."
sudo nala install -y flatpak gnome-software-plugin-flatpak > /dev/null
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# Flatpak applications
flatpakapps=(
com.bitwarden.desktop # Bitwarden client
com.discordapp.Discord # Discord
com.prusa3d.PrusaSlicer # PrusaSlicer
com.valvesoftware.Steam # Steam - games
md.obsidian.Obsidian # Obsidian - markdown notepad
net.waterfox.waterfox # Waterfox - browser
org.deluge_torrent.deluge # Deluge - torrent client
org.remmina.Remmina # SSH client
org.videolan.VLC # VLC video player
)
# Run flatpak install for all apps in the array
sudo flatpak install -y "${flatpakapps[@]}"
# Ansible
echo " Installing Ansbile..."
pipx install --include-deps ansible > /dev/null
pipx ensurepath
pipx completions
eval "$(register-python-argcomplete pipx)"
#####################################
# Extend APT with more applications #
#####################################
### Docker ###
echo " Installing Docker..."
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg > /dev/null; done
# Add Docker's official GPG key:
sudo nala update > /dev/null
sudo nala install -y ca-certificates curl > /dev/null
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo nala update > /dev/null
sudo nala install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin > /dev/null
sudo groupadd --force docker
sudo usermod -aG docker $USER
### Helm ###
echo " Installing Helm..."
sudo install -m 0755 -d /etc/apt/keyrings
sudo nala install -y apt-transport-https wget gpg > /dev/null
wget -qO- https://baltocdn.com/helm/signing.asc | gpg --dearmor > packages.helm.gpg
sudo install -D -o root -g root -m 644 packages.helm.gpg /etc/apt/keyrings/packages.helm.gpg
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/packages.helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm.list > /dev/null
rm -f packages.helm.gpg
sudo nala update > /dev/null
sudo nala install -y helm > /dev/null
### Minikube ###
echo " Installing Minikube..."
curl -sLO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
### Kubectl ###
echo " Installing Kubectl..."
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --batch --yes --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo nala update > /dev/null
sudo nala install -y kubectl > /dev/null
### KubeSeal ###
echo " Installing Kubeseal..."
# Fetch the latest sealed-secrets version using GitHub API
KUBESEAL_VERSION=$(curl -s https://api.github.com/repos/bitnami-labs/sealed-secrets/tags | jq -r '.[0].name' | cut -c 2-)
# Check if the version was fetched successfully
if [ -z "$KUBESEAL_VERSION" ]; then
echo "Failed to fetch the latest KUBESEAL_VERSION"
exit 1
fi
curl -sOL "https://github.com/bitnami-labs/sealed-secrets/releases/download/v${KUBESEAL_VERSION}/kubeseal-${KUBESEAL_VERSION}-linux-amd64.tar.gz"
tar -xvzf kubeseal-${KUBESEAL_VERSION}-linux-amd64.tar.gz kubeseal > /dev/null
sudo install -m 755 kubeseal /usr/local/bin/kubeseal && rm kubeseal*
# Lazygit - TUI for Git
echo " Installing Lazygit..."
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
curl -sLo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz" > /dev/null
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin
# Lazydocker - TUI for Docker
echo " Installing Lazydocker..."
LAZYDOCKER_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazydocker/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
curl -sLo lazydocker.tar.gz "https://github.com/jesseduffield/lazydocker/releases/latest/download/lazydocker_${LAZYDOCKER_VERSION}_Linux_x86_64.tar.gz" > /dev/null
tar -xf lazydocker.tar.gz lazydocker
sudo install lazydocker /usr/local/bin
rm lazydocker.tar.gz lazydocker
# K9s - TUI for Kubernetes
echo " Installing K9s..."
K9S_VERSION=$(curl -s "https://api.github.com/repos/derailed/k9s/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
curl -sLo k9s_linux_amd64.deb "https://github.com/derailed/k9s/releases/download/v${K9S_VERSION}/k9s_linux_amd64.deb" > /dev/null
sudo apt-get install -y ./k9s_linux_amd64.deb > /dev/null
rm k9s_linux_amd64.deb
# Google Chrome
echo " Installing Google Chrome..."
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb > /dev/null
sudo apt-get install -f > /dev/null
rm google-chrome-stable_current_amd64.deb
# Teamviewer
echo " Installing Teamviewer..."
sudo install -m 0755 -d /etc/apt/keyrings
sudo apt-get install -y apt-transport-https wget gpg > /dev/null
wget -qO- https://download.teamviewer.com/download/linux/signature/TeamViewer2017.asc | gpg --dearmor > packages.teamviewer.gpg
sudo install -D -o root -g root -m 644 packages.teamviewer.gpg /etc/apt/keyrings/packages.teamviewer.gpg
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/packages.teamviewer.gpg] http://linux.teamviewer.com/deb stable main" | sudo tee /etc/apt/sources.list.d/teamviewer.list > /dev/null
rm -f packages.teamviewer.gpg
sudo apt-get update > /dev/null
sudo apt-get install -y teamviewer > /dev/null
# Unrarall
echo " Installing Unrarall..."
wget -qO unrarall https://raw.githubusercontent.com/arfoll/unrarall/master/unrarall
sudo chmod 0777 unrarall
sudo chown root:root unrarall
sudo mv unrarall /usr/bin/unrarall
# VSCode
echo " Installing VSCode..."
sudo install -m 0755 -d /etc/apt/keyrings
sudo apt-get install -y apt-transport-https wget gpg > /dev/null
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" |sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null
rm -f packages.microsoft.gpg
sudo apt-get update > /dev/null
sudo apt-get install -y code > /dev/null
# Install VSCode extensions
echo " Installing more VSCode extensions.."
code --install-extension esbenp.prettier-vscode > /dev/null
code --install-extension golang.go > /dev/null
code --install-extension ms-azuretools.vscode-docker > /dev/null
code --install-extension ms-python.debugpy > /dev/null
code --install-extension ms-python.python > /dev/null
code --install-extension ms-python.vscode-pylance > /dev/null
code --install-extension ms-vscode-remote.remote-containers > /dev/null
code --install-extension ms-vscode-remote.remote-ssh > /dev/null
code --install-extension ms-vscode-remote.remote-ssh-edit > /dev/null
code --install-extension ms-vscode-remote.remote-wsl > /dev/null
code --install-extension ms-vscode-remote.vscode-remote-extensionpack > /dev/null
code --install-extension ms-vscode.remote-explorer > /dev/null
code --install-extension ms-vscode.remote-server > /dev/null
code --install-extension rangav.vscode-thunder-client > /dev/null
code --install-extension redhat.ansible > /dev/null
code --install-extension redhat.java > /dev/null
code --install-extension redhat.vscode-commons > /dev/null
code --install-extension redhat.vscode-microprofile > /dev/null
code --install-extension redhat.vscode-quarkus > /dev/null
code --install-extension redhat.vscode-xml > /dev/null
code --install-extension redhat.vscode-yaml > /dev/null
code --install-extension vscjava.vscode-java-debug > /dev/null
# OpenRA - Red Alert Engine
echo " Installing OpenRA..."
sudo snap install openra
# CrossFTP
echo " Installing Crossftp..."
wget -q https://www.crossftp.com/crossftp_1.99.9.deb
sudo dpkg -i crossftp_1.99.9.deb > /dev/null
sudo apt-get install -f > /dev/null
rm crossftp_1.99.9.deb
############################
# #
# Configure look of Ubuntu #
# #
############################
echo "🎨 Configure Ubuntu look and feel..."
# Color theme
gsettings set org.gnome.desktop.interface clock-format '24h'
gsettings set org.gnome.desktop.interface clock-show-date true
gsettings set org.gnome.desktop.interface clock-show-seconds false
gsettings set org.gnome.desktop.interface clock-show-weekday true
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
gsettings set org.gnome.desktop.interface cursor-theme 'Adwaita'
gsettings set org.gnome.desktop.interface enable-animations true
gsettings set org.gnome.desktop.interface enable-hot-corners false
gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-blue'
gsettings set org.gnome.desktop.interface icon-theme 'Yaru-blue'
gsettings set org.gnome.desktop.interface show-battery-percentage true
gsettings set org.gnome.desktop.interface text-scaling-factor 1.0
gsettings set org.gnome.desktop.interface toolbar-detachable false
gsettings set org.gnome.desktop.interface toolbar-icons-size 'large'
gsettings set org.gnome.desktop.interface toolbar-style 'both-horiz'
gsettings set org.gnome.desktop.interface toolkit-accessibility false
# Move dock to right side of screen
gsettings set org.gnome.shell.extensions.dash-to-dock dock-position "RIGHT"
# Activate night light
gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-automatic true
gsettings set org.gnome.settings-daemon.plugins.color night-light-temperature 4000
# All done
cd # change directory to homedir
echo "🎉 Setup of Ubuntu is done! 🚀"