Skip to content

Instantly share code, notes, and snippets.

@Ouwen
Last active August 21, 2024 23:49
Show Gist options
  • Save Ouwen/e0df7552da82180e1416422673e60fae to your computer and use it in GitHub Desktop.
Save Ouwen/e0df7552da82180e1416422673e60fae to your computer and use it in GitHub Desktop.
#!/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 ouwen@gradienthealth.io";
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