<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>System Administration on Aamnah - Frontend Web Developer</title>
    <link>https://aamnah.com/notes/sysadmin/</link>
    <description>Recent content in System Administration on Aamnah - Frontend Web Developer</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 27 Aug 2026 13:02:40 +0300</lastBuildDate>
    <atom:link href="https://aamnah.com/notes/sysadmin/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Connect from macOS to Ubuntu remote desktop using xfreerdp and GNOME Remote Desktop</title>
      <link>https://aamnah.com/notes/sysadmin/connect-from-macos-to-ubuntu-remote-desktop-rdp-xfreerdp/</link>
      <pubDate>Thu, 27 Aug 2026 13:02:40 +0300</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/connect-from-macos-to-ubuntu-remote-desktop-rdp-xfreerdp/</guid>
      <description>&lt;p&gt;tested on:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;macOS version: Tahoe 26.3.1&lt;/li&gt;&#xA;&lt;li&gt;Ubuntu version: 24.04 LTS&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;what we are going to do:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;configure gnome-remote-desktop as a server on Ubuntu&lt;/li&gt;&#xA;&lt;li&gt;install xfreerdp as a client on macOS&lt;/li&gt;&#xA;&lt;li&gt;save login details to macOS keychain&lt;/li&gt;&#xA;&lt;li&gt;create a shell function to connect to the server&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;notes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;only one GUI session can be open at a time. If you are connecting via RDP to the user and the user is already logged into a graphical interface locally on that machine, a new connection will be denied. You will have to close the existing GUI session and then connect again. &lt;a href=&#34;https://askubuntu.com/a/1503542&#34;&gt;read more&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ubuntu-setup-server&#34;&gt;Ubuntu setup (server)&lt;/h2&gt;&#xA;&lt;p&gt;On Ubuntu, i.e. the machine you want to remotely access, you need to enable remote desktop sharing and create credentials&lt;/p&gt;</description>
    </item>
    <item>
      <title>Connect to Ubuntu from macOS securely over Tailscale</title>
      <link>https://aamnah.com/notes/sysadmin/connect-to-ubuntu-from-macos-securely-over-tailscale/</link>
      <pubDate>Tue, 14 Apr 2026 21:24:10 +0300</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/connect-to-ubuntu-from-macos-securely-over-tailscale/</guid>
      <description>&lt;p&gt;Assumption: Both machines have tailscale already setup and logged in.&lt;/p&gt;&#xA;&lt;p&gt;On Ubuntu, install SSH if it is not already&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl status ssh          &lt;span class=&#34;c1&#34;&gt;# is sshd                                                    &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install openssh-server    &lt;span class=&#34;c1&#34;&gt;# install if missing                         &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; --now ssh                                                                 &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo ss -tlnp &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep :22           &lt;span class=&#34;c1&#34;&gt;# confirm it&amp;#39;s listening    &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then from the client:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;tailscale status                   &lt;span class=&#34;c1&#34;&gt;# confirm peer is online, get its tailscale IP/MagicDNS name &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;ssh user@&amp;lt;machine-name&amp;gt;            &lt;span class=&#34;c1&#34;&gt;# or use the 100.x.y.z IP  &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;ufw&#34;&gt;UFW&lt;/h3&gt;&#xA;&lt;p&gt;Tailscale creates a new interface called &lt;code&gt;tailscale0&lt;/code&gt;. It is better to allow incoming only on the &lt;code&gt;tailscale0&lt;/code&gt; interface instead of using a custom SSH port and opening it to the world. Any tailscale connection is encrypted by default&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stream Audio over WiFi from Linux Ubuntu PC to Android Phone</title>
      <link>https://aamnah.com/notes/sysadmin/stream-audio-over-wifi-from-linux-ubuntu-pc-to-android-phone/</link>
      <pubDate>Wed, 20 Mar 2024 13:51:55 +0200</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/stream-audio-over-wifi-from-linux-ubuntu-pc-to-android-phone/</guid>
      <description>&lt;p&gt;Why?&#xA;Because i have more Android phones lying around than speakers.. I am using an Android phone as a wireless speaker for my PC&lt;/p&gt;&#xA;&lt;p&gt;SoundWire by GeorgieLabs is an audio streaming system that lets you stream audio between devices be it Windows/macOS/Linux PCs or Android phones. You need to install the &lt;em&gt;server&lt;/em&gt; on your PC from which you want to stream the audio, and the &lt;em&gt;client&lt;/em&gt; in my case was the android app.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting UGREEN Bluetooth 5.4 adapter on Ubuntu Linux</title>
      <link>https://aamnah.com/notes/sysadmin/troubleshoot-ugreen-bluetooth-5-4-ubuntu-linux/</link>
      <pubDate>Tue, 27 Feb 2024 19:28:56 +0200</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/troubleshoot-ugreen-bluetooth-5-4-ubuntu-linux/</guid>
      <description>&lt;p&gt;NOTE: The dongle could not be used because of missing drivers and I was not able to install drivers for Linux.&lt;/p&gt;&#xA;&lt;p&gt;Model No.: &lt;code&gt;CM748&lt;/code&gt; without antenna / &lt;code&gt;CM749&lt;/code&gt; with antenna&lt;br&gt;&#xA;Chipset: &lt;code&gt;Barrot BR8554&lt;/code&gt;&lt;br&gt;&#xA;FCC ID: &lt;code&gt;2AQI5-CM748&lt;/code&gt;&lt;br&gt;&#xA;Manufacturer ID: &lt;code&gt;33fa:0010&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Status: no official drivers for Linux or macOS are available&lt;/p&gt;&#xA;&lt;p&gt;Troubleshooting:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;See if it is listed in connected USB devices &lt;code&gt;lsusb&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;See if it is recognized as a Bluetooth device &lt;code&gt;rfkill&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;See if there are kernel related errors &lt;code&gt;dmesg&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;See if it is connected&lt;/p&gt;</description>
    </item>
    <item>
      <title>nmap</title>
      <link>https://aamnah.com/notes/sysadmin/nmap/</link>
      <pubDate>Fri, 09 Feb 2024 16:35:02 +0200</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/nmap/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;find hacking targets&lt;/li&gt;&#xA;&lt;li&gt;vulnerabilities that you can exploit&lt;/li&gt;&#xA;&lt;li&gt;see what ports are open (default ports can tell you what services are running on these ports)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Scan entire network (ping an entire network to see what devices are online)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;nmap -sP 10.7.1.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;nmap -v -A www.badstore.net&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo nmap -A 10.77.1.0/24&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;-v&lt;/code&gt;: verbose output&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-A&lt;/code&gt;: Enable OS detection, version detection (for protocols), script scanning, and traceroute&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-O&lt;/code&gt;: Enable OS detection&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo nmap -sT -p 80,443 10.7.1.0/24&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;sT&lt;/code&gt; TCP connect, i.e. full open scan&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This scanning of entire networks might be blocked by firewalls (IDS: Intrusion Detection System) and may even be illegal. so you use &lt;code&gt;-sS&lt;/code&gt; instead, the &lt;code&gt;S&lt;/code&gt; is for &lt;em&gt;stealthy&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Watchman on Ubuntu Linux</title>
      <link>https://aamnah.com/notes/sysadmin/install-watchman-linux-ubuntu/</link>
      <pubDate>Wed, 20 Jul 2022 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-watchman-linux-ubuntu/</guid>
      <description>&lt;p&gt;Install with Homebrew&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;/bin/bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;brew install watchman&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;watchman --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install from official binary&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;VERSION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;v2022.07.18.00&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Check what the latest version is from: https://github.com/facebook/watchman/releases/latest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wget https://github.com/facebook/watchman/archive/refs/tags/&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;VERSION&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;unzip watchman-&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;VERSION&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;-linux.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; watchman-&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;VERSION&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;-linux&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir -p /usr/local/&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;bin,lib&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; /usr/local/var/run/watchman&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo cp bin/* /usr/local/bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo cp lib/* /usr/local/lib&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo chmod &lt;span class=&#34;m&#34;&gt;755&lt;/span&gt; /usr/local/bin/watchman&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo chmod &lt;span class=&#34;m&#34;&gt;2777&lt;/span&gt; /usr/local/var/run/watchman&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;watchman --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://facebook.github.io/watchman/docs/install.html&#34;&gt;Docs: Installation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Add Tor project repo to Ubuntu</title>
      <link>https://aamnah.com/notes/sysadmin/install-tor-project-ubuntu/</link>
      <pubDate>Mon, 18 Jul 2022 23:39:34 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-tor-project-ubuntu/</guid>
      <description>&lt;p&gt;NOTE: There is a &lt;a href=&#34;https://github.com/aamnah/bash-scripts/blob/master/install/tor_project_ubuntu.sh&#34;&gt;bash script&lt;/a&gt; that takes care of everything in this article and more.&lt;/p&gt;&#xA;&lt;p&gt;While most of you are familiar with Tor Browser, few are aware that it is a bundle that consists of two parts: the &lt;em&gt;browser&lt;/em&gt; and the &lt;em&gt;router&lt;/em&gt;. You can use the &lt;em&gt;router&lt;/em&gt; to use commands like &lt;code&gt;tor&lt;/code&gt;, &lt;code&gt;torify&lt;/code&gt; and &lt;code&gt;torsocks&lt;/code&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Create a &lt;code&gt;tor.list&lt;/code&gt; file inside &lt;code&gt;/etc/apt/sources.list.d/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo touch /etc/apt/sources.list.d/tor.list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Add official project source repos to the file&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# /etc/apt/sources.list.d/tor.list&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;deb     &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;arch&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; https://deb.torproject.org/torproject.org &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;lsb_release -c &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -f2&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; main&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;deb-src &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;arch&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; https://deb.torproject.org/torproject.org &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;lsb_release -c &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -f2&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; main&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;$(dpkg --print-architecture)&lt;/code&gt; will give you system architecture, e.g. &lt;em&gt;amd64&lt;/em&gt; (keep in mind that Ubuntu Focal dropped support for 32-bit)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;$(lsb_release -c | cut -f2)&lt;/code&gt; will give you distribution codename, e.g. &lt;em&gt;focal&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;Update sources and install the &lt;code&gt;tor&lt;/code&gt; package&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;apt install apt-transport-https&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;apt install tor&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;&#xA;&lt;li&gt;Update config&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;In &lt;code&gt;/etc/tor/torrc&lt;/code&gt;, uncomment the lines &lt;code&gt;#ControlPort 9051&lt;/code&gt; and &lt;code&gt;#CookieAuthentication 1&lt;/code&gt; and change the &lt;code&gt;CookieAuthentication&lt;/code&gt; value from &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;0&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install latest SML/NJ from source on Ubuntu (20.04)</title>
      <link>https://aamnah.com/notes/sysadmin/install-smlnj-source-ubuntu/</link>
      <pubDate>Mon, 18 Jul 2022 12:58:45 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-smlnj-source-ubuntu/</guid>
      <description>&lt;p&gt;Standard ML of New Jersey isn&amp;rsquo;t used much in modern day development but i needed to install it as part of my &lt;a href=&#34;https://www.coursera.org/learn/programming-languages/&#34;&gt;Programming Languages&lt;/a&gt; course.&lt;/p&gt;&#xA;&lt;p&gt;The simplest way to install is &lt;code&gt;sudo apt -y install smlnj&lt;/code&gt;, but it&amp;rsquo;ll install a slightly older version.&lt;/p&gt;&#xA;&lt;p&gt;Here are all the steps on installing SML/NJ from source. You can save this as a script and run it with &lt;code&gt;sudo bash foo.sh&lt;/code&gt;. &lt;code&gt;sudo&lt;/code&gt; is needed if you want to create directories and download files under &lt;code&gt;/usr/local&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add Tor browser on Ubuntu</title>
      <link>https://aamnah.com/notes/sysadmin/install-tor-browser-ubuntu/</link>
      <pubDate>Mon, 18 Jul 2022 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-tor-browser-ubuntu/</guid>
      <description>&lt;p&gt;There is a &lt;a href=&#34;https://github.com/aamnah/bash-scripts/blob/master/install/tor_browser_ubuntu.sh&#34;&gt;bash script&lt;/a&gt; that takes care of everything in this article and more.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Download the latest Tor browser package from the &lt;a href=&#34;https://www.torproject.org/download/&#34;&gt;Tor downloads page&lt;/a&gt;, it&amp;rsquo;s signature and verify the package using signature and GPG key&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Download Tor browser package&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wget https://www.torproject.org/dist/torbrowser/11.5/tor-browser-linux64-11.5_en-US.tar.xz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Download signature&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wget https://www.torproject.org/dist/torbrowser/11.5/tor-browser-linux64-11.5_en-US.tar.xz.asc &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Import GPG key and Verify package with signature &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org &lt;span class=&#34;c1&#34;&gt;# import key&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;gpg --output ./tor-browser.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290 &lt;span class=&#34;c1&#34;&gt;# save key to file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;gpgv --keyring ./tor-browser.keyring tor-browser-linux64-11.5_en-US.tar.xz.asc  tor-browser-linux64-11.5_en-US.tar.xz &lt;span class=&#34;c1&#34;&gt;# verify the signature of package using key&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Extract and move to &lt;code&gt;/opt&lt;/code&gt; for a system-wide install&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Extract&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;tar -xf tor-browser-linux64-11.5_en-US.tar.xz &lt;span class=&#34;c1&#34;&gt;# gives a folder like: tor-browser_en-US&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mv tor-browser_en-US /opt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;Go to the install location and run the &lt;code&gt;start-tor-browser.desktop&lt;/code&gt; and use &lt;code&gt;--register-app&lt;/code&gt; so that it adds/updates the desktop shortcut&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo chmod +x /opt/tor-browser_en-US/start-tor-browser.desktop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /opt/tor-browser_en-US&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;./start-tor-browser.desktop --register-app&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tb-manual.torproject.org/installation/&#34;&gt;Installation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.howtogeek.com/423866/how-to-install-and-use-the-tor-browser-on-linux/&#34;&gt;How to Install and Use the Tor Browser on Linux&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://support.torproject.org/tbb/how-to-verify-signature/&#34;&gt;How can I verify Tor Browser&amp;rsquo;s signature?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/aamnah/bash-scripts/blob/master/install/tor_browser_ubuntu.sh&#34;&gt;Bash script to install Tor Browser on Ubuntu&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Install Standard ML of New Jersey (SML/NJ) on M1 Apple Silicon Macs (macOS Monterey)</title>
      <link>https://aamnah.com/notes/sysadmin/install-smlnj-macos-m1/</link>
      <pubDate>Fri, 15 Jul 2022 15:12:12 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-smlnj-macos-m1/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;brew install smlnj&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export PATH=/usr/local/smlnj/bin:$PATH&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.zprofile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Even though the path for Homebrew on Apple Silicon macs has changed to &lt;code&gt;/opt/homebrew&lt;/code&gt;, SML/NJ is installed under &lt;code&gt;/usr/local/&lt;/code&gt; instead. As a result, the recommended &lt;code&gt;export PATH=$(brew --prefix)/smlnj/bin:&amp;quot;$PATH&amp;quot;&lt;/code&gt; on the cask documentation page does not work because &lt;code&gt;brew --prefix&lt;/code&gt; will evaluate to &lt;code&gt;/opt/homebrew&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;You also don&amp;rsquo;t need to pass the &lt;code&gt;--cask&lt;/code&gt; it seems, no longer needed.&lt;/p&gt;&#xA;&lt;p&gt;Test the install by running &lt;code&gt;sml&lt;/code&gt; and you should get a REPL&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install multiple Java versions and switch between them</title>
      <link>https://aamnah.com/notes/sysadmin/install-java-switch-multiple-versions/</link>
      <pubDate>Thu, 17 Mar 2022 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-java-switch-multiple-versions/</guid>
      <description>&lt;h1 id=&#34;macos&#34;&gt;macOS&lt;/h1&gt;&#xA;&lt;p&gt;Download the tarball from here: &lt;a href=&#34;https://jdk.java.net/16/&#34;&gt;https://jdk.java.net/16/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mv openjdk-16.0.1_osx-x64_bin.tar.gz /Library/Java/JavaVirtualMachines/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /Library/Java/JavaVirtualMachines/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo tar -xzf openjdk-16.0.1_osx-x64_bin.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm openjdk-16.0.1_osx-x64_bin.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;\nexport JAVA_HOME=`/usr/libexec/java_home -v16`&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.zprofile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.zprofile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;java -version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;/usr/libexec/java_home -v16&lt;/code&gt; gives you the version specific path. If you wanted to use a different JDK version, say 17, then you&amp;rsquo;d update &lt;code&gt;JAVA_HOME&lt;/code&gt; and set it to &lt;code&gt;/usr/libexec/java_home -v17&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;ubuntu-linux&#34;&gt;Ubuntu Linux&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# java -version&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;openjdk version &lt;span class=&#34;s2&#34;&gt;&amp;#34;1.8.0_312&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;OpenJDK Runtime Environment &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;OpenJDK 64-Bit Server VM &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;build 25.312-b07, mixed mode&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y openjdk-17-jdk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;update-java-alternatives --list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64&#xA;java-1.17.0-openjdk-amd64      1711       /usr/lib/jvm/java-1.17.0-openjdk-amd64&#xA;java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# sudo update-java-alternatives --set /path/to/java/version&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-java-alternatives --set /usr/lib/jvm/java-1.17.0-openjdk-amd64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check version with &lt;code&gt;java -version&lt;/code&gt; and you&amp;rsquo;ll see the new one&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install multiple Java versions and switch between them on macOS and Ubuntu</title>
      <link>https://aamnah.com/notes/sysadmin/install-java-jdk-switch-multiple-versions-macos-ubuntu/</link>
      <pubDate>Thu, 17 Mar 2022 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-java-jdk-switch-multiple-versions-macos-ubuntu/</guid>
      <description>&lt;h1 id=&#34;macos&#34;&gt;macOS&lt;/h1&gt;&#xA;&lt;p&gt;Simplest would be to installed with Homebrew:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# /bin/bash -c &amp;#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;📋&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;brew install openjdk &lt;span class=&#34;c1&#34;&gt;# installs openjdk@18&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Alternatively, you can download the tarball from here: &lt;a href=&#34;https://jdk.java.net/16/&#34;&gt;https://jdk.java.net/16/&lt;/a&gt; and extract it to &lt;code&gt;/Library/Java/JavaVirtualMachines/&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mv openjdk-16.0.1_osx-x64_bin.tar.gz /Library/Java/JavaVirtualMachines/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /Library/Java/JavaVirtualMachines/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo tar -xzf openjdk-16.0.1_osx-x64_bin.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm openjdk-16.0.1_osx-x64_bin.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Update $PATH&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;\nexport JAVA_HOME=`/usr/libexec/java_home -v16`&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.zprofile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.zprofile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Confirm install&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;java -version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;openjdk version &amp;#34;16.0.1&amp;#34; 2021-04-20&#xA;OpenJDK Runtime Environment (build 16.0.1+9-24)&#xA;OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;/usr/libexec/java_home -v16&lt;/code&gt; gives you the version specific path. If you wanted to use a different JDK version, say 17, then you&amp;rsquo;d update &lt;code&gt;JAVA_HOME&lt;/code&gt; and set it to &lt;code&gt;/usr/libexec/java_home -v17&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disable Windows Defender permanently with Registry Editor</title>
      <link>https://aamnah.com/notes/sysadmin/disable-windows-defender-permanently-regeditor/</link>
      <pubDate>Wed, 23 Feb 2022 13:57:57 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/disable-windows-defender-permanently-regeditor/</guid>
      <description>&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt;&#xA;Open &lt;code&gt;regedit&lt;/code&gt; as Administrator and add a bunch of hexadecmial values here: &lt;code&gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender&lt;/code&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Open &lt;code&gt;regedit&lt;/code&gt; (Registry Editor) from the start menu. I did it as an Administrator just to make sure it works&lt;/li&gt;&#xA;&lt;li&gt;Go here: &lt;code&gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Right click on &lt;em&gt;Windows Defender&lt;/em&gt; and add the following as &lt;strong&gt;DWORD (32-bit) Value&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Value Name&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Value Data&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Base&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;DisableBehaviorMonitoring&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hexadecimal&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;DisableOnAccessProtection&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hexadecimal&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;DisableScanOnRealtimeEnable&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hexadecimal&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;You may have to add a value and then double-click it again to set it&amp;rsquo;s data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automating the updating of GeoLocation database (GeoIP2 by MaxMind)</title>
      <link>https://aamnah.com/notes/sysadmin/automate-geoip-location-database-mmdb-geoipupdate-maxmind-docker-compose-cron-direct-download/</link>
      <pubDate>Wed, 04 Aug 2021 10:48:36 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/automate-geoip-location-database-mmdb-geoipupdate-maxmind-docker-compose-cron-direct-download/</guid>
      <description>&lt;p&gt;There are multiple ways of doing this.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Direct download script (with cron)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;GEOIPUPDATE_LICENSE_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&amp;amp;license_key=${GEOIPUPDATE_LICENSE_KEY}&amp;amp;suffix=tar.gz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;curl &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&amp;amp;license_key=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;GEOIPUPDATE_LICENSE_KEY&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;amp;suffix=tar.gz&amp;#34;&lt;/span&gt; -o GeoLite2-Country.tar.gz &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; tar -xzvf GeoLite2-Country.tar.gz &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; mkdir -p /var/opt/maxmind/ &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; mv GeoLite2-Country_*/GeoLite2-Country.mmdb /var/opt/maxmind/GeoLite2-Country.mmdb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dev.maxmind.com/geoip/updating-databases&#34;&gt;geoipupdate&lt;/a&gt; tool with cron&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt;# top of crontab&#xA;MAILTO=your@email.com&#xA;&#xA;38 2 * * 0,4 /usr/local/bin/geoipupdate&#xA;# end of crontab&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;As a &lt;a href=&#34;https://github.com/whitfin/docker-geoipupdate&#34;&gt;Docker container&lt;/a&gt; using &lt;code&gt;geoipupdate&lt;/code&gt; tool&lt;/li&gt;&#xA;&lt;li&gt;As part of &lt;code&gt;docker.compose.yml&lt;/code&gt; using official Docker container for &lt;a href=&#34;https://hub.docker.com/r/maxmindinc/geoipupdate&#34;&gt;geoipupdate&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;geoipupdate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;geoip_update&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;maxmindinc/geoipupdate&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GEOIPUPDATE_ACCOUNT_ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;${GEOIPUPDATE_ACCOUNT_ID}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GEOIPUPDATE_LICENSE_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;${GEOIPUPDATE_LICENSE_KEY}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GEOIPUPDATE_EDITION_IDS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;GeoLite2-Country&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;GEOIPUPDATE_FREQUENCY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;96&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# number of hours between geoipupdate runs, 96 is four days, GeoIP2 Country is updated twice weekly on Tuesdays and Fridays&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./data/maxmind:/usr/local/share/GeoIP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This assumes you have a &lt;code&gt;.env&lt;/code&gt; file in the project root that has your account ID and license key. Otherwise you can just hard code these values&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aliases in PowerShell</title>
      <link>https://aamnah.com/notes/sysadmin/powershell-aliases/</link>
      <pubDate>Tue, 06 Apr 2021 17:18:13 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/powershell-aliases/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# code $PROFILE.CurrentUserAllHosts&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;code&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PROFILE&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Aliases for directories&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;Function&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;goToProjects&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-Location&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;G:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Projects&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Set-Alias&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Name&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;proj&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Value&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;goToProjects&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;The profile for the current user is at &lt;code&gt;$PROFILE&lt;/code&gt;, but there are other ones for &lt;a href=&#34;https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.1#the-profile-variable&#34;&gt;various hosts and all users&lt;/a&gt; as well&lt;/li&gt;&#xA;&lt;li&gt;You can set aliases for commands, but you can not set aliases for commands that also take parameters. The workaround is to save the command with parameters as a function and then have an alias for that function instead of the command&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.1&#34;&gt;About Profiles&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/set-alias?view=powershell-7.1&#34;&gt;Set-Alias&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Setting up an M1 MacBook Pro for Frontend Development</title>
      <link>https://aamnah.com/notes/sysadmin/setting-up-macbook-pro-m1-frontend-development-design-code/</link>
      <pubDate>Wed, 24 Feb 2021 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/setting-up-macbook-pro-m1-frontend-development-design-code/</guid>
      <description>&lt;p&gt;Install &lt;a href=&#34;https://itunes.apple.com/us/app/xcode/id497799835?mt=12&amp;amp;ign-mpt=uo%3D2&#34;&gt;Xcode from the App Store&lt;/a&gt; and accept the default options.&#xA;Install Xcode Command Line Developer Tools (don’t need Xcode installed first for that) &lt;code&gt;xcode-select --install&lt;/code&gt;&#xA;Install Homebrew&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mkdir homebrew &amp;amp;&amp;amp; curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;brew install &amp;ndash;cask visual-studio-code opera iterm2&lt;/p&gt;&#xA;&lt;p&gt;Install Rosetta. WhatsApp prompted me and installed automatically, but you can manually install using the following command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;softwareupdate --install-rosetta&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;DESIGN&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Sketch&lt;/li&gt;&#xA;&lt;li&gt;Photoshop&lt;/li&gt;&#xA;&lt;li&gt;Illustrator&lt;/li&gt;&#xA;&lt;li&gt;Figma&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;DEVELOP&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up an Orange Pi&#43; 2 for web development</title>
      <link>https://aamnah.com/notes/sysadmin/orange-pi-web-dev-code-setup/</link>
      <pubDate>Fri, 05 Feb 2021 21:13:48 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/orange-pi-web-dev-code-setup/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;As of September 2020 (version 1.50) &lt;a href=&#34;https://code.visualstudio.com/updates/v1_50#_linux-arm-builds&#34;&gt;VS Code is available for ARMv7 and ARM64&lt;/a&gt;. Orange Pi+ 2 is ARMV7&lt;/li&gt;&#xA;&lt;li&gt;On the latest Armbian (Focal) for OrangePi Plus2, &lt;code&gt;snap&lt;/code&gt; is already installed since it is based on Ubuntu 20.04.&lt;/li&gt;&#xA;&lt;li&gt;You can NOT use &lt;code&gt;snap&lt;/code&gt; to install VS Code, it&amp;rsquo;s available for &lt;code&gt;amd64&lt;/code&gt;, but not &lt;code&gt;armhf&lt;/code&gt; which OrangePi Plus2 is..&lt;/li&gt;&#xA;&lt;li&gt;Node ``&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;vs-code&#34;&gt;VS Code&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://code.visualstudio.com/#alt-downloads&#34;&gt;Download&lt;/a&gt; &lt;code&gt;.deb&lt;/code&gt; file for ARM&lt;/p&gt;&#xA;&lt;p&gt;Install with &lt;code&gt;dpkg&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo dpkg -i ~/Downloads/code_1.53.0-1612367698_armhf.deb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It is very slow though. 2GB RAM on Armbian is obviously way too low to be running VS Code. I installed it just because i could. You&amp;rsquo;ll defintely notic the lag though. Geany is much faster, but Geany is not VS Code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH into Windows from Linux</title>
      <link>https://aamnah.com/notes/sysadmin/ssh-to-windows/</link>
      <pubDate>Fri, 05 Feb 2021 20:46:03 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/ssh-to-windows/</guid>
      <description>&lt;h1 id=&#34;set-up-ssh-on-windows&#34;&gt;Set up SSH on Windows&lt;/h1&gt;&#xA;&lt;p&gt;Open PowerShell as Administrator and run the following command to see if OpenSSH is already installed&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Get-WindowsCapability -Online | ? Name -like &amp;#39;OpenSSH*&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Name  : OpenSSH.Client~~~~0.0.1.0&#xA;State : Installed&#xA;&#xA;Name  : OpenSSH.Server~~~~0.0.1.0&#xA;State : Installed&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In my case both client and server were installed but i still couldn&amp;rsquo;t connect, so i reinstalled it anyway and it worked afterwards..&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# install the server and/or client features:&#xA;Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0&#xA;Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0&#xA;&#xA;# start the ssh server daemon&#xA;Start-Service sshd&#xA;&#xA;# This should return a Status of Running&#xA;Get-Service sshd&#xA;&#xA;# add firewall rule to allow inbound and outbound traffic through port 22&#xA;New-NetFirewallRule -Name sshd -DisplayName &amp;#39;OpenSSH Server (sshd)&amp;#39; -Service sshd -Enabled True -Direction Inbound -Protocol TCP -Action Allow -Profile Domain&#xA;&#xA;# start automatically on Startup&#xA;Set-Service -Name sshd -StartupType &amp;#39;Automatic&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now you can SSH into the system like you normally would into any other system&lt;/p&gt;</description>
    </item>
    <item>
      <title>Playing around with an Orange Pi&#43; 2</title>
      <link>https://aamnah.com/notes/sysadmin/orange-pi/</link>
      <pubDate>Fri, 05 Feb 2021 00:00:02 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/orange-pi/</guid>
      <description>&lt;h2 id=&#34;notes&#34;&gt;NOTES&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The SATA interface is pretty useless without a special SATA split cable that i&amp;rsquo;ll have to order off of AliExpress&lt;/li&gt;&#xA;&lt;li&gt;The SATA interface is also not a &lt;em&gt;real&lt;/em&gt; SATA interface, more like a slow USB-to-SATA interface (SATA 2.0 - via GL830 USB-to-SATA bridge &lt;a href=&#34;http://linux-sunxi.org/Xunlong_Orange_Pi_Plus_2&#34;&gt;ref&lt;/a&gt;) like Banana Pi (which uses A20 SoC).&lt;/li&gt;&#xA;&lt;li&gt;Needs an adaptor with enough juice to be able to power the HDD (specially if they are USB powered). I&amp;rsquo;m using a 5V 3A adaptor.&lt;/li&gt;&#xA;&lt;li&gt;I&amp;rsquo;m using a 3.5&amp;quot; old school HDD (2TB) in a SATA casing and it comes with it&amp;rsquo;s own power adaptor and on/off switch.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;todo&#34;&gt;TODO&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Setup Git so i can write some code. Setup SSH keys for Github and Bitbucket&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Setup NAS and share the files on Armbian over the network so that i can access easily files from other systems&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Setup for running in &lt;em&gt;headless mode&lt;/em&gt; (Enable SSH and remote connections, setup file sharing, automate torrent downloads etc.)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Catalogue the Orange Pi Plus 2 hardware details. (So that i don&amp;rsquo;t have to keep checking and so that i still have these details if/when the board gets forgotten online)&lt;/li&gt;&#xA;&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; set up static IP&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;installing-and-upgrading-armbian&#34;&gt;Installing and Upgrading Armbian&lt;/h3&gt;&#xA;&lt;p&gt;Installation had already been done the last time i set it up. This time i booted straight into the Armbian desktop. I can&amp;rsquo;t remember excatly why i chose Armbian over Debian/Ubuntu. Possibly because a reliable Ubuntu/Debian image for Orange Pi Plus 2 wasn&amp;rsquo;t available at that time, or maybe because Armbian is supposed to have better support for ARM based devices.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Orange Pi NAS</title>
      <link>https://aamnah.com/notes/sysadmin/orange-pi-nas/</link>
      <pubDate>Fri, 05 Feb 2021 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/orange-pi-nas/</guid>
      <description>&lt;p&gt;Connect hard drives over USB&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Set up drives to auto-mount on system boot&lt;/li&gt;&#xA;&lt;li&gt;Share the drives over the WiFi network&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;setting-up-a-nas&#34;&gt;Setting up a NAS&lt;/h3&gt;&#xA;&lt;p&gt;Run the following commands before and after connecting your hard drive to figure out which one you need to mount.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# get device UUIDs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo blkid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# find out partition names&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/partitions&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;setting-up-for-ntfs-and-ext4-drives&#34;&gt;setting up for NTFS and EXT4 drives&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install tools&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install fuse ntfs-3g&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# create mount points&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir /media/aamnah/NAS /media/aamnah/STUFF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# mount drive&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mount -t ext4 /dev/sda1 /media/aamnah/NAS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mount -t ntfs-3g /dev/sdc1 /media/aamnah/STUFF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;edit &lt;code&gt;fstab&lt;/code&gt; to auto-mount drives&lt;/p&gt;</description>
    </item>
    <item>
      <title>Orange Pi Plus 2 - System details</title>
      <link>https://aamnah.com/notes/sysadmin/orange-pi-hardware-system-details/</link>
      <pubDate>Fri, 05 Feb 2021 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/orange-pi-hardware-system-details/</guid>
      <description>&lt;h3 id=&#34;processor--cpu-info&#34;&gt;Processor / CPU info&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/cpuinfo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Processor       : ARMv7 Processor rev 5 (v7l)&#xA;processor       : 0&#xA;BogoMIPS        : 1942.85&#xA;&#xA;processor       : 1&#xA;BogoMIPS        : 1942.85&#xA;&#xA;processor       : 2&#xA;BogoMIPS        : 1942.85&#xA;&#xA;processor       : 3&#xA;BogoMIPS        : 1942.85&#xA;&#xA;Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt&#xA;CPU implementer : 0x41&#xA;CPU architecture: 7&#xA;CPU variant     : 0x0&#xA;CPU part        : 0xc07&#xA;CPU revision    : 5&#xA;&#xA;Hardware        : sun8i&#xA;Revision        : 0000&#xA;Serial          : 94005035c618582a028e&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/meminfo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;MemTotal:        2062812 kB&#xA;MemFree:          650876 kB&#xA;Buffers:          103796 kB&#xA;Cached:           547892 kB&#xA;SwapCached:        42604 kB&#xA;Active:           517744 kB&#xA;Inactive:         651896 kB&#xA;Active(anon):     279676 kB&#xA;Inactive(anon):   353320 kB&#xA;Active(file):     238068 kB&#xA;Inactive(file):   298576 kB&#xA;Unevictable:          32 kB&#xA;Mlocked:              32 kB&#xA;HighTotal:       1318912 kB&#xA;HighFree:         201676 kB&#xA;LowTotal:         743900 kB&#xA;LowFree:          449200 kB&#xA;SwapTotal:        257848 kB&#xA;SwapFree:          41224 kB&#xA;Dirty:                 0 kB&#xA;Writeback:             0 kB&#xA;AnonPages:        475652 kB&#xA;Mapped:            77996 kB&#xA;Shmem:            115044 kB&#xA;Slab:              79480 kB&#xA;SReclaimable:      61952 kB&#xA;SUnreclaim:        17528 kB&#xA;KernelStack:        2760 kB&#xA;PageTables:         8776 kB&#xA;NFS_Unstable:          0 kB&#xA;Bounce:                0 kB&#xA;WritebackTmp:          0 kB&#xA;CommitLimit:     1289252 kB&#xA;Committed_AS:    3174836 kB&#xA;VmallocTotal:     245760 kB&#xA;VmallocUsed:       41056 kB&#xA;VmallocChunk:     196660 kB&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Linux version 3.4.113-sun8i (root@nightly) (gcc version 5.5.0 (Linaro GCC 5.5-2017.10) ) #68 SMP PREEMPT Wed Sep 19 10:23:30 CEST 2018&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;uname &lt;span class=&#34;c1&#34;&gt;# Operating System&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;uname -a &lt;span class=&#34;c1&#34;&gt;# Kernel version and System Architecture&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;uname -m &lt;span class=&#34;c1&#34;&gt;# Machine hardware name, tells whether system is 32-bit or 64-bit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;uname -p &lt;span class=&#34;c1&#34;&gt;# Processor type (usually unknown on modern Unix)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;uname -a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Linux orangepiplus 3.4.113-sun8i #68 SMP PREEMPT Wed Sep 19 10:23:30 CEST 2018 armv7l armv7l armv7l GNU/Linux&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;i686&lt;/code&gt; or &lt;code&gt;i386&lt;/code&gt; is 32-bit&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;x86_64&lt;/code&gt; is 64-bit&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;os&#34;&gt;OS&lt;/h3&gt;&#xA;&lt;p&gt;I&amp;rsquo;m running Armbian&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting started with WebP on Ubuntu</title>
      <link>https://aamnah.com/notes/sysadmin/webp-ubuntu/</link>
      <pubDate>Tue, 24 Nov 2020 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/webp-ubuntu/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install webp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;cwebp -q &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt; sample_image.png -o sample_image.webp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# convert all jpeg files in a folder&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; F in *.jpg&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; cwebp &lt;span class=&#34;nv&#34;&gt;$F&lt;/span&gt; -o &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;basename &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;%.jpg&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;.webp&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Convert all files in a directory&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; file in images/*&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; cwebp &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;%.*&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.webp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;using-the-picture-tag&#34;&gt;using the &lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt; tag&lt;/h3&gt;&#xA;&lt;p&gt;Before:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;flower.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- order of listing matters in source tag. top will be tried first --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;picture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;image/webp&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;srcset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;flower.webp&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;image/jpeg&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;srcset&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;flower.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- img tag should always be included, and it should always be last --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;flower.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;picture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;key-takeaways&#34;&gt;key takeaways&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;i can automate the process of generating webp version whenever a new image file is uploaded&lt;/li&gt;&#xA;&lt;li&gt;i can serve the images using &lt;code&gt;mod_rewrite&lt;/code&gt;, and take care of it on a server level. No need to add &lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt; elements inside existing code&lt;/li&gt;&#xA;&lt;li&gt;going through the sample gallery, PNG files seem to look better after converted to WEBP&lt;/li&gt;&#xA;&lt;li&gt;WebP offers both lossless and lossy compression. In lossless compression no data is lost. Lossy compression reduces file size, but at the expense of possibly reducing image quality.&lt;/li&gt;&#xA;&lt;li&gt;you can use &lt;em&gt;imagemin-webp&lt;/em&gt; as an npm package and integrate it into your bundler (Webpack, Grunt etc.)&lt;/li&gt;&#xA;&lt;li&gt;In &lt;code&gt;&amp;lt;picture&amp;gt;&lt;/code&gt;, the browser uses the first listed source that&amp;rsquo;s in a format it supports. If the browser does not support any of the formats listed in the &lt;code&gt;&amp;lt;source&amp;gt;&lt;/code&gt; tags, it falls back to loading the image specified by the &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tag.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developers.google.com/speed/webp&#34;&gt;WebP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-create-and-serve-webp-images-to-speed-up-your-website&#34;&gt;How To Create and Serve WebP Images to Speed Up Your Website&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developers.google.com/speed/webp/docs/cwebp&#34;&gt;cwebp manual&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developers.google.com/speed/webp/gallery&#34;&gt;comparison pictures gallery&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://web.dev/serve-images-webp/&#34;&gt;Use WebP images&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/imagemin/imagemin-webp&#34;&gt;imagemin-webp&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Setting your Postfix self-hosted mail server up for multiple domains</title>
      <link>https://aamnah.com/notes/sysadmin/postfix-multiple-domains/</link>
      <pubDate>Sat, 29 Aug 2020 13:04:42 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/postfix-multiple-domains/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;With &lt;strong&gt;virtual alias domains&lt;/strong&gt;, each hosted address is aliased to a local UNIX system account or to a remote address.&lt;/li&gt;&#xA;&lt;li&gt;NEVER list a virtual alias domain name as a mydestination domain!&lt;/li&gt;&#xA;&lt;li&gt;Execute the command &lt;code&gt;postmap /etc/postfix/virtual&lt;/code&gt; after changing the virtual file, and execute the command &lt;code&gt;postfix reload&lt;/code&gt; after changing the &lt;code&gt;main.cf&lt;/code&gt; file.&lt;/li&gt;&#xA;&lt;li&gt;Note: virtual aliases can resolve to a local address or to a remote address, or both. They don&amp;rsquo;t have to resolve to UNIX system accounts on your machine.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt;# /etc/postfix/main.cf&#xA;virtual_alias_domains = example.com ...other hosted domains...&#xA;virtual_alias_maps = hash:/etc/postfix/virtual&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-conf&#34; data-lang=&#34;conf&#34;&gt;# /etc/postfix/virtual&#xA;postmaster@example.com postmaster&#xA;info@example.com       joe&#xA;sales@example.com      jane&#xA;# Uncomment entry below to implement a catch-all address&#xA;# @example.com         jim&#xA;...virtual aliases for more domains...&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;mail-accounts-without-system-user-accounts&#34;&gt;Mail accounts without system user accounts&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;Maildir&lt;/code&gt; style delivery where a mailbox &lt;em&gt;pathname&lt;/em&gt; is used instead of a UNIX system account is used can be used to create virtual mailboxes. That way you don&amp;rsquo;t have to create a system account for every user that you want to give email accesss to.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Move Ubuntu `/home` partition to another one</title>
      <link>https://aamnah.com/notes/sysadmin/move-home-partition-ubuntu/</link>
      <pubDate>Sun, 02 Aug 2020 10:38:12 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/move-home-partition-ubuntu/</guid>
      <description>&lt;ol&gt;&#xA;&lt;li&gt;Create a new partition in &lt;code&gt;ext4&lt;/code&gt; format&lt;/li&gt;&#xA;&lt;li&gt;Trasnfer files from old partition to new partition&lt;/li&gt;&#xA;&lt;li&gt;Switch over to new partition by editing &lt;code&gt;/etc/fstab&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re trying to unmount the partition and it keeps saying it is busy, use the following command to see what&amp;rsquo;s keeping the partition busy&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;lsof &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep/media/aamnah/Files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;in my case it was a bunch of &lt;code&gt;node&lt;/code&gt; processes..&lt;/p&gt;&#xA;&lt;p&gt;Before starting file transfer, close all applications (e.g. Chrome) This will avoid any temporary files changing during the transfer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring system resource usage and statistics on Ubuntu</title>
      <link>https://aamnah.com/notes/sysadmin/system-resource-monitoring-ubuntu/</link>
      <pubDate>Tue, 12 May 2020 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/system-resource-monitoring-ubuntu/</guid>
      <description>&lt;p&gt;Basically, i&amp;rsquo;m looking for answers to these:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Why did the server go down?&lt;/li&gt;&#xA;&lt;li&gt;What process was taking so many resources that the server crashed?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;cpu-utilization-history-and-logs-with-system-activity-reporter-sar&#34;&gt;CPU utilization history and logs with System Activity Reporter (SAR)&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;sar&lt;/code&gt; command can give you CPU utilization history. It&amp;rsquo;s a part of a software bundle called &lt;code&gt;sysstat&lt;/code&gt; which you&amp;rsquo;ll need to install on Debian/Ubuntu&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y sysstat&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# enable data collection&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Set ENABLED=&amp;#34;true&amp;#34; in &amp;#34;/etc/default/sysstat&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/ENABLED=&amp;#34;false&amp;#34;/ENABLED=&amp;#34;true&amp;#34;/g&amp;#39;&lt;/span&gt; /etc/default/sysstat&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# change the collection interval from every 10 minutes to every 2 minutes.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/5-55\/10/*\/2/g&amp;#39;&lt;/span&gt; /etc/cron.d/sysstat&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# restart sysstat for the change to take effect and data collection to start working&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo service sysstat restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# check cpu utilization&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The logs are saved in &lt;code&gt;/var/log/sa/&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The ultimate guide to creating your own Zsh (oh-my-zsh) theme</title>
      <link>https://aamnah.com/notes/sysadmin/zsh-custom-theme-ultimate-guide/</link>
      <pubDate>Sat, 02 May 2020 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/zsh-custom-theme-ultimate-guide/</guid>
      <description>&lt;p&gt;Now that Zsh is now the default shell on macOS, i figured it was a good time to install &lt;a href=&#34;https://github.com/ohmyzsh/ohmyzsh&#34;&gt;oh-my-zsh&lt;/a&gt; and give it another go. And obviously, i immediately wanted to customize my prompt. So i ended up going through the process of creating a custom Zsh theme..&lt;/p&gt;&#xA;&lt;p&gt;I need a minimalist prompt with&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;timestamp&lt;/li&gt;&#xA;&lt;li&gt;git branch name and status&lt;/li&gt;&#xA;&lt;li&gt;no username and hosts on local machine&lt;/li&gt;&#xA;&lt;li&gt;a line break at the beginning of prompt to give visual separation between commands&lt;/li&gt;&#xA;&lt;li&gt;no need for username and host. It&amp;rsquo;s my laptop, i know what my name and host is.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Something like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Change Swap partition in Ubuntu</title>
      <link>https://aamnah.com/notes/sysadmin/change-update-swap-partition-ubuntu/</link>
      <pubDate>Wed, 08 Apr 2020 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/change-update-swap-partition-ubuntu/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Create swap and turn it on&lt;/li&gt;&#xA;&lt;li&gt;add swap entry to fstab&lt;/li&gt;&#xA;&lt;li&gt;update grub &lt;code&gt;sudo gedit /etc/default/grub&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;update &lt;code&gt;sudo gedit /etc/initramfs-tools/conf.d/resume&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;you can get UUID with &lt;code&gt;sudo blkid&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;if you just update the &lt;code&gt;fstab&lt;/code&gt; and not the &lt;code&gt;RESUME&lt;/code&gt; values, it&amp;rsquo;ll not boot on the next restart, will give an error about resume device.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# prepare your partitions&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;swapoff /dev/sda2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mkswap /dev/sda3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;swapon /dev/sda3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# find swap uuid&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo blkid &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep swap&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# OR&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; ls -l /dev/disk/by-uuid &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep sda3 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;  cut -d&lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;  -f8 &amp;gt;&amp;gt; /etc/fstab&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# edit swap entry in /etc/fstab&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;gksu gedit /etc/fstab&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# edit the uuid line in /etc/initramfs-tools/conf.d/resume&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;gksu gedit /etc/initramfs-tools/conf.d/resume&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# In terminal, execute this command&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-initramfs -u&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;you can test your hibernation here, if it doesn&amp;rsquo;t work:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a WordPress Multisite Network in Subfolders</title>
      <link>https://aamnah.com/notes/sysadmin/wordpress-multisite/</link>
      <pubDate>Wed, 25 Mar 2020 12:07:46 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/wordpress-multisite/</guid>
      <description>&lt;ol&gt;&#xA;&lt;li&gt;Enable multisite&lt;/li&gt;&#xA;&lt;li&gt;Deactivate all installed plugins&lt;/li&gt;&#xA;&lt;li&gt;Create network&lt;/li&gt;&#xA;&lt;li&gt;Update config files&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Keep in mind that creating sites in subdirectories doesn&amp;rsquo;t actually &lt;em&gt;create&lt;/em&gt; any subdirectories on the file system, so you won&amp;rsquo;t see any new folders. It is all done within the database except maybe a folder under &lt;code&gt;wp-content/uploads&lt;/code&gt; for Media files..&lt;/p&gt;&#xA;&lt;h3 id=&#34;enable-multisite&#34;&gt;Enable multisite&lt;/h3&gt;&#xA;&lt;p&gt;Add the following to &lt;code&gt;wp-config.php&lt;/code&gt; (before any &lt;code&gt;require&lt;/code&gt; or &lt;code&gt;include&lt;/code&gt; statements..)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt;/**&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt; * Allow WordPress Multisite network&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sd&#34;&gt; */&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;define&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;WP_ALLOW_MULTISITE&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once you have it enabled, go back to &lt;em&gt;Dashboard &amp;gt; Tools &amp;gt; Network Setup&lt;/em&gt; and confirm the settings. You&amp;rsquo;ll then be asked to edit the &lt;code&gt;wp-config.php&lt;/code&gt; and &lt;code&gt;.htaccess&lt;/code&gt; files again&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add CORS Header to an ASP.NET MVC project</title>
      <link>https://aamnah.com/notes/sysadmin/allow-cors-net-mvc/</link>
      <pubDate>Mon, 17 Feb 2020 06:36:03 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/allow-cors-net-mvc/</guid>
      <description>&lt;p&gt;Add the following to &lt;code&gt;Web.config&lt;/code&gt; for the ASP.NET MVC app (inside the &lt;code&gt;&amp;lt;configuration&amp;gt;&lt;/code&gt; block)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- START: Add CORS header for WordPress site so we can dynamically fetch popular users there --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;system.webServer&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;httpProtocol&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;lt;customHeaders&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;add&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Access-Control-Allow-Origin&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;value=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://other.mydomain.net&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;lt;/customHeaders&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/httpProtocol&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/system.webServer&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- END: Add CORS header for WordPress site so we can dynamically fetch popular users there --&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Make sure a &lt;code&gt;&amp;lt;configuration&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;system.webServer&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;httpProtocol&amp;gt;&lt;/code&gt;, or &lt;code&gt;&amp;lt;customHeaders&amp;gt;&lt;/code&gt; block doesn&amp;rsquo;t exist already. Better to search for these first and then add the code accordingly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable CORS for WordPress API on Apache</title>
      <link>https://aamnah.com/notes/sysadmin/enable-cors-wordpress/</link>
      <pubDate>Thu, 31 Oct 2019 18:25:20 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/enable-cors-wordpress/</guid>
      <description>&lt;h3 id=&#34;try-1-edit-htaccess&#34;&gt;Try 1. Edit &lt;code&gt;.htaccess&lt;/code&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo a2enmod headers&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo service apache2 reload&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;.htaccess&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;IfModule mod_headers.c&amp;gt;&#xA;  Header set Access-Control-Allow-Origin &amp;#34;*&amp;#34;&#xA;  Header set Access-Control-Allow-Methods: &amp;#34;POST, GET, OPTIONS, PUT, DELETE&amp;#34;&#xA;  Header set Access-Control-Allow-Credentials: true&#xA;  Header set Access-Control-Allow-Headers: X-Requested-With&#xA;&amp;lt;/IfModule&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can use &lt;code&gt;add&lt;/code&gt; rather than &lt;code&gt;set&lt;/code&gt;, but be aware that &lt;code&gt;add&lt;/code&gt; can add the header multiple times, so it&amp;rsquo;s generally safer to use set.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.w3.org/wiki/CORS_Enabled&#34;&gt;https://www.w3.org/wiki/CORS_Enabled&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;try-2-edit-functionsphp&#34;&gt;Try 2. Edit &lt;code&gt;functions.php&lt;/code&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Put this in &lt;code&gt;functions.php&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Enable CORS for the API&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// https://gist.github.com/miya0001/d6508b9ba52df5aedc78fca186ff6088&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// https://github.com/ahmadawais/WP-REST-Allow-All-CORS/blob/master/plugin.php&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;my_customize_rest_cors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;remove_filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;rest_pre_serve_request&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;rest_send_cors_headers&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;add_filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;rest_pre_serve_request&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$value&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;header&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Access-Control-Allow-Origin: *&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;header&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;header&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Access-Control-Allow-Credentials: true&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;header&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Access-Control-Expose-Headers: Link&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;header&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Access-Control-Allow-Headers: X-Requested-With&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;add_action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;rest_api_init&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;my_customize_rest_cors&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;try-3-edit-appache-virtual-host-conf-file&#34;&gt;Try 3. Edit Appache virtual host &lt;code&gt;.conf&lt;/code&gt; file&lt;/h3&gt;&#xA;&lt;p&gt;Add the header inside the &lt;code&gt;&amp;lt;Directory&amp;gt;&lt;/code&gt; section in the Apache virtual host files for the domain. (You may have 2 of them, one for SSL and one non-SSL)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redirections with .htaccess file</title>
      <link>https://aamnah.com/notes/sysadmin/htaccess-redirects/</link>
      <pubDate>Wed, 30 Oct 2019 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/htaccess-redirects/</guid>
      <description>&lt;p&gt;Redirect the entire site (permanently)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Redirect &lt;span class=&#34;m&#34;&gt;301&lt;/span&gt; / https://newsite.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Redirect a single page&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Redirect &lt;span class=&#34;m&#34;&gt;301&lt;/span&gt; /oldpage.html https://newsite.com/newpage.html&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can specify any &lt;code&gt;3xx&lt;/code&gt; redirection code. Here is a &lt;a href=&#34;https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection&#34;&gt;list&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;redirect-an-old-domain-to-a-new-domain&#34;&gt;Redirect an old domain to a new domain&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;RewriteEngine On&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;RewriteCond %&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;HTTP_HOST&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; ^mydomain.com &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OR&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;RewriteCond %&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;HTTP_HOST&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; ^www.mydomain.com &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;OR&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;RewriteRule ^&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;.*&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;$ https://www.newdomain.com/&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;L,R&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;301,NC&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the requested page (condition) is not &lt;code&gt;/wp-admin&lt;/code&gt;, &lt;code&gt;/wp-login&lt;/code&gt; or &lt;code&gt;wp-json&lt;/code&gt;, redirect it (rule) to the the new domain while keeping the path intact (because we are checking for &lt;code&gt;REQUEST_URI&lt;/code&gt;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting slow boot time on Ubuntu on an NVMe SSD</title>
      <link>https://aamnah.com/notes/sysadmin/slow-boot-ubuntu-ssd/</link>
      <pubDate>Sat, 27 Jul 2019 14:11:33 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/slow-boot-ubuntu-ssd/</guid>
      <description>&lt;p&gt;tl;dr: check if the &lt;code&gt;swap&lt;/code&gt; drive has been changed or removed&lt;/p&gt;&#xA;&lt;p&gt;Check the &lt;code&gt;syslog&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;tail -20 /var/log/syslog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Jul 27 13:46:06 PandaU systemd[1]: dev-disk-by\x2duuid-2854a8db\x2d6494\x2d41d0\x2d9cff\x2d974714bb0b00.device: Job dev-disk-by\x2duuid-2854a8db\x2d6494\x2d41d0\x2d9cff\x2d974714bb0b00.device/start timed out.&#xA;Jul 27 13:46:06 PandaU systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-2854a8db\x2d6494\x2d41d0\x2d9cff\x2d974714bb0b00.device.&#xA;Jul 27 13:46:06 PandaU systemd[1]: Dependency failed for /dev/disk/by-uuid/2854a8db-6494-41d0-9cff-974714bb0b00.&#xA;Jul 27 13:46:06 PandaU systemd[1]: dev-disk-by\x2duuid-2854a8db\x2d6494\x2d41d0\x2d9cff\x2d974714bb0b00.swap: Job dev-disk-by\x2duuid-2854a8db\x2d6494\x2d41d0\x2d9cff\x2d974714bb0b00.swap/start failed with result &amp;#39;dependency&amp;#39;.&#xA;Jul 27 13:46:06 PandaU systemd[1]: dev-disk-by\x2duuid-2854a8db\x2d6494\x2d41d0\x2d9cff\x2d974714bb0b00.device: Job dev-disk-by\x2duuid-2854a8db\x2d6494\x2d41d0\x2d9cff\x2d974714bb0b00.device/start failed with result &amp;#39;timeout&amp;#39;.&#xA;Jul 27 13:48:37 PandaU dhclient[3143]: DHCPREQUEST of 192.168.0.79 on wlo1 to 192.168.0.1 port 67 (xid=0x52706f58)&#xA;Jul 27 13:48:37 PandaU dhclient[3143]: DHCPACK of 192.168.0.79 from 192.168.0.1&#xA;Jul 27 13:48:37 PandaU NetworkManager[1066]: &amp;lt;info&amp;gt;  [1564217317.7820] dhcp4 (wlo1):   address 192.168.0.79&#xA;Jul 27 13:48:37 PandaU NetworkManager[1066]: &amp;lt;info&amp;gt;  [1564217317.7820] dhcp4 (wlo1):   plen 24 (255.255.255.0)&#xA;Jul 27 13:48:37 PandaU NetworkManager[1066]: &amp;lt;info&amp;gt;  [1564217317.7820] dhcp4 (wlo1):   gateway 192.168.0.1&#xA;Jul 27 13:48:37 PandaU NetworkManager[1066]: &amp;lt;info&amp;gt;  [1564217317.7820] dhcp4 (wlo1):   lease time 600&#xA;Jul 27 13:48:37 PandaU NetworkManager[1066]: &amp;lt;info&amp;gt;  [1564217317.7820] dhcp4 (wlo1):   nameserver &amp;#39;192.168.0.1&amp;#39;&#xA;Jul 27 13:48:37 PandaU NetworkManager[1066]: &amp;lt;info&amp;gt;  [1564217317.7820] dhcp4 (wlo1): state changed bound -&amp;gt; bound&#xA;Jul 27 13:48:37 PandaU dbus-daemon[1056]: [system] Activating via systemd: service name=&amp;#39;org.freedesktop.nm_dispatcher&amp;#39; unit=&amp;#39;dbus-org.freedesktop.nm-dispatcher.service&amp;#39; requested by &amp;#39;:1.14&amp;#39; (uid=0 pid=1066 comm=&amp;#34;/usr/sbin/NetworkManager --no-daemon &amp;#34; label=&amp;#34;unconfined&amp;#34;)&#xA;Jul 27 13:48:37 PandaU systemd[1]: Starting Network Manager Script Dispatcher Service...&#xA;Jul 27 13:48:37 PandaU dbus-daemon[1056]: [system] Successfully activated service &amp;#39;org.freedesktop.nm_dispatcher&amp;#39;&#xA;Jul 27 13:48:37 PandaU systemd[1]: Started Network Manager Script Dispatcher Service.&#xA;Jul 27 13:48:37 PandaU nm-dispatcher: req:1 &amp;#39;dhcp4-change&amp;#39; [wlo1]: new request (1 scripts)&#xA;Jul 27 13:48:37 PandaU nm-dispatcher: req:1 &amp;#39;dhcp4-change&amp;#39; [wlo1]: start running ordered scripts...&#xA;Jul 27 13:48:37 PandaU dhclient[3143]: bound to 192.168.0.79 -- renewal in 243 seconds.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sure enough, the UUID it is trying to find (as it is listed in &lt;code&gt;/etc/fstab&lt;/code&gt;) no longer exists. I ran &lt;code&gt;blkid&lt;/code&gt;, got the new &lt;code&gt;UUID&lt;/code&gt; of the &lt;code&gt;swap&lt;/code&gt; partition and updated the &lt;code&gt;/etc/fstab&lt;/code&gt; file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrade Gigabyte BIOS [H370M HD3 (rev. 1.0)]</title>
      <link>https://aamnah.com/notes/sysadmin/gigabyte-bios-upgrade/</link>
      <pubDate>Fri, 26 Jul 2019 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/gigabyte-bios-upgrade/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.gigabyte.com/Motherboard/H370-HD3-rev-10/support#support-dl-bios&#34;&gt;Download the latest bios firmware&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Extract the files to the root of a USB drive (FAT32 formatted)&lt;/li&gt;&#xA;&lt;li&gt;Enter BIOS (F12)&lt;/li&gt;&#xA;&lt;li&gt;Run the Q-Flash utility from BIOS (press the F8 button in BIOS). You can also access Q-Flash during post by pressing END&lt;/li&gt;&#xA;&lt;li&gt;Take a backup of the existing BIOS.&lt;/li&gt;&#xA;&lt;li&gt;Install the new one. It shows version numbers as file name, for example &lt;code&gt;H370MHD3.F14&lt;/code&gt; for the version released on 2019/07/08&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Dual booting Windows and Linux</title>
      <link>https://aamnah.com/notes/sysadmin/dual-boot-notes/</link>
      <pubDate>Fri, 26 Jul 2019 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/dual-boot-notes/</guid>
      <description>&lt;p&gt;tl;dr: Life will be simpler if you just install Windows first and then Ubuntu later.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Unplug all other hard drives&lt;/li&gt;&#xA;&lt;li&gt;Install Windows to SSD. With Windows installer create a partition for your Windows, it&amp;rsquo;ll create it&amp;rsquo;s &lt;code&gt;Recovery&lt;/code&gt; and &lt;code&gt;MSR&lt;/code&gt; (Microsoft Reserved Partition) partitions as well. Leave any extra space for your Ubuntu install later&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The point of installing Windows first is so that it creates its Recovery and MSR partition and the partitioning scheme does not interfere with the BIOS and bootup. For example, if your drive is in MBR format, good luck figuring out disabling &lt;em&gt;Safe Boot&lt;/em&gt; and &lt;em&gt;Fast Boot&lt;/em&gt;, enabling &lt;em&gt;CSM and Legacy Support&lt;/em&gt;, and wrangling with &lt;em&gt;UEFI&lt;/em&gt; nonsense in general. Worst case scenario, your device wouldn&amp;rsquo;t even be recognized or listed by the motherboard. (actually happened!)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configure WiFi from command line (Ubuntu 18.04)</title>
      <link>https://aamnah.com/notes/sysadmin/wifi-command-line/</link>
      <pubDate>Thu, 18 Jul 2019 10:40:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/wifi-command-line/</guid>
      <description>&lt;p&gt;tl;dr&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo su&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;killall wpa_supplicant&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wpa_passphrase &lt;span class=&#34;s2&#34;&gt;&amp;#34;your_essid&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;your_password&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/wpa_supplicant/wpa_supplicant.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wpa_supplicant -B -i wlp2s0  -c /etc/wpa_supplicant/wpa_supplicant.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;dhclient eth1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;wpa_supplicant&lt;/code&gt; and &lt;code&gt;dhclient&lt;/code&gt; require &lt;code&gt;sudo&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# figure out what&amp;#39;s your WiFi interface called&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;iwlist scan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#iwconfig&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# scan for wifi networks&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;iwlist wlp2s0 scan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#iwlist wlp2s0 s&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# generate a &amp;#39;network&amp;#39; entry for wpa_supplicant.conf file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# replace MyWifiNetwork with the name of the wifi network you want to connect to&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# enter the wifi password when prompted&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo su&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wpa_passphrase MyWifiNetwork &amp;gt;&amp;gt; /etc/wpa_supplicant/wpa_supplicant.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# you&amp;#39;ll get a blinky cursor, enter the password now&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# connect to the network now&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wpa_supplicant -B -i wlp2s0  -c /etc/wpa_supplicant/wpa_supplicant.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# obtain an IP address&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;dhclient wlp2s0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;p&gt;NOTES:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install Firefox Nightly on Ubuntu Linux 18.04</title>
      <link>https://aamnah.com/notes/sysadmin/install-firefox-nightly-ubuntu/</link>
      <pubDate>Wed, 10 Jul 2019 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-firefox-nightly-ubuntu/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Create /opt directory&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir --mode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;755&lt;/span&gt; /opt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# create a directory for firefox&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir /opt/firefoxnightly&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Download latest Nightly 64-Bit&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wget -O firefoxnightly.tar.bz2 &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://download.mozilla.org/?product=firefox-nightly-latest-ssl&amp;amp;os=linux64&amp;amp;lang=en-US&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Extract firefox to the folder we created for it in /opt&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;tar xjf ~/Downloads/firefoxnightly.tar.bz2 /opt/firefoxnightly&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# give rights so that it auto-updates&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo chown -R &lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;:&lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt; /opt/firefoxnightly&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# start Firefox Nightly &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /opt/firefoxnightly &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./firefox&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;1-download-firefox-nightly&#34;&gt;1. Download Firefox Nightly&lt;/h3&gt;&#xA;&lt;p&gt;You&amp;rsquo;ll get a &lt;code&gt;.tar.bz2&lt;/code&gt; file. Mozilla doesn&amp;rsquo;t provide &lt;code&gt;.deb&lt;/code&gt; or &lt;code&gt;.rpm&lt;/code&gt; packages since binaries are more universal and work on all distributions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install GoDaddy SSL Certificate on Apache</title>
      <link>https://aamnah.com/notes/sysadmin/ssl-godaddy-apache/</link>
      <pubDate>Fri, 26 Apr 2019 18:03:15 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/ssl-godaddy-apache/</guid>
      <description>&lt;p&gt;You need 4 files:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Certificate Signig Request (CSR), &lt;code&gt;example.com.csr&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Private Key, &lt;code&gt;example.com.key&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;SSL Certificate, &lt;code&gt;example.com.crt&lt;/code&gt; (GoDaddy: &lt;code&gt;7dbXXXXXXXXfef89.crt&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;Intermediate Certificate, &lt;code&gt;example.com.crt&lt;/code&gt; or &lt;code&gt;intermediate.crt&lt;/code&gt; or &lt;code&gt;chainfile.crt&lt;/code&gt; (GoDaddy: &lt;code&gt;gd_bundle-g2-g1.crt&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-apache&#34; data-lang=&#34;apache&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;192.168.0.1:443&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&lt;span class=&#34;nb&#34;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/var/www/html2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&lt;span class=&#34;nb&#34;&gt;ServerName&lt;/span&gt; www.yourdomain.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;    &lt;span class=&#34;nb&#34;&gt;SSLEngine&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;on&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;    &lt;span class=&#34;nb&#34;&gt;SSLCertificateFile&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/path/to/your_domain_name.crt&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;    &lt;span class=&#34;nb&#34;&gt;SSLCertificateKeyFile&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/path/to/your_private.key&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;    &lt;span class=&#34;nb&#34;&gt;SSLCertificateChainFile&lt;/span&gt; &lt;span class=&#34;sx&#34;&gt;/path/to/DigiCertCA.crt&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;csr&#34;&gt;CSR&lt;/h2&gt;&#xA;&lt;p&gt;Generate a CSR (Certificate Signing Request) Key. Don&amp;rsquo;t add a passphrase, if you do it&amp;rsquo;ll ask you for the passphrase everytime you restart Apache.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;-new&lt;/code&gt; used when creating a new CSR, rather than processing an existing one&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-key&lt;/code&gt; the name of the file containing the key pair&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-out&lt;/code&gt; name of the file to receive the CSR&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You can use this &lt;a href=&#34;https://ssltools.godaddy.com/views/csrDecoder&#34;&gt;CSR Decoder&lt;/a&gt; by GoDaddy to check your CSR&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fix slow boot after deleting Swap partition</title>
      <link>https://aamnah.com/notes/sysadmin/ubuntu-slow-boot-swap-fix/</link>
      <pubDate>Wed, 03 Apr 2019 16:48:08 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/ubuntu-slow-boot-swap-fix/</guid>
      <description>&lt;p&gt;tl;dr&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Edit &lt;code&gt;/etc/fstab&lt;/code&gt;. You need to comment out the lines that mount swap partitions. Ideally you should do this before deleing the swap partition&lt;/li&gt;&#xA;&lt;li&gt;Edit &lt;code&gt;/etc/initramfs-tools/conf.d/resume&lt;/code&gt; (with sudo) and comment out the swap partition&lt;/li&gt;&#xA;&lt;li&gt;Edit &lt;code&gt;/etc/crypttab&lt;/code&gt; if you had an encrypted swap partition&lt;/li&gt;&#xA;&lt;li&gt;Edit &lt;code&gt;/etc/default/grub&lt;/code&gt; if you had hibernation enabled for Ubuntu&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You should update the &lt;code&gt;/etc/fstab&lt;/code&gt; first, comment out the swap entries, and &lt;em&gt;then&lt;/em&gt; delete the swap partition.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Editing &lt;code&gt;/etc/fstab&lt;/code&gt; afterwards didn&amp;rsquo;t really fix the slow boot issue for me.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooing a Mac</title>
      <link>https://aamnah.com/notes/sysadmin/mac-troubleshooting/</link>
      <pubDate>Fri, 15 Mar 2019 13:02:20 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/mac-troubleshooting/</guid>
      <description>&lt;p&gt;Issue: Computer is booting in Safe Mode (Shift Key) only&lt;/p&gt;&#xA;&lt;h2 id=&#34;do-a-diagnostics-test-d-to-check-computer-hardware&#34;&gt;Do a Diagnostics Test (D) to check computer hardware&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://support.apple.com/en-us/HT202731&#34;&gt;ref link&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Shutdown. Power on and immediately press D. It&amp;rsquo;ll take a few minutes to run tests and give you results.&lt;/li&gt;&#xA;&lt;li&gt;Mine gave me &lt;em&gt;The battery requires service&lt;/em&gt; Reference Code: &lt;code&gt;PPT004&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;It&amp;rsquo;ll also give you your Mac&amp;rsquo;s serial number. Mine is:  &lt;code&gt;C02KTD35F5V7&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;check-system-diagnostics-log-file&#34;&gt;Check System Diagnostics Log file&lt;/h2&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://discussions.apple.com/docs/DOC-3353https://discussions.apple.com/docs/DOC-3353&#34;&gt;link 1&lt;/a&gt;, &lt;a href=&#34;http://apple.stackexchange.com/questions/59917/&#34;&gt;link 2&lt;/a&gt;, and &lt;a href=&#34;how-do-you-get-system-diagnostic-files-from-os-x&#34;&gt;link 3&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enabling pretty permalinks in Bitnami WordPress with SSL</title>
      <link>https://aamnah.com/notes/sysadmin/bitnami-ssl-wordpress-permalinks/</link>
      <pubDate>Wed, 30 Jan 2019 18:08:21 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/bitnami-ssl-wordpress-permalinks/</guid>
      <description>&lt;h3 id=&#34;tldr&#34;&gt;tl;dr&lt;/h3&gt;&#xA;&lt;p&gt;Edit the &lt;code&gt;/opt/bitnami/apache2/conf/extra/httpd-ssl.conf&lt;/code&gt; file and add the directives there. You need to wrap your &lt;code&gt;.htaccess&lt;/code&gt; stuff in a &lt;code&gt;&amp;lt;Directory&amp;gt;&lt;/code&gt; directive and that will be in turn inside the &lt;code&gt;&amp;lt;VirtualHost&amp;gt;&lt;/code&gt; directive.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-apache&#34; data-lang=&#34;apache&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;_default_:443&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#   General setup for the virtual host&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;DocumentRoot&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/opt/bitnami/apps/wordpress/htdocs&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ServerName&lt;/span&gt; www.blah.com:443&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ServerAdmin&lt;/span&gt; admin@blah.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;ErrorLog&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/opt/bitnami/apache2/logs/error_log&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;TransferLog&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/opt/bitnami/apache2/logs/access_log&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;Directory&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/opt/bitnami/apps/wordpress/htdocs&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;AllowOverride&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;All&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;Options&lt;/span&gt; FollowSymLinks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c&#34;&gt;# BEGIN WordPress&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;RewriteEngine&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;On&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;RewriteBase&lt;/span&gt; /&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;RewriteRule&lt;/span&gt; ^index\.php$ - [L]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;RewriteCond&lt;/span&gt; %{REQUEST_FILENAME} !-f&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;RewriteCond&lt;/span&gt; %{REQUEST_FILENAME} !-d&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;RewriteRule&lt;/span&gt; . &lt;span class=&#34;sx&#34;&gt;/index.php&lt;/span&gt; [L]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c&#34;&gt;# END WordPress&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;22&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;23&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Restart Apache afterwards&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making sense of Bitnami Apache confs</title>
      <link>https://aamnah.com/notes/sysadmin/bitnami-apache-conf/</link>
      <pubDate>Wed, 19 Dec 2018 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/bitnami-apache-conf/</guid>
      <description>&lt;h2 id=&#34;apache-conf&#34;&gt;Apache Conf&lt;/h2&gt;&#xA;&lt;p&gt;The main conf file for Apache is at &lt;code&gt;/opt/bitnami/apache2/conf/httpd.conf&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;This file loads (sources) Bitnami specific conf files. Since these files are loaded at the end of the main Apache conf file, they&amp;rsquo;ll override the settings in the main conf.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;/opt/bitnami/apache2/conf/httpd.conf&lt;/code&gt; in turn loads these two respectively at the end&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-apache&#34; data-lang=&#34;apache&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Include&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/opt/bitnami/apache2/conf/bitnami/bitnami.conf&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Include&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/opt/bitnami/apache2/conf/bitnami/httpd.conf&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;ssl-conf&#34;&gt;SSL Conf&lt;/h2&gt;&#xA;&lt;p&gt;There are 3 conf files that deal with Apache SSL inside the &lt;code&gt;/opt/bitnami/apache2/conf&lt;/code&gt; folder&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a &#39;New Document&#39; shortcut in Nautlius File Manager</title>
      <link>https://aamnah.com/notes/sysadmin/ubuntu-create-file-nautilus/</link>
      <pubDate>Wed, 12 Dec 2018 13:12:09 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/ubuntu-create-file-nautilus/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s fairly simple, just create a file in the &lt;code&gt;~/Templates&lt;/code&gt; folder, it&amp;rsquo;ll show up in the &lt;em&gt;right click menu&lt;/em&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;touch &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;/Templates/Empty&lt;span class=&#34;se&#34;&gt;\ &lt;/span&gt;Document&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The only caveat is that you have to rename the file after it&amp;rsquo;s created.&lt;/p&gt;&#xA;&lt;p&gt;I used the name &lt;code&gt;1_Markdown.md&lt;/code&gt; for my file.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The &lt;code&gt;.md&lt;/code&gt; extension because 90% of the files i create in Nautlius with the right click menu are Markdown files. I made other &lt;code&gt;.sh&lt;/code&gt;, &lt;code&gt;.js&lt;/code&gt;, &lt;code&gt;.scss&lt;/code&gt; templates too..&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;1_&lt;/code&gt; at the beginning means that it shows up at the top of the list view in the folder when it is set to &lt;code&gt;sort A-Z&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Mount NTFS drives in Linux</title>
      <link>https://aamnah.com/notes/sysadmin/mount-ntfs-drives/</link>
      <pubDate>Mon, 10 Dec 2018 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/mount-ntfs-drives/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install ntfs-3g&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# on Ubuntu 18.04 ntfs-3g is already installed&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y ntfs-3g&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# create a mount point for the drive ( /home/username/media/EXTRA )&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;/media/EXTRA&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# identify the NTFS drive&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# sudo fdisk -l | grep NTFS&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# lsblk -f&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;blkid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# mount the drive ( /dev/sdb1 )&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mount -t ntfs-3g /dev/sdb1 &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;/media/EXTRA&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Make it permanent by editing &lt;code&gt;/etc/fstab&lt;/code&gt;. Keeping the mount point inside &lt;code&gt;$HOME&lt;/code&gt; simplifies permissions&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a frontend dev environment (Debian/Ubuntu)</title>
      <link>https://aamnah.com/notes/sysadmin/dev-setup-linux/</link>
      <pubDate>Tue, 20 Nov 2018 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/dev-setup-linux/</guid>
      <description>&lt;p&gt;tl;dr: TO DO: i have &lt;a href=&#34;&#34;&gt;written a script here&lt;/a&gt; that will take care of the entire thing&lt;/p&gt;&#xA;&lt;h3 id=&#34;packages&#34;&gt;Packages&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y curl build-essential file git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;build-essential&lt;/code&gt; includes &lt;code&gt;gcc&lt;/code&gt;, &lt;code&gt;g++&lt;/code&gt; and &lt;code&gt;make&lt;/code&gt; as well as other packages.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;node--yarn&#34;&gt;Node &amp;amp; Yarn&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install Node&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# https://github.com/nodesource/distributions/blob/master/README.md&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;curl -sL https://deb.nodesource.com/setup_12.x &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo -E bash -&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y nodejs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install Yarn&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# echo &amp;#34;deb https://dl.yarnpkg.com/debian/ stable main&amp;#34; | sudo tee /etc/apt/sources.list.d/yarn.list&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# sudo apt update &amp;amp;&amp;amp; sudo apt install yarn&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install Yarn 2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g yarn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;If &lt;code&gt;yarn global&lt;/code&gt; packages are not working, add Yarn to the &lt;code&gt;$PATH&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;## PATH - Yarn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;export PATH=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PATH&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:`yarn global bin`&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;homebrew&#34;&gt;Homebrew&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Homebrew&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# https://docs.brew.sh/Homebrew-on-Linux&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;/bin/bash -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now confirm instal and update &lt;code&gt;$PATH&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Increasing performance on low-RAM</title>
      <link>https://aamnah.com/notes/sysadmin/ubuntu-swap/</link>
      <pubDate>Fri, 26 Oct 2018 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/ubuntu-swap/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;tl;dr&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Increase swappiness &amp;amp; cache pressure&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# increase swappiness&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# https://help.ubuntu.com/community/SwapFaq&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;vm.swappiness=100&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# Cache Pressure Setting&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-18-04&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;vm.vfs_cache_pressure=50&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/sysctl.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Create a new swap file and delete the old one&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo fallocate -l 8G /swapfile8G &lt;span class=&#34;c1&#34;&gt;# create new file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo chmod &lt;span class=&#34;m&#34;&gt;600&lt;/span&gt; /swapfile8G &lt;span class=&#34;c1&#34;&gt;# recommended permissions&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkswap /swapfile8G &lt;span class=&#34;c1&#34;&gt;# format file as swap&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo swapon /swapfile8G &lt;span class=&#34;c1&#34;&gt;# turn it on&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo swapoff /swapfile &lt;span class=&#34;c1&#34;&gt;# turn off old swapfile&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo sudo rm -rf /swapfile &lt;span class=&#34;c1&#34;&gt;# remove old swap file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo swapon -s &lt;span class=&#34;c1&#34;&gt;# verify &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# After all edit your /etc/fstab, if you use it to turn on swap when reboot, to switch /swapfile to /swapfile8G&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo nano /etc/fstab&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;22&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# /var/swapfile8G none swap sw 0 0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h4 id=&#34;background&#34;&gt;background:&lt;/h4&gt;&#xA;&lt;p&gt;I have an old Acer Aspire 5742 with 4GB of RAM that i&amp;rsquo;m trying to use for dev work. But the darn thing hangs up after running out of memory. The stuff i&amp;rsquo;m running is not much - VS Code, npm, Chromium with 6 or so tabs, Sublime Text for note taking and File explorer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NTFS read/write on macOS</title>
      <link>https://aamnah.com/notes/sysadmin/ntfs-macos-mounty/</link>
      <pubDate>Mon, 07 May 2018 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/ntfs-macos-mounty/</guid>
      <description>&lt;h3 id=&#34;tldr&#34;&gt;tl;dr&lt;/h3&gt;&#xA;&lt;p&gt;get &lt;a href=&#34;http://enjoygineering.com/mounty/&#34;&gt;Mounty&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;brew cask install mounty&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If after copying the files are garyed out and are inaccessible, it&amp;rsquo;s because of Finder&amp;rsquo;s &lt;code&gt;xattr&lt;/code&gt; file attributes.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# list attributes&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;ls -l@&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# delete Finder attributes&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;xattr -d com.apple.FinderInfo FOO.ext&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;the-old-way&#34;&gt;The old way&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.howtogeek.com/236055/how-to-write-to-ntfs-drives-on-a-mac/&#34;&gt;source&lt;/a&gt;&#xA;This is more complicated than installing Mounty and didn&amp;rsquo;t work (the files didn&amp;rsquo;t show up in the Finder..)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install Command Line Tools&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;xcode-select --install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install Homebrew&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;/usr/bin/ruby -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Install ntfs-3g&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;brew install ntfs-3g&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# create mount point&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo mkdir /Volumes/NTFS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# determine your drive&amp;#39;s partition&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;diskutil list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# unmount if partition was already mounted by Mac&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo umount /dev/disk2s1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# mount the drive to the mount point you created&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo /usr/local/bin/ntfs-3g /dev/disk2s1 /Volumes/NTFS -olocal -oallow_other&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;&#xA;&lt;li&gt;First, download &lt;a href=&#34;https://github.com/osxfuse/osxfuse/releases&#34;&gt;FUSE for macOS&lt;/a&gt; and install it. Use the default options when installing it.&lt;/li&gt;&#xA;&lt;li&gt;Install Command Line Tools&lt;/li&gt;&#xA;&lt;li&gt;Install Homebrew&lt;/li&gt;&#xA;&lt;li&gt;Install &lt;code&gt;ntfs-3g&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Create mount point, &lt;code&gt;/Volumes/NTFS&lt;/code&gt; in the example above&lt;/li&gt;&#xA;&lt;li&gt;Determine your drive&amp;rsquo;s partition identifier, &lt;code&gt;disk2s1&lt;/code&gt; in the example above&lt;/li&gt;&#xA;&lt;li&gt;Unmount partition if it was automatically mounted by your Mac&lt;/li&gt;&#xA;&lt;li&gt;(Optional) Make an alias for the mount command e.g. &lt;code&gt;mountntfs&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Tranfer between Debian Apache based setups</title>
      <link>https://aamnah.com/notes/sysadmin/debian-server-transfer/</link>
      <pubDate>Fri, 27 Apr 2018 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/debian-server-transfer/</guid>
      <description>&lt;h1 id=&#34;transfer-server-from-digitalocean-to-vultr&#34;&gt;Transfer server from DigitalOcean to Vultr&lt;/h1&gt;&#xA;&lt;p&gt;Transfering between Debian Apache based setups&lt;/p&gt;&#xA;&lt;p&gt;This is my current setup&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Apache, MySQL, PHP, phpMyAdmin on Ubuntu&lt;/li&gt;&#xA;&lt;li&gt;Domains added via vhost conf files&lt;/li&gt;&#xA;&lt;li&gt;Let&amp;rsquo;s Encrypt SSL certificates&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Transfer databases&lt;/li&gt;&#xA;&lt;li&gt;Transfer all &lt;code&gt;vhost.conf&lt;/code&gt; files in &lt;code&gt;/var/etc/site_enabled&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Transfer all sites in &lt;code&gt;/var/www&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Transfer SSL certs for all domains&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;transfer-domain-conf-files&#34;&gt;Transfer Domain Conf files&lt;/h3&gt;&#xA;&lt;p&gt;This involves&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Locating where the conf files are&lt;/li&gt;&#xA;&lt;li&gt;Copying them to new server&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The conf files are usually in the &lt;code&gt;/etc/apache2/sites-available&lt;/code&gt; folder and symlinked into the &lt;code&gt;/etc/apache2/sites-enabled&lt;/code&gt; folder&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install sedutil on Ubuntu</title>
      <link>https://aamnah.com/notes/sysadmin/install-sedutil/</link>
      <pubDate>Mon, 08 Jan 2018 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-sedutil/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# download sedutil&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# make sure requisite libs are installed &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y build-essential g++&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install make tools&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install autoconf -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# build sedutil (run from project root)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;autoreconf -i&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;./configure&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;make&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enable TPM &lt;code&gt;libata.allow_tpm=1&lt;/code&gt; by editing the GRUB config&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo nano /etc/default/grub&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet splash libata.allow_tpm=1&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo update-grub&#xA;reboot&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Add &lt;code&gt;sedutil-cli&lt;/code&gt; to &lt;code&gt;$PATH&lt;/code&gt; so that it can be executed from anywhere in the shell&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring networking interfaces</title>
      <link>https://aamnah.com/notes/sysadmin/configure-networking/</link>
      <pubDate>Sun, 07 Jan 2018 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/configure-networking/</guid>
      <description>&lt;h3 id=&#34;finding-network-interface&#34;&gt;Finding network interface&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# See a list of networks available&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;ls /sys/class/net&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# See if your network is disabled&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo lshw -C network&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;ip addr&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Turn down a network&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo ip ls dev en0 down&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo ifdown en0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Enable interfaces&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo ifup -v eth0 &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The file to edit to configure networks&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo nano /etc/network/interfaces&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Try booting in recovery and then enabling networking. This was the easiest way for me to get ethernet to work. From GRUB, select Advanced Options and boot in recovery mode.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Get all kinds of information about your Mac machine using the Terminal</title>
      <link>https://aamnah.com/notes/sysadmin/macos-system-profile-report-details/</link>
      <pubDate>Sat, 11 Nov 2017 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/macos-system-profile-report-details/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# generate a System Report..&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;system_profiler&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command is the command line equivalent of going to  &lt;strong&gt;About This Mac&lt;/strong&gt; &amp;gt; &lt;strong&gt;System Report..&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;You might need this if you write Bash scripts for example where you want to know if a program is installed on the system or not.&lt;/p&gt;&#xA;&lt;p&gt;If you just run the command in the Terminal, it will start outputting all kinds of information, LOADS of it, including stuff like your machine&amp;rsquo;s UUID, available Wi-Fi networks, system diagnostic tests, details about what Applications are installed on the system and their versions, the fonts installed, hardware overview and so on..&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resetting an &#39;Unavailable&#39; Serial Number on a Mac</title>
      <link>https://aamnah.com/notes/sysadmin/macos-serial-number-unavailable/</link>
      <pubDate>Sat, 11 Nov 2017 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/macos-serial-number-unavailable/</guid>
      <description>&lt;h3 id=&#34;tldr&#34;&gt;tl;dr&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Note down your serial number (printed on underside of laptop, or purchase receipt)&lt;/li&gt;&#xA;&lt;li&gt;Download and write &lt;a href=&#34;https://www.dropbox.com/s/t6i9bzn165en6d4/Blank%20Board%20Serializer.zip?dl=0&#34;&gt;Blank Board Serializer&lt;/a&gt; &lt;code&gt;.dmg&lt;/code&gt; to a USB&lt;/li&gt;&#xA;&lt;li&gt;Boot from USB by pressing the &lt;code&gt;C&lt;/code&gt; key&lt;/li&gt;&#xA;&lt;li&gt;Follow instructions and enter your serial number&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Not having a serial number is usually due to a hardware change. Something was repaired, added (e.g. extra RAM) or replaced. The next common reason is software upgrade. Upgrading to OS X El Capitan has been reported to make the serial number go missing (the case with my 2013 Macbook Air, never repaired and bought directly from Apple in Dubai).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use rsync to mirror websites</title>
      <link>https://aamnah.com/notes/sysadmin/rsync-mirror-website-server/</link>
      <pubDate>Wed, 06 Sep 2017 09:22:43 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/rsync-mirror-website-server/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;tl;dr&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt install rsync&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#Access via remote shell:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Pull: sync remote with local&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;rsync -vhaze ssh user@server.example.com:/var/www/ /var/www&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;rsync -vPhaze &lt;span class=&#34;s2&#34;&gt;&amp;#34;ssh -p 1234 -i /root/.ssh/id_rsa&amp;#34;&lt;/span&gt; root@server.example.com:/var/www/cakebox.me/public_html/ /var/www/cakebox.me/public_html&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;rsync -qaze &lt;span class=&#34;s2&#34;&gt;&amp;#34;ssh -p 1234 -i /root/.ssh/id_rsa&amp;#34;&lt;/span&gt; root@server.example.com:/etc/letsencrypt/archive :/etc/letsencrypt/live :/etc/letsencrypt/renewal /etc/letsencrypt/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;-v, --verbose               increase verbosity&#xA;-h, --human-readable        output numbers in a human-readable format&#xA;-q, --quiet                 suppress non-error messages&#xA;-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)&#xA;-z, --compress              compress file data during the transfer&#xA;-e, --rsh=COMMAND           specify the remote shell to use&#xA;    --progress              show progress during transfer&#xA;-P                          same as --partial --progress&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://explainshell.com/explain?cmd=rsync+-avzhe+ssh+tecmint%40webserver.example.com%3A%2Fvar%2Fwww%2F+%2Fvar%2Fwww&#34;&gt;explainshell&lt;/a&gt; for the rsync command.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-e&lt;/code&gt; is basically the shell to use, e.g. &lt;code&gt;ssh -p 2234 -i /user/.ssh/id_rsa&lt;/code&gt;, followed by the command&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-a&lt;/code&gt; is used for preservation (ownership, permissions, soft links etc.)&lt;/li&gt;&#xA;&lt;li&gt;You can specify custom SSH port and SSH key to use for the connection. The path for the key file needs to be &lt;strong&gt;absolute path&lt;/strong&gt;, &lt;code&gt;~&lt;/code&gt; will not expand, so you have to use &lt;code&gt;/userhome&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Make sure which way you&amp;rsquo;re syncing. If note sure, you could end up overwriting imprtant files. For example config files with database connection details for example, this has happened.&lt;/li&gt;&#xA;&lt;li&gt;An easy way to determine which way you are syncing is the &lt;code&gt;-e&lt;/code&gt; flag. &lt;code&gt;-e&lt;/code&gt; determines the remote shell, so if you&amp;rsquo;re using the option, you&amp;rsquo;re pulling, i.e. syncing remote changes to local.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-e&lt;/code&gt; can not be used when you&amp;rsquo;re syncing local changes to remote&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Create an &lt;em&gt;unprivileged&lt;/em&gt; user for the sake of transferring files&lt;/p&gt;</description>
    </item>
    <item>
      <title>Taking care of prompt imputs from a script with Debconf</title>
      <link>https://aamnah.com/notes/sysadmin/debconf-set-selections-prompt-installs/</link>
      <pubDate>Sat, 12 Aug 2017 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/debconf-set-selections-prompt-installs/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install debconf-utils -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;see what possible selections a package may have&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo debconf-get-selections &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep mysql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mysql-server-5.7&#x9;mysql-server/root_password&#x9;password&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mysql-server-5.7&#x9;mysql-server/root_password_again&#x9;password&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mysql-server-5.7&#x9;mysql-server/no_upgrade_when_using_ndb&#x9;error&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mysql-server-5.7&#x9;mysql-server/password_mismatch&#x9;error&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mysql-server-5.7&#x9;mysql-server-5.7/start_on_boot&#x9;boolean&#x9;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mysql-server-5.7&#x9;mysql-server-5.7/postrm_remove_databases&#x9;boolean&#x9;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mysql-server-5.7&#x9;mysql-server-5.7/nis_warning&#x9;note&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;mysql-server-5.7&#x9;mysql-server-5.7/really_downgrade&#x9;boolean&#x9;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;set those selections&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MYSQL_PASS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;your_password&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo debconf-set-selections &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mysql-server mysql-server/root_password password &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MYSQL_PASS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo debconf-set-selections &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mysql-server mysql-server/root_password_again password &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;MYSQL_PASS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://serversforhackers.com/c/installing-mysql-with-debconf&#34;&gt;Installing MySQL (with Debconf)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://blog.delgurth.com/2009/01/19/pre-loading-debconf-values-for-easy-installation/&#34;&gt;Pre-loading debconf values for easy installation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Intro to debconf</title>
      <link>https://aamnah.com/notes/sysadmin/debconf-intro/</link>
      <pubDate>Sat, 12 Aug 2017 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/debconf-intro/</guid>
      <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;tldr&#34;&gt;tl;dr&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;debcnof&lt;/code&gt; is a configuration management tool&lt;/li&gt;&#xA;&lt;li&gt;all the questions you get during installing &lt;code&gt;.deb&lt;/code&gt; packages are stored in &lt;code&gt;debconf&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;You can preload answers to those questions to get non-interactive/slient installations&lt;/li&gt;&#xA;&lt;li&gt;needs &lt;code&gt;sudo&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install debconf-utils&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# get configurable values for a package&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo debconf-get-selections &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep mysql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# set values &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;set mysql-server/root_password YOURPASSWORD&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; debconf-communicate&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# sudo debconf-set-selections &amp;lt;&amp;lt;&amp;lt; &amp;#34;mysql-server mysql-server/root_password password YOURPASSWORD&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# echo &amp;#39;mysql-server mysql-server/root_password password YOURPASSWORD&amp;#39; | debconf-set-selections&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# show the list of debconf values configured for a package&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;debconf-show phpmyadmin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;p&gt;&lt;code&gt;debconf&lt;/code&gt; is a configuration management tool for Debain. It let&amp;rsquo;s you pre-load configurations, meaning you set configuration options before instaling a package. The major benefit of this is during scripting, you can pre-configure the values via &lt;code&gt;debconf-set-selections&lt;/code&gt; and avoid entering values in the prompt, getting a non-interactive install.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Image Optimization on Linux Servers using jpegoptim and optipng</title>
      <link>https://aamnah.com/notes/sysadmin/image-optimization-linux-ubuntu-jpegoptim-optipng/</link>
      <pubDate>Fri, 11 Aug 2017 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/image-optimization-linux-ubuntu-jpegoptim-optipng/</guid>
      <description>&lt;p&gt;The idea is to have a script that runs periodically and compresses image files in specified directories&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Optimize images in known directories, e.g. &lt;code&gt;wp-content/uploads&lt;/code&gt; for WordPress, &lt;code&gt;image/catalog/&lt;/code&gt; in OpenCart etc.&lt;/li&gt;&#xA;&lt;li&gt;Only optimize newly added files, instead of redoing the whole folder every time (on every cron run)&lt;/li&gt;&#xA;&lt;li&gt;Setup a cron so it does it on it&amp;rsquo;s own, periodically (e.g. every day)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You being the developer might be conscious of optimizing images before you upload them, but the clients usually aren&amp;rsquo;t. In cases like these, you can optimize the images on the server after the client has uploaded them, without having to bother yourself or the client.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Intro to Rootkit Hunter</title>
      <link>https://aamnah.com/notes/sysadmin/intro-to-rootkit-hunter/</link>
      <pubDate>Fri, 11 Aug 2017 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/intro-to-rootkit-hunter/</guid>
      <description>&lt;p&gt;RKHunter downloads a list of known exploits and then checks your system against the database. It also alerts you if it detects unsafe settings in some common applications.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt upgrade -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Rootkit Hunter - Scan for Rootkits, backdoors and exploits&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;EMAIL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# email for sending logs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SERVER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# server name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;rkhunter&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;wget https://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;tar xf rkhunter-1.4.4.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;sudo rkhunter-1.4.4/installer.sh --install &lt;span class=&#34;c1&#34;&gt;# by default it installs in /usr/local/bin (which is in $PATH)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# confirm install by checking version&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;sudo rkhunter --versioncheck&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;18&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# Pre-run Updates&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;19&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;sudo rkhunter --update &lt;span class=&#34;c1&#34;&gt;# update database&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;sudo rkhunter --propupd &lt;span class=&#34;c1&#34;&gt;# Before running RKH, fill the file properties database (set baseline file properties so that rkhunter can alert us if any of the essential configuration files it tracks are altered)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;21&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;22&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# Scan&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;23&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;sudo rkhunter --check &lt;span class=&#34;c1&#34;&gt;# scan the entire file system&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;26&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;c1&#34;&gt;# Cron&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;touch /etc/cron.daily/rkhunter.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;#!/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;29&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;/usr/local/bin/rkhunter --versioncheck&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;31&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;/usr/local/bin/rkhunter --update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;/usr/local/bin/rkhunter --cronjob --report-warnings-only&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;33&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;) | /bin/mail -s &amp;#39;rkhunter Daily Run (&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;SERVER&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#39; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;EMAIL&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;34&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;}&amp;#34;&lt;/span&gt; &amp;gt; /etc/cron.daily/rkhunter.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;35&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;chmod &lt;span class=&#34;m&#34;&gt;755&lt;/span&gt; /etc/cron.daily/rkhunter.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://rkhunter.sourceforge.net/&#34;&gt;The Rootkit Hunter project&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://rkhunter.cvs.sourceforge.net/viewvc/rkhunter/rkhunter/files/README&#34;&gt;The Rootkit Hunter project: README&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-use-rkhunter-to-guard-against-rootkits-on-an-ubuntu-vps&#34;&gt;How To Use RKHunter to Guard Against Rootkits on an Ubuntu VPS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.tecmint.com/install-rootkit-hunter-scan-for-rootkits-backdoors-in-linux/&#34;&gt;How to Scan for Rootkits, backdoors and Exploits Using ‘Rootkit Hunter’ in Linux&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>SFTP Users for Website directory</title>
      <link>https://aamnah.com/notes/sysadmin/sftp-www/</link>
      <pubDate>Wed, 09 Aug 2017 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/sftp-www/</guid>
      <description>&lt;p&gt;tl;dr&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The &lt;code&gt;ChrootDirectory&lt;/code&gt; must be owned by root. You can enable access to dirs inside the &lt;code&gt;ChrootDirectory&lt;/code&gt; owned by different users&lt;/li&gt;&#xA;&lt;li&gt;The &lt;code&gt;ChrootDirectory&lt;/code&gt; needs &lt;code&gt;755&lt;/code&gt; permissions&lt;/li&gt;&#xA;&lt;li&gt;Add everything to the END OF THE FILE. Or else it won&amp;rsquo;t work&lt;/li&gt;&#xA;&lt;li&gt;Web directories &lt;code&gt;/var/www&lt;/code&gt; need to be owned by &lt;code&gt;www-data&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;what-well-do&#34;&gt;What we&amp;rsquo;ll do&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create a Group for SFTP access&lt;/li&gt;&#xA;&lt;li&gt;Add our users to that SFTP Group&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s what each of those directives do:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install PHP5 on Ubuntu 17.04 Zesty Zapus</title>
      <link>https://aamnah.com/notes/sysadmin/install-php5-php7-ubuntu-zesty/</link>
      <pubDate>Thu, 06 Jul 2017 00:00:01 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-php5-php7-ubuntu-zesty/</guid>
      <description>&lt;p&gt;(Theoretically) You can install both PHP5 and PHP7 and switch between them.. If you only want PHP5, add the repo, install the packages for PHP 5.6 and end it there.&lt;/p&gt;&#xA;&lt;div class=&#34;Post-note Post-note--warn&#34;&gt;&#xA;  &lt;strong&gt;WARNING: &lt;/strong&gt; &lt;br /&gt;&#xA;  &lt;ul&gt;&#xA;    &lt;li&gt;This leads to PhpMyAdmin not working if you install it afterwards..&lt;/li&gt;&#xA;    &lt;li&gt;Both versions working has not been tested in production.&lt;/li&gt;&#xA;    &lt;li&gt;If you check PHP version on system, &lt;code&gt;php --version&lt;/code&gt;, it still shows &lt;samp&gt;PHP 7.0&lt;/samp&gt;&lt;/li&gt;&#xA;  &lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;h4 id=&#34;add-repo&#34;&gt;add repo&lt;/h4&gt;&#xA;&lt;p&gt;There are no PHP 5.x packages in Zesty repositories. Only in the PPA, so you need to add the repo&lt;/p&gt;</description>
    </item>
    <item>
      <title>Securing Wordpress</title>
      <link>https://aamnah.com/notes/sysadmin/securing-wordpress/</link>
      <pubDate>Wed, 05 Jul 2017 00:00:02 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/securing-wordpress/</guid>
      <description>&lt;h4 id=&#34;file-permissions&#34;&gt;File Permissions&lt;/h4&gt;&#xA;&lt;p&gt;The default permission scheme should be:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Folders &lt;code&gt;755&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Files &lt;code&gt;644&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Avoid&lt;/strong&gt; having any file or directory set to 777. &lt;code&gt;777&lt;/code&gt; means global access. Usually only cache files have this permission.&lt;/p&gt;&#xA;&lt;p&gt;Via command line you can run the following commands to change permissions recursively:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For Directories:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;find /path/to/your/wordpress/install/ -type d -exec chmod &lt;span class=&#34;m&#34;&gt;755&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For Files:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;find /path/to/your/wordpress/install/ -type f -exec chmod &lt;span class=&#34;m&#34;&gt;644&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;secured-file-permissions-for-specific-files&#34;&gt;Secured File Permissions for specific files&lt;/h5&gt;&#xA;&lt;p&gt;You should set these permissions&lt;/p&gt;</description>
    </item>
    <item>
      <title>cPanel Web Templates and Skeleton Directory</title>
      <link>https://aamnah.com/notes/sysadmin/edit-cpanel-skel-webtemplates/</link>
      <pubDate>Wed, 05 Jul 2017 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/edit-cpanel-skel-webtemplates/</guid>
      <description>&lt;h3 id=&#34;web-templates&#34;&gt;Web Templates&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/var/cpanel/webtemplates/user/english/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Web templates are default template &lt;code&gt;.tmpl&lt;/code&gt; files that are shown for status pages.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Default Website Page (Has not yet been configured by the domain owner)&lt;/li&gt;&#xA;&lt;li&gt;Account Move (Has moved)&lt;/li&gt;&#xA;&lt;li&gt;Account Suspended (Has been suspended)&lt;/li&gt;&#xA;&lt;li&gt;Connection Selection (Is experiencing a connection or firewall problem)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The files to edit are:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/var/cpanel/webtemplates/user/english/default.tmpl&#xA;/var/cpanel/webtemplates/root/english/moving.tmpl&#xA;/var/cpanel/webtemplates/root/english/redirect.tmpl&#xA;/var/cpanel/webtemplates/user/english/suspended.tmpl&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Web Templates can also be edited via &lt;em&gt;WHM &amp;gt; Account Functions &amp;gt; Web Template Editor&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;skeleton-directory&#34;&gt;Skeleton Directory&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/root/cpanel3-skel&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This directory is what will be used as a skeleton for &lt;strong&gt;new accounts&lt;/strong&gt;. For example if you place an &lt;code&gt;index.html&lt;/code&gt; file in &lt;code&gt;/root/cpanel3-skel/public_html&lt;/code&gt;, and then setup a new account, that account will have a copy of your &lt;code&gt;index.html&lt;/code&gt; in their &lt;code&gt;public_html&lt;/code&gt; directory.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configure SFTP</title>
      <link>https://aamnah.com/notes/sysadmin/sftp-install-configure/</link>
      <pubDate>Tue, 08 Mar 2016 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/sftp-install-configure/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;The &lt;code&gt;ChrootDirectory&lt;/code&gt; must be owned by root. You can enable access to dirs inside the &lt;code&gt;ChrootDirectory&lt;/code&gt; owned by differet users&lt;/li&gt;&#xA;&lt;li&gt;The &lt;code&gt;ChrootDirectory&lt;/code&gt; needs &lt;code&gt;755&lt;/code&gt; permissions&lt;/li&gt;&#xA;&lt;li&gt;Add everything to the END OF THE FILE. Or else it won&amp;rsquo;t work&lt;/li&gt;&#xA;&lt;li&gt;Web directories &lt;code&gt;/var/www&lt;/code&gt; need to be owned by &lt;code&gt;www-data&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;setup-link&#34;&gt;Setup &lt;a href=&#34;http://askubuntu.com/questions/420652/how-to-setup-a-restricted-sftp-server-on-ubuntu&#34; title=&#34;How to setup a restricted SFTP server on Ubuntu?&#34;&gt;link&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Step 1 : Install OpenSSH package if not installed&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install openssh-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Step 2 : Create separate group for SFTP users.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install ionCube Loader on Ubuntu 16.04</title>
      <link>https://aamnah.com/notes/sysadmin/install-ioncube-loader/</link>
      <pubDate>Sat, 13 Feb 2016 00:00:00 +0500</pubDate>
      <guid>https://aamnah.com/notes/sysadmin/install-ioncube-loader/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz &lt;span class=&#34;c1&#34;&gt;# download&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;tar xzvf ioncube_loaders_lin_x86-64.tar.gz &lt;span class=&#34;c1&#34;&gt;# extract&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;php -v &lt;span class=&#34;c1&#34;&gt;# find out PHP version e.g. 7.2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;php -i &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep extension_dir &lt;span class=&#34;c1&#34;&gt;# find out PHP extensions directory&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# copy closest matching ioncube module to your PHP extensions directory&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;sudo cp &lt;span class=&#34;s2&#34;&gt;&amp;#34;ioncube/ioncube_loader_lin_7.0.so&amp;#34;&lt;/span&gt; /usr/lib/php/20160731/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# copy this line to top of php.ini /etc/php/7.2/apache2/php.ini&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# OR copy this to a new configuration file `00-ioncube.ini` and load it (by moving to /etc/php/7.2/apache2/conf.d)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# zend_etxension = path/to/module/file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;zend_extension&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /usr/lib/php/20160731/ioncube_loader_lin_7.0.so&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;tldr&#34;&gt;tl;dr&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;find out PHP version and extensions directory (&lt;code&gt;7.2&lt;/code&gt; and &lt;code&gt;/usr/lib/php/20160731&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;copy closest matching ionCube module to PHP extensions directory (&lt;code&gt;ioncube/ioncube_loader_lin_7.0.so&lt;/code&gt; and &lt;code&gt;/usr/lib/php/20160731&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;copy one line of code to an .ini file and move it to additional .ini files directory (&lt;code&gt;00-ioncube.ini&lt;/code&gt;, &lt;code&gt;zend_extension = /usr/lib/php5/20121212/ioncube_loader_lin_7.0.so&lt;/code&gt; and &lt;code&gt;/etc/php/7.2/apache2/conf.d&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;ionCube Loader is a PHP Encoder used by companies like WHMCS to encode their software code. In order to use the software, you need to install ionCube.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
