Improve setup instructions for robustness
- Check for existing SSH config entry before overwriting - Use --no-perms --no-group in rsync (fixes macOS permission errors) - Explicit mkdir instead of brace expansion (Claude Code compatibility) - Gracefully handle missing server directories (empty server is OK) - Conditional steps for setup_views.sh and CLAUDE.md template
This commit is contained in:
parent
fde1d6fc01
commit
1ac868d787
1 changed files with 36 additions and 20 deletions
|
|
@ -2468,27 +2468,43 @@
|
|||
var serverHostname = {{ server_hostname | tojson }};
|
||||
var webappUrl = serverHostname ? 'http://' + serverHostname : '';
|
||||
|
||||
var sshHost = 'data-analyst';
|
||||
var instructions = 'Set up my AI Data Analyst local environment.\n\n'
|
||||
+ 'Server: ' + serverHost + '\n'
|
||||
+ 'Webapp: ' + webappUrl + '\n'
|
||||
+ 'My username: ' + username + '\n'
|
||||
+ 'SSH key: ~/.ssh/data_analyst_server (already generated)\n\n'
|
||||
+ 'Please do the following:\n'
|
||||
+ '1. Add SSH config entry: Host data-analyst, HostName ' + serverHost
|
||||
+ ', User ' + username + ', IdentityFile ~/.ssh/data_analyst_server\n'
|
||||
+ '2. Test SSH connection (ssh data-analyst echo ok)\n'
|
||||
+ '3. Create project folders: server/ (docs, scripts, parquet, metadata, examples) '
|
||||
+ 'and user/ (duckdb, notifications, artifacts, scripts, parquet, sessions)\n'
|
||||
+ '4. Download everything from server via rsync:\n'
|
||||
+ ' rsync -avz data-analyst:server/scripts/ ./server/scripts/\n'
|
||||
+ ' rsync -avz data-analyst:server/docs/ ./server/docs/\n'
|
||||
+ ' rsync -avz data-analyst:server/examples/ ./server/examples/\n'
|
||||
+ ' rsync -avz data-analyst:server/metadata/ ./server/metadata/\n'
|
||||
+ ' rsync -avz --progress data-analyst:server/parquet/ ./server/parquet/\n'
|
||||
+ '5. Set up Python venv (.venv) with: pandas, pyarrow, duckdb, pyyaml, python-dotenv\n'
|
||||
+ '6. Run bash server/scripts/setup_views.sh to initialize DuckDB\n'
|
||||
+ '7. Create CLAUDE.md from server/docs/setup/claude_md_template.txt '
|
||||
+ '(substitute {username} with my username)\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'
|
||||
+ 'Steps:\n\n'
|
||||
+ '1. SSH config\n'
|
||||
+ ' Check ~/.ssh/config - if a Host entry named "' + sshHost + '" already exists\n'
|
||||
+ ' with a DIFFERENT server, ask me what name to use instead.\n'
|
||||
+ ' Otherwise add:\n'
|
||||
+ ' Host ' + sshHost + '\n'
|
||||
+ ' HostName ' + serverHost + '\n'
|
||||
+ ' User ' + username + '\n'
|
||||
+ ' IdentityFile ~/.ssh/data_analyst_server\n'
|
||||
+ ' StrictHostKeyChecking accept-new\n'
|
||||
+ ' Then test: ssh ' + sshHost + ' 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'
|
||||
+ ' 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'
|
||||
+ ' source .venv/bin/activate\n'
|
||||
+ ' pip install pandas pyarrow duckdb pyyaml python-dotenv\n\n'
|
||||
+ '5. Initialize DuckDB (only if server/scripts/setup_views.sh exists):\n'
|
||||
+ ' bash server/scripts/setup_views.sh\n\n'
|
||||
+ '6. Create CLAUDE.md (only if server/docs/setup/claude_md_template.txt exists):\n'
|
||||
+ ' Copy the template, replace {username} with ' + username + '\n';
|
||||
|
||||
var button = btn || document.getElementById('bootstrapCopyBtn');
|
||||
var origText = button.textContent;
|
||||
|
|
|
|||
Loading…
Reference in a new issue