diff --git a/bootstrap/bootstrap.js b/bootstrap/bootstrap.js index 7039d8c..2921607 100644 --- a/bootstrap/bootstrap.js +++ b/bootstrap/bootstrap.js @@ -426,12 +426,16 @@ async function seedDirectory(token, clientId, jumpClientId) { macAddress: HOST_FACTS.mac, os: HOST_FACTS.os, kernel: HOST_FACTS.kernel, + sshPort: 22, }, ['stack-host']); await ensure('service', 'SSO Manager', 'sso-manager', host.id, { address: `https://${SSO_HOST}`, port: 3001, gitRepo: 'https://github.com/theta42/sso-manager-node', subType: 'web', + icon: 'mdi:shield-account', + tagline: 'Home-lab identity and access management.', + requestable: false, }); // Proxy = the node management UI; OpenResty = the data plane every hostname // in the stack actually flows through (80/443). Two faces, two entries. @@ -440,6 +444,9 @@ async function seedDirectory(token, clientId, jumpClientId) { port: 3000, gitRepo: 'https://github.com/theta42/proxy', subType: 'web', + icon: 'mdi:server-network', + tagline: 'Reverse proxy and API gateway.', + requestable: false, }); // OpenLDAP is independently consumed — Linux hosts authenticate against it // (PAM/SSSD, sudoRole, sshPublicKey) and LDAP-native apps bind directly @@ -451,8 +458,12 @@ async function seedDirectory(token, clientId, jumpClientId) { address: `ldaps://${LDAPS_HOST}:636`, port: 389, externalPort: 636, + portMappings: [{ proto: 'tcp', external: 636, internal: 389, comment: 'LDAPS' }], gitRepo: 'https://github.com/theta42/sso-manager-node', subType: 'openldap', + icon: 'mdi:book-open-outline', + tagline: 'LDAP directory for identity.', + requestable: false, }); // Wildcard address: OpenResty fronts every host under the domain (same // */** wildcard convention the proxy's Host records use). Its config lives @@ -462,6 +473,9 @@ async function seedDirectory(token, clientId, jumpClientId) { port: 443, gitRepo: 'https://github.com/theta42/proxy', subType: 'openresty', + icon: 'mdi:router-network', + tagline: 'Data plane.', + requestable: false, }); // SSH jump host service (core component — always registered). @@ -473,6 +487,9 @@ async function seedDirectory(token, clientId, jumpClientId) { port: 3002, gitRepo: 'https://github.com/theta42/jump-host', subType: 'ssh', + icon: 'mdi:ssh', + tagline: 'Secure SSH jump host.', + requestable: false, }); } diff --git a/docs/quickstart.md b/docs/quickstart.md index 65da8f5..2c665ab 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -140,6 +140,13 @@ then converges the stack to your `./config/` values (LDAP service account + admi passwords are reset to the config; the OAuth client is kept if `proxy-secrets.js` already holds its creds). +> **Troubleshooting: "A newer version is available" after running setup.sh?** +> If the UI shows this warning immediately after you ran `./setup.sh`, the latest +> GitHub release tag might not yet be merged into the default tracking branch for +> the submodules, or Docker may have cached the `COPY` step if the `package.json` +> didn't change. You can force a clean rebuild by running +> `docker compose build --no-cache` and then re-running `./setup.sh`. + --- ## Direct LDAP for LDAP-native clients and Linux hosts diff --git a/jump-host b/jump-host index 463111d..1100872 160000 --- a/jump-host +++ b/jump-host @@ -1 +1 @@ -Subproject commit 463111dfd6adab27a323c3ebc518ee601b0c254e +Subproject commit 1100872152ce42e0c842c5a30f6d506ee7029ae1 diff --git a/ldap-client b/ldap-client index ca8132f..31d8fa1 160000 --- a/ldap-client +++ b/ldap-client @@ -1 +1 @@ -Subproject commit ca8132f5ff086be93f6d70fbd477fdafd5d36099 +Subproject commit 31d8fa1229e03d9f3176e554833fa483c02a40a9 diff --git a/setup.sh b/setup.sh index 5c783dd..d382fe8 100755 --- a/setup.sh +++ b/setup.sh @@ -61,6 +61,7 @@ set -euo pipefail cd "$(dirname "$0")" +CFG_ADMIN_PASS="${CFG_ADMIN_PASS:-}" CONFIG_DIR=./config BACKUP_DIR=./backups BACKUP_KEEP="${BACKUP_KEEP:-5}" @@ -1045,7 +1046,7 @@ echo "$JUMP_HOSTS_OUT" | sed 's/^/[setup] /' # ── 8. Summary ─────────────────────────────────────────────────────────────── echo -echo -e "\033[1;34m[setup]\033[0m \033[1;32mDone. Your SSO + proxy stack is up.\033[0m" +printf '\033[1;34m[setup]\033[0m \033[1;32mDone. Your SSO + proxy stack is up.\033[0m\n' echo echo " SSO Manager UI: https://${SSO_HOST} (fronted by the proxy under TLS)" echo " first-run fallback: http://127.0.0.1:${SSO_PORT:-3001}" diff --git a/sso-manager-node b/sso-manager-node index 15b3a42..7782cf8 160000 --- a/sso-manager-node +++ b/sso-manager-node @@ -1 +1 @@ -Subproject commit 15b3a424bcb5b450953c91c4c16d37876312c253 +Subproject commit 7782cf89735083dd04eaed6a7264aeac2c08fcc4