Skip to content

Instantly share code, notes, and snippets.

@fecaps
Last active March 1, 2021 19:45
Show Gist options
  • Save fecaps/6a662303eb6f702d02ab738f3fa37a57 to your computer and use it in GitHub Desktop.
Save fecaps/6a662303eb6f702d02ab738f3fa37a57 to your computer and use it in GitHub Desktop.
Machine Setup - Part 1 (Ubuntu)
#!/bin/bash
############################################
# UTILITIES
############################################
# install restricted media support
sudo apt-get install ubuntu-restricted-extras -y
# install curl
sudo apt-get install curl -y
# install git
sudo apt-get install git -y
# install make
sudo apt-get install make -y
# install Gparted
sudo apt-get install gparted -y
# install jq
sudo apt-get install jq -y
# install git flow
sudo apt-get install git-flow -y
# install Screen
sudo apt-get install screen -y
# install Vim
sudo apt-get install vim -y
# install Terminator
sudo apt-get install terminator -y
# install htop
sudo apt-get install htop -y
# install VLC
sudo apt-get install vlc -y
# install MPV
sudo apt-get install mpv -y
# install Spotify
sudo snap install spotify
# install Tweaks, Gnome Extensions (with Chrome support)
sudo apt-get install gnome-tweak-tool -y && \
sudo apt-get install gnome-shell-extensions -y && \
sudo apt-get install chrome-gnome-shell -y
# install z shell
sudo apt-get install zsh -y && \
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" && \
chsh -s $(which zsh) && \
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# install Brightness Indicator
sudo add-apt-repository ppa:indicator-brightness/ppa -y && \
sudo apt-get update -y && \
sudo apt-get install indicator-brightness -y && \
sudo apt install -f -y
# install Grub Customizer
sudo add-apt-repository ppa:danielrichter2007/grub-customizer -y && \
sudo apt-get update -y && \
sudo apt-get install grub-customizer -y && \
sudo apt install -f -y
# install KeePass 2
sudo add-apt-repository ppa:jtaylor/keepass -y && \
sudo apt-get update -y && \
sudo apt-get install keepass2 -y && \
sudo apt install -f -y
# install Google Chrome
wget -O ~/Downloads/google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
sudo dpkg -i ~/Downloads/google-chrome.deb && \
sudo apt install -f -y
# install LazyGit
sudo add-apt-repository ppa:lazygit-team/release -y && \
sudo apt-get update -y && \
sudo apt-get install lazygit -y && \
sudo apt install -f -y
# install Ulauncher
wget -O ~/Downloads/ulauncher.deb https://github.com/Ulauncher/Ulauncher/releases/download/5.6.1/ulauncher_5.6.1_all.deb && \
sudo dpkg -i ~/Downloads/ulauncher.deb && \
sudo apt install -f -y
# install fd
wget -O ~/Downloads/fd.deb https://github.com/sharkdp/fd/releases/download/v7.4.0/fd_7.4.0_amd64.deb && \
sudo dpkg -i ~/Downloads/fd.deb && \
sudo apt install -f -y
# install Clamav (antivirus)
sudo apt-get install clamav clamav-daemon -y && \
sudo apt install -f -y
############################################
# CODING
############################################
# install Sublime
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - && \
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list && \
sudo apt-get update -y && \
sudo apt-get install apt-transport-https -y && \
sudo apt-get install sublime-text -y && \
sudo apt install -f -y
# install VS Code
wget -O ~/Downloads/vscode.deb https://az764295.vo.msecnd.net/stable/c47d83b293181d9be64f27ff093689e8e7aed054/code_1.42.1-1581432938_amd64.deb && \
sudo dpkg -i ~/Downloads/vscode.deb && \
sudo apt install -f -y
# install PHP Storm
sudo snap install phpstorm --classic
# install PHP
sudo add-apt-repository ppa:ondrej/php -y && \
sudo apt-get update -y && \
sudo apt-get install php7.4 php7.4-curl php7.4-soap php7.4-json \
php7.4-pgsql php7.4-mysql php7.4-sqlite3 php7.4-mbstring \
php7.4-xml php7.4-zip php7.4-fpm php7.4-dev php7.4-bcmath \
php7.4-intl libapache2-mod-php7.4 -y && \
sudo apt-get install php-amqp -y && \
sudo apt install -f -y
# Enable PHP
sudo a2enmod php7.4 && \
sudo update-alternatives --set php /usr/bin/php7.4
# install XDebug
sudo pecl channel-update pecl.php.net && \
sudo pecl install xdebug
# config for php cli
echo '[xdebug]' | sudo tee -a /etc/php/7.4/cli/php.ini > /dev/null && \
echo 'zend_extension=/usr/lib/php/20190902/xdebug.so' | sudo tee -a /etc/php/7.4/cli/php.ini && \
echo 'xdebug.remote_enable=on' | sudo tee -a /etc/php/7.4/cli/php.ini && \
echo 'xdebug.default_enable=on' | sudo tee -a /etc/php/7.4/cli/php.ini && \
echo 'xdebug.remote_autostart=on' | sudo tee -a /etc/php/7.4/cli/php.ini && \
echo 'xdebug.remote_host=localhost' | sudo tee -a /etc/php/7.4/cli/php.ini && \
echo 'xdebug.remote_port=9001' | sudo tee -a /etc/php/7.4/cli/php.ini && \
echo 'xdebug.remote_handler="dbgp"' | sudo tee -a /etc/php/7.4/cli/php.ini && \
echo 'xdebug.idekey=PHPSTORM' | sudo tee -a /etc/php/7.4/cli/php.ini && \
echo 'xdebug.remote_log=/home/fecaps/xdebug.log' | sudo tee -a /etc/php/7.4/cli/php.ini
# config for php apache
echo '[xdebug]' | sudo tee -a /etc/php/7.4/apache2/php.ini > /dev/null && \
echo 'zend_extension=/usr/lib/php/20190902/xdebug.so' | sudo tee -a /etc/php/7.4/apache2/php.ini && \
echo 'xdebug.remote_enable=on' | sudo tee -a /etc/php/7.4/apache2/php.ini && \
echo 'xdebug.default_enable=on' | sudo tee -a /etc/php/7.4/apache2/php.ini && \
echo 'xdebug.remote_autostart=on' | sudo tee -a /etc/php/7.4/apache2/php.ini && \
echo 'xdebug.remote_host=localhost' | sudo tee -a /etc/php/7.4/apache2/php.ini && \
echo 'xdebug.remote_port=9001' | sudo tee -a /etc/php/7.4/apache2/php.ini && \
echo 'xdebug.remote_handler="dbgp"' | sudo tee -a /etc/php/7.4/apache2/php.ini && \
echo 'xdebug.idekey=PHPSTORM' | sudo tee -a /etc/php/7.4/apache2/php.ini && \
echo 'xdebug.remote_log=/home/fecaps/xdebug.log' | sudo tee -a /etc/php/7.4/apache2/php.ini
# config for php-fpm
echo '[xdebug]' | sudo tee -a /etc/php/7.4/fpm/php.ini > /dev/null && \
echo 'zend_extension=/usr/lib/php/20190902/xdebug.so' | sudo tee -a /etc/php/7.4/fpm/php.ini && \
echo 'xdebug.remote_enable=on' | sudo tee -a /etc/php/7.4/fpm/php.ini && \
echo 'xdebug.default_enable=on' | sudo tee -a /etc/php/7.4/fpm/php.ini && \
echo 'xdebug.remote_autostart=on' | sudo tee -a /etc/php/7.4/fpm/php.ini && \
echo 'xdebug.remote_host=localhost' | sudo tee -a /etc/php/7.4/fpm/php.ini && \
echo 'xdebug.remote_port=9001' | sudo tee -a /etc/php/7.4/fpm/php.ini && \
echo 'xdebug.remote_handler="dbgp"' | sudo tee -a /etc/php/7.4/fpm/php.ini && \
echo 'xdebug.idekey=PHPSTORM' | sudo tee -a /etc/php/7.4/fpm/php.ini && \
echo 'xdebug.remote_log=/home/fecaps/xdebug.log' | sudo tee -a /etc/php/7.4/fpm/php.ini
# install Symfony CLI
wget https://get.symfony.com/cli/installer -O - | bash && \
sudo mv $HOME/.symfony/bin/symfony /usr/local/bin/symfony
# install Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');" && \
sudo mv composer.phar /usr/local/bin/composer && \
composer selfupdate
# install node, npm
curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash - && \
sudo apt-get install nodejs -y
# install n
sudo npm i -g n
# install node stable version
sudo n stable
# install TypeScript
sudo npm i -g typescript
# install dockly
sudo npm i -g dockly
# install autocannon
sudo npm i -g autocannon
# install clinic
sudo npm i -g clinic
# install http-server
sudo npm i -g http-server
# install Golang
sudo curl -o ~/Downloads/golang.tar.gz https://dl.google.com/go/go1.13.8.linux-amd64.tar.gz && \
sudo tar -C /usr/local -xzf ~/Downloads/golang.tar.gz
# install Pip
sudo apt-get install python3-pip -y
# install Postman
sudo snap install postman
# install Docker CE
sudo apt-get update -y && \
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable" && \
sudo apt-get update -y && \
sudo apt-get install docker-ce docker-ce-cli containerd.io -y && \
sudo usermod -aG docker $USER
# install Docker Compose
sudo curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose
# install kubernetes (virtualbox, kubectl, minikube, helm, krew)
sudo apt-get install virtualbox -y && \
sudo snap install kubectl --classic && \
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && \
chmod +x minikube && \
sudo mkdir -p /usr/local/bin/ && \
sudo install minikube /usr/local/bin/ && \
sudo chown -R $USER $HOME/.kube $HOME/.minikube && \
sudo snap install helm --classic && \
helm repo add stable https://kubernetes-charts.storage.googleapis.com/ && \
helm repo add bitnami https://charts.bitnami.com/bitnami && \
(
set -x; cd "$(mktemp -d)" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.{tar.gz,yaml}" &&
tar zxvf krew.tar.gz &&
KREW=./krew-"$(uname | tr '[:upper:]' '[:lower:]')_amd64" &&
"$KREW" install --manifest=krew.yaml --archive=krew.tar.gz &&
"$KREW" update
)
############################################
# DATABASES
############################################
# install MongoDB
sudo apt-get install gnupg -y && \
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add - && \
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list && \
sudo apt-get update && \
sudo apt-get install mongodb-org -y && \
sudo apt install -f -y
# install Mongo Compass
wget -O ~/Downloads/mongodbcompass.deb https://downloads.mongodb.com/compass/mongodb-compass-community_1.20.3_amd64.deb && \
sudo dpkg -i ~/Downloads/mongodbcompass.deb && \
sudo apt install -f -y
# install mongo hacker
git clone https://github.com/TylerBrock/mongo-hacker.git && \
cd mongo-hacker && \
make && \
make install && \
cd ..
# Download Dbeaver
wget -O ~/Downloads/dbeaver.deb https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb && \
sudo dpkg -i ~/Downloads/dbeaver.deb && \
sudo apt install -f -y
# install MySQL Server
sudo apt-get install mysql-server -y
# install Workbench
wget -O ~/Downloads/workbench.deb https://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community_8.0.18-1ubuntu18.04_amd64.deb && \
sudo dpkg -i ~/Downloads/workbench.deb && \
sudo apt install -f -y
# install mycli
pip3 install -U mycli
# install Postgres
sudo apt-get install postgresql -y && \
sudo apt-get install -f -y && \
sudo apt-get update -y
# install pgcli
sudo apt-get install libpq-dev python-dev -y && \
pip3 install -U pgcli
# install Redis
sudo apt-get install redis-server -y
# install Redis Desktop Manager
sudo snap install redis-desktop-manager
############################################
# CHATS
############################################
# install Skype
sudo snap install skype --classic
# install Zoom
wget -O ~/Downloads/zoom.deb https://zoom.us/client/latest/zoom_amd64.deb && \
sudo dpkg -i ~/Downloads/zoom.deb
# install Slack
wget -O ~/Downloads/slack.deb https://downloads.slack-edge.com/linux_releases/slack-desktop-4.2.0-amd64.deb && \
sudo dpkg -i ~/Downloads/slack.deb && \
sudo apt install -f -y
# install Telegram
wget -O ~/Downloads/telegram.tar.xz https://telegram.org/dl/desktop/linux && \
tar xfv ~/Downloads/telegram.tar.xz -C ~/Downloads
############################################
# CLOUD
############################################
# install Dropbox
wget -O ~/Downloads/dropbox.deb https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2019.02.14_amd64.deb && \
sudo dpkg -i ~/Downloads/dropbox.deb && \
sudo apt install -f -y
# install Mega
wget -O ~/Downloads/mega.deb https://mega.nz/linux/MEGAsync/xUbuntu_18.04/amd64/megasync-xUbuntu_18.04_amd64.deb && \
sudo dpkg -i ~/Downloads/mega.deb && \
sudo apt install -f -y && \
wget -O ~/Downloads/mega-nautilus.deb https://mega.nz/linux/MEGAsync/xUbuntu_18.04/amd64/nautilus-megasync-xUbuntu_18.04_amd64.deb && \
sudo dpkg -i ~/Downloads/mega-nautilus.deb && \
sudo apt install -f -y
# install Serverless
curl -o- -L https://slss.io/install | bash
# install (or upgrade) aws cli
pip3 install awscli --upgrade --user && \
pip3 install --upgrade --user awscli
# install Terraform
wget -O ~/Downloads/terraform.zip https://releases.hashicorp.com/terraform/0.12.21/terraform_0.12.21_linux_amd64.zip && \
unzip ~/Downloads/terraform.zip -d ~/Downloads && \
sudo mv ~/Downloads/terraform /usr/local/bin/
############################################
# OTHER UTILITIES
############################################
# set Git global config and aliases
git config --global user.name 'Fellipe Capelli' && \
git config --global user.email 'fellipecapelli@gmail.com' && \
git config --global color.ui true && \
git config --global core.editor '/usr/bin/vim' && \
git config --global core.filemode false && \
git config --global alias.logo 'log --oneline --graph --decorate' && \
git config --global alias.unstage 'reset HEAD --'
git config --global pull.rebase true
# install tldr package
sudo npm i -g tldr
# install cleaver
sudo npm i -g cleaver
# install ccat
/usr/local/go/bin/go get -u github.com/jingweno/ccat
# install mkcert
sudo apt-get install libnss3-tools -y && \
sudo apt install -f -y && \
/usr/local/go/bin/go get -u github.com/FiloSottile/mkcert
############################################
# CONFIG
############################################
# disable some services auto start
sudo systemctl disable redis-server.service && \
sudo systemctl disable apache2.service && \
sudo update-rc.d apache2 disable && \
sudo systemctl disable php7.4-fpm.service && \
sudo update-rc.d php7.4-fpm disable && \
sudo systemctl disable mysql.service && \
sudo systemctl disable postgresql.service && \
sudo systemctl enable mongod.service && \
sudo systemctl disable mongod.service
# enabled firewall
sudo ufw enable
# update config folder access
sudo chown -R $USER:$(id -gn $USER) $HOME/.config
# config VS Code
code --install-extension alefragnani.project-manager && \
code --install-extension Arjun.swagger-viewer && \
code --install-extension bmewburn.vscode-intelephense-client && \
code --install-extension christian-kohler.npm-intellisense && \
code --install-extension christian-kohler.path-intellisense && \
code --install-extension codezombiech.gitignore && \
code --install-extension danwahlin.angular2-snippets && \
code --install-extension dbaeumer.vscode-eslint && \
code --install-extension donjayamanne.githistory && \
code --install-extension eamodio.gitlens && \
code --install-extension EditorConfig.EditorConfig && \
code --install-extension eg2.tslint && \
code --install-extension Equinusocio.vsc-community-material-theme && \
code --install-extension Equinusocio.vsc-material-theme && \
code --install-extension equinusocio.vsc-material-theme-icons && \
code --install-extension henriiik.docker-linter && \
code --install-extension HookyQR.beautify && \
code --install-extension ipedrazas.kubernetes-snippets && \
code --install-extension isudox.vscode-jetbrains-keybindings && \
code --install-extension johnpapa.Angular2 && \
code --install-extension mikestead.dotenv && \
code --install-extension MikhailLuchkin.kubernetes-snip-and-pets && \
code --install-extension ms-azuretools.vscode-docker && \
code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools && \
code --install-extension ms-vscode.vscode-typescript-tslint-plugin && \
code --install-extension nikitaKunevich.snippet-creator && \
code --install-extension PKief.material-icon-theme && \
code --install-extension pmneo.tsimporter && \
code --install-extension redhat.vscode-yaml && \
code --install-extension sleistner.vscode-fileutils && \
code --install-extension streetsidesoftware.code-spell-checker && \
code --install-extension ThreadHeap.serverless-ide-vscode && \
code --install-extension tomoki1207.pdf && \
code --install-extension vncz.vscode-apielements && \
code --install-extension waderyan.gitblame && \
code --install-extension WakaTime.vscode-wakatime && \
code --install-extension wix.vscode-import-cost && \
code --install-extension xabikos.JavaScriptSnippets && \
code --install-extension zgudino.editorconfig-vscode-snippet
# update, upgrade, fix installations, autoclean and autoremove
source ~/.zshrc && \
sudo apt-get update -y && \
sudo apt-get upgrade -y && \
sudo apt install -f -y && \
sudo apt-get autoclean -y && \
sudo apt-get autoremove -y
# set env variables, alias, etc
echo "alias ll='ls -la'" >> ~/.zshrc && \
echo "export COLORTERM='xterm'" >> ~/.zshrc && \
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.zshrc && \
echo "export KUBECONFIG=$HOME/.kube/config" >> ~/.zshrc && \
echo "export PATH=$PATH:$HOME/.krew/bin" >> ~/.zshrc && \
echo "# custom" >> ~/.zshrc && \
echo "alias ccat=$HOME/go/bin/ccat" >> ~/.zshrc && \
echo "alias mkcert=$HOME/go/bin/mkcert" >> ~/.zshrc && \
echo "alias listPortsInUse='sudo lsof -i -P -n | grep LISTEN'" >> ~/.zshrc && \
echo "alias stopAllContainers='docker stop $(docker ps -aq)'" >> ~/.zshrc && \
echo "alias cleanDockerData='docker volume prune -f && docker system prune -f'" >> ~/.zshrc && \
echo "alias projects='cd ~/projects'" >> ~/.zshrc && \
echo "alias mongoLocal='mongo mongodb://127.0.0.1'" >> ~/.zshrc && \
echo "alias postgresLocal='pgcli postgres://postgres:postgres@127.0.0.1:5432/postgres'" >> ~/.zshrc && \
echo "alias mysqlLocal='mycli mysql://root:123@127.0.0.1:3306/mysql'" >> ~/.zshrc && \
echo "alias removeLocalBranchesAleadyMergedInRemote='git branch --merged | grep -v \"*\" | grep -v -e \"master\" -e \"development\" -e \"staging\" | xargs git branch -d'" >> ~/.zshrc && \
echo "alias listBiggestFilesAndDirs='du -hsx * | sort -rh | head -10'" >> ~/.zshrc && \
echo "alias listBiggestSubFilesAndSubDirs='sudo du -Sh | sort -rh | head -10'" >> ~/.zshrc && \
echo "alias checkMemory='free -g -h'" >> ~/.zshrc && \
echo "alias checkHardDrive='df -h --total'" >> ~/.zshrc && \
echo "alias getMyIP='dig +short myip.opendns.com @resolver1.opendns.com'" >> ~/.zshrc && \
echo "alias cleanTrash='rm -rf ~/.local/share/Trash/*'" >> ~/.zshrc && \
echo "alias fixMouseScroll1='sudo modprobe -r usbhid && sudo modprobe usbhid'" >> ~/.zshrc && \
echo "alias fixMouseScroll2='sudo modprobe -r psmouse && sudo modprobe psmouse'" >> ~/.zshrc && \
echo "alias scamVirus='clamscan -r --bell -i /'" >> ~/.zshrc && \
echo "# custom methods" >> ~/.zshrc && \
echo "convertPPTXtoPDF() { libreoffice --headless --invisible --convert-to pdf *.pptx }" >> ~/.zshrc && \
echo "convertPPTtoPDF() { libreoffice --headless --invisible --convert-to pdf * .ppt }" >> ~/.zshrc && \
echo "changeExternalMonitorBrightness() { xrandr --output HDMI-1 --brightness $1 }" >> ~/.zshrc && \
source ~/.zshrc
# install k8s and krew utilities
kubectl krew install resource-capacity && \
kubectl krew install ingress-nginx && \
kubectl krew install ctx && \
kubectl krew install ns
### Fixing the bright of the screen
# 1. Open the **Grub Customizer**
# 2. Enter `General Settings` > `Kernel parameters`
# 3. Edit from `quiet splash` to `quiet splash acpi_osi=`
# 4. Reboot the system
# Reference links:
# https://www.edivaldobrito.com.br/brilho-da-tela-como-instalar-brightness-indicator-ubuntu/
# http://askubuntu.com/questions/476664/cannot-change-backlight-brightness-ubuntu-14-04
@fecaps
Copy link
Author

fecaps commented Jun 30, 2018

Running:

chmod +x part1-setup.sh

./part1-setup.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment