# Single Node Installs: Storage and Backup Guidelines

### General storage recommentations for single-node instances
* `/data` is where the standalone deployment installs PostgreSQL data and Element Deployment data. It should be a distinct mount point.
  * Ideally this would have an independent lifecycle from the server itself
  * Ideally this would be easily snapshot-able, either at a filesystem level or with the backing storage

### Adminbot storage:
* Files stored with uid=10006/gid=10006, default config uses `/data/element-deployment/adminbot` for single-node instances
* Storage space required is proportional to the number of user devices on the server. 1GB is sufficient for most servers

### Auditbot storage:
* Files stored with uid=10006/gid=10006, default config uses `/data/element-deployment/auditbot` for single-node instances
* Storage space required is proportional to the number of events tracked.

### Synapse storage:
* Media:
  * File stored with uid=10991/gid=10991, default config uses `/data/element-deployment/synapse` for single-node instances
  * Storage space required grows with the number and size of uploaded media. For more information, see [ESS Sizing](https://ems-docs.element.io/books/element-server-suite-classic-documentation-lts-2310/page/ess-sizing)

### Postgres (in-cluster) storage:
  * Files stored with uid=999/gid=999, default config uses `/data/postgres` for single-node instances
   
### Backup Guidance:

* **Adminbot**:
  * Backups should be made by taking a snapshot of the PV (ideally) or rsyncing the backing directory to backup storage
* **Auditbot**:
  * Backups should be made by taking a snapshot of the PV (ideally) or rsyncing the backing directory to backup storage
* **Synapse Media**:
  * Backups should be made by taking a snapshot of the PV (ideally) or rsyncing the backing directory to backup storage
* **Postgres (in-cluster)**: 
  * Backups should be made by `kubectl -n element-onprem exec -it postgres-synapse-0 -- sh -c 'pg_dump -U $POSTGRES_USER $POSTGRES_DB' > synapse_postgres_backup_$(date +%Y%m%d-%H%M%S).sql`
* **Postgres (external)**:
  * Backup procedures as per your DBA
* **Configuration**:
  * Please ensure that your entire configuration directory (that contains at least `parameters.yml` & `secrets.yml` but may also include other sub-directories & configuration files) is regularly backed up
    * The suggested configuration path in Element's documentation is `~/.element-onpremise-config` but could be anything. It is whatever directory you used with the installer.