From b48e68949e169cc78117a12893d0d8910926e9a5 Mon Sep 17 00:00:00 2001 From: Carlos Martino Date: Fri, 27 Mar 2026 15:58:28 -0300 Subject: [PATCH] Update setup --- setup_homelogic.sh | 148 +++++++++++++++++++++++++++++---------------- 1 file changed, 97 insertions(+), 51 deletions(-) diff --git a/setup_homelogic.sh b/setup_homelogic.sh index 740e713..3a0e5df 100755 --- a/setup_homelogic.sh +++ b/setup_homelogic.sh @@ -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 "$@"