Skip to content

Instantly share code, notes, and snippets.

@riipandi
Last active March 29, 2019 04:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save riipandi/ef1e8d8f282fab84c394df8904d5ac56 to your computer and use it in GitHub Desktop.
Save riipandi/ef1e8d8f282fab84c394df8904d5ac56 to your computer and use it in GitHub Desktop.
if ! grep -q 'sda5' /etc/fstab ; then echo '/dev/sda5 /media/Storage ntfs-3g default 0 0' >> /etc/fstab ; fi
mkdir -p /media/Storage ; mount -a
# Basic system setup
#---------------------------------------------------------------------------------------
perl -pi -e 's#(.*sudo.*ALL=)(.*)#${1}(ALL) NOPASSWD:ALL#' /etc/sudoers
cat > /etc/apt/sources.list <<EOF
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-proposed main restricted universe multiverse
EOF
apt update ; apt -y full-upgrade ; apt -y install curl apt-transport-https software-properties-common
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' > /etc/apt/sources.list.d/google-chrome.list
wget -qO- https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
echo 'deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main' > /etc/apt/sources.list.d/vscode.list
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
echo 'deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian bionic contrib' > /etc/apt/sources.list.d/vbox.list
wget -qO- https://www.virtualbox.org/download/oracle_vbox_2016.asc | apt-key add -
wget -qO- https://www.virtualbox.org/download/oracle_vbox.asc | apt-key add -
apt -y purge gedit* firefox* gnome-terminal* gnome-font-viewer* gnome-power-manager* eog* seahorse*
apt -y autoremove ; sudo snap remove gnome-logs gnome-characters gnome-system-monitor
apt -y install gnome-system-monitor tilix telegram-desktop google-chrome-stable code nomacs totem virtualbox-6.0 pgadmin4
sudo snap install spotify poddr postman gitkraken discord ; sudo snap install microk8s --classic
# Amazon Correto (JDK)
#---------------------------------------------------------------------------------------
apt install java-common
wget -c https://d3pxv6yz143wms.cloudfront.net/11.0.2.9.3/java-11-amazon-corretto-jdk_11.0.2.9-3_amd64.deb -O /tmp/corretto-jdk.deb
dpkg -i /tmp/corretto-jdk.deb ; apt install -f ; java -version ; javac -version
# Development packages
#---------------------------------------------------------------------------------------
cat > /etc/apt/sources.list.d/extras.list <<EOF
deb [arch=amd64] http://mirror.biznetgio.com/mariadb/repo/10.3/ubuntu bionic main
deb https://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main
deb https://deb.nodesource.com/node_10.x bionic main
deb https://dl.yarnpkg.com/debian/ stable main
EOF
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
curl -sS https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
apt update ; apt -y full-upgrade
debconf-set-selections <<< "mysql-server mysql-server/root_password password secret"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password secret"
apt -y install xsel figlet pwgen lsof whois dirmngr gnupg gcc make cmake build-essential \
debconf-utils perl binutils dnsutils nscd net-tools ftp git zip unzip bsdtar pv rsync jq \
screenfetch screen ca-certificates htop nmap nikto xmlstarlet optipng jpegoptim s3cmd \
sshpass sqlite3 virtualenv {python,python3}-{click,dev,pip,setuptools,gunicorn,virtualenv} \
libpython2.7 {libpython,libpython2.7,python2.7}-dev python-{dev,configparser,pip-whl} \
python-{iniparse,m2crypto} python3-{iniparse,venv} gunicorn gunicorn3 supervisor sysfsutils \
redis-{server,tools} nodejs yarn postgresql-{11,client-11} mariadb-{client,server} openssl \
network-manager libnss3-tools {libpng,libssl,libffi,libexpat1}-dev libimage-exiftool-perl \
libarchive-tools haveged gamin nginx apache2-utils composer php-amqp php-amqplib php-bcmath \
php-cgi php-cli php-common php-curl php-fpm php-gd php-gmp php-imap php-intl php-json \
php-mbstring php-mongodb php-mysql php-pear php-pgsql php-readline php-soap php-sqlite3 \
php-xdebug php-xml php-xmlrpc php-zip gettext gamin mcrypt imagemagick aspell graphviz \
dnsmasq inotify-tools
# Desktop Packages
#---------------------------------------------------------------------------------------
echo 'deb http://dl.winehq.org/wine-builds/ubuntu/ bionic main' > /etc/apt/sources.list.d/wine.list
echo 'deb http://deb.playonlinux.com/ bionic main' > /etc/apt/sources.list.d/playonlinux.list
curl -sS https://dl.winehq.org/wine-builds/winehq.key | apt-key add -
curl -sS http://deb.playonlinux.com/public.gpg | apt-key add -
add-apt-repository -y ppa:libreoffice/libreoffice-6-1
apt -y install fonts-firacode xterm winehq-stable playonlinux libreoffice nautilus-admin
# Config: Redis
#---------------------------------------------------------------------------------------
sed -i "s/supervised no/supervised systemd/" /etc/redis/redis.conf
sed -i "s/# maxmemory-policy noeviction/maxmemory-policy allkeys-lru/" /etc/redis/redis.conf
sed -i "s/# maxmemory <bytes>/maxmemory 128mb/" /etc/redis/redis.conf
sed -i "s|\("^bind" * *\).*|\1127.0.0.1|" /etc/redis/redis.conf
systemctl restart redis-server
# Config: PostgreSQL
#---------------------------------------------------------------------------------------
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'secret'"
mysql -uroot -psecret -e "update mysql.user SET plugin='' where User='root';"
systemctl restart mysql postgresql
# Config : Python
#---------------------------------------------------------------------------------------
curl -L# https://git.io/fjTKE -o /usr/bin/crudini ; chmod +x /usr/bin/crudini
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 >/dev/null 2>&1
update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2 >/dev/null 2>&1
update-alternatives --set python /usr/bin/python3.6 >/dev/null 2>&1
# Disable IPv6
#---------------------------------------------------------------------------------------
sed -i "s/#precedence ::ffff:0:0\/96 100/precedence ::ffff:0:0\/96 100/" /etc/gai.conf
crudini --set /etc/sysctl.conf '' 'net.ipv6.conf.all.disable_ipv6' '1'
crudini --set /etc/sysctl.conf '' 'net.ipv6.conf.default.disable_ipv6' '1'
crudini --set /etc/sysctl.conf '' 'net.ipv6.conf.lo.disable_ipv6' '1'
echo -e 'Acquire::ForceIPv4 "true";' > /etc/apt/apt.conf.d/99force-ipv4
sysctl -p ; cat /proc/sys/net/ipv6/conf/all/disable_ipv6 # should be 1
# Config: Web Server
#---------------------------------------------------------------------------------------
sed -i "s|\("^worker_processes" * *\).*|\1$(nproc --all);|" /etc/nginx/nginx.conf
sed -i "s|\("^worker_connections" * *\).*|\1$(ulimit -n);|" /etc/nginx/nginx.conf
phpenmod curl imagick fileinfo ; systemctl restart php7.2-fpm
systemctl enable --now haveged ; systemctl restart nginx
# Config: environment
#---------------------------------------------------------------------------------------
if ! grep -q 'composer' $HOME/.bashrc ; then
echo -e '\nexport PATH=$PATH:$HOME/.config/composer/vendor/bin' >> $HOME/.bashrc
echo -e 'export PATH=$PATH:$HOME/.yarn/bin' >> $HOME/.bashrc
fi
# Config: SSH Key
#---------------------------------------------------------------------------------------
mkdir -p $HOME/.ssh ; touch $HOME/.ssh/{id_rsa,id_rsa.pub,authorized_keys}
chmod 0700 $HOME/.ssh ; chmod 0600 $HOME/.ssh/{id_rsa,id_rsa.pub,authorized_keys}
# Config: Composer packages
#---------------------------------------------------------------------------------------
composer global require hirak/prestissimo friendsofphp/php-cs-fixer squizlabs/php_codesniffer
composer global require laravel/installer wp-cli/wp-cli laravel-zero/installer laravel/envoy
# Config: NPM Packages
#---------------------------------------------------------------------------------------
sudo npm --logevel=error i -g @fabiospampinato/bump git-upload vsce eslint parcel-bundler serve
sudo npm --logevel=error i -g @vue/cli create-react-app @gridsome/cli gatsby-cli expo-cli
sudo npm --logevel=error i -g @aws-amplify/cli firebase-tools
# Laravel Valet
#---------------------------------------------------------------------------------------
composer global require cpriego/valet-linux ; valet install
# Control microk8s
#---------------------------------------------------------------------------------------
microk8s.stop ; microk8s.start ; microk8s.status
sudo snap alias microk8s.kubectl kubectl
kubectl config view --raw > $HOME/.kube-config
kubectl get nodes
kubectl get services
microk8s.kubectl cluster-info
microk8s.enable dashboard dns
microk8s.kubectl get po,svc --namespace kube-system
microk8s.stop ; snap disable microk8s
# Config: Desktop
#---------------------------------------------------------------------------------------
gsettings set org.gnome.shell.keybindings toggle-application-view "['<Super>r']"
gsettings set org.gnome.settings-daemon.peripherals.keyboard numlock-state on
gsettings set org.gnome.desktop.background show-desktop-icons false
gsettings set org.gnome.desktop.privacy remember-app-usage false
gsettings set org.gnome.software download-updates false
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name "File Manager"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command "nautilus -w"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding "<Super>e"
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
# Valentina Studio
#---------------------------------------------------------------------------------------
wget -c https://valentina-db.com/en/all-downloads/vstudio/current/vstudio_x64_lin-deb?format=raw -O vstudio_x64_lin.deb
dpkg -i vstudio_x64_lin.deb ; apt install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment