Storages
Storages
A storage is an S3 bucket at any provider: Hetzner, Scaleway, Wasabi, AWS, MinIO and other S3-compatible ones. The storages are yours: arcula puts encrypted backups there and watches over them.
What arcula puts in the bucket
Inside the storage prefix, arcula uses only two places:
arcula/<server id>/— the server's restic repository, a separate one for each server in each storage. Each has its own password, created by the panel;.arcula-check/— test objects of the access check.
The repository is plain restic: you can open it without arcula, with the password and keys from the recovery kit.
How many storages
Two is better — at different providers and in different accounts. Then a provider outage, a blocked account or a lost bucket still leaves the second copy.
- In a server's plan, one storage is primary, the others are secondary. Uploads to them are the same; each has its own queue.
- The “Account” field when connecting is a note for yourself. If two storages have the same account, the panel warns: “… are in the same account: if the account is blocked, both copies are lost.” The plan shows “independent copies: N”.
Whose key
When connecting, you choose “Whose key”:
| Mode | How | What a compromised server can do |
|---|---|---|
| “One for all servers” | All servers get the storage key | Delete the backups of all servers in this storage |
| “Each server has its own” | At the provider, a key is created for each server with access only to its folder arcula/<server id>/ | Delete only its own backups |
An own key makes sense if the provider supports per-prefix keys. If keys can only cover the whole bucket, there's no isolation — then “One for all servers” is simpler.
Server keys are set after connecting: storage → “Connection” → “Server keys” → “Set key”. The panel checks the key in the server's folder before saving. Until there is a key, this server's backups don't go here: “no key set for the server — backups aren't sent here”. The key entered when connecting stays with the panel — for checks, measurements and cleanup.
To change the mode — “Connection” → “Change mode”. Changing the key or the mode creates a new plan revision for all servers of the storage: agents get the new access on their next check-in.
No deletion protection
The agent writes to S3 itself, directly, with the storage key or its own key. The same key can also delete. So anyone who gets root on a server can delete backups:
- with “One for all servers” — of all servers in this storage;
- with “Each server has its own” — only of this server.
This applies to every storage in the server's plan: the agent gets access to all of them. A second storage saves you from a provider outage, but not from a compromised server.
arcula doesn't build an intermediary between agents and S3 that would forbid deletion — this is a deliberate decision. Deletion protection is on the storage owner's side, at the provider. arcula doesn't configure or check it; the “Connection” tab only shows S3's answers about versioning and Object Lock, as they are. The panel says this plainly: “Deletion protection — none”.
Two more consequences:
- the panel holds storage keys with delete rights — cleanup and data deletion use them. Compromising the panel together with its master key opens all storages;
- if you disconnect a server, its S3 keys stay on it. The panel tells you what to rotate: with a shared key — the storage key, which all its servers have; with an own key — this server's key.
Limit and “Lasts for”
The limit is your budget in the panel, not the provider's quota: S3 has no common way to find out the quota. It's set when connecting, or on the “Connection” tab → “Limit”.
- Without a limit, the panel shows only the size and growth per day: “no limit”.
- With a limit — “Used”: how much of the limit, a bar and how much is left.
- “Lasts for” — when the space up to the limit runs out at the current growth. How it's calculated and what “not enough data” means — Space and “Lasts for”.
- 90% used or more, or less than 30 days left — a warning.
Backups themselves don't stop when space runs short. Only cleanup frees space; while it's off, used space only grows.
Data that isn't ours
You can also connect a bucket that already has something in it: files, old backups, other restic repositories. Ours is only arcula/<ids of this panel's servers>/ and .arcula-check/. Everything else is “not ours”, including another panel's arcula/ directory.
- arcula never writes, changes or deletes data that isn't ours — it only counts its size.
- When connecting, you see how much data isn't ours and which restic repositories were found.
- “Used” is only our data. Data that isn't ours is shown separately: “1.2 TB of data that isn't ours — arcula doesn't touch it.” This is a fact, not a problem.
- By default the limit is counted over our data. When connecting, you can check “count the limit over the whole bucket, including data that isn’t ours”.
- If the bucket has another panel's
arcula/directory and it isn't your previous panel, choose another prefix.
Connect and disconnect
- “Storages” → “+ Storage” → “Check” → “Connect”. Without list, read and write you can't connect: backups won't go there.
- For servers to start writing here, add the storage to the server's plan, in the “Where to store” block.
- “Disconnect storage” — only if it isn't in any plan. The data in the bucket stays.
- “Disconnect and delete data” — after confirmation with a password or passkey. Only the repositories of this panel's servers and
.arcula-check/are deleted; data that isn't ours stays. Deleted data can't be recovered.
The same article is in the panel, under “Help”.