Giter Club home page Giter Club logo

ubuntu-on-steroids's Introduction

Ubuntu on Steroids

Table of Contents

  1. Core Dependencies
  2. Common Tools & Drivers
  3. Git & Github
  4. Theme
  5. Neovim
  6. Terminal & Shell
  7. Node.js
  8. Laravel
  9. Visual Studio Code
  10. Other Tools
  11. Docker
  12. MySQL
  13. DigitalOcean
  14. Useful Commands

Core Dependencies

  • sudo apt install python-dev
  • sudo apt install python3-dev
  • sudo apt install libssl-dev
  • sudo apt install curl
  • sudo apt install cmake
  • sudo apt install default-jdk
  • sudo apt install maven
  • sudo apt install python3-pip
  • sudo apt install python3-tk

Common Tools & Drivers

Nvidia Driver

Software & Updates > Additional Drivers

KeePass

sudo apt install keepass2

OBS

sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt install obs-studio

Skype

wget https://go.skype.com/skypeforlinux-64.deb
sudo apt install ./skypeforlinux-64.deb
rm skypeforlinux-64.deb

Ubuntu Software

  • Dropbox
  • Spotify
  • GIMP

Git & Github

Install Git & Configure SSH

  1. sudo apt install git
  2. Generate SSH Key
  3. Add SSH Key to Github Account
# lines 1, 2 and 4 must be modified for newer versions
curl -OL https://github.com/isacikgoz/gitbatch/releases/download/v0.4.2/gitbatch_0.4.1_linux_amd64.tar.gz
tar xzf gitbatch_0.4.2_linux_amd64.tar.gz
mv gitbatch ~/bin
rm gitbatch_0.4.2_linux_amd64.tar.gz
  1. sudo apt install myrepos
  2. git clone https://github.com/utkuufuk/oh-my-repos
  3. pip3 install oh-my-repos/.
  4. rm -rf oh-my-repos

Theme

Fonts

  1. Hack
  2. Courier Prime Code
  3. Input
  4. Fira Code
    sudo apt install fonts-firacode
  5. Source Code Pro
    git clone --depth 1 --branch release https://github.com/adobe-fonts/source-code-pro.git ~/.fonts/adobe-fonts/source-code-pro
    fc-cache -f -v ~/.fonts/adobe-fonts/source-code-pro

Gnome Theme

  • sudo add-apt-repository -u ppa:snwh/ppa
  • sudo apt update
  • sudo apt install paper-icon-theme
  • sudo apt install gnome-tweak-tool
  • Tweaks > Appearance > Applications > Adwaita-dark
  • Tweaks > Appearance > Icons > Paper
  • Tweaks > Fonts > [your_favourite_font]

Desktop Slideshow

Shotwell Photo Manager > Select Pictures > File > Set as Desktop Slideshow


Neovim

  1. Install Neovim

    1. sudo apt install neovim
    2. curl -o ~/.config/nvim/init.vim --create-dirs https://raw.githubusercontent.com/utkuufuk/ubuntu-on-steroids/master/init.vim
  2. Install Vim-Plug

    curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

  3. Activate plugins by using the command :PlugInstall in vim ~/.config/nvim/init.vim


Terminal & Shell

  1. Install Tilix

    sudo apt install tilix

  2. Customize Tilix Appearance
    • Preferences > Appearance > Window Style > Disable CSD && hide toolbar
    • Preferences > Appearance > Terminal Title Style > None
    • Preferences > Profile > Color > Color scheme > Monokai Dark
  3. Configure Tilix Keyboard Shortcuts
    • Preferences > Shortcuts > Replace Switch to next session shortcut with Ctrl+T
    • Preferences > Shortcuts > Replace Resize the terminal down shortcut with Shift+Ctrl+Down
    • Preferences > Shortcuts > Replace Resize the terminal up shortcut with Shift+Ctrl+Up
    • Preferences > Shortcuts > Replace Resize the terminal right shortcut with Shift+Ctrl+Right
    • Preferences > Shortcuts > Replace Resize the terminal left shortcut with Shift+Ctrl+Left
  4. Configure System Keyboard Shortcuts
    • Keyboard Shortcuts > Remove Default Action for Ctrl+Alt+T
    • Keyboard Shortcuts > Bind Ctrl+Alt+T to Custom Shortcut for Launching Tilix
    • Keyboard Shortcuts > Disable Shortcut for Hide all normal windows
  1. Install Zsh
    • sudo apt install zsh
    • chsh -s $(which zsh)
    • gnome-session-quit
    • Login
    • echo $SHELL
  2. Oh My Zsh
    • sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  3. Spaceship Prompt
    • git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt"
    • ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"
  4. Zsh Autosuggestions
    • git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
    • echo "bindkey '^ ' autosuggest-accept" >> $ZSH_CUSTOM/autosuggestion-settings.zsh
    • source $ZSH_CUSTOM/autosuggestion-settings.zsh
  5. Zsh Syntax Highlighting
    • git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
  6. Configure .zshrc
    • curl -o ~/.zshrc https://raw.githubusercontent.com/utkuufuk/ubuntu-on-steroids/master/.zshrc
    • source ~/.zshrc

Node.js

Install NVM

Note that the version number may differ:

# download the installer script
curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh -o install_nvm.sh

# install
chmod +x install_nvm.sh && ./install_nvm.sh

# delete installer
rm install_nvm.sh

# update current session
source ~/.profile

Install Node.js

# list available versions
nvm ls-remote

# install desired version(s) 
nvm install x.y.z

# use desired node version
nvm use x.y.z

Configure

