Install Hugo on Ubuntu to generate static websites

Whilst there is a .DEB installer to download from the GoHugo sites I get all matter of warnings that the package is of bad quality and I am not comfortable to run these kinds of installers.

Hugo Logo

I rather install from sources in this case which is very straight forward since the main dependencies (largely GO) are in the Ubuntu main repositories.

Install dependencies

sudo apt-get install golang git mercurial python-pygments

Create environment variables

vim ~/.bashrc
#add the following 3 lines
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Update Bash Environment Variables without logging out.

source ~/.bashrc

Install Hugo

go get -u -v github.com/spf13/hugo

Start using Hugo

#create new site
hugo new sitename /path/to/sitename
#change directory to site
cd /path/to/sitename
#create content page
hugo new about.md
#edit content page
vim content/about.md

Good bye Android ? Hello Ubuntu ! Not yet unfortunately …

As a long-term Ubuntu user I am extremely interested in what Canonical and the Ubuntu community are doing on the mobile front. Their convergence strategy (I am testing Snappy Core on IoT devices as well) seems very well thought through and once the the Meizu MX4 phone was released I got myself an invite and ordered a unit. It took a while to ship and then also had to make it’s way down under as Meizu only ship to Europe (and Asia I believe).

Meizu MX4 Ubuntu

Having played with Ubuntu on the phone a while ago on an old Nexus 4 as well as a Nexus 7 unit it was a much more pleasant initial experience and I was really hoping to make this my day-to-day phone. After the initial excitement and a few days of use (including with my main SIM card) however it is clear that we’re not at this stage yet. I am quite prepared to forego some conveniences I got used to on CyanogenMod (Android) over the years, but at this stage there are just too many things not working consistently. On the surface most of the critical components are there, but there is just too many bugs and inconsistencies in heavy usage left to make this a solid experience unfortunately. The single button hardware also doesn’t seem to work with the UI as in a lot of places you are searching for a back button and there ain’t one. And to my surprise the browser feels pretty horrible and lacks a lot of functionality. If the browser would work solidly a lot of the missing apps would be bearable. But this coupled with lack of stability prevent me from taking the plunge I was hoping to make and ‘de-google’ a little more….

It might work if you use your phone for voice calls and occasionally browsing. But as a very heavy user relying on the phone for work the overall stability is some way off.

The Great

  • A phone where you don’t have to jump through unreasonable hoops to get under the hood
  • Refreshingly different & pleasant UI
  • Very developer friendly
  • Terminal – it just works …
  • All Linux CLI programs (armhf) at your fingertips

The Good

  • All pre-installed crap-ware such as Ebay & Amazon apps easy to remove (would be nice not to have them – but they need to make some money)
  • Phone functions are solid and good voice quality
  • Camera on the MX4 is pretty decent
  • Familiar to Ubuntu users
  • Great selection of Reddit clients & German IPTV apps ;-)

The Bad

  • The inbuilt browser is very under-cooked – missing basic functionality plus not very intuitive rendering
  • Sharing between apps not working well – plus lack of apps that support intents – something extremely useful that Android really shines at
  • Calendaring
  • UI still seems sluggish for the computing power available on MX4

The Ugly

  • Stability – lots of apps (web-apps) refuse to display randomly
  • Home screen lock-ups with no other options than reboot
  • Many of the apps that are available are of very questionable quality – mostly websites with wrapper

I will keep a very close eye on what’s happening with the next releases (OTA6 release is due in 5 weeks) and in the meantime will help out with testing & debugging. I have been really pleasantly surprised by the responsiveness of the developers (for example the missing WIFI Hotspot functionality – it will be available next release and the devs sent me an invite to the pre-release after asking a question on Reddit). I don’t want this to be seen as dismissal of Ubuntu on phones. Just some realism as I feel selling this phone as a ‘finished’ product by Meizu is a mistake that could damage the overall aim. I still hope to settle there eventually. The community is working very hard and it’s just a question of time…

Views ‘under the hood’ of Ubuntu Phone

Here are some initial notes on how to get “under the hood” access to the Ubuntu phone.

Enable Developer mode

System Settings –> About this phone –> Developer Mode

Ubuntu Phone - Developer Mode

Install tools on the desktop / notbook device

sudo apt-get install phablet-tools

