Skip to content

Troubleshooting

Common installation issues

Symptom Diagnosis Fix
Fatal: index.html not found under web Wrong cwd or missing assets Run from central/, install web/, or set CENTRAL_WEB_ROOT
Build cannot find module shared Missing sibling checkout Keep federation/shared beside federation/central
Service exits immediately Template parse failure, DB connect failure, invalid session TTL, thumbnails mkdir failure Inspect journalctl -u central -e
Unit active but UI unstyled / missing shell Shared UI root missing Ensure shared/ui discoverable or set FEDERATION_SHARED_UI_ROOT

Configuration mistakes

Symptom Likely mistake Fix
Cards always empty with note about DB Neither CENTRAL_DATABASE_URL nor DATABASE_URL set Configure DSN in /etc/central.env and restart
Startup fatal mentioning session TTL Bad CENTRAL_SESSION_TTL / AUTH_SESSION_TTL Use Go durations (24h)
Links missing prefix under subpath BASE_PATH / X-Forwarded-Prefix mismatch Align route registration env and proxy header
Cookies not marked Secure on HTTPS site Proxy omits X-Forwarded-Proto: https Set/overwrite the header at the TLS edge
Discovery calls wrong host Missing/incorrect X-Forwarded-Host or ProxyPreserveHost Preserve Host; verify origin assembly
Catalog stale for ~45s Expected cache behavior Lower CENTRAL_CATALOG_CACHE_TTL in development

Authentication failures

Symptom Cause Fix
401 authentication required on admin APIs Missing/expired cookie or PAT Sign in again or supply valid Authorization: Bearer
403 admin access required Authenticated non-admin Add user to Administrators / set admin flags via an existing admin
POST /login returns 503 Auth DB not configured Set database URL
Invalid username/password HTML Wrong credentials, disabled user, or username-not-email expectation Confirm username login; check enabled
PAT works for /api/me but other services reject it Downstream service may lack TokenStore Use session cookie for those services until they support PATs
CLI login fails without cookie Central did not set acugis_session Verify Central auth DB and proxy path /login

Database errors

Symptom Cause Fix
Fatal connect/ensure schema Bad DSN, unreachable Postgres, permission issue Test DSN with psql; verify role privileges
Admin APIs 503 authentication database is not configured No DSN or non-Postgres store path Configure Postgres URL
500 with raw Postgres text on unique/FK failures Expected classification for some errors Correct payload (duplicate username/group name, missing FK ids)
Partial schema after failed boot Non-transactional EnsureSchema Resolve error and restart; inspect tables manually

Permission problems

Symptom Cause Fix
Card missing for anonymous users Manual card not public, or resource lacks Public view Set is_public or grant Public view on resource ACL
Imported card invisible to group ACL grant missing / wrong service+resource_key pairing Check resources and resource_permissions
Cannot delete Administrators/Public Protected groups Expected; create a different group instead
systemd cannot write thumbnails Thumbnails outside /opt/central without matching write path Keep dir under /opt/central or adjust unit ReadWritePaths

Deployment issues

Symptom Cause Fix
Apache 404 for /api/catalog Enabled vhost missing catalog ProxyPass Align with ../apache.conf/000-default-le-ssl.conf
Service paths hit wrong backend Proxy order / catch-all / too early Keep service-specific ProxyPass before Central catch-all
Multiple Central instances missing images Local thumbnail disk Use shared storage or sticky single node
High discovery latency Sequential service fetches + cold cache Ensure downstream discovery healthy; tune TTL carefully

Logging locations

Source Location
Central process journald unit central (journalctl -u central)
Local foreground run process stdout/stderr
Apache ${APACHE_LOG_DIR}/error.log, access.log

Useful debugging commands

# service status and logs
systemctl status central
journalctl -u central -f

# liveness
curl -sS http://127.0.0.1:8888/api/health

# anonymous vs authenticated identity
curl -sS http://127.0.0.1:8888/api/me
curl -sS -b /tmp/central.jar -c /tmp/central.jar \
  -X POST http://127.0.0.1:8888/login \
  -d 'username=admin&password=...&next=/'
curl -sS -b /tmp/central.jar http://127.0.0.1:8888/api/me

# catalog warnings
curl -sS -b /tmp/central.jar http://127.0.0.1:8888/api/catalog | jq '.warnings'

# confirm listening socket
ss -ltnp | grep 8888

# database smoke (operator workstation)
psql "$CENTRAL_DATABASE_URL" -c '\dt'
psql "$CENTRAL_DATABASE_URL" -c 'select count(*) from dashboard_users;'

When reporting issues, include the Central journal excerpt, /api/me authentication state, whether a DSN is configured, and any /api/catalog warnings.