Use ssh_alias and ssh_key from config in bootstrap text instructions
Replace hardcoded 'data-analyst' and '~/.ssh/data_analyst_server' in the copyBootstrapInstructions JS function with values from instance config. Pass ssh_alias and ssh_key to dashboard template context.
This commit is contained in:
parent
13938bf72f
commit
6728da63fb
2 changed files with 14 additions and 11 deletions
|
|
@ -872,6 +872,8 @@ def register_routes(app: Flask) -> None:
|
|||
username_error=username_error,
|
||||
server_host=Config.SERVER_HOST,
|
||||
server_hostname=Config.SERVER_HOSTNAME,
|
||||
ssh_alias=Config.SSH_ALIAS,
|
||||
ssh_key=Config.SSH_KEY,
|
||||
bootstrap_yaml=bootstrap_yaml,
|
||||
telegram_status=telegram_status,
|
||||
desktop_status=desktop_status,
|
||||
|
|
|
|||
|
|
@ -2428,34 +2428,35 @@
|
|||
var serverHostname = {{ server_hostname | tojson }};
|
||||
var webappUrl = serverHostname ? 'http://' + serverHostname : '';
|
||||
|
||||
var sshHost = 'data-analyst';
|
||||
var sshAlias = {{ ssh_alias | tojson }};
|
||||
var sshKey = {{ ssh_key | tojson }};
|
||||
var instructions = 'Set up my AI Data Analyst local environment.\n\n'
|
||||
+ 'Connection details:\n'
|
||||
+ ' Server IP: ' + serverHost + '\n'
|
||||
+ ' Webapp: ' + webappUrl + '\n'
|
||||
+ ' My username: ' + username + '\n'
|
||||
+ ' SSH key: ~/.ssh/data_analyst_server (already generated)\n\n'
|
||||
+ ' SSH key: ' + sshKey + ' (already generated)\n\n'
|
||||
+ 'Steps:\n\n'
|
||||
+ '1. SSH config\n'
|
||||
+ ' Check ~/.ssh/config - if a Host entry named "' + sshHost + '" already exists\n'
|
||||
+ ' Check ~/.ssh/config - if a Host entry named "' + sshAlias + '" already exists\n'
|
||||
+ ' with a DIFFERENT server, ask me what name to use instead.\n'
|
||||
+ ' Otherwise add:\n'
|
||||
+ ' Host ' + sshHost + '\n'
|
||||
+ ' Host ' + sshAlias + '\n'
|
||||
+ ' HostName ' + serverHost + '\n'
|
||||
+ ' User ' + username + '\n'
|
||||
+ ' IdentityFile ~/.ssh/data_analyst_server\n'
|
||||
+ ' IdentityFile ' + sshKey + '\n'
|
||||
+ ' StrictHostKeyChecking accept-new\n'
|
||||
+ ' Then test: ssh ' + sshHost + ' echo ok\n\n'
|
||||
+ ' Then test: ssh ' + sshAlias + ' echo ok\n\n'
|
||||
+ '2. Create project folders (use explicit mkdir, not brace expansion):\n'
|
||||
+ ' mkdir -p server/docs server/scripts server/parquet server/metadata server/examples\n'
|
||||
+ ' mkdir -p user/duckdb user/notifications user/artifacts user/scripts user/parquet user/sessions\n\n'
|
||||
+ '3. Download from server via rsync (use --no-perms --no-group to avoid macOS permission errors).\n'
|
||||
+ ' Skip directories that don\'t exist on the server (rsync exit code 23 = missing source).\n'
|
||||
+ ' rsync -avz --no-perms --no-group ' + sshHost + ':server/scripts/ ./server/scripts/\n'
|
||||
+ ' rsync -avz --no-perms --no-group ' + sshHost + ':server/docs/ ./server/docs/\n'
|
||||
+ ' rsync -avz --no-perms --no-group ' + sshHost + ':server/examples/ ./server/examples/\n'
|
||||
+ ' rsync -avz --no-perms --no-group ' + sshHost + ':server/metadata/ ./server/metadata/\n'
|
||||
+ ' rsync -avz --no-perms --no-group --progress ' + sshHost + ':server/parquet/ ./server/parquet/\n'
|
||||
+ ' rsync -avz --no-perms --no-group ' + sshAlias + ':server/scripts/ ./server/scripts/\n'
|
||||
+ ' rsync -avz --no-perms --no-group ' + sshAlias + ':server/docs/ ./server/docs/\n'
|
||||
+ ' rsync -avz --no-perms --no-group ' + sshAlias + ':server/examples/ ./server/examples/\n'
|
||||
+ ' rsync -avz --no-perms --no-group ' + sshAlias + ':server/metadata/ ./server/metadata/\n'
|
||||
+ ' rsync -avz --no-perms --no-group --progress ' + sshAlias + ':server/parquet/ ./server/parquet/\n'
|
||||
+ ' Note: some folders may be empty if data sync hasn\'t run on the server yet. That\'s OK.\n\n'
|
||||
+ '4. Set up Python venv:\n'
|
||||
+ ' python3 -m venv .venv\n'
|
||||
|
|
|
|||
Loading…
Reference in a new issue