Connect via SSH

vim .android/adb_usb.ini
#add the following line to allow adb access to device
0x2a45

sudo vim /etc/udev/rules.d/51-android.rules
#Meizu MX4
SUBSYSTEM=="usb", ATTR{idVendor}=="2a45", ATTR{idProduct}=="0c02", MODE="0664" OWNER=""

phablet-shell

Important note: the phone needs to be unlocked for this (and other phablet-tools commands) to work. If the phone is locked you will get a series of adb error messages.

Change Ubuntu Touch Channel

adb shell
sudo system-image-cli --switch ubuntu-touch/rc-proposed/meizu.en

More info on channels here: https://developer.ubuntu.com/en/start/ubuntu-for-devices/image-channels/

Make filesystem writable

DISCLAIMER: Proceed with caution ! You can do some serious damage if you don’t know what you are doing. But on the other hand you have the whole power of apt-get install available to install armhf packages that might be useful.

phablet-config writable-image

Disable writable mode

sudo rm /userdata/.writable_image

Screenshots

Taking screenshots is something I commonly like to do for documentation purposes.

Via commandline

phablet-screenshot

Via phone

Hold volume up and volume down until you hear the picture sound and see the screenshot flash.

In both cases your screenshot will be saved in /home/phablet/Pictures/Screenshots and you can view them using the gallery app or download via USB.

Ringtones

Currently there is no way to change you ringtones in the UI and I fully agree that the focus should be on much more important functions. But I got used to my ringtone and don’t respond to others anymore.

sudo cp /home/phablet/Downloads/ringtones/GoodBadUgly.ogg /usr/share/sounds/ubuntu/ringtones/

Note: the sudo password for the “phablet” user is the same as you set for your screen-lock.

ChromeOS – removing SSH known_hosts from Chromebook

One of the things that is not implemented in the Secure Shell Chrome extension is the ability to remove know_host fingerprints which alert you if the fingerprint for a specific IP address has changed.

However there are times when you upgrade a systems and this need to be done.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
d6:be:12:7e:22:23:c3:e1:56:30:d6:cd:65:b7:ab:42.
Please contact your system administrator.
Add correct host key in /.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /.ssh/known_hosts:7
ECDSA host key for xxxxxxxxxxxxx.yyy.au has changed and you have requested strict checking.
Host key verification failed.
NaCl plugin exited with status code 255.
(R)econnect, (C)hoose another connection, or E(x)it?

Here is how to remove a known host fingerprint (from known_hosts) on a Chromebook.

You can find the index of the offending host entry reported by ssh if the connection fails (see above: “Offending ECDSA key in /.ssh/known_hosts:7″). Then you can open the JavaScript console (CTRL +Shift +J) and type the following into the console.

term_.command.removeKnownHostByIndex(INDEX);
Replace INDEX with the number obviously.

To clear all the known hosts:
term_.command.removeAllKnownHosts();

OpenVPN – fix issues with DNS server assignment (Synology NAS)

Synology NAS systems are great VPN servers for a home or small office. However if you want to connect to the VPN and route all your traffic through the VPN and be able to browse the internet there are a few things you need to change on the Synology server.

Theoretically you should be able to set these options on the client, but I have not managed to get this to work with Synology and judging by the amount of forum threads a lot of other people had the same problem. If somebody has a better way to fix this I would love to know. I don’t like to manually change these config files as I assume they will be overwritten when making changes to the web-interface.

vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf

add the following lines.

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.4.4"
push "dhcp-option DNS 8.8.8.8"

Please note that the DNS option are Google’s public DNS servers as an example, you probably want to use your ISP’s (the one hosting the Synology server that is) DNS IP’s instead.

Please note that this was tested with Synology DSM version 5.2 only and Ubuntu & Android as the main client OS. Please leave comment for other combinations.

Finding Notebook Hardware for Ubuntu – 2015 Edition

Unfortunately it is still much harder than necessary to find notebook hardware to use with Ubuntu (or other Linux variants). This blog is full of past experiences (some of them quite time-consuming) on finding notebook hardware that will work without too much fiddling. This short note is to document my recent research on that front to help others who want to do the same (as there doesn’t seem to be a lot of good current info around).

