Windows to Linux Notes

A few of my notes captured over the last couple of years as I transitioned from Windows Server to Linux/Open Source technologies and solutions.

This is a random list.  If anyone knows of a way to sort HTML based on Header Tags let me know!

Docker and LXD

Docker and LXD are complementary, use them both, use them together!

LXD gives you a classic virtual machine experience with all your administrative processes running there, from sshd to syslog, so LXD feels just like a normal machine. All the apps work the same way, operations are identical, and of course you can run your Docker processes inside LXD containers.

By contrast, Docker strips the container down to the naked application process, giving you fantastic density but requiring you to use a dedicated container coordination system like Kubernetes.

The LXD container hypervisor

10x the density of ESX, 25% faster, with zero latency

Move your Linux VMs straight to containers, easily and without modifying the apps or your operations. Canonical’s LXD is a pure-container hypervisor that runs unmodified Linux operating systems and applications with VM-style operations at incredible speed and density.

Apache CouchDB

Data Where You Need It Apache CouchDB™ lets you access your data where you need it by defining the Couch Replication Protocol that is implemented by a variety of projects and products that span every imaginable computing environment from globally distributed server-clusters , over mobile phones to web browsers . Software that is compatible with the Couch Replication Protocol include: PouchDB , Cloudant , and Couchbase Lite . Store your data safely , on your own servers, or with any leading cloud provider.

Apache Maven

Maven is a build automation tool used primarily for Java projects. The word maven means “accumulator of knowledge” in Yiddish.[3] Maven addresses two aspects of building software: First, it describes how software is built, and second, it describes its dependencies. Contrary to preceding tools like Apache Ant, it uses conventions for the build procedure, and only exceptions need to be written down. An XML file describes the software project being built, its dependencies on other external modules and components, the build order, directories, and required plug-ins. It comes with pre-defined targets for performing certain well-defined tasks such as compilation of code and its packaging. Maven dynamically downloads Java libraries and Maven plug-ins from one or more repositories such as the Maven 2 Central Repository, and stores them in a local cache.[4] This local cache of downloaded artifacts can also be updated with artifacts created by local projects. Public repositories can also be updated.


Web sites are made of lots of things — frameworks, libraries, assets, and utilities. Bower manages all these things for you.

Keeping track of all these packages and making sure they are up to date (or set to the specific versions you need) is tricky. Bower to the rescue!

Bower can manage components that contain HTML, CSS, JavaScript, fonts or even image files. Bower doesn’t concatenate or minify code or do anything else – it just installs the right versions of the packages you need and their dependencies.


BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system.


Cobbler is a Linux installation server that allows for rapid setup of network installation environments. It glues together and automates many associated Linux tasks so you do not have to hop between many various commands and applications when deploying new systems, and, in some cases, changing existing ones. Cobbler can help with provisioning, managing DNS and DHCP, package updates, power management, configuration management orchestration, and much more.


Provision from anywhere Bare metal, Amazon EC2, Google Compute Engine, OpenStack, Libvirt, oVirt, VMware, and many other providers allow you to manage a hybrid cloud through Foreman. Configuration An external node classifier, hiera-like parameters, and reports monitoring for Puppet, Salt and Chef are included. Completely ready to tweak host groups in your data center. Monitor hosts Foreman reports will tell you exactly what happened in your nodes, and alert you when things go awry


Heroku is a cloud Platform-as-a-Service (PaaS)supporting several programming languages. Heroku was acquired by in 2010.[1] Heroku, one of the first cloud platforms[citation needed], has been in development since June 2007, when it supported only the Ruby programming language, but has since added support for Java, Node.js, Scala, Clojure, Python, PHP and Go. The base operating system is Debian or, in the newest stack, the Debian-based Ubuntu.


LXC is the well known set of tools, templates, library and language bindings. It’s pretty low level, very flexible and covers just about every containment feature supported by the upstream kernel.


The term “Microservice Architecture” has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.


PHP is a server-side scripting language designed for web development but also used as a general-purpose programming language. Originally created by Rasmus Lerdorf in 1994, the PHP reference implementation is now produced by The PHPGroup.


SBT is an open source build tool for Scala and Java projects, similar to Java’s Maven or Ant. Its main features are: native support for compiling Scala code and integrating with many Scala test frameworks.


Tarball is a jargon term for a tar archive – a group of files collected together as one. The term suggests a ball of tar, the sticky coal derivative used as an adherent and sealant in roofing and other construction work. Tar (for Tape ARchive) is a UNIX command that creates a single file called an archive from a number of specified files or extracts (separates) the files from such an archive. A tar archive has the file suffix .tar. The files in a tar archive are not compressed, just gathered together in one file. A popular archive handler for Windows systems, WinZip, can be used to extract the files from a tar archive. Stuffit Expander, an archive handler used for Macintosh systems, also extracts files from a tar archive.

Node and NPM

Node and NodeJS are the same thing, node is just a shorter way to say Node JS. … nvm (Node version manager) is a command line interface (CLI) to install different versions of nodejs in your machine. Whereas npm (node package manager) is a CLI for managing your node modules (e.g. Creating a package, etc).