- Core Dependencies
- Common Tools & Drivers
- Git & Github
- Theme
- Neovim
- Terminal & Shell
- Node.js
- Laravel
- Visual Studio Code
- Other Tools
- Docker
- MySQL
- DigitalOcean
- Useful Commands
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
Software & Updates > Additional Drivers
sudo apt install keepass2
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt install obs-studio
wget https://go.skype.com/skypeforlinux-64.deb
sudo apt install ./skypeforlinux-64.deb
rm skypeforlinux-64.deb
- Dropbox
- Spotify
- GIMP
sudo apt install git
- Generate SSH Key
- 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
sudo apt install myrepos
git clone https://github.com/utkuufuk/oh-my-repos
pip3 install oh-my-repos/.
rm -rf oh-my-repos
- Hack
- Courier Prime Code
- Input
- Fira Code
sudo apt install fonts-firacode
- 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
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]
Shotwell Photo Manager > Select Pictures > File > Set as Desktop Slideshow
-
sudo apt install neovim
curl -o ~/.config/nvim/init.vim --create-dirs https://raw.githubusercontent.com/utkuufuk/ubuntu-on-steroids/master/init.vim
-
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
-
Activate plugins by using the command
:PlugInstall
invim ~/.config/nvim/init.vim
- Install Tilix
sudo apt install tilix
- Customize Tilix Appearance
- Preferences > Appearance > Window Style > Disable CSD && hide toolbar
- Preferences > Appearance > Terminal Title Style > None
- Preferences > Profile > Color > Color scheme > Monokai Dark
- Configure Tilix Keyboard Shortcuts
- Preferences > Shortcuts > Replace
Switch to next session
shortcut withCtrl+T
- Preferences > Shortcuts > Replace
Resize the terminal down
shortcut withShift+Ctrl+Down
- Preferences > Shortcuts > Replace
Resize the terminal up
shortcut withShift+Ctrl+Up
- Preferences > Shortcuts > Replace
Resize the terminal right
shortcut withShift+Ctrl+Right
- Preferences > Shortcuts > Replace
Resize the terminal left
shortcut withShift+Ctrl+Left
- Preferences > Shortcuts > Replace
- 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
- Keyboard Shortcuts > Remove Default Action for
- Install Zsh
sudo apt install zsh
chsh -s $(which zsh)
gnome-session-quit
- Login
echo $SHELL
- Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
- 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"
- 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
- Zsh Syntax Highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
- Configure
.zshrc
curl -o ~/.zshrc https://raw.githubusercontent.com/utkuufuk/ubuntu-on-steroids/master/.zshrc
source ~/.zshrc
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
# list available versions
nvm ls-remote
# install desired version(s)
nvm install x.y.z
# use desired node version
nvm use x.y.z
# 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.
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
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/home/utku/.local/bin --filename=composer
composer global require "laravel/installer"
- Clone the XDebug repo.
- From within the repo dir, run the following commands:
phpize ./configure --enable-xdebug make clean make sudo make install
- Add the following lines into your
php.ini
. (You can locate yourphp.ini
by running thephp --ini
command)zend_extension="xdebug.so" [XDebug] xdebug.remote_enable = 1 xdebug.remote_autostart = 1
- Verify that XDebug is successfuly installed by running the following command (it should match):
php -v | grep "Xdebug"
See additional tips for more info.
-
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
- Appearance
-
Copy the settings file contents into
settings.json
-
Ctrl+Shift+P > Python: Select Interpreter > Python 3.X
-
npm install -g eslint
Shortcut | Description |
---|---|
Ctrl+B |
Toggle sidebar |
Ctrl+, |
Open settings |
- 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
# 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.
docker pull mysql/mysql:<tag>
# 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>
-
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.
-
Reset Root Password
ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';
# install client
sudo apt install mysql-client
# connect
mysql -h HOST -P PORT_NUMBER -u USERNAME -p
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.
- Follow the Initial Server Setup guide.
- Append public SSH keys of each client machine into the
~/.ssh/authorized_keys
file in droplet.
# 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