Connect
Connect a server
To protect a server, the arcula agent is installed on it. The agent contacts the panel itself: you don't need to open inbound ports on the server. Connecting takes one command on the server and a code in the browser.
Supported: Ubuntu 22.04 and 24.04, Debian 12 on amd64 or arm64 with systemd. Docker is optional: without it the agent finds only what is on the host.
It's better to connect a storage first — without it the protection plan can't be saved. See Connect a storage.
1. Install the agent
Panel → “Servers” → “+ Server”. The panel shows the install line and a “Copy” button. Run the line on the server:
curl -fsSL https://panel.example.com/install.sh | sudo shThe address in the line is your panel's. The script:
- downloads
arculaand restic 0.18.1 for the server's architecture from the panel and checks them againstSHA256SUMS; - puts
arculain/usr/local/bin/arcula, and restic in/var/lib/arcula/bin/restic; - installs and starts the
arcula-agentservice; - runs
arcula login.
If you want to read the script first:
curl -fsSL https://panel.example.com/install.sh -o install.sh
sudo sh install.shIf the agent is already installed, sudo arcula login is enough.
2. Confirm the code
arcula login shows a code and a link and waits:
Open https://panel.example.com/connect and enter the code WDJB-MJHT
or go straight to: https://panel.example.com/connect?code=WDJB-MJHT
Waiting for approval… (the code is valid for 10 minutes)- Open the link. Or enter the code on the “+ Server” page, in the “Confirm the code” step, and click “Next”.
- On the “Code confirmation” page, check the code against the terminal. It also shows the host name, system, IP and request time. Only confirm what you started yourself.
- Set the “Server name” — this is how it will be labelled in the panel. Defaults to the host name.
- Click “Connect”. If the request isn't yours — “Reject”.
The code lives 10 minutes. If it has expired, run sudo arcula login again.
If this machine was already connected, the page warns you: connecting creates a new server, and the old one keeps its history and backups.
Without a terminal, e.g. from cloud-init, the script doesn't wait for confirmation: it shows the code and exits, and the service finishes the connection. Enter the code on the “+ Server” page.
3. First discovery
Right after connecting, the agent scans the server: Docker and Compose projects, volumes, databases, directories in /opt, /srv, /var/www, host settings. It doesn't read secret values. The terminal shows a summary and a link to the plan:
Server linked as "prod-db-01".
The arcula-agent service is started.
Found: 3 projects, 2 databases, 1 needs a decision.
Confirm the protection plan in the panel: https://panel.example.com/servers/<server_id>After “Connect”, the panel opens the “Protection plan” by itself. Until the agent sends what it found, it shows “Waiting for the agent's findings”. This usually takes a minute — the page refreshes by itself.
4. Confirm the plan
Until the plan is confirmed, there are no backups. In the server list such a server shows “Protection plan not confirmed — no backups”.
Choose what to protect, how often and to which storages, and click “Confirm plan”. Details — in Choose what to protect.
The agent gets the plan on its next check-in — it checks in once a minute — creates the repositories in the storages and makes the first backup right away.
Check the server
On the server:
sudo arcula doctorIt checks the permissions on the agent's files, the service, the connection to the panel, the clock, restic, space for staging and access to the plan's storages. It works before the plan is confirmed too.
After the first backup, sudo arcula status shows the same as the server's row in the panel.
The same article is in the panel, under “Help”.