# Service Decommissioning Checlist

### Purpose

This checklist is to ensure that all aspects of an active service are decommissioned properly, completely, and in the correct order to prevent potential failures elsewhere in the system.

### Steps

- [ ] Determine which monitoring systems need to be disabled, permanently and temporarily to prevent service outage notifications
- [ ] 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 stop the service and disable/remove its nixOS config. Push configuration change to `staging` branch

<p class="callout warning">Do not push this change to `main` until testing that the configuration builds successfully</p>

<p class="callout info">If this service is a docker-compose project, move its folder to ~/Containers/.retired-services</p>

- [ ] If this service is publicly exposed with a TLS cert, remove its entry from traefik's `acme.json` file to prevent unwanted cert renewals
- [ ] If remaining data is unwanted, clear all relevant files from the filesystem i.e. `/srv/<servicename>` and any relevant databases and secrets
- [ ] Push changes from `staging` to `main`
- [ ] If any related monitoring systems were temporarily put into maintenance mode, re-enable them in Uptime Kuma and Healthchecks

### Vikunja 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.json` file 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 `staging` to `main`
- [ ] Re-enable monitoring systems as needed