- Docker Engine
- Docker Compose
- Smallstep CA
- OpenLDAP
- PHPLDAPAdmin
- PostgreSQL
- Keycloak
- Jenkins
- Gitea
- Gerrit
- Docker Registry
- Wiki.js
$ docker version
Client:
Version: 20.10.12
API version: 1.41
Go version: go1.17.3
Git commit: 20.10.12-0ubuntu4
Built: Mon Mar 7 17:10:06 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.17.3
Git commit: 20.10.12-0ubuntu4
Built: Mon Mar 7 15:57:50 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.5.9-0ubuntu3.1
GitCommit:
runc:
Version: 1.1.0-0ubuntu1.1
GitCommit:
docker-init:
Version: 0.19.0
GitCommit:
$ docker compose version
Docker Compose version v2.12.2
$ openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
$ java -version
openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment (build 17.0.6+10-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 17.0.6+10-Ubuntu-0ubuntu122.04, mixed mode, sharing)
$ step version
Smallstep CLI/0.23.2 (linux/amd64)
Release Date: 2023-02-07T00:53:54Z
$ step-ca version
Smallstep CA/0.23.2 (linux/amd64)
Release Date: 2023-02-02T23:10:54Z$ git clone https://github.com/vancanhuit/homelab.git
$ cd homelab
$ echo $(tr -dc A-Za-z0-9 < /dev/urandom | head -c 32 | xargs) > ca.pass
# Change wlp3s0 to an appropriate network interface name on each machine
$ ./set-vars.sh wlp3s0 | tee .env
$ export $(cat .env | xargs)
# Internal PKI
$ step ca init --name Homelab \
--deployment-type standalone \
--provisioner ca@home.lab \
--dns ${HOST_IP} \
--address :10443 \
--password-file ./ca.pass
$ sudo step certificate install $(step path)/certs/root_ca.crt
$ mkdir -pv secrets/
$ cp -v $(step path)/certs/root_ca.crt secrets/ca.crt
# Adjust certificate lifetimes before starting:
# https://smallstep.com/docs/step-ca/basic-certificate-authority-operations/#adjust-certificate-lifetimes
$ step-ca $(step path)/config/ca.json --password-file ./ca.pass
# Generate TLS certificates
$ PASSWORD_FILE=./ca.pass ./gen-tls-certs.sh
$ cat > gerrit/etc/secure.config << EOF
[ldap]
password = ${LDAP_ADMIN_PASSWORD}
[httpd]
sslKeyPassword = ${GERRIT_KEYSTORE_PASSWORD}
[accountPatchReviewDb]
url = jdbc:postgresql://db:5432/gerrit?ssl,sslmode=verify-full&user=${POSTGRES_USER}&password=${POSTGRES_PASSWORD}
EOF$ docker compose up -d --build- Users
- Base DN:
ou=users,dc=home,dc=lab. - Object class:
inetOrgPerson.
- Base DN:
- Groups:
- Base DN:
ou=groups,dc=home,dc=lab. - Object class:
groupOfUniqueNames.
- Base DN:
- Users:
- First name:
cn. - Last name:
sn. - Full name:
displayName. - Email:
mail. - Username:
uid. - Password:
userPassword.
- First name:
- Groups:
- Name:
cn. - Membership LDAP attribute:
uniqueMember. - Membership attribute type:
dn. - Membership user LDAP attribute:
uid.
- Name:
- https://www.keycloak.org/docs/latest/server_admin/#_ldap.
- https://docs.gitea.com/usage/authentication.
- https://plugins.jenkins.io/ldap/.
- https://docs.requarks.io/auth/ldap.
- https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#ldap.
- Private root CA certificate can be downloaded via:
https://<HOST_IP>:10443/roots.pem. - LDAP admin:
https://localhost:1443. - Keycloak:
https://<HOST_IP>:2443. - Gitea:
https://<HOST_IP>:3443. - Jenkins:
https://<HOST_IP>:4443. - Gerrit:
https://<HOST_IP>:5443. - Wiki:
https://<HOST_IP>:8443. We need to accesshttp://<HOST_IP>:3000for an initial setup.