First-run Setup
You've installed the binary for your platform — now initialise the server, set the admin password, start it, and activate your license.
1. Initialise and set the admin password
Run --init from a terminal. It creates the data/ directory, generates config.yml from the built-in template, and prompts you to set the administrator password:
./scd-server --init
Create admin account
Username: admin (fixed)
Password (min 8 characters): ********
Confirm password: ********
✓ Admin account created.
The username is always admin. Choose a strong password — you'll use it to log in to the dashboard.
There is no auto-generated password, and nothing is ever written to the log. The server refuses to start until an administrator account exists, so set the password here during --init, before you start the server.
If you're provisioning without a terminal to type into (a build script, a container image), set the password via an environment variable for the --init run instead of being prompted:
SCD_ADMIN_PASSWORD='<strong-password>' ./scd-server --init
2. Edit config.yml
Open config.yml and set the required values:
# Server
port: 3000
host: 0.0.0.0 # Use 0.0.0.0 to allow access from developer machines
# Use 127.0.0.1 if everyone is on the same machine
# Log level: normal | quiet
log_level: normal
host: 0.0.0.0 makes scd-server reachable from other machines on your internal network — not the public internet. Keep it there. If developers need remote access from off-site, use a VPN — see Remote access.
Email (SMTP) and Discord notifications are configured via Admin → Settings → Notifications in the admin UI — not in config.yml.
3. Add your license key
scd-server is licensed with an opaque key of the form scd-lic-…, which it exchanges for an
auto-renewing signed lease. There is no license file to place. You can supply the key in
either of two ways:
-
Now, before starting — set it in the environment for the server process:
export SCD_LICENSE_KEY='scd-lic-…' -
After first login — paste it in the dashboard under Admin → Settings → License (see step 5). This is the usual path.
scd-server needs a valid license to operate. Until you activate one, the dashboard lets an administrator sign in and reach Settings → License, but full access is not granted. See License for the lease model, offline activation, and renewal.
4. Start scd-server
# Default port (3000)
./scd-server
# Custom port
./scd-server --port 8080
# Debug logging
./scd-server --debug
Verify it is running:
curl http://localhost:3000/api/v1/health
# { "status": "ok", ... }
5. Log in and create user accounts
Open the admin UI at http://your-server:3000/admin and log in as admin with the password you set during --init.
If you did not set SCD_LICENSE_KEY, activate your license now under Admin → Settings →
License — paste your scd-lic-… key (or, on an air-gapped install, use the offline activation
flow). See License for details.
Then navigate to Admin → Users to create accounts for your developers. Each account generates a personal CLI token — shown once at creation. See Connecting the CLI for the full developer setup flow.
You can change the admin password any time from Admin → Change password.
Next step
Continue to Connecting the CLI.
For production deployments, set up scd-server as a system service: Running as a service.