Last active
August 21, 2024 23:49
-
-
Save Ouwen/e0df7552da82180e1416422673e60fae to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# "Check if docker is installed..." | |
if ! command -v docker &> /dev/null; then | |
# Add Docker's official GPG key: | |
sudo apt-get update | |
sudo apt-get -y 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 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 -y update | |
sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | |
sudo groupadd docker | |
sudo usermod -aG docker $USER | |
newgrp docker | |
docker run hello-world | |
else | |
echo "docker is already installed" | |
fi | |
# "Check if Screen is installed..." | |
if ! command -v screen &> /dev/null; then | |
sudo apt-get install -y -qq screen >/dev/null 2>&1; | |
else | |
echo "screen is already installed."; | |
fi | |
# "Check if VSCode is installed..." | |
if ! command -v code &> /dev/null; then | |
echo "VSCode not found. Downloading and installing code..." | |
sudo apt-get install -y -qq wget gpg >/dev/null 2>&1 | |
echo "Downloading Microsoft GPG key..." | |
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 | |
sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' | |
rm -f packages.microsoft.gpg | |
sudo apt install -y -qq apt-transport-https >/dev/null 2>&1 | |
echo "Updating package list..." | |
sudo apt-get update -qq | |
echo "Installing VSCode..." | |
sudo apt install -y -qq code >/dev/null 2>&1 | |
else | |
echo "code is already installed." | |
fi | |
# "Check if gh is installed" | |
if ! command -v gh &> /dev/null; then | |
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \ | |
&& sudo mkdir -p -m 755 /etc/apt/keyrings \ | |
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \ | |
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \ | |
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ | |
&& sudo apt update \ | |
&& sudo apt install gh -y | |
else | |
echo "gh is already installed." | |
fi | |
if screen -list | grep -q "vs_code_tunnel"; then | |
echo "Screen session 'vs_code_tunnel' already exists."; | |
exit 0; | |
fi | |
echo "Create tunnel in the background..." | |
MACHINE_NAME_DEFAULT="$USER-machine-$(date +%Y%m%d)-$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1)" | |
MACHINE_NAME_TO_USE="${MACHINE_NAME:-$MACHINE_NAME_DEFAULT}" | |
code tunnel rename $MACHINE_NAME_TO_USE | |
screen -dmS vs_code_tunnel bash -c 'code tunnel; exec bash' | |
sleep 1 | |
if screen -list | grep -q "vs_code_tunnel"; then | |
echo "Screen session 'vs_code_tunnel' running"; | |
else | |
echo "Screen session 'vs_code_tunnel' does not exist. Error... contact [email protected]"; | |
exit 1 | |
fi | |
startup_script=https://gist.githubusercontent.com/Ouwen/e0df7552da82180e1416422673e60fae/raw/28f5cf90c85456b013da573f6335075cccaa9f29/vscode.sh | |
cron_job="@reboot curl -s $startup_script | bash" | |
(crontab -l | grep -F "$cron_job") || (crontab -l; echo "$cron_job") | crontab - |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment