Update setup
This commit is contained in:
@@ -1,56 +1,102 @@
|
||||
# Setup Server
|
||||
echo '### Setting up Server ###'
|
||||
sudo apt-get update
|
||||
sudo ufw allow 22/tcp
|
||||
sudo ufw allow 443/tcp
|
||||
sudo ufw allow 8123/tcp
|
||||
sudo ufw allow 8123/udp
|
||||
sudo ufw allow 3000/tcp
|
||||
sudo ufw allow 3001/tcp
|
||||
#!/bin/bash
|
||||
|
||||
# Setup Docker
|
||||
echo '### Setting up Docker ###'
|
||||
sudo apt -y install lsb-release gnupg apt-transport-https ca-certificates curl software-properties-common
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
|
||||
sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
|
||||
sudo apt update
|
||||
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||
# Configuration for Colors
|
||||
BLUE='\033[1;34m'
|
||||
GREEN='\033[1;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
CYAN='\033[1;36m'
|
||||
NC='\033[0m'
|
||||
|
||||
sudo systemctl enable --now docker.service
|
||||
if ! getent group docker > /dev/null 2>&1; then
|
||||
sudo groupadd docker
|
||||
fi
|
||||
if ! id -nG "$USER" | grep -qw "docker"; then
|
||||
sudo usermod -aG docker "$USER"
|
||||
fi
|
||||
sudo docker network create homelogic 2>/dev/null || true
|
||||
print_step() {
|
||||
printf "\n${BLUE}========== %s ==========${NC}\n" "$1"
|
||||
}
|
||||
print_info() {
|
||||
printf "${CYAN}➜ %s${NC}\n" "$1"
|
||||
}
|
||||
|
||||
# Setup ZSH
|
||||
echo '### Setting up ZSH ###'
|
||||
touch ../.hushlogin
|
||||
cp -f .zshrc.base ../.zshrc
|
||||
setup_server() {
|
||||
print_step "Setting up Server"
|
||||
print_info "Updating packages and configuring firewall..."
|
||||
sudo apt-get update
|
||||
sudo ufw allow 22/tcp
|
||||
sudo ufw allow 443/tcp
|
||||
sudo ufw allow 8123/tcp
|
||||
sudo ufw allow 8123/udp
|
||||
sudo ufw allow 3000/tcp
|
||||
sudo ufw allow 3001/tcp
|
||||
}
|
||||
|
||||
sudo apt install zsh
|
||||
|
||||
ZSH_PATH=$(command -v zsh)
|
||||
if [ "${SHELL##*/}" != "zsh" ] && [ -n "$ZSH_PATH" ]; then
|
||||
chsh -s "$ZSH_PATH"
|
||||
fi
|
||||
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
|
||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||
|
||||
# Setup Tailscale
|
||||
echo '### Setting up Tailscale ###'
|
||||
printf "Do you want to install and setup Tailscale? [Y/n] "
|
||||
read choice
|
||||
case "$choice" in
|
||||
n|N|no|No|NO )
|
||||
echo "Skipping Tailscale setup."
|
||||
;;
|
||||
* )
|
||||
if ! command -v tailscale > /dev/null 2>&1; then
|
||||
curl -fsSL https://tailscale.com/install.sh | sh
|
||||
sudo tailscale up
|
||||
setup_docker() {
|
||||
print_step "Setting up Docker"
|
||||
print_info "Installing prerequisites..."
|
||||
sudo apt -y install lsb-release gnupg apt-transport-https ca-certificates curl software-properties-common
|
||||
if [ ! -f /etc/apt/trusted.gpg.d/docker.gpg ]; then
|
||||
print_info "Downloading Docker GPG key..."
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
print_info "Adding Docker repository..."
|
||||
sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
|
||||
sudo apt update
|
||||
print_info "Installing Docker CE..."
|
||||
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||
|
||||
print_info "Configuring Docker service and permissions..."
|
||||
sudo systemctl enable --now docker.service
|
||||
if ! getent group docker > /dev/null 2>&1; then
|
||||
sudo groupadd docker
|
||||
fi
|
||||
if ! id -nG "$USER" | grep -qw "docker"; then
|
||||
sudo usermod -aG docker "$USER"
|
||||
fi
|
||||
sudo docker network create homelogic 2>/dev/null || true
|
||||
}
|
||||
|
||||
setup_zsh() {
|
||||
print_step "Setting up ZSH"
|
||||
print_info "Configuring .zshrc and hushlogin..."
|
||||
touch ../.hushlogin
|
||||
cp -f .zshrc.base ../.zshrc
|
||||
|
||||
sudo apt install -y zsh
|
||||
|
||||
ZSH_PATH=$(command -v zsh)
|
||||
if [ "${SHELL##*/}" != "zsh" ] && [ -n "$ZSH_PATH" ]; then
|
||||
print_info "Changing default shell to ZSH..."
|
||||
chsh -s "$ZSH_PATH"
|
||||
fi
|
||||
print_info "Installing Oh My Zsh and plugins..."
|
||||
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 2>/dev/null || true
|
||||
RUNZSH=no CHSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||
}
|
||||
|
||||
setup_tailscale() {
|
||||
print_step "Setting up Tailscale"
|
||||
printf "\n${YELLOW}❓ Do you want to install and setup Tailscale? [Y/n] ${NC}"
|
||||
read choice
|
||||
case "$choice" in
|
||||
n|N|no|No|NO )
|
||||
print_info "Skipping Tailscale setup."
|
||||
;;
|
||||
* )
|
||||
if ! command -v tailscale > /dev/null 2>&1; then
|
||||
print_info "Installing Tailscale..."
|
||||
curl -fsSL https://tailscale.com/install.sh | sh
|
||||
sudo tailscale up
|
||||
else
|
||||
print_info "Tailscale is already installed."
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main() {
|
||||
setup_server
|
||||
setup_docker
|
||||
setup_zsh
|
||||
setup_tailscale
|
||||
|
||||
printf "\n${GREEN}✔ Setup complete! Please log out and log back in for all changes to take effect.${NC}\n"
|
||||
}
|
||||
|
||||
# Execute main process
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user