Skip to main content

Troubleshooting


Can't reach the server

A developer's scd configure or scd doctor cannot connect to scd-server.

Verify the server is up from the server machine itself:

curl http://localhost:3000/api/v1/health
# { "status": "ok", ... }

Then check from a developer machine:

curl http://your-server-ip:3000/api/v1/health

Common causes:

  • Firewall — the server's firewall is blocking the port. Open it for your internal network only.
  • Wrong bind addresshost: 127.0.0.1 in config.yml restricts scd-server to the local machine. Change to host: 0.0.0.0 if developers are connecting from other machines.
  • Off-site access — developers not on the same network need VPN access. See Remote access.

Port already in use

Port 3000 is already in use. Is scd-server already running?
Change port with: ./scd-server --port <port> or set port in config.yml

Find what is using the port:

# Linux / macOS
lsof -i :3000

# Windows
netstat -ano | findstr :3000

Either stop the conflicting process, or change scd-server's port in config.yml.


Binary won't launch by double-clicking (Windows)

If scd-server-win-x64.exe doesn't start when double-clicked, or another program tries to open it, run it directly from a command prompt instead:

.\scd-server-win-x64.exe

systemd service fails to start

Check the logs first:

sudo journalctl -u scd-server -n 50 --no-pager

ExecStart with quotes — if you see an "exec format error" or "not found" and the unit file has quotes around the ExecStart value, remove them:

# Wrong
ExecStart="/opt/scd-server/scd-server-linux-x64"

# Correct
ExecStart=/opt/scd-server/scd-server-linux-x64

After editing the unit file, always reload before restarting:

sudo systemctl daemon-reload
sudo systemctl restart scd-server

Permission denied — the service user does not own the files:

sudo chown -R scd-server:scd-server /opt/scd-server

Server starts but license is not recognised

scd-server is licensed with a key (scd-lic-…) that it exchanges for a signed lease — there is no license file. Work through the following:

  • Is a key configured? Sign in and open Admin → Settings → License. If no key is set, paste yours there, or set SCD_LICENSE_KEY in the environment and restart.
  • Check the License page health. It shows whether the lease is valid and renewing. A renewal warning usually means scd-server cannot reach api.securecodebydesign.com — check outbound HTTPS and DNS from the server. Short outages are covered by the lease's grace window.
  • "Already activated on another machine"? The license is bound to a different machine fingerprint. Contact support@securecodebydesign.com to release the binding; it re-binds on the next activation.
  • Air-gapped? Use the offline activation flow on the License page — see License.

After setting a key via the environment, restart the service:

sudo systemctl restart scd-server