There are some vendors that do ship with Ubuntu, however they are generally all based in the US and their pre-sales communications are pretty horrible (I am talking to you ZaReason – still waiting for reply email as well as tweet). Then there is Purism Librem, but unfortunately they have still not shipped their 15″ version and I need a tool now. The jury on this is still out and I don’t really have the time to be a guinea-pig. Maybe next time (as I like what they are doing) …

There was one option from one of the top-tier manufacturers (Dell XPS 13 – Developer Edition) which ships with Ubuntu. But as – per usual – NOT in Australia. However there was a lot of conflicting evidence I found that the Windows Version had some issues with current Ubuntu versions (Dell ship 14.04 LTS – which makes sense from their point).

I ended up buying the Lenovo X1 (3rd Generation) and after the install of Ubuntu I have to say this is the first notebook I just had to plug in the Ubuntu USB (Version 15.04 Vivid Vervet 64bit) and install and everything just worked. No fighting with UEFI firmware, no function keys not working and no issues with sound or other drivers. To be fair – there is one thing I noted (which is irrelevant to me) – the fingerprint reader does need some additional driver installed & configured.

It was also the first notebook I didn’t even bother booting up and create a repair disk first. There is no way I would ever restore something to Windows 8 – however if you are not sure that you will stick with Ubuntu – that’s probably not advisable.

Thank you Lenovo for developing a very decent piece of hardware that just works with Ubuntu ! However I would like to note that the recent Superfish debacle http://support.lenovo.com/us/en/product_security/superfish really left a sour taste and nearly made me take Lenovo off the evaluation list.

Some conversations that might be useful:

https://www.reddit.com/r/Ubuntu/comments/37ukqe/dell_xps_13_vs_lenovo_thinkpad_x1_carbon_3rd_gen/
https://www.reddit.com/r/Ubuntu/comments/37t4re/ubuntu_notebook_hardware_available_in_from/

SShuttle – quick and temporary VPN over SSH

Every once in a while you find a gem. One of these for me is SShuttle – until now I have not known about this one.

Sometimes you need to quickly forward all your traffic via a remote server quickly. And while you can do all of this manually using OpenSSH it’s not a quick one-step process (https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding). Dynamic SOCKS5 proxies are great if all you need is browser traffic, but there is always software that won’t play ball with SOCKS.

