No description
Find a file
2021-07-15 17:09:32 +02:00
dns Setup matrix federation 2021-03-31 01:49:39 +02:00
group_vars Migrate to NordVPN 2020-06-19 19:34:37 +02:00
hardware Split Nix config in modules 2021-07-15 17:09:32 +02:00
inventories Migrate to Hetzner cloud 2019-08-22 05:11:27 +02:00
kubespray@86cc703c75 Migrate to Hetzner cloud 2019-08-22 05:11:27 +02:00
library Deploy ingress, lego and dashboard 2018-09-26 04:40:24 +02:00
modules Split Nix config in modules 2021-07-15 17:09:32 +02:00
packer Use packer to create a base preconfigured base image 2018-10-18 22:46:25 +02:00
roles Move Synapse on hcloud and deploy it with Terraform + NixOs 2021-07-15 13:38:22 +02:00
scripts Provision k8s cluster with Kubespray 2019-04-04 02:25:38 +02:00
ssh_keys Move Synapse on hcloud and deploy it with Terraform + NixOs 2021-07-15 13:38:22 +02:00
terraform Migrate to Hetzner cloud 2019-08-22 05:11:27 +02:00
.envrc Move Synapse on hcloud and deploy it with Terraform + NixOs 2021-07-15 13:38:22 +02:00
.gitignore Move Synapse on hcloud and deploy it with Terraform + NixOs 2021-07-15 13:38:22 +02:00
.gitmodules Provision k8s cluster with Kubespray 2019-04-04 02:25:38 +02:00
ansible-playbook.sh Helper to transfer data to CephFs and setup wikis 2019-09-01 03:41:21 +02:00
ansible.cfg Add flaresolverr 2021-01-11 21:01:36 +01:00
config.tf Move Synapse on hcloud and deploy it with Terraform + NixOs 2021-07-15 13:38:22 +02:00
dns.tf Move Synapse on hcloud and deploy it with Terraform + NixOs 2021-07-15 13:38:22 +02:00
flake.lock Move Synapse on hcloud and deploy it with Terraform + NixOs 2021-07-15 13:38:22 +02:00
flake.nix Split Nix config in modules 2021-07-15 17:09:32 +02:00
get_hcloud_token.sh Migrate to Hetzner cloud 2019-08-22 05:11:27 +02:00
instances.tf Move murmur to hcloud 2021-07-15 15:12:06 +02:00
k8s.yml Migrate to Hetzner cloud 2019-08-22 05:11:27 +02:00
kubespray.yml Cleanup and reorganize vars by environment 2019-04-09 02:43:15 +02:00
manifests.yml Helper to transfer data to CephFs and setup wikis 2019-09-01 03:41:21 +02:00
outputs.tf Move Synapse on hcloud and deploy it with Terraform + NixOs 2021-07-15 13:38:22 +02:00
playbook.yml Move murmur to hcloud 2021-07-15 15:12:06 +02:00
production Migrate to bigger Hetzner server 2019-11-05 03:37:05 +01:00
README.md Update documentation 2018-04-25 19:00:15 +02:00
secrets.enc.yml Move murmur to hcloud 2021-07-15 15:12:06 +02:00
set_environment.sh Migrate to Hetzner cloud 2019-08-22 05:11:27 +02:00
setup_virtualenv.sh Migrate to Hetzner cloud 2019-08-22 05:11:27 +02:00
staging Split into roles and add parameters 2017-12-08 01:45:42 +01:00
terraform.sh Migrate to Hetzner cloud 2019-08-22 05:11:27 +02:00
UNLICENSE Add UNLICENSE 2021-07-08 19:23:39 +02:00
Vagrantfile Add wiki 2017-12-29 03:09:04 +01:00

Self-hosting

This project maintains the entire configuration of our self-hosted services. All configuration should be done exclusively in this repo so that everything is versioned and we have a reliable and esay way to restore the production to any given state. The deployement of the configuration is done with Ansible. Everything respects the basic Ansible principle that your configuration should be idempotent. It means that that the configuration is completely independent of the current state of the server so whatever the state of the server is, the resulting state should always be the same. Because of this you shouldn't hesitate to run Ansible often to make sure that the configuration works and the server is in the expected state. If you run ansible-playbook two times in a row, the second execution should result in no changes to be made.

Deploying the configuration

The following command deploys the complete configuration.

ansible-playbook -i production playbook.yml --ask-vault-pass

For this to work, you must of course have ansible installed and have ssh access to the server(s). You will be prompted for the vault password, ask for it if you don't have it.

Deploying specific parts of the configuration

You probably don't want to deploy the entire configuration every time you make a small change. You can deploy specific roles by providing a list of tags. Checkout playbook.yml to see which tag matches a specific role. Here is an example of deploying only the wiki and the reverse proxy:

ansible-playbook -i production playbook.yml --ask-vault-pass --tags wiki,traefik