diff --git a/Makefile b/Makefile
index a327c682..82e36901 100644
--- a/Makefile
+++ b/Makefile
@@ -34,3 +34,12 @@ docs:
dev:
make -C metal cluster env=dev
make -C bootstrap
+
+docs:
+ docker run \
+ --rm \
+ --interactive \
+ --tty \
+ --publish 8000:8000 \
+ --volume $(shell pwd):/docs \
+ squidfunk/mkdocs-material
diff --git a/README.md b/README.md
index 31e683f8..6176f994 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,7 @@
-
-
# Khue's Homelab
-
+**[Features](#features) • [Get Started](#get-started) • [Documentation](https://homelab.khuedoan.com)**
-[![chat](https://img.shields.io/matrix/homelab:matrix.khuedoan.com?style=flat-square&logo=matrix&logoColor=white&label=chat)](https://matrix.to/#/#homelab:matrix.khuedoan.com)
[![tag](https://img.shields.io/github/v/tag/khuedoan/homelab?style=flat-square&logo=semver&logoColor=white)](https://github.com/khuedoan/homelab/tags)
[![document](https://img.shields.io/website?label=document&logo=gitbook&logoColor=white&style=flat-square&url=https%3A%2F%2Fhomelab.khuedoan.com)](https://homelab.khuedoan.com)
[![license](https://img.shields.io/github/license/khuedoan/homelab?style=flat-square&logo=gnu&logoColor=white)](https://www.gnu.org/licenses/gpl-3.0.html)
@@ -13,33 +10,34 @@
This project utilizes [Infrastructure as Code](https://en.wikipedia.org/wiki/Infrastructure_as_code) and [GitOps](https://www.weave.works/technologies/gitops) to automate provisioning, operating, and updating self-hosted services in my homelab.
It can be used as a highly customizable framework to build your own homelab.
-
-
-Current status: **ALPHA**
-
-
+> **What is a homelab?**
+>
+> Homelab is a laboratory at home where you can self-host, experiment with new technologies, practice for certifications, and so on.
+> For more information about homelab in general, see the [r/homelab introduction](https://www.reddit.com/r/homelab/wiki/introduction).
## Overview
-This section provides a high level overview of the project.
-For further information, please see the [documentation](https://homelab.khuedoan.com).
+Project status: **ALPHA**
+
+This project is still in the experimental stage, and I don't use anything critical on it.
+Expect breaking changes that may require a complete redeployment.
+A proper upgrade path is planned for the stable release.
+More information can be found in [the roadmap](#roadmap) below.
### Hardware
![Hardware](https://user-images.githubusercontent.com/27996771/98970963-25137200-2543-11eb-8f2d-f9a2d45756ef.JPG)
- 4 × NEC SFF `PC-MK26ECZDR` (Japanese version of the ThinkCentre M700):
- - CPU: `Intel Core i5-6600T @ 2.70GHz`
- - RAM: `16GB`
- - SSD: `128GB`
+ - CPU: `Intel Core i5-6600T @ 2.70GHz`
+ - RAM: `16GB`
+ - SSD: `128GB`
- TP-Link `TL-SG108` switch:
- - Ports: `8`
- - Speed: `1000Mbps`
+ - Ports: `8`
+ - Speed: `1000Mbps`
### Features
-Project status: **Alpha** (see [roadmap](#roadmap) below)
-
- [x] Common applications: Gitea, Seafile, Jellyfin, Paperless...
- [x] Automated bare metal provisioning with PXE boot
- [x] Automated Kubernetes installation and management
@@ -58,198 +56,172 @@ Project status: **Alpha** (see [roadmap](#roadmap) below)
- [ ] Automated offsite backups 🚧
- [ ] Single sign-on 🚧
-Some demo videos and screenshots are shown here.
-They can't capture all of the project's features, but they are sufficient to get a concept of it.
+Some demo videos and screenshots are shown here (click to enlarge).
+They can't capture all the project's features, but they are sufficient to get a concept of it.
-| [![Deployment](https://asciinema.org/a/xkBRkwC6e9RAzVuMDXH3nGHp7.svg)](https://asciinema.org/a/xkBRkwC6e9RAzVuMDXH3nGHp7) |
-| :--: |
-| Deploy with a single command (after updating the config files of course) |
+| [![][screenshot-01]](https://asciinema.org/a/xkBRkwC6e9RAzVuMDXH3nGHp7) | [![][screenshot-02]](https://www.youtube.com/watch?v=y-d7btNNAT8) |
+| :--: | :--: |
+| Deploy with a single command (after updating the configuration files) | PXE boot |
+| [![][screenshot-03]][screenshot-03] | [![][screenshot-04]][screenshot-04] |
+| Homepage with Ingress discovery powered by [Hajimari](https://github.com/toboshii/hajimari) | Monitoring dashboard powered by [Grafana](https://grafana.com/) |
+| [![][screenshot-05]][screenshot-05] | [![][screenshot-06]][screenshot-06] |
+| Git server powered by [Gitea](https://gitea.io/en-us/) | [Matrix](https://matrix.org/) chat server |
+| [![][screenshot-07]][screenshot-07] | [![][screenshot-08]][screenshot-08] |
+| Continuous integration with [Tekton](https://tekton.dev/) | Continuous deployment with [ArgoCD](https://argoproj.github.io/cd/) |
+| [![][screenshot-09]][screenshot-09] | [![][screenshot-10]][screenshot-10] |
+| Cluster management using [Lens](https://k8slens.dev/) | Secret management with [Vault](https://www.vaultproject.io/) |
-| [![PXE boot](https://user-images.githubusercontent.com/27996771/157303477-df2e7410-8f02-4648-a86c-71e6b7e89e35.png)](https://www.youtube.com/watch?v=y-d7btNNAT8) |
-| :--: |
-| PXE boot |
-
-| ![](https://user-images.githubusercontent.com/27996771/149445807-0f869eb7-d8f5-4fef-ab97-ac281df91a06.png) |
-| :--: |
-| Homepage with Ingress discovery powered by [Hajimari](https://github.com/toboshii/hajimari) |
-
-| ![](https://user-images.githubusercontent.com/27996771/149444871-38889c9d-862f-41ff-8c05-8ece21da3e9c.png) |
-| :--: |
-| Git server powered by [Gitea](https://gitea.io/en-us/) |
-
-| ![](https://user-images.githubusercontent.com/27996771/149445374-58fd0605-bb9a-46e4-81d6-5e584d2b94a9.png) |
-| :--: |
-| Continuous integration with [Tekton](https://tekton.dev/) |
-
-| ![](https://user-images.githubusercontent.com/27996771/149444716-fc0d7282-4cf7-4ddb-97a4-1a3fb47ff2b8.png) |
-| :--: |
-| Continuous deployment with [ArgoCD](https://argoproj.github.io/cd/) |
-
-| ![](https://user-images.githubusercontent.com/27996771/149446631-1c5d056b-1fdc-48e6-96ba-e1abe1762be0.png) |
-| :--: |
-| Monitoring dashboard powered by [Grafana](https://grafana.com/) |
-
-| ![](https://user-images.githubusercontent.com/27996771/149448510-7163310c-2049-4ccd-901d-f11f605bfc32.png) |
-| :--: |
-| [Matrix](https://matrix.org/) chat server powered by [Element](https://matrix.org/docs/projects/client/element) and [Dendrite](https://matrix.org/docs/projects/server/dendrite) |
-
-| ![](https://user-images.githubusercontent.com/27996771/149448896-9d79947d-468c-45c6-a81d-b43654e8ab6b.png) |
-| :--: |
-| Cluster management using [Lens](https://k8slens.dev/) (or you can just use `kubectl`) |
-
-| ![](https://user-images.githubusercontent.com/27996771/149452309-de4a893b-e94c-4ba8-9119-ea87449cf77e.png) |
-| :--: |
-| Secret management with [Vault](https://www.vaultproject.io/) |
+[screenshot-01]: https://asciinema.org/a/xkBRkwC6e9RAzVuMDXH3nGHp7.svg
+[screenshot-02]: https://user-images.githubusercontent.com/27996771/157303477-df2e7410-8f02-4648-a86c-71e6b7e89e35.png
+[screenshot-03]: https://user-images.githubusercontent.com/27996771/149445807-0f869eb7-d8f5-4fef-ab97-ac281df91a06.png
+[screenshot-04]: https://user-images.githubusercontent.com/27996771/149446631-1c5d056b-1fdc-48e6-96ba-e1abe1762be0.png
+[screenshot-05]: https://user-images.githubusercontent.com/27996771/149444871-38889c9d-862f-41ff-8c05-8ece21da3e9c.png
+[screenshot-06]: https://user-images.githubusercontent.com/27996771/149448510-7163310c-2049-4ccd-901d-f11f605bfc32.png
+[screenshot-07]: https://user-images.githubusercontent.com/27996771/149445374-58fd0605-bb9a-46e4-81d6-5e584d2b94a9.png
+[screenshot-08]: https://user-images.githubusercontent.com/27996771/149444716-fc0d7282-4cf7-4ddb-97a4-1a3fb47ff2b8.png
+[screenshot-09]: https://user-images.githubusercontent.com/27996771/149448896-9d79947d-468c-45c6-a81d-b43654e8ab6b.png
+[screenshot-10]: https://user-images.githubusercontent.com/27996771/149452309-de4a893b-e94c-4ba8-9119-ea87449cf77e.png
### Tech stack
-
- Logo |
- Name |
- Description |
-
-
- |
- Ansible |
- Automate bare metal provisioning and configuration |
-
-
- |
- ArgoCD |
- GitOps tool built to deploy applications to Kubernetes |
-
-
- |
- cert-manager |
- Cloud native certificate management |
-
-
- |
- Cloudflare |
- DNS and Tunnel |
-
-
- |
- Docker |
- Ephermeral PXE server and convenient tools container |
-
-
- |
- ExternalDNS |
- Synchronizes exposed Kubernetes Services and Ingresses with DNS providers |
-
-
- |
- Gitea |
- Self-hosted Git service |
-
-
- |
- Grafana |
- Operational dashboards |
-
-
- |
- Helm |
- The package manager for Kubernetes |
-
-
- |
- K3s |
- Lightweight distribution of Kubernetes |
-
-
- |
- Kubernetes |
- Container-orchestration system, the backbone of this project |
-
-
- |
- Loki |
- Log aggregation system |
-
-
- |
- Longhorn |
- Cloud native distributed block storage for Kubernetes |
-
-
- |
- MetalLB |
- Bare metal load-balancer for Kubernetes |
-
-
- |
- NGINX |
- Kubernetes Ingress Controller |
-
-
- |
- Prometheus |
- Systems monitoring and alerting toolkit |
-
-
- |
- Renovate |
- Automatically update dependencies |
-
-
- |
- Rocky Linux |
- Base OS for Kubernetes nodes |
-
-
- |
- Tekton |
- Cloud native solution for building CI/CD systems |
-
-
- |
- Trow |
- Private container registry |
-
-
- |
- Vault |
- Secrets and encryption management system |
-
+
+ Logo |
+ Name |
+ Description |
+
+
+ |
+ Ansible |
+ Automate bare metal provisioning and configuration |
+
+
+ |
+ ArgoCD |
+ GitOps tool built to deploy applications to Kubernetes |
+
+
+ |
+ cert-manager |
+ Cloud native certificate management |
+
+
+ |
+ Cloudflare |
+ DNS and Tunnel |
+
+
+ |
+ Docker |
+ Ephermeral PXE server and convenient tools container |
+
+
+ |
+ ExternalDNS |
+ Synchronizes exposed Kubernetes Services and Ingresses with DNS providers |
+
+
+ |
+ Gitea |
+ Self-hosted Git service |
+
+
+ |
+ Grafana |
+ Operational dashboards |
+
+
+ |
+ Helm |
+ The package manager for Kubernetes |
+
+
+ |
+ K3s |
+ Lightweight distribution of Kubernetes |
+
+
+ |
+ Kubernetes |
+ Container-orchestration system, the backbone of this project |
+
+
+ |
+ Loki |
+ Log aggregation system |
+
+
+ |
+ Longhorn |
+ Cloud native distributed block storage for Kubernetes |
+
+
+ |
+ MetalLB |
+ Bare metal load-balancer for Kubernetes |
+
+
+ |
+ NGINX |
+ Kubernetes Ingress Controller |
+
+
+ |
+ Prometheus |
+ Systems monitoring and alerting toolkit |
+
+
+ |
+ Renovate |
+ Automatically update dependencies |
+
+
+ |
+ Rocky Linux |
+ Base OS for Kubernetes nodes |
+
+
+ |
+ Tekton |
+ Cloud native solution for building CI/CD systems |
+
+
+ |
+ Trow |
+ Private container registry |
+
+
+ |
+ Vault |
+ Secrets and encryption management system |
+
## Get Started
-- [Try it out locally](https://homelab.khuedoan.com/try-locally.html) without any hardware
-- [Deploy on real hardware](https://homelab.khuedoan.com/deployment) for real workload
+- [Try it out locally](https://homelab.khuedoan.com/installation/development.md) without any hardware
+- [Deploy on real hardware](https://homelab.khuedoan.com/installation/production/prerequisites.md) for production workload
## Roadmap
-See [roadmap](https://homelab.khuedoan.com/roadmap.html) and [open issues](https://github.com/khuedoan/homelab/issues) for a list of proposed features and known issues.
+See [roadmap](https://homelab.khuedoan.com/reference/roadmap) and [open issues](https://github.com/khuedoan/homelab/issues) for a list of proposed features and known issues.
## Contributing
Any contributions you make, either big or small, are greatly appreciated.
+Please see [contributing guide](https://homelab.khuedoan.com/reference/contributing) for more information.
+
## License
-> Copyright (c) 2020, 2021, 2022 Khue Doan
+Copyright © 2020 - 2022 Khue Doan
-