# Personal Infrastructure

DevFeed: [Personal Infrastructure](<https://devfeed.tech/articles/personal-infrastructure-35183.md>)

Original publisher: [Read original article](<https://blog.jessfraz.com/post/personal-infrastructure/>)

Published: 2017-12-16T15:25:24Z

Content type: article

Language: en

Sources: [Jessie Frazelle](<https://devfeed.tech/sources/jessie-frazelle.md>)

Topics: [Homelab](<https://devfeed.tech/topics/homelab.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Jenkins](<https://devfeed.tech/topics/jenkins.md>), [docker registry](<https://devfeed.tech/topics/docker-registry.md>), [Docker Hub](<https://devfeed.tech/topics/docker-hub.md>), [Dockerfile](<https://devfeed.tech/topics/dockerfile.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [make](<https://devfeed.tech/topics/make.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [automation](<https://devfeed.tech/tags/automation.md>), [bash](<https://devfeed.tech/tags/bash.md>), [ci](<https://devfeed.tech/tags/ci.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [docker](<https://devfeed.tech/tags/docker.md>), [docker-hub](<https://devfeed.tech/tags/docker-hub.md>), [docker-registry](<https://devfeed.tech/tags/docker-registry.md>), [dockerfiles](<https://devfeed.tech/tags/dockerfiles.md>), [git](<https://devfeed.tech/tags/git.md>), [github](<https://devfeed.tech/tags/github.md>), [home-lab](<https://devfeed.tech/tags/home-lab.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [make](<https://devfeed.tech/tags/make.md>), [personal](<https://devfeed.tech/tags/personal.md>), [private-registry](<https://devfeed.tech/tags/private-registry.md>)

## AI overview

A personal infrastructure overview describing self-hosted continuous integration with Jenkins, automated Jenkins DSL generation, a Postfix server, and a private Docker registry with image signing, authentication, and vulnerability scanning.

## Source excerpt

This post is kind of like "part two" on my series on all the weird things I do for my personal infrastructure. If you missed "part one", you should check out Home Lab is the Dopest Lab. I run a lot of little things to make my life easier, like a CI, some bots, and a bunch of services just for the lolz. This post will go over all of those. These run scattered across my NUCs and the cloud. Let's start with the most useful. Continuous Integration I host my own continuous integration server. Yes, you guessed it... it's Jenkins. I use the Jenkins DSL plugin to keep everything in sync. You can find all my DSLs in my repo github.com/jessfraz/jenkins-dsl. This has all the configurations for views, keeps forks up to date, mirrors all my repositories to private git (more on this in git), builds all Dockerfiles to push to Docker Hub and my private registry (more on this in private docker registry) and a bunch of maintenance scripts. The Makefile in this repo calls out to bash scripts which generate new DSLs for any new GitHub repos I create. Yep I even generate the automation... There's a bunch of other fun things in there as well that you can discover by poking around yourself. I host my own postfix server alongside Jenkins. You can find the postfix docker image at r.j3ss.co/postfix or the Dockerfile. It's super minimal and less gross than literally every other postfix image in existence. You can run it with: $ docker run --restart always -d \ --name postfix \ --net container:jenkins \ -e "ROOT_ALIAS=root@blah.com" \ -e "RELAY=[smtp-relay.gmail.com]:587" \ -e "TLS=1" \ -e "MY_DESTINATION=...., localhost" \ -e "MAILNAME=blah.com" \ r.j3ss.co/postfix Private Docker Registry I host my own private docker registry with my own notary server and authentication server. Why? Well because about 4 years ago when I started using docker, Docker Hub was super slow and I came to love having my own super fast one. I still push all the images to both Docker Hub and my registry and both are signed