Optional S3 Storage

Version: Snotic Self-Hosted 0.1.30~rc1 | Status: Early Access

S3 is optional. Local encrypted backup and restore do not require AWS. Install AWS CLI from the server's approved package source before enabling S3.

Credential modes

Stored static credentials

Backward-compatible Self-Hosted mode. Snotic encrypts the configured access key and secret key using /etc/hipanel/secrets.key. Use a dedicated, least-privilege IAM identity and rotate it through the Storage page.

EC2 instance role

Uses the standard AWS CLI credential provider chain. Snotic stores no access key, secret key, session token, or metadata-service credential. Enter only the approved bucket and Region in the browser.

Prefix compatibility

The application always adds a case-sensitive HiPanel/ root. Configuration stores only the suffix.

For example, configured suffix application produces the effective namespace:

HiPanel/application/

IAM and lifecycle policies must target the effective namespace. Do not put HiPanel/application into s3_prefix, because that would duplicate the root. The rc1 browser UI displays the configured suffix but does not edit it. To use a suffix, set s3_prefix in /etc/hipanel/config.json before saving storage settings, then restart hipanel.service. Leave it empty to use the HiPanel/ root directly.

sudo systemctl restart hipanel.service
curl --fail --silent --show-error http://127.0.0.1:8080/readyz

The object families are:

Purpose Effective key pattern
Connection probe HiPanel/<suffix>/probe/probe-<unique-id>
Site registry HiPanel/<suffix>/registry/sites.json
Site backups HiPanel/<suffix>/<domain>/<backup-name>
Restore lookup Lists HiPanel/<suffix>/<domain>/ and downloads the selected object
Retention pruning Lists the same domain prefix and deletes backups older than the configured count

The connection probe performs bounded list, put, get, content comparison, and delete operations. Its temporary object is removed when the probe completes.

Configure in the browser

Danger

On an application with no registered sites and no prior S3 restore marker, Save Storage runs the connection probe and automatically queues an S3 bootstrap after that probe succeeds. The bootstrap can restore the remote registry, site files, databases, backups, and certificates. Before saving, confirm the bucket and effective prefix belong to this installation and keep the host isolated from user traffic until recovery is verified.

  1. Open Storage.
  2. Select the credential mode.
  3. Enter the bucket and Region. Confirm the displayed S3 configuration shows the intended prefix.
  4. For static mode, enter the dedicated access and secret keys. Leaving an existing credential field empty preserves its stored value.
  5. Select Save Storage. If an automatic bootstrap is queued, monitor it to a terminal success or failure and verify restored state before continuing.
  6. Select Test Connection and require every list/put/get/delete check to pass when no bootstrap is running.

Grant only the required bucket-level listing and object get/put/delete access under the effective prefix. Do not grant account-wide S3 administration.

Danger

Queue S3 bootstrap restore after save forces that destructive recovery even when a restore marker or non-empty site store would normally prevent it. It is not a connectivity test. Use it only under an approved recovery plan with a separately confirmed destination.

For an intentional empty-host recovery after configuration is reviewed:

sudo /opt/hipanel/bin/hipanel recovery bootstrap -config /etc/hipanel/config.json -confirm restore-from-s3

The command refuses an already-restored or non-empty local state unless -force is also supplied. Treat -force as a separate destructive approval.