Sign in
Log inSign up
Setting up Elementary OS for Full-Stack Development

Setting up Elementary OS for Full-Stack Development

Parables Boltnoel's photo
Parables Boltnoel
·Feb 15, 2021·

14 min read

I always envied Mac users until I found Elementary OS 3 years ago and I must confess, I have never thought of trying any other Linux distro and my burning desire for a Mac has been quenched by Elementary OS(eOS) and hell-no going back to Windows 10 for development. I simply love the look and feel of eOS.

Follow through this guide and get your machine ready for full-stack development. By the way, I am not a Full Stack Developer yet but I'm working towards that goal. Run the commands below by opening your terminal from the Applications Menu on the top left and let's go.

Change computer name

If you skipped this during installation, you can change it with the commands below Hint: replace <computerName> with your prefered name

sudo gedit /etc/hosts
# 127.0.1.1    <computerName>

sudo gedit /etc/hostname
#<computerName>

Update the OS

sudo apt update 
sudo apt upgrade
sudo apt dist-upgrade
sudo apt install software-properties-common apt-transport-https curl
sudo apt autoremove

Install APT-FAST

If you chose to skip this step, start every apt command with sudo. Unless you know what you are doing, stick with default selected options during the configuration.

 sudo add-apt-repository -y ppa:apt-fast/stable
 sudo apt -y install apt-fast
 echo $'\nalias apt="apt-fast"' >> ~/.bashrc 
 source ~/.bashrc

Install Brave Browser

apt install apt-transport-https curl gnupg
curl -s brave-browser-apt-release.s3.brave.com/brave-core.asc | sudo apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-release.gpg add -
echo "deb [arch=amd64] brave-browser-apt-release.s3.brave.com stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list
apt update
apt install brave-browser

Install Firefox Developer Edition

umake web firefox-dev

Install system tweak tools

sudo apt install software-properties-common
sudo add-apt-repository ppa:philip.scott/elementary-tweaks
sudo apt update
sudo apt install elementary-tweaks

Get the La-Capitaine-Icon-Theme by @keeferrourke

 mkdir ~/.icons && cd ~/.icons
 git clone github.com/keeferrourke/la-capitaine-icon-…
 cd la-capitaine-icon-theme && ./configure

Get the La-Capitaine-Cursor-Theme by @keeferrourke

sudo add-apt-repository ppa:dyatlov-igor/la-capitaine
apt install la-capitaine-cursor-theme

Fix Lag on Login/Restart by @Jason Waddington

sudo mv /etc/xdg/autostart/at-spi-dbus-bus.desktop /etc/xdg/autostart/at-spi-dbus-bus.disabled
sudo mv /usr/share/upstart/xdg/autostart/at-spi-dbus-bus.desktop /usr/share/upstart/xdg/autostart/at-spi-dbus-bus.disabled

Install gedit text editor

apt install gedit

Improves battery life by reducing the number of running programs

sudo add-apt-repository ppa:linrunner/tlp
apt update
apt install tlp tlp-rdw
sudo tlp start

Install Laptop Mode Tools

sudo add-apt-repository ppa:ubuntuhandbook1/apps
apt update
apt install laptop-mode-tools

Install Archive Formats

apt install unace rar unrar p7zip-rar p7zip sharutils uudeview mpack arj cabextract lzip lunzip

Install Snap Package Manager

apt update
apt installl snapd

Install Ubuntu Make

sudo add-apt-repository ppa:lyzardking/ubuntu-make
apt update
apt install ubuntu-make

Install Git and SSH

apt install openssh-server
apt install git
ssh-keygen -t rsa -b 4096
cat ~/.ssh/id_rsa.pub
# copy the output and create a new SSH key on [Github](github.com/settings/ssh/new)

Install Zeal, the Offline Documentation for Developers

  apt install zeal

Install Eddy for installing .deb files

Get it on App Center

Install Xtreme Downlaod Manager

A powerful download manager and a must for every computer. Download it here. Extract the downloaded tar.xz file and follow the instructions in the readme.txt file.

Install Gparted Partition maker

 apt install gparted

Install Docker

Follow the tutorial on Installing Docker CE on elementary OS 5.0 Juno for a detailed explanation of the commands below

# uninstall previous versions
apt remove \
    docker \
    docker-engine \
    docker.io \
    containerd \
    runc

# Install Docker CE via the Docker repository
apt update
apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

# Add Docker's GPG key, and verify that you have the key with the 
# fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88:
curl -fsSL download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88

# your output must be exactly like below
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <>
sub   rsa4096 2017-02-22 [S]

# Add the stable Docker repository. 
# The key here is to use bionic, 
# because elementary OS 5.0 Juno is build on Ubuntu 18.04 LTS "Bionic Beaver".
sudo apt-add-repository "deb [arch=amd64] download.docker.com/linux/ubuntu bionic stable"

# Install Docker CE
sudo apt update
sudo apt install docker-ce

# Add your user to the docker group to avoid typing sudo for every docker command:
sudo usermod -aG docker ${USER}
su - ${USER}
id -nG

# Install DockerCompose
sudo curl -L "github.com/docker/compose/releases/downloa…$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# Make the binary executable
sudo chmod +x /usr/local/bin/docker-compose

# Note: If the command docker-compose fails after installation, check your path. 
# You can also create a symbolic link to /usr/bin or any other directory in your path.
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# Optionally, install command completion for the bash and zsh shell.
sudo curl -L raw.githubusercontent.com/docker/compose/1… -o /etc/bash_completion.d/docker-compose

# Test the installation.
docker-compose --version

Install Kitematic, a Docker GUI

