Operator manual · Setting up

First-time setup

The first start of your server, claiming it with your phone, the first owner, and what the setup wizard does and does not do.

Before the first start

Your server keeps everything in one folder, data, next to docker-compose.yml. The server sees it as /data. Back up that folder and you have backed up the whole community.

A new server has no admin password, and you do not put one in the .env file. If ADMIN_PASSWORD is there, a new server ignores it, and its log says so once. The community's first owner claims it with a one-time claim code instead: see Claim your community: the address, then your phone, below.

On its first start the server makes the claim code and puts it in a file, data/claim-code.txt, that only the server can read. It never prints the code in the log, because the log is kept for as long as the server runs and gets copied into support requests. beanpool claim shows it to you. You can also read it with: docker compose exec beanpool-node cat /data/claim-code.txt

Servers that still have a password

A server set up before the claim code keeps its admin password exactly as it was. Its first password was the ADMIN_PASSWORD in .env, or one the server made up and put in data/first-admin-password.txt. Read that file with: docker compose exec beanpool-node cat /data/first-admin-password.txt. Until you change the password in Access & Security, every start reminds you in the log that the file is still there, without printing the password. The file is deleted the moment you change it. The server reads ADMIN_PASSWORD only on its first start, so to change the password, use Settings.

What the first start creates

Claim your community: the address, then your phone

The last step of an install, on the server:

docker compose exec beanpool-node beanpool claim

If the community already has an owner, it says so: use beanpool recover instead. To make an owner without a phone claim, give the key the phone shows in Settings: beanpool claim --key KEY --callsign NAME. It prints that owner's break-glass code once, and the community is told.

Open Settings

Go to your server's address followed by /settings, for example https://example.org/settings. While your community has no owner yet, the page shows how to claim it: see A community with no owner yet, below. Once it has one, owners and admins sign in from the BeanPool app: see Signing in to Settings. On a server that still has an admin password, you can also sign in with it. The first time, Settings opens on one card: set up two-factor sign-in with an authenticator app on your phone, and write down the eight backup codes it shows. Settings does not open on the password alone: nothing else opens until the server accepts a code from the authenticator. Do it straight away: until then, tools that send the password with every request are refused too (give them an automation token instead, see Access and security). Then Settings, and the setup wizard, open.

A community with no owner yet

On a new server, the sign-in page at /settings first says This community has no owner yet. and shows how to claim it: see Claim your community: the address, then your phone above.

The page's QR code carries only your server's address, as it is in the browser's address bar, and a short number that names the waiting code. It never carries the code itself: anyone can open this page, so the code is only ever read on the server. The address is written out under the QR code too, so you can check it. Open the page at the address the app will use (for example https://yourtown.beanpool.org/settings), not the server's home-network address. When opened at an unlisted address, the page shows Open this page at … to scan instead of the QR code, because the node answers only at its listed names.

The page checks every few seconds, and the moment the community has an owner it turns into the normal sign-in by itself. It stops checking while the tab is in the background, and checks again when you come back to it. Only when the first check fails does the page show the normal sign-in (a later failure keeps the card), so a server that still has a password can always be signed in to with it.

Below the claim, This server also has an admin password opens the password sign-in, only on a server that still has one. A new server has no admin password, so it does not show it.

The setup wizard

While your community has no members, Settings opens with a setup wizard. You can skip it, and open it again later from Home. It records that you finished it in this browser only.

The first-time setup wizard in Settings
The first-time setup wizard in Settings

What it does:

A step shows ✓ only when it really happened. You can move on from any step without finishing it.

What it does not do yet:

The first owner

The first time you make an invite on an empty server, it creates a member called Admin as the first owner. Nobody holds that member's key, so nobody can sign in as it. It exists so the first invites have someone to come from.

When the first real people have joined, give owner to at least one of them. As the password holder, open People & Safety, open the person and choose 👑 Grant Owner. Settings now has an owner who can sign in from their phone. Keep at least two owners.

On the global community there is no first invite and no Admin member, because invites are switched off there (see Members and invites). The first owner joins like everyone else: in the BeanPool app, through the open door, with 12 secret words or a sign-in. Owners have no new-account limits, whichever way they joined. Then, as the password holder, open People & Safety, open that member and choose 👑 Grant Owner. From then on their phone opens Settings as owner from the app's Manage button.

Then

The whole manual is on your community's server, matching the version it runs: sign in to Settings (your server's address followed by /settings) and press Manual, or the ? beside a screen's title. Only this part of it is on the website. Manual version 117.