Generic software installer for Raspbian

I wrote this little tool to facilitate the installation of software for my NextCloudPi, but it can be used for any Raspbian installation.

With this, I can automate the process of

  • installing new services to my running Raspberry Pis through SSH
  • adding new services to my Raspbian images and generating an image that can be written to the SD card with QEMU as I did in this post.

It features a simple ncurses menu to configure parameters.

My goal is to make it easy for me to have my system up to date. If I write scripts that reproduce my system, I can then more easily upgrade it without having to go through days of configuring things and trying to remember all the steps every time.

I can even leave my defaults stored in this way, so I accomplish both installation and configuration.

As for sharing ready to use images like NextCloudPi, I realized that there’s only so many things you can pack in an image without user interaction such as entering the domain for their private cloud, so I wanted to provide an easy way of setting those things up.

Usage

To install to an image using QEMU

To install directly to a running Raspberry Pi through SSH, omit the image parameter

In order to skip interactive configuration (you can edit the variables at the top of the scripts)

In order to use other than default SSH user and/or password, you can specify it in the same way

For example, in order to install dynamic DNS ( see post )

Note that a text file called config_no-ip.txt will be generated with the configuration that was used.

Installation

The interactive configuration feature requires dialog. For example, in Debian and Ubuntu type

Details

Really, the installation scripts can just be copied into the Raspberry Pi, configured by editing their variables, and executed.

This just helps takes care of the process, and automate it to create images.

It uses the method for running Raspbian on QEMU from this previous post, and it packs the image appending the name of the script to the input image.

Code

github

Humbly sharing things that I find useful [ github | gist ]