# change the location of global packages
cd ~ && mkdir .node_modules_global
npm config set prefix=$HOME/.node_modules_global
npm install npm@latest -g

# set author info
npm config set init.author.name <name>
npm config set init.author.email <email>

See additional tips for more info.

Laravel

Install PHP 7.3

sudo apt update 
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt install \
   php7.3 \
   php7.3-common \
   php7.3-mysql \
   php7.3-xml \
   php7.3-xmlrpc \
   php7.3-curl \
   php7.3-gd \
   php7.3-imagick \
   php7.3-cli \
   php7.3-dev \
   php7.3-imap \
   php7.3-mbstring \
   php7.3-opcache \
   php7.3-soap \
   php7.3-zip \
   php7.3-gmp \
   php7.3-intl -y

Install Composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/home/utku/.local/bin --filename=composer

Install Laravel

composer global require "laravel/installer"

Install XDebug

  1. Clone the XDebug repo.
  2. From within the repo dir, run the following commands:
    phpize
    ./configure --enable-xdebug
    make clean
    make
    sudo make install
  3. Add the following lines into your php.ini. (You can locate your php.ini by running the php --ini command)
    zend_extension="xdebug.so"
    
    [XDebug]
    xdebug.remote_enable = 1
    xdebug.remote_autostart = 1
  4. Verify that XDebug is successfuly installed by running the following command (it should match):
    php -v | grep "Xdebug"

See additional tips for more info.

Visual Studio Code

  1. Download the .deb package

  2. Download Extensions

    • Appearance
      • Dracula Official or Winter Is Coming
      • Material Icon Theme
    • Editor
      • Vim
      • GitLens
      • EditorConfig for VS Code
    • Remote Development
      • Remote - SSH
      • Remote - SSH: Editing Configuration Files
      • Remote - SSH: Explorer
    • Web Development
      • REST Client
      • Auto Rename Tag
      • Live Server
    • JavaScript
      • Prettier
      • ESLint
      • ES7 React/Redux/GraphQL/React-Native snippets
    • PHP
      • PHP Debug
      • PHP DocBlocker
      • PHP Intelephense
      • phpfmt - PHP formatter
      • Larevel Blade Snippets
    • Python
      • Python
    • Other
      • Docker
      • Create Files & Folders: On The Go
  3. Copy the settings file contents into settings.json

  4. Ctrl+Shift+P > Python: Select Interpreter > Python 3.X

  5. npm install -g eslint

Shortcuts

Shortcut Description
Ctrl+B Toggle sidebar
Ctrl+, Open settings

Other Tools

  • Peek
    sudo add-apt-repository ppa:peek-developers/stable
    sudo apt update && sudo apt install peek
  • ag & sack
    # 1. install ag
    sudo apt install silversearcher-ag
    
    # 2. install sack
    git clone https://github.com/sampson-chen/sack.git && \ 
    cd sack && \ 
    chmod +x install_sack.sh && \
    ./install_sack.sh && \
    cd .. && \
    rm -rf sack

Docker

# 1. remove any older versions
sudo apt purge docker lxc-docker docker-engine docker.io

# 2. install prerequisites
sudo apt install apt-transport-https ca-certificates software-properties-common

# 3. import official GPG key & verify signature
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add

# 4. add docker respository
sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 5. install docker
sudo apt update && sudo apt install docker-ce

# 6. verify service status
sudo systemctl status docker

# 7. create docker group & add your user
sudo groupadd docker
sudo usermod -aG docker $USER

Log out and login back.

# 8. verify that you can run this command without 'sudo'
docker run hello-world

# 9. install docker-compose 1.24.0 (better check newer versions)
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 10. apply executable permission
sudo chmod +x /usr/local/bin/docker-compose

See cheatsheet for more info.


MySQL

Download MySQL Docker Image

docker pull mysql/mysql:<tag>

Start MySQL Container

# publish default port, provide a root password and start mysql
docker run --name <container_name> -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<root_pw> mysql:<tag>

Connect to MySQL Server from within the Container

  1. Run the MySQL Client

    # check randomly generated password
    docker logs <container_name> 2>&1 | grep GENERATED
    
    # run the MySQL client within the MySQL Server container
    docker exec -it <container_name> mysql -uroot -p

    When prompted, paste the generated password obtained from the previous step.

  2. Reset Root Password

    ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

Connect via Client

# install client
sudo apt install mysql-client

# connect
mysql -h HOST -P PORT_NUMBER -u USERNAME -p

Backup & Restore

Backup & restore a particular database while MySQL container is running:

# backup
docker exec <mysql_container_name> mysqldump \
    -u <username> --password=<password> <database_name> > <backup_file>.sql

# restore
cat <backup_file>.sql | docker exec -i <mysql_container_name> mysql \
    -u <username> --password=<password> <database_name>

# backup & compress
docker exec <mysql_container_name> mysqldump \
    -u <username> --password=<password> <database_name> | gzip -c > <backup_file>.sql.gz 

# decompress & restore
gzip -d -c <backup_file>.sql.gz | docker exec -i <mysql_container_name> mysql \
    -u <username> --password=<password> <database_name>

See cheatsheet for more info.

DigitalOcean

  1. Follow the Initial Server Setup guide.
  2. Append public SSH keys of each client machine into the ~/.ssh/authorized_keys file in droplet.

Useful Commands

# list which processes listen on which TCP ports
netstat -tlnp

# get lines of code in a particular language within a Git repository
git ls-files | grep '\.py' | xargs wc -l

ubuntu-on-steroids's People

Contributors

utkuufuk avatar isacikgoz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.