Project: Automated Configuration of Packaged Web Applications

Project Details

Presently, more applications are being moved to non self-hosted environments where control over a user's data may occur. Free software web applications have been created to allow users to self-host their web applications and give them more control over their data.

Unfortunately, although these services are available, non-technical users usually cannot have a good experience in getting these web services set up on their own systems in comparison to desktop applications. Many roadblocks exist for them, such as the information programmers and system administrators easily understand. This would include setting up the applications (installation, configuration, and/or databases), backups, and upgrading. This project aims to help fix this.

The goal of this project is to create an application that will install and configure packaged web applications. This application will be controlled by the end user through a web user interface to allow for easy installation and configuration of web applications on Debian systems. To do this, the web interface will send commands to the tool that the mentor is presently creating.

The following will be accomplished with this project:

  1. A tool that will allow 'userops' on a Debian system:

    • The tool will be controlled through a web UI presented to the end user

    • The web interface for the tool will allow for the installation of web applications by users less able to get it set up by themselves and manage upgrades and security.
      • The front-end of the tool will feature an easy to use UI which will run as a Rails application (it may use Plinth or a custom UI depending on what is chosen)
        • To install applications from this interface, the end user will simply select 'install' for the application they have selected and will be able to access information about their server, issue backups, and edit the configuration.
  2. Recipes for configuration:

    • Initially, the tool will support 3 popular web applications. Support will be included for ?OwnCloud or Wordpress (PHP), ?MediaGoblin (Python) or another web application, and Redmine (Ruby, Rails)

      • These will serve as examples for future support of other web applications
    • The recipes will be contained in the project instead of having to download the recipes
    • The tool will run Chef to configure and install the packages with these recipes after a selection to install, remove, or configure is made in the web interface
  3. Patching of Debian packages

    • Some packages may need their config files externalized to /etc/<appname>/conf.d to prevent upgrades from breaking the configuration

      • This will be accomplished with patches to the Debian packages or the upstream project
  4. Documentation:

    • Documentation will be provided to allow others to test and use the tool
    • Documentation for non-technical users so that they can also understand the tool and how to use it
    • Show how to setup an instance of the tool for development purposes and usage
    • Detailed documentation on how the tool functions through the use of code comments and written documentation.
  5. Communicate with the UserOps initiative announced by ?MediaGoblin

  6. Communicate with the maintainers of the packages that will be initially supported by the tool

Project Schedule

[Note:] Code documentation will be done throughout the coding period.