Use-case: I just been trying to get Ubuntu Make to install Eclipse IDE and the local AARNET download mirror is just refusing to cooperate (https://github.com/ubuntu/ubuntu-make/issues/90). A quick forward to a remote VPS fixed the issue without headaches

Install

sudo apt-get install sshuttle

Run

sshuttle -r username@servername.tld 0.0.0.0/0 -vv

That’s all – it sets up routing & iptable rules transparently and removes them after use. Kudos goes to https://github.com/apenwarr – thank you. A VERY useful utility !!!

Source link: https://github.com/apenwarr/sshuttle

Installing Ubuntu Phone (Touch) on Nexus 7 LTE

ubuntu phone

Add SDK repository

sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
sudo apt-get update
sudo apt-get install ubuntu-device-flash

Enable USB Debugging on the device

  1. Make sure you have developer mode enabled (see http://developer.android.com/tools/device.html if you are unsure).
  2. Navigate to Settings > Developer options
  3. Enable USB Debugging. When a device is connected, you will be prompted in Android to authorize it.

Unlock Bootloader

adb reboot bootloader
fastboot oem unlock
fastboot reboot

Check that you have the right device

adb shell grep ro.product.name /system/build.prop > mydevicedata \
&& adb shell grep ro.product.device /system/build.prop >> mydevicedata \
&& adb shell grep build.id /system/build.prop >> mydevicedata

ro.product.name=razorg
ro.product.device=deb
ro.build.id=KTU84P

Check which channels are available

ubuntu-device-flash --server="http://system-image.tasemnice.eu" query --list-channels --device=deb

ubuntu-device-flash –server=”http://system-image.tasemnice.eu” query –list-channels –device=deb
ubuntu-touch/ubuntu-rtm/14.09
ubuntu-touch/ubuntu-rtm/14.09-proposed
ubuntu-touch/utopic
ubuntu-touch/utopic-proposed
ubuntu-touch/vivid
ubuntu-touch/vivid-proposed
ubuntu-touch/devel (alias to ubuntu-touch/vivid)
ubuntu-touch/devel-proposed (alias to ubuntu-touch/vivid-proposed)
ubuntu-touch/ubuntu-rtm/devel (alias to ubuntu-touch/ubuntu-rtm/14.09)
ubuntu-touch/ubuntu-rtm/devel-proposed (alias to ubuntu-touch/ubuntu-rtm/14.09-proposed)

In my case I am going for the currently stable ‘ubuntu-touch/vivid’ channel.

Install Ubuntu Touch

ubuntu-device-flash --server="http://system-image.tasemnice.eu" touch --channel="ubuntu-touch/vivid" --bootstrap

References
Ubuntu Devices: https://wiki.ubuntu.com/Touch/Devices

Paperless Office using the Raspberry Pi

This is a follow-up on an older blog using Ubuntu.

r by rosmary, on Flickr
Creative Commons Creative Commons Attribution 2.0 Generic License   by  rosmary 

For this purpose I used a Fujitsu ScanSnap S1300i scanner as I really like the features of this series (full duplex scan as well auto document feeder as well for around $250). It’s document feeder is not a good as the S1500 we have in the office, but very compact and can be powered from USB hub.

Raspberry Pi Prerequisites

Since this will be a purely headless install designed to sit in a corner behind the scanner I am using a Base Raspian (Debian Wheezy) install (I personally like the clean minimal install via https://github.com/debian-pi/raspbian-ua-netinst the best).

apt-get install sudo vim wget wput libusb-dev build-essential git-core

Add non-privileged user account(s)

adduser USERNAME
adduser USERNAME sudo
groupadd scanner
usermod -a -G scanner USERNAME

Install Sane

The version of sane from the Raspbian repos is not working with the Fujitsu ScanJet range and needs to be built from source.

git clone git://git.debian.org/sane/sane-backends.git
cd sane-backends
BACKENDS=epjitsu ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make install

Install S1300i Driver

You need to get the driver file (‘1300i_0D12.nal’) from the CD that came with the scanner. If you still have access to a CDROM drive that is. :(

mkdir -p /usr/share/sane/epjitsu/
cp 1300i_0D12.nal /usr/share/sane/epjitsu/

Check /etc/sane.d/epjitsu.conf and see if the following line is there (in my case it was already created by sane build).

# Fujitsu S1300i
firmware /usr/share/sane/epjitsu/1300i_0D12.nal
usb 0x04c5 0x128d

sane-find-scanner -q

found USB scanner (vendor=0x04c5 [FUJITSU], product=0x128d [ScanSnap S1300i]) at libusb:001:004
found USB scanner (vendor=0x0424, product=0xec00) at libusb:001:003

scanimage -L

device `epjitsu:libusb:001:004′ is a FUJITSU ScanSnap S1300i scanner

Copy libsane rules from the sane build directory to udev rules.
sudo cp sane-backends/tools/udev/libsane.rules /etc/udev/rules.d/60-libsane.rules

Logout and log in a the non-privileged user account previously created.

If the scanimage -L command works as above you have fully configured the scanner to work under that user account.

Start saned on boot-up

Edit the /etc/rc.local file and add the following line before the ‘0’ line to ensure saned is running as the non-privileged user when you have to reboot.

saned -a USERNAME

Installing Conversion Tools

sudo apt-get install imagemagick bc exactimage pdftk tesseract-ocr tesseract-ocr-eng unpaper

You can add other languages such as tesseract-ocr-deu if you require OCR support for those.

Scan to Repository Script

The script is hosted on Github: https://github.com/leogaggl/misc-scripts/blob/master/scan2repo.sh

#!/bin/bash
# Thanks to Andreas Gohr (http://www.splitbrain.org/) for the initial work
# https://github.com/splitbrain/paper-backup/
OUT_DIR=~/scan
TMP_DIR=`mktemp -d`
FILE_NAME=scan_`date +%Y%m%d-%H%M%S`
LANGUAGE="eng"
echo 'scanning...'
scanimage --resolution 300 \
--batch="$TMP_DIR/scan_%03d.pnm" \
--format=pnm \
--mode Gray \
--source 'ADF Duplex'
echo "Output saved in $TMP_DIR/scan*.pnm"
cd $TMP_DIR
# cut borders
echo 'cutting borders...'
for i in scan_*.pnm; do
mogrify -shave 50x5 "${i}"
done
# check if there is blank pages
echo 'checking for blank pages...'
for f in ./*.pnm; do
unpaper --size "a4" --overwrite "$f" `echo "$f" | sed 's/scan/scan_unpaper/g'`
#need to rename and delete original since newer versions of unpaper can't use same file name
rm -f "$f"
done
# apply text cleaning and convert to tif
echo 'cleaning pages...'
for i in scan_*.pnm; do
echo "${i}"
convert "${i}" -contrast-stretch 1% -level 29%,76% "${i}.tif"
done
# Starting OCR
echo 'doing OCR...'
for i in scan_*.pnm.tif; do
echo "${i}"
tesseract "$i" "$i" -l $LANGUAGE hocr
hocr2pdf -i "$i" -s -o "$i.pdf" < "$i.html"
done
# create PDF
echo 'Converting PDF...'
pdftk *.tif.pdf cat output "$FILE_NAME.pdf"
wput $FILE_NAME.pdf ftp://uid:pwd@scanner.domain:21/Alfresco/scans/
cp $FILE_NAME.pdf $OUT_DIR/
rm -rf $TMP_DIR

Thanks go to Andi Gohr @ Splitbrain for the excellent blog that helped me to get over the sane problems and also gave me some ideas to make the scan script better (as unpaper was not doing such a good job): http://www.splitbrain.org/blog/2014-08/23-paper_backup_1_scanner_setup

Install Ubuntu 14.04 on a Chromebook

There are plenty of sites out there that give advise on this topic, unfortunately most of them are highly ad-infested to the point of being unreadable as well as only containing single bit rather that an overall picture. This is a collection of useful links to source materials as well as steps necessary to install.

Resource Links

Crouton Github: https://github.com/dnschneid/crouton – Thank you David Schneider for the excellent work !!!
Developer Info for Chromebooks: https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices

Put Cromebook into “developer mode”

  1. Back up any data as the process wipes the system
  2. Create a restore image for Chrome OS (install the Restore Image Chrome Extension for this task)
  3. Enter Developer Mode – hold down ESC and Refresh (F3) keys and press the Power button

Download Crouton Script

Download link for installer: https://raw.githubusercontent.com/dnschneid/crouton/master/installer/crouton

Installing Crouton

CTRL+Alt+t to open Cronos Prompt + type “shell” to enter proper bash shell.

To see the list of supported releases:
sh -e ~/Downloads/crouton -r list
To see a list of the supported desktop envoironments (target names):
sh -e ~/Downloads/crouton -t help
I generally install LXDE on ‘resource-challenged’ devices.

shell
sudo sh -e ~/Downloads/crouton -r RELEASENAME -t TARGETNAME -e

The ‘-e’ at the end is optional to encrypt the chroot. Which is probably a good idea as the Chromebook in developer mode is completely open and allows any user to access. If you do not specify the Release it defaults to Ubuntu 12.04 (precise)

My default install would be:
sudo sh -e ~/Downloads/crouton -r trusty -t lxde -e

Removing Crouton

The proper way to remove the chroot environment created by Crouton is as follows

sudo delete-chroot CHROOTNAME

CHROOTNAME could be ‘precise’ or ‘trusty’ depending on the installed version and can be found by

ls /mnt/stateful_partition/crouton/chroots/

Run Ubuntu

Depending on your installed shell.
sudo startlxde

Replace with ‘startxfce4′ or ‘startkde’ or ‘startunity’ depending on your target release.

CyanogenMod 12 on Sony Xperia Z2

Just a quick update of the previous article on “Sony Xperia Z2 upgrading to CyanogenMod 11“.

One thing is that CM now included the custom recovery and you do not need to download any other custom recoveries !

Download the CM 12 ZIP file for Sony Xperia Z2 (sirius) and extract the ‘boot.img’ file

Download link: https://download.cyanogenmod.org/?device=sirius

Get the device into fastboot (bootloader mode)

fastboot -i 0xfce flash boot boot.img
fastboot reboot

Install CyanogenMod

Choose the “Install zip from sdcard –> Install from sideload” option

adb sideload cm-12-20150219-NIGHTLY-sirius.zip

After the install has finished choose the “Reboot system now” option.