2021-07-17 00:02:28 +07:00
# Prerequisites
2021-08-04 00:10:04 +07:00
2022-07-06 12:33:35 +07:00
## Fork this repository
Because [this project ](https://github.com/khuedoan/homelab ) applies GitOps practices,
it's the source of truth for _my_ homelab, so you'll need to fork it to make it yours:
[:fontawesome-solid-code-fork: Fork khuedoan/homelab ](https://github.com/khuedoan/homelab/fork ){ .md-button }
2022-12-29 23:29:21 +07:00
By using this project you agree to [the license ](../../reference/license.md ).
2022-07-06 12:33:35 +07:00
!!! summary "License TL;DR"
- This project is free to use for any purpose, but it comes with no warranty
- You must use the same [GPLv3 license ](https://www.gnu.org/licenses/gpl-3.0.en.html ) in `LICENSE.md`
- You must keep the copy right notice and/or include an acknowledgement
- Your project must remain open-source
2021-11-28 12:12:53 +07:00
## Hardware requirements
### Initial controller
2022-07-06 12:33:35 +07:00
!!! info
The initial controller is the machine used to bootstrap the cluster, we only need it once, you can use your laptop or desktop
2021-11-28 12:12:53 +07:00
2022-07-06 12:33:35 +07:00
- A Linux machine that can run Docker (because the `host` networking driver used for PXE boot [only supports Linux ](https://docs.docker.com/network/host/ ), you can use a Linux virtual machine with bridged networking if you're on macOS or Windows).
2021-11-28 12:12:53 +07:00
### Servers
Any modern `x86_64` computer(s) should work, you can use old PCs, laptops or servers.
2022-07-06 12:33:35 +07:00
!!! info
This is the requirements for _each_ node
2021-11-28 12:12:53 +07:00
2022-02-22 21:29:55 +07:00
| Component | Minimum | Recommended |
| :-- | :-- | :-- |
| CPU | 2 cores | 4 cores |
| RAM | 8 GB | 16 GB |
| Hard drive | 128 GB | 512 GB (depending on your storage usage, the base installation will not use more than 128GB) |
2022-09-19 02:40:07 +07:00
| Node count | 1 (checkout the [single node cluster adjustments ](../../how-to-guides/single-node-cluster-adjustments.md ) tutorial) | 3 or more for high availability |
2021-11-28 12:12:53 +07:00
Additional capabilities:
- Ability to boot from the network (PXE boot)
- Wake-on-LAN capability, used to wake the machines up automatically without physically touching the power button
### Network setup
2022-07-06 12:33:35 +07:00
- All servers must be connected to the same **wired** network with the initial controller
2021-11-28 12:12:53 +07:00
- You have the access to change DNS config (on your router or at your domain registrar)
2021-11-28 15:08:13 +07:00
## Domain
2022-09-19 02:40:07 +07:00
Buying a domain is highly recommended, but if you don't have one, see [alternate DNS setup ](../../how-to-guides/alternate-dns-setup.md ).
2021-11-28 15:08:13 +07:00
2021-10-20 17:52:39 +07:00
## BIOS setup
2022-07-06 12:33:35 +07:00
!!! info
You need to do it once per machine if the default config is not sufficent,
usually for consumer hardware this can not be automated
(it requires something like [IPMI ](https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface ) to automate).
2021-10-20 17:52:39 +07:00
2022-01-08 10:54:23 +07:00
Common settings:
- Enable Wake-on-LAN (WoL) and network boot
- Use UEFI mode and disable CSM (legacy) mode
- Disable secure boot
Boot order options (select one, each has their pros and cons):
1. Only boot from the network if no operating system found: works on most hardware but you need to manually wipe your hard drive or delete the existing boot record for the current OS
2. Prefer booting from the network if turned on via WoL: more convenience but your BIOS must support it, and you must test it throughly to ensure you don't accidentally wipe your servers
2022-07-06 12:33:35 +07:00
!!! example
Below is my BIOS setup for reference. Your motherboard may have a different name for the options, so you'll need to adapt it to your hardware.
```yaml
Devices:
NetworkSetup:
PXEIPv4: true
PXEIPv6: false
Advanced:
CPUSetup:
VT-d: true
Power:
AutomaticPowerOn:
WoL: Automatic # Use network boot if Wake-on-LAN
Security:
SecureBoot: false
Startup:
CSM: false
```
2021-10-20 17:52:39 +07:00
2021-11-28 15:08:13 +07:00
## Gather information
2021-10-20 17:52:39 +07:00
- [ ] MAC address for each machine
- [ ] OS disk name (for example `/dev/sda` )
- [ ] Network interface name (for example `eth0` )
- [ ] Choose a static IP address for each machine (just the desired address, we don't set anything up yet)