2021-02-14 20:24:19 +01:00
|
|
|
# NixOS Server Example with plops
|
|
|
|
|
|
|
|
This setup shows:
|
|
|
|
|
2023-07-01 00:20:03 +02:00
|
|
|
- how to use a terranix module
|
|
|
|
- how to use 3rd party provision software after terraform.
|
|
|
|
- how to run terranix and terraform
|
2021-02-14 20:24:19 +01:00
|
|
|
|
|
|
|
Setup containing opinionated modules to deploy
|
|
|
|
[NixOS servers](https://nixos.org/)
|
|
|
|
on
|
|
|
|
[hcloud](https://www.hetzner.com/cloud)
|
|
|
|
using
|
|
|
|
[nixos-infect](https://github.com/elitak/nixos-infect)
|
|
|
|
with my
|
|
|
|
[plops](https://github.com/mrVanDalo/plops)
|
|
|
|
provisioning tool for NixOS,
|
2023-07-01 00:20:03 +02:00
|
|
|
which is an overlay on
|
2021-02-14 20:24:19 +01:00
|
|
|
[krops](https://cgit.krebsco.de/krops/about/).
|
|
|
|
|
|
|
|
After server creation,
|
|
|
|
the initial provisioning uploads the
|
|
|
|
nixos-infect
|
|
|
|
script and applys it.
|
|
|
|
After server creation and initialization
|
|
|
|
terranix/terraform generates
|
|
|
|
files used for the "real" provisioning
|
|
|
|
done by plops.
|
|
|
|
|
|
|
|
Of course instead of plops you can use every provsioning tool you like
|
|
|
|
here (e.g. NixOps, Ansible, ... )
|
|
|
|
|
|
|
|
# How to Run
|
|
|
|
|
|
|
|
## What you need
|
|
|
|
|
2023-07-01 00:20:03 +02:00
|
|
|
- a setup [passwordstore](https://www.passwordstore.org/).
|
|
|
|
- a [hcloud token](https://docs.hetzner.cloud/#overview-getting-started)
|
2021-02-14 20:24:19 +01:00
|
|
|
stored under `development/hetzner.com/api-token`
|
|
|
|
|
|
|
|
## Steps
|
|
|
|
|
2023-07-01 00:20:03 +02:00
|
|
|
- `terraform-prepare`: to create ssh keys.
|
|
|
|
- `terraform-build`: to run terranix and terraform do create server.
|
|
|
|
- `terraform-destroy`: to delete server (don't forget that step, or else it gets costly)
|
|
|
|
- `terraform-cleanup`: to delete ssh keys and terraform data.
|
2021-02-14 20:24:19 +01:00
|
|
|
|
|
|
|
## DNS
|
|
|
|
|
|
|
|
define domains with your nameserver and update `jitsi.nix` and `workadventure.nix`.
|
|
|
|
|
2023-07-01 00:20:03 +02:00
|
|
|
- `meet.${domain}` to given ip4 address
|
|
|
|
- `party.${domain}` to given ip4 address
|
|
|
|
- `*.party.${domain}` to given ip4 address
|