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
Repository for artifacts
Git project management
Features:
-
view project in browser
-
tickets / issues
-
hooks for building
-
search
Projects:
-
Gitlab community edition (has no real search)
Building
TODO (Jenkins?)
Kubernetes
TODO MiniKube? K3s?