Skip to main content

Setup builder

Fills in the blanks of the self-host .env. Everything runs in your browser; nothing you type leaves this page. Secrets are pre-generated for you, and each lives on exactly one line: the stack derives the database connection strings, so changing the password later is a one-line edit.

1 · How you'll reach it
Tailscale, two ways:
Pick any first part; it becomes the tailnet node's name. Your tailnet name is on the admin console's DNS page. Just the name, no https:// (pasting one strips it).Joining your tailnet:

Easiest. No key to mint: on first start, the box asks Tailscale to authorize it and the caddy logs print a one-time link (docker compose logs caddy). Open it, sign in, approve.

Either way, the bundled proxy joins your tailnet as its own node and serves the address above; the box needs no Tailscale install. MagicDNS + HTTPS certificates must be enabled on the tailnet. See Install.

2 · Operator & secretsRegister with this address and your account unlocks the /admin console: instance settings, and the invites that let people in once signup is closed.
Postgres password and JWT secret are generated too (see the preview); those are replaceable. The encryption key is not: lose it and stored integration credentials are gone.
3 · Email (optional)

Password login works; invites become copy-the-link. Magic-link sign-in needs a sender.

4 · Barcode network (recommended)

Open databases cover groceries, books, and music. The barcode network covers the rest: electronics, tools, hardware, craft supplies. You get everyone else's corrections, and yours go back in.

No key yet? Leave it blank. The lines go into your .env commented out, so you can join later without regenerating anything.

5 · Privacy
6 · Advanced
Released builds. Update when you choose, with docker compose pull.One line moves every mount (database, files, modules, TLS certs) onto a data disk, NAS, or an appdata root you already use. Copying that one folder is still a full backup.
.env (you fill this in)
Still need the address, your email. Confirm the key backup in section 2. Copy and Download unlock once these are done.
# Cobblr self-host, generated by the setup builder.

# ── 1. REQUIRED ─────────────────────────────
COBBLR_SITE_ADDRESS=
SUPERADMIN_EMAILS=
POSTGRES_PASSWORD=GQPYyKsgaXZgFtnc3aGbHyXu
JWT_SECRET=3651f65a30d9957d7200b5a602d43eb9c2c82326ad29850addf6d17474b15312
# back the next line up somewhere safe. Unrecoverable:
TENANT_CREDS_ENCRYPTION_KEY=a116a0889b3b9a1f231a75f325d305ef
# set false after your account exists, especially if exposing your instance to the public:
PUBLIC_SIGNUP_ENABLED=true

# ── 2. HTTPS ────────────────────────────────
# the proxy joins your tailnet as its own node; no tailscale on the box
COMPOSE_PROFILES=caddy
COBBLR_TLS_MODE=tsnet
# TS_AUTHKEY left empty: on first start, open the approval link
#   printed in the caddy logs (docker compose logs caddy) and sign in.

# ── 3. EMAIL ────────────────────────────────
# none configured. Password login works;
# invites are copy-the-link.

# ── 4. BARCODE NETWORK ──────────────────────
# Coverage beyond groceries, books, and music, and your corrections
# help everyone else. Get a per-install key at account.cobblr.xyz,
# paste it below, and uncomment both lines. Both, or neither: a URL
# with no key is refused on every scan. Nothing else changes.
# COBBLR_BIDB_URL=https://barcodes.cobblr.xyz
# COBBLR_BIDB_KEY=

# ── 5. PRIVACY ──────────────────────────────
# COBBLR_AI_ENABLED=false
# COBBLR_SCAN_EXTERNAL_LOOKUPS=false

# ── 6. ADVANCED ─────────────────────────────
# COBBLR_VERSION=latest   # or nightly, or a pinned release
# COBBLR_DATA_ROOT=./data  # move all data (db, files, modules, certs) onto a NAS or data disk
# DB connection strings derive from POSTGRES_PASSWORD in the stack;
# set DATABASE_URL / SUPERUSER_DATABASE_URL only for an external Postgres.
docker-compose.yml (same for everyone)Download
# loading docker-compose.yml…
Drop both files in a folder together, thendocker compose up -d. See Install for the full walkthrough.