So you got Docker installed but unfortunately, Docker Desktop is only available for Windows and Mac. But for Linux, we have Kitematic, an official cross-platform Docker GUI. Download here

Add some fonts

Get the beautiful Operator Mono Book Lig fonts here

Install your favourite IDE and languages

umake makes installing dev tools in just one command. Run umake ide --help to see all IDE you can install or umake --list to see what tools are available

Install Visual Studio Code

umake ide visual-studio-code

Install Netbeans

umake ide netbeans

Install PHP Storm

umake ide phpstorm

Install Sublime

umake ide sublime-text

Install Pycharm

umake ide pycharm 
# umake ide pycharm-educational
# umake ide  pycharm-professional

Install Webstorm

umake ide webstorm

Install GraphQL Playground

You can test your GraphQL queries right in your browser provided you added the playground dependency to your app. But sometimes, it fails to load the playground when offline so instaling a local playground makes the dev experience smooth. Download it here

Install BeeKeeper Studio

# Install our GPG key
wget --quiet -O - deb.beekeeperstudio.io/beekeeper.key | sudo apt-key add -

# add our repo to your apt lists directory
echo "deb deb.beekeeperstudio.io stable main" | sudo tee /etc/apt/sources.list.d/beekeeper-studio-app.list

# Update apt and install
apt update
apt install beekeeper-studio

Languages and Frameworks

A developer is nothing without a programming language or a framework. It is the main tool we used to build great ideas into solutions.

Install Node JS

curl -o- raw.githubusercontent.com/nvm-sh/nvm/v0.35… | bash
source ~/.bashrc

# list all available versions
 nvm list-remote 
# or 
nvm ls-remote

# nvm install <version> # latest: 15.8.0
 nvm install lts/fermium

#check your node and npm version 
npm -v
node -v

# alternatives to npm
# 1. PNPM
npm i -g pnpm
pnpm -v

#2. Yarn
npm install -g yarn
yarn -v

Install Rust

umake rust rust-lang

Install Go

umake go go-lang

Install Kotlin

umake kotlin kotlin-lang

Install Python

Python 3 and Python 2 should come pre-installed with Elementary OS. But to get the latest version, run these commands.

apt update
apt upgrade
python3 -V

Installl PHP and Apache 2

apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
apt update

# apt install <phpversion> libapache2-mod-<phpversion>
# available versions:  php7.0, php7.1, php7.2, php7.3, php7.4, php8.0
apt install php8.0 libapache2-mod-php8.0

# install these php extensions 
# apt install <phpversion>-ext
apt install php8.0-gd php8.0-xml php8.0-soap php8.0-mbstring php8.0-mysql php8.0-pgsql 

# you can install multiple versions per your needs 
# set the default version using sudo update-alternatives --set php /usr/bin/<phpversion>
sudo update-alternatives --set php /usr/bin/php8.0

# disable php version module for apache2 using `sudo a2dismod <phpversion>`
sudo a2dismod php5.6

# enable php version module for apache2 using `sudo a2enmod <phpversion>`
sudo a2enmod php8.0

# restart apache server
sudo systemctl restart apache2

Composer

php -r "copy('getcomposer.org/installer', 'composer-setup.php');" 

php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

# install globally 
sudo mv composer.phar /usr/local/bin/composer

# add composesr to env PATH
sudo gedit  ~/.bashrc

# place this at the last line of the ~/.bashrc file
export PATH="$PATH:$HOME/.config/composer/vendor/bin:/usr/local/bin/composer"

# update you env PATH
source ~/.bashrc

# Install PHP Code Sniffer for linting php
composer global require "squizlabs/php_codesniffer=*"

#test to see if composer is installed globally
composer

MySQL

Follow the tutorial on How To Install MySQL on Ubuntu 20.04 for a detailed explanation of the commands below

 apt update
 apt install mysql-server
 sudo mysql_secure_installation
 sudo mysql
 mysql -u parables -p
 systemctl status mysql.service
 sudo mysqladmin -p -u parables version

Laravel

The commands below were sourced from the official documentation. Replace the example-app with the name of your project

  1. Installation via Composer You must first install composer to use this method. See Install Composer above.

    composer create-project laravel/laravel example-app
    cd example-app
    composer update
    php artisan serve
    
  2. Installation via the Laravel Installer You must first install composer to use this method. See Install Composer above.

    composer global require laravel/installer
    laravel new example-app
    cd example-app
    composer update
    php artisan serve
    
  3. Installation via Laravel Sail First, you must install Docker if you haven't done so yet. See Install Docker above.
    curl -s laravel.build/example-app | bash
    cd example-app
    ./vendor/bin/sail up
    

Android Apps

# install Android Studio
umake android android-studio

# launch the android studio and 
# complete the wizard to install the Android SDK(recommended)

# or run use `umake` to install the Android SDK
umake android android-platform-tools android-sdk android-ndk

Flutter

First, install Android Studio [see above] and complete the wizard to download and install the Android SDK

# install Android Studio
umake ide android-studio

# get the Flutter and Dart SDK
umake dart dart-sdk flutter-sdk
flutter doctor --android-licenses

# config your paths if you used `umake` to install android studio and the Android SDK 
flutter config --android-studio-dir="$HOME/.local/share/umake/android/android-studio/"
flutter config --android-sdk="$HOME/Android/Sdk"

# install VS Code
umake ide visual-studio-code

# Check your Flutter installation
flutter doctor run

Install Multimedia Codecs and Enable DVD Playback

For the sake of watching tutorials :-)

apt install ubuntu-restricted-extras
apt install libavcodec-extra
apt install libdvd-pkg

Install LibreOffice, an alternative to Microsoft Office

sudo apt install libreoffice libreoffice-gtk3 libreoffice-style-elementary