Embracing the thin-client nature of a chromebook

May 24, 2017 09:08 · 664 words · 4 minutes read chromebook SBC raspberry development cloud9

Introduction

It started as a brief experiment.

I picked up an inexpensive chromebook (cb3-131, 4GB model) last summer as my well used (and abused) linux netbook had a cracked case and faulty keyboard and was increasingly difficult to use effectively (that’s the family-safe version). My plan was to install crouton/linux on the chromebook (or perhaps GalliumOS) and basically have a new linux laptop. But first, I decided, I’d spend a little time running just chromeOS as an experiment.

Now, some ten months later and my chromebook is still just running the stable channel of pure chromeOS. I still use all my standard linux tools with my chromebook, they just aren’t located on my chromebook.

What started as a brief experiment quickly became just how I work now.

Embracing the thin client

To begin with, the chromebook (and various apps/extensions) easily takes care of several basics: browsing, communications (email, messaging), calendar/appointments, notes, and media (music, movies/videos). The other computing elements I need (such as writing/testing/running code, command line dev and filesystem tools, etc) require either enabling dev mode and installing linux/tools locally (decidedly non-thin), or utilizing external computing resources (on the local network, or in the cloud) with the chromebook as a thin (-ish) client.

While I have and use accounts for cloud development/computing (Digital Ocean, Cloud9), I prefer having my resources on my local network. This gives me greater control and flexibility and is a more cost-effective solution in my case. I have a few local linux servers: my old linux netbook still functions fine as a server, and some inexpensive Single Board Computers (SBCs) form my primary local environment:

  • NAS

    A Raspberry Pi 3 running OpenMediaVault combined with a 5TB drive. This system runs insync to sync my google drive to an NFS export (share) that is mounted by my other servers. This gives me local access to anything on my google drive, and lets me interact with it using familiar filesystem tools (cd, cp, rm, find, ls, grep).

  • Dev Servers

    A Raspberry Pi 3 running Raspbian. This one has taken over the main duties of my old linux netbook and has my familiar dev tools (git, ruby, perl, go, python, nginx, apache, node, etc). This runs a local Cloud9-IDE server which I connect to from my chromebook and have pinned to the shelf. Essentially, a virtual workspace on my chromebook with an editor, file tree, and terminal(s). This Pi3 is also set up to be my cloud-print server.

    The old linux netbook itself, still functioning as a server (also running a Cloud9-IDE server). Largely redundant at this point, but it does provide an intel/x86 system with a little more memory than the arm-based SBCs.

  • Writing Server

    Another SBC (a NanoPi Neo Air) running Armbian, has (among other things) LaTeX, pandoc, and Hugo installed and also runs a Cloud9-IDE server. An instance of this one is also pinned to my chromebook’s shelf as my “writing” workspace.

The Dev and Writing servers mount the NFS export from the NAS, so I can access my google drive from any of these servers.

In addition, I have a few more SBCs (Pi-Zero, NanoPi M3, NanoPi Neo) I can bring online for whatever ad-hoc experimental or testing purposes I might want.

Non-local access

For accessing my local environment when away from my local network, I use tunnels. There are several tunneling services available and I have used ngrok, pagekite, and dataplicity with no issues.

Final thoughts

All of my computers for the past 20+ years have run Linux (of one flavor or another), and aside from browsing and email, most of my time is spent with an editor and terminals. My current chromebook setup, with Cloud9-IDE connections to local linux servers, allows me to work in pretty much the same way as I always have. All in all, it feels more like working on a single linux system (with a chromeOS interface), rather than disparate remote connections.

Have you embraced the thin-client nature of your chromebook?

__END__