Status: idea, building a feature list and looking for cool software

Goals

  • I would like to have a home lab, that is, a local server made for software development tools that hosts one or multiple entire toolchains.

  • It should be possible to set this up automatically - like, if I want to move the installation to another machine (due to hardware problems or if I get better hardware), I do not want to spend a lot of time setting up a dozen programms again. Or if I decide to host everything in the cloud, that should be possible too.

    Cloud hosting is interesting if I want to set up a hobby project for multiple people.

  • Tool mastery: I want to understand & use the tools for professional software development in depth, since all too often the tools have been installed by someone else and I would have to live with ancient versions or bad integration. And I did not have the insight on how to fix / improve the situation. I hope that knowing more about the tools will also help making useful suggestions or at least enable me to debate the merits of making some changes.

Non-Goals

  • Not exposed to the Internet. This is for local software development & running my own containers etc. It would be nice to have the ability to deploy to the cloud, but I do not want to expose a server for security reasons.

    Having to option to do an automated install "in the cloud" is somewhat of a goal.

  • Does not need a 19" server rack etc. Hayden James for example has written an interesting "Home Lab Beginners Guide - Hardware" article. While I can see how having a real server would be fun, for now I just want to fiddle with software here, hardware "just has to work" :)

Current setup

TODO (could be its own article)

Features

(unfiltered wishlist)

  • Git hosting, so a browser UI with project management features, for example via Gitlab (are there alternatives? ).

  • Issue tracker or Kanban board that is integrated with local git projects.

    I want to be able to refer to issues / stories in commits. This would help with projects that run longer than a weekend.

  • It should run docker containers.

    • Use local docker registry

  • It should run Kubernetes pods (via ArgoCD?)

  • It should build projects automatically after commit to git.

  • It should send a mail in case something goes wrong (build)

  • Software quality analysis during the build process (SonarQube?)

  • Hosting for Cinnamon CMS builds

    • I want one stable long-term Cinnamon server. The data in this one should be persistent. (That may be contrary to the goal of having an automated install that allows easy setup - but perhaps it’s just a question of restoring from backup)

    • I want a Cinnamon test server spun up after a commit to the Cinnamon project.

  • Entire software infrastructure (configuration, data) should be backed up automatically & restorable.

  • Host a maven cache (persisted/versioned: I want all the packages to be available, even if maven central no longer hosts a package)

  • Have a persistent collection of (free) JDKs and other SDKs. Not having to search for a free version of Java 6 is nice, in case I ever have to help someone with such an ancient project. Also having the current versions of the software used in the home lab locally available & backed up is also nice.

  • Free open source (I do not mind paying for software, but 3,500$ for self-hosted Artifactory Pro is a bit much for a single developer - or 16,000$ for an application security platform…​)

Software Selection

Git project management

Features:

  • view project in browser

  • tickets / issues

  • hooks for building

  • search

Projects:

Building

TODO (Jenkins?)

Kubernetes

TODO MiniKube? K3s?