Service Provisioning Checlist
Purpose
This checklist is to ensure that all aspects of a new service are provisioned properly, completely, and in the correct order to prevent potential failures elsewhere in the system.
Steps
- Determine any potential impact to any other services; see things to look out for below
- Is this service going to be running on app-01 or a different host?
- Is it going to utilize SSO auth?
- Is it going to need a database? Service files folder in /mnt/data/services on app-01?
- Is it going to need any other secrets?
- Does this service need to be monitored?
- Exposed to the public internet?
- Utilizing a mailserver or ntfy to send notifications?
- Determine the most feasible deployment method
- Docker container
- nixOS module (preferred for reproducibility and programmatic configuration)
Check on repology.org to verify if the nixOS module is up to date with upstream
- If
this service has a MariaDB, PostgreSQL or otherwise database, remove its entry from the nixOS borgmatic config to prevent backup failure If this service is running in a Docker container, tear down its compose project. Otherwise stopthe serviceand disable/remove its nixOS config. Push configuration change tostagingbranch
Do not push this change to main until testing that the configuration builds successfully
If this service isuses a docker-compose project, move its folder to ~/Containers/.retired-services
IfCreatethisandservicestoreisdatabasepubliclysecretsexposedunderwithBitwardenaSecretsTLSManager,cert, remove its entry from traefik'sacme.jsonfile to prevent unwanted cert renewalsIf remaining data is unwanted, clear all relevant files fromusing thefilesystemfollowingi.e.naming convention:/srv/webservices.<servicenameservice name>.db_passand any relevant databases and secretsPush
stagingmainVikunja Copy-Paste Version
- Shutdown/disable needed monitoring services
- Remove/disable borgmatic database backup entry from nixOS to prevent borgmatic failure
- Teardown compose project/remove nixOS service config, push change to
staging- If docker-compose project, move to ~/Containers/.retired-services
- Remove service's entry from traefik's
acme.jsonfile to prevent unwanted cert renewals - If unneeded, clear all remaining files from the filesystem i.e.
/srv/<servicename>and any relevant databases and secrets - Push changes from
stagingtomain - Re-enable monitoring systems as needed