2c5c21f212
The import form used to ask users to tick "the file is encrypted" before showing the password field, even though the server already decides purely from the envelope magic bytes. Reveal the password field automatically for a .spde file (hide it for .json) so the checkbox is no longer needed.
40 lines
1.9 KiB
HTML
40 lines
1.9 KiB
HTML
{{define "content"}}
|
|
<h1>Backup & migration</h1>
|
|
|
|
<div class="card">
|
|
<h2>Full backup</h2>
|
|
<p class="muted">Download a full backup of all persistent state — the database,
|
|
every domain's DKIM key and the application credentials. Use it to move the
|
|
whole server to a new machine: restore it into a container of the
|
|
<strong>same SelfPost version</strong>, with the same data mount, before first
|
|
start. TLS certificates and the mail queue are not included.</p>
|
|
<p class="muted"><strong>The backup file is a secret</strong> (it contains
|
|
private keys and credentials). Store and transfer it securely and delete it
|
|
once the restore succeeds. Encrypting it below is the simplest way to do that:
|
|
the download is then a <code>.spbk</code> file that only the password opens.</p>
|
|
{{if .BackupErr}}<p class="error">{{.BackupErr}}</p>{{end}}
|
|
<form method="post" action="/backup">
|
|
{{template "encryptfields" .}}
|
|
<button type="submit">Download full backup</button>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>Import a domain</h2>
|
|
<p class="muted">Move a single domain here from another SelfPost instance using
|
|
a domain export file (from that domain's page). Its DKIM key and application
|
|
passwords come across, so the published DNS record needs no change. The export
|
|
file is a secret, like a full backup.</p>
|
|
{{if .ImportErr}}<p class="error">{{.ImportErr}}</p>{{end}}
|
|
<form method="post" action="/domains/import" enctype="multipart/form-data">
|
|
<label for="importfile">Domain export file</label>
|
|
<input id="importfile" name="file" type="file" accept=".json,.spde,application/json" required data-import-file>
|
|
<div class="encrypt-fields" data-import-password-fields>
|
|
<label for="importpw">Password</label>
|
|
<input id="importpw" name="import_password" type="password" autocomplete="off">
|
|
</div>
|
|
<button type="submit">Import domain</button>
|
|
</form>
|
|
</div>
|
|
{{end}}
|