{"id":"697c9f09090375fa10a230f9","title":"2026 01 30 Environment Setup Guide","path":"how-to/technical-articles/2026-01-30-environment-setup-guide","contentMarkdown":"# 30-Jan-2026 — Environment Setup Guide\n\nThe Environment Setup page allows administrators to create complete NGX-Ramblers environments for new Ramblers walking groups. This guide walks through the wizard interface and explains each step.\n\n## Accessing Environment Setup\n\nNavigate to **Admin > Environment Setup** from the main menu.\n\nYou'll see two options:\n- **Create New Environment** - Set up a brand new environment for a Ramblers group\n- **Manage Existing Environment** - Resume setup, update, or destroy an existing environment\n\n---\n\n## Creating a New Environment\n\n### Step 1: Group Selection\n\nThis step validates your Ramblers API credentials and lets you select your walking group.\n\n1. **Enter your Ramblers API Key**\n   - Obtain this from the Ramblers volunteer portal\n   - Click \"Validate API Key\" to verify it works\n\n2. **Search for your group**\n   - Once validated, enter your group name or code in the search box\n   - Select your group from the search results\n   - The system will display group details including:\n     - Group name and code\n     - Area name and code\n     - Contact information\n\n3. **Review group information**\n   - Verify the displayed information is correct\n   - Click \"Next\" to proceed\n\n### Step 2: Service Configuration\n\nConfigure the external services required for your environment.\n\n#### MongoDB Database\n\nYour environment needs a MongoDB database. You can:\n- Use MongoDB Atlas (recommended) - free tier available\n- Use an existing MongoDB instance\n\nEnter your connection details:\n- **Cluster**: The cluster hostname (e.g., `cluster0.abc123.mongodb.net`)\n- **Username**: Database username\n- **Password**: Database password\n- **Database**: Database name (e.g., `ngx-ramblers-yourgroup`)\n\nClick \"Test Connection\" to verify the database is accessible.\n\n#### AWS S3 Storage\n\nFile storage for images, documents, and backups.\n\nIf you have AWS credentials with admin access:\n- Leave fields blank - the wizard will create resources automatically\n- S3 bucket and IAM user will be provisioned for you\n\nIf you have existing AWS credentials:\n- Enter the Access Key ID\n- Enter the Secret Access Key\n- Enter the Bucket name\n- Enter the Region\n\n#### Brevo Email Service\n\nFor sending transactional emails (password resets, notifications).\n\n- Enter your Brevo API Key\n- Obtain this from your Brevo account settings\n\n#### Google Maps (Optional)\n\nFor displaying walk routes and meeting point maps.\n\n- Enter your Google Maps API Key\n- Required for map features to work\n\n#### OS Maps (Optional)\n\nFor displaying Ordnance Survey maps.\n\n- Enter your OS Maps API Key\n- Provides UK-specific mapping\n\n#### reCAPTCHA (Optional)\n\nFor spam protection on public forms.\n\n- Enter Site Key\n- Enter Secret Key\n\n### Step 3: Admin User Setup\n\nCreate the first administrator account for your new environment.\n\nEnter:\n- **First Name**\n- **Last Name**\n- **Email Address** - This will be the login username\n- **Initial Password** - Must meet security requirements\n\nThis user will have full admin access to manage the site.\n\n### Step 4: Deployment Options\n\nConfigure how your environment will be deployed.\n\n#### fly.io Deployment Settings\n\n- **App Name**: Auto-generated from your group name (can be customised)\n- **Memory**: Recommended 1GB for production use\n- **Scale Count**: Number of instances (1 is sufficient for most groups)\n- **Organisation**: Your fly.io organisation (usually \"personal\")\n\n#### Options\n\n- **Include sample notification configs**: Creates default email notification templates\n- **Deploy to fly.io now**: Starts deployment immediately after creation\n\n### Step 5: Review and Create\n\nReview all your configuration before creating the environment.\n\nThe summary shows:\n- Group information\n- Service configurations (with sensitive values masked)\n- Admin user details\n- Deployment settings\n\nClick **Create Environment** to start the provisioning process.\n\n---\n\n## Environment Creation Progress\n\nOnce you click \"Create Environment\", the wizard shows real-time progress:\n\n1. **Creating AWS Resources**\n   - S3 bucket creation\n   - IAM user and policy setup\n   - Access key generation\n\n2. **Initialising Database**\n   - Creating collections\n   - Setting up system configuration\n   - Creating admin user account\n   - Running database migrations\n   - Populating admin menu items\n\n3. **Deploying to fly.io** (if selected)\n   - Creating fly.io application\n   - Setting environment secrets\n   - Deploying application code\n   - Health check verification\n\nEach step shows:\n- ⏳ Running (in progress)\n- ✅ Completed (successful)\n- ❌ Failed (with error message)\n\nIf any step fails, you can use \"Manage Existing Environment\" to resume.\n\n---\n\n## Managing Existing Environments\n\n### Resume Setup\n\nIf environment creation was interrupted:\n\n1. Select \"Manage Existing Environment\"\n2. Choose your environment from the list\n3. Select \"Resume Setup\"\n4. Choose which steps to run:\n   - **Database Initialisation**: Re-run database setup\n   - **fly.io Deployment**: Deploy or redeploy to fly.io\n\n### Update Environment\n\nUpdate an existing environment's configuration:\n\n- Update Ramblers API information\n- Change deployment settings\n- Modify service credentials\n\n### Destroy Environment\n\nPermanently remove an environment and all its resources:\n\n1. Select \"Manage Existing Environment\"\n2. Choose your environment\n3. Select \"Destroy\"\n4. Confirm the destruction\n\nThis will remove:\n- fly.io application\n- S3 bucket and all files\n- IAM user and credentials\n- Database collections (cleared, not dropped)\n- Local configuration files\n\n**Warning**: This action cannot be undone.\n\n---\n\n## Post-Setup Tasks\n\nAfter your environment is created:\n\n### 1. Access Your New Site\n\nNavigate to `https://your-app-name.fly.dev` to see your new site.\n\n### 2. Log In as Admin\n\nUse the admin credentials you created during setup.\n\n### 3. Configure Site Settings\n\nGo to **Admin > System Settings** to:\n- Upload your group logo\n- Configure email templates\n- Set up committee members\n- Customise site appearance\n\n### 4. Import Walks Data\n\nThe system can automatically sync walks from the Ramblers API:\n- Go to **Walks** page\n- Click **Admin** (if you have committee access)\n- Use the sync function to pull walks data\n\n### 5. Customise Page Content\n\nEdit the default page content:\n- Home page welcome message\n- About Us information\n- Contact details\n- Walks information page\n\n---\n\n## Troubleshooting\n\n### \"API Key validation failed\"\n\n- Verify your Ramblers API key is correct\n- Check the key hasn't expired\n- Ensure you have the correct permissions\n\n### \"Database connection failed\"\n\n- Verify connection string components are correct\n- Check the database user has appropriate permissions\n- Ensure your IP address is whitelisted (for MongoDB Atlas)\n\n### \"AWS resource creation failed\"\n\n- Verify AWS credentials have admin permissions\n- Check IAM policies allow S3 and IAM operations\n- Ensure bucket name doesn't already exist (globally unique)\n\n### \"fly.io deployment failed\"\n\n- Verify FLY_API_TOKEN is set correctly\n- Check you have sufficient fly.io resources\n- Review fly.io dashboard for detailed error logs\n\n### Resuming Failed Setup\n\nIf creation fails partway through:\n\n1. Note which step failed\n2. Fix the underlying issue (credentials, permissions, etc.)\n3. Use \"Manage Existing Environment\" > \"Resume Setup\"\n4. Select the appropriate options to complete setup\n\n---\n\n## CLI Alternative\n\nFor power users, all these operations are also available via command line.\n\nSee the **NGX Ramblers CLI Reference Guide** in Technical Documents for:\n- `ngx-cli env resume` - Resume environment setup\n- `ngx-cli f deploy` - Deploy to fly.io\n- `ngx-cli db seed --fresh --sync` - Fresh database setup with data sync\n- `ngx-cli des` - Destroy environment\n\nThe CLI provides the same functionality with additional automation options.\n","contentHtml":"<h1>30-Jan-2026 — Environment Setup Guide</h1>\n<p>The Environment Setup page allows administrators to create complete NGX-Ramblers environments for new Ramblers walking groups. This guide walks through the wizard interface and explains each step.</p>\n<h2>Accessing Environment Setup</h2>\n<p>Navigate to <strong>Admin &gt; Environment Setup</strong> from the main menu.</p>\n<p>You&#39;ll see two options:</p>\n<ul>\n<li><strong>Create New Environment</strong> - Set up a brand new environment for a Ramblers group</li>\n<li><strong>Manage Existing Environment</strong> - Resume setup, update, or destroy an existing environment</li>\n</ul>\n<hr>\n<h2>Creating a New Environment</h2>\n<h3>Step 1: Group Selection</h3>\n<p>This step validates your Ramblers API credentials and lets you select your walking group.</p>\n<ol>\n<li><p><strong>Enter your Ramblers API Key</strong></p>\n<ul>\n<li>Obtain this from the Ramblers volunteer portal</li>\n<li>Click &quot;Validate API Key&quot; to verify it works</li>\n</ul>\n</li>\n<li><p><strong>Search for your group</strong></p>\n<ul>\n<li>Once validated, enter your group name or code in the search box</li>\n<li>Select your group from the search results</li>\n<li>The system will display group details including:<ul>\n<li>Group name and code</li>\n<li>Area name and code</li>\n<li>Contact information</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><strong>Review group information</strong></p>\n<ul>\n<li>Verify the displayed information is correct</li>\n<li>Click &quot;Next&quot; to proceed</li>\n</ul>\n</li>\n</ol>\n<h3>Step 2: Service Configuration</h3>\n<p>Configure the external services required for your environment.</p>\n<h4>MongoDB Database</h4>\n<p>Your environment needs a MongoDB database. You can:</p>\n<ul>\n<li>Use MongoDB Atlas (recommended) - free tier available</li>\n<li>Use an existing MongoDB instance</li>\n</ul>\n<p>Enter your connection details:</p>\n<ul>\n<li><strong>Cluster</strong>: The cluster hostname (e.g., <code>cluster0.abc123.mongodb.net</code>)</li>\n<li><strong>Username</strong>: Database username</li>\n<li><strong>Password</strong>: Database password</li>\n<li><strong>Database</strong>: Database name (e.g., <code>ngx-ramblers-yourgroup</code>)</li>\n</ul>\n<p>Click &quot;Test Connection&quot; to verify the database is accessible.</p>\n<h4>AWS S3 Storage</h4>\n<p>File storage for images, documents, and backups.</p>\n<p>If you have AWS credentials with admin access:</p>\n<ul>\n<li>Leave fields blank - the wizard will create resources automatically</li>\n<li>S3 bucket and IAM user will be provisioned for you</li>\n</ul>\n<p>If you have existing AWS credentials:</p>\n<ul>\n<li>Enter the Access Key ID</li>\n<li>Enter the Secret Access Key</li>\n<li>Enter the Bucket name</li>\n<li>Enter the Region</li>\n</ul>\n<h4>Brevo Email Service</h4>\n<p>For sending transactional emails (password resets, notifications).</p>\n<ul>\n<li>Enter your Brevo API Key</li>\n<li>Obtain this from your Brevo account settings</li>\n</ul>\n<h4>Google Maps (Optional)</h4>\n<p>For displaying walk routes and meeting point maps.</p>\n<ul>\n<li>Enter your Google Maps API Key</li>\n<li>Required for map features to work</li>\n</ul>\n<h4>OS Maps (Optional)</h4>\n<p>For displaying Ordnance Survey maps.</p>\n<ul>\n<li>Enter your OS Maps API Key</li>\n<li>Provides UK-specific mapping</li>\n</ul>\n<h4>reCAPTCHA (Optional)</h4>\n<p>For spam protection on public forms.</p>\n<ul>\n<li>Enter Site Key</li>\n<li>Enter Secret Key</li>\n</ul>\n<h3>Step 3: Admin User Setup</h3>\n<p>Create the first administrator account for your new environment.</p>\n<p>Enter:</p>\n<ul>\n<li><strong>First Name</strong></li>\n<li><strong>Last Name</strong></li>\n<li><strong>Email Address</strong> - This will be the login username</li>\n<li><strong>Initial Password</strong> - Must meet security requirements</li>\n</ul>\n<p>This user will have full admin access to manage the site.</p>\n<h3>Step 4: Deployment Options</h3>\n<p>Configure how your environment will be deployed.</p>\n<h4>fly.io Deployment Settings</h4>\n<ul>\n<li><strong>App Name</strong>: Auto-generated from your group name (can be customised)</li>\n<li><strong>Memory</strong>: Recommended 1GB for production use</li>\n<li><strong>Scale Count</strong>: Number of instances (1 is sufficient for most groups)</li>\n<li><strong>Organisation</strong>: Your fly.io organisation (usually &quot;personal&quot;)</li>\n</ul>\n<h4>Options</h4>\n<ul>\n<li><strong>Include sample notification configs</strong>: Creates default email notification templates</li>\n<li><strong>Deploy to fly.io now</strong>: Starts deployment immediately after creation</li>\n</ul>\n<h3>Step 5: Review and Create</h3>\n<p>Review all your configuration before creating the environment.</p>\n<p>The summary shows:</p>\n<ul>\n<li>Group information</li>\n<li>Service configurations (with sensitive values masked)</li>\n<li>Admin user details</li>\n<li>Deployment settings</li>\n</ul>\n<p>Click <strong>Create Environment</strong> to start the provisioning process.</p>\n<hr>\n<h2>Environment Creation Progress</h2>\n<p>Once you click &quot;Create Environment&quot;, the wizard shows real-time progress:</p>\n<ol>\n<li><p><strong>Creating AWS Resources</strong></p>\n<ul>\n<li>S3 bucket creation</li>\n<li>IAM user and policy setup</li>\n<li>Access key generation</li>\n</ul>\n</li>\n<li><p><strong>Initialising Database</strong></p>\n<ul>\n<li>Creating collections</li>\n<li>Setting up system configuration</li>\n<li>Creating admin user account</li>\n<li>Running database migrations</li>\n<li>Populating admin menu items</li>\n</ul>\n</li>\n<li><p><strong>Deploying to fly.io</strong> (if selected)</p>\n<ul>\n<li>Creating fly.io application</li>\n<li>Setting environment secrets</li>\n<li>Deploying application code</li>\n<li>Health check verification</li>\n</ul>\n</li>\n</ol>\n<p>Each step shows:</p>\n<ul>\n<li>⏳ Running (in progress)</li>\n<li>✅ Completed (successful)</li>\n<li>❌ Failed (with error message)</li>\n</ul>\n<p>If any step fails, you can use &quot;Manage Existing Environment&quot; to resume.</p>\n<hr>\n<h2>Managing Existing Environments</h2>\n<h3>Resume Setup</h3>\n<p>If environment creation was interrupted:</p>\n<ol>\n<li>Select &quot;Manage Existing Environment&quot;</li>\n<li>Choose your environment from the list</li>\n<li>Select &quot;Resume Setup&quot;</li>\n<li>Choose which steps to run:<ul>\n<li><strong>Database Initialisation</strong>: Re-run database setup</li>\n<li><strong>fly.io Deployment</strong>: Deploy or redeploy to fly.io</li>\n</ul>\n</li>\n</ol>\n<h3>Update Environment</h3>\n<p>Update an existing environment&#39;s configuration:</p>\n<ul>\n<li>Update Ramblers API information</li>\n<li>Change deployment settings</li>\n<li>Modify service credentials</li>\n</ul>\n<h3>Destroy Environment</h3>\n<p>Permanently remove an environment and all its resources:</p>\n<ol>\n<li>Select &quot;Manage Existing Environment&quot;</li>\n<li>Choose your environment</li>\n<li>Select &quot;Destroy&quot;</li>\n<li>Confirm the destruction</li>\n</ol>\n<p>This will remove:</p>\n<ul>\n<li>fly.io application</li>\n<li>S3 bucket and all files</li>\n<li>IAM user and credentials</li>\n<li>Database collections (cleared, not dropped)</li>\n<li>Local configuration files</li>\n</ul>\n<p><strong>Warning</strong>: This action cannot be undone.</p>\n<hr>\n<h2>Post-Setup Tasks</h2>\n<p>After your environment is created:</p>\n<h3>1. Access Your New Site</h3>\n<p>Navigate to <code>https://your-app-name.fly.dev</code> to see your new site.</p>\n<h3>2. Log In as Admin</h3>\n<p>Use the admin credentials you created during setup.</p>\n<h3>3. Configure Site Settings</h3>\n<p>Go to <strong>Admin &gt; System Settings</strong> to:</p>\n<ul>\n<li>Upload your group logo</li>\n<li>Configure email templates</li>\n<li>Set up committee members</li>\n<li>Customise site appearance</li>\n</ul>\n<h3>4. Import Walks Data</h3>\n<p>The system can automatically sync walks from the Ramblers API:</p>\n<ul>\n<li>Go to <strong>Walks</strong> page</li>\n<li>Click <strong>Admin</strong> (if you have committee access)</li>\n<li>Use the sync function to pull walks data</li>\n</ul>\n<h3>5. Customise Page Content</h3>\n<p>Edit the default page content:</p>\n<ul>\n<li>Home page welcome message</li>\n<li>About Us information</li>\n<li>Contact details</li>\n<li>Walks information page</li>\n</ul>\n<hr>\n<h2>Troubleshooting</h2>\n<h3>&quot;API Key validation failed&quot;</h3>\n<ul>\n<li>Verify your Ramblers API key is correct</li>\n<li>Check the key hasn&#39;t expired</li>\n<li>Ensure you have the correct permissions</li>\n</ul>\n<h3>&quot;Database connection failed&quot;</h3>\n<ul>\n<li>Verify connection string components are correct</li>\n<li>Check the database user has appropriate permissions</li>\n<li>Ensure your IP address is whitelisted (for MongoDB Atlas)</li>\n</ul>\n<h3>&quot;AWS resource creation failed&quot;</h3>\n<ul>\n<li>Verify AWS credentials have admin permissions</li>\n<li>Check IAM policies allow S3 and IAM operations</li>\n<li>Ensure bucket name doesn&#39;t already exist (globally unique)</li>\n</ul>\n<h3>&quot;fly.io deployment failed&quot;</h3>\n<ul>\n<li>Verify FLY_API_TOKEN is set correctly</li>\n<li>Check you have sufficient fly.io resources</li>\n<li>Review fly.io dashboard for detailed error logs</li>\n</ul>\n<h3>Resuming Failed Setup</h3>\n<p>If creation fails partway through:</p>\n<ol>\n<li>Note which step failed</li>\n<li>Fix the underlying issue (credentials, permissions, etc.)</li>\n<li>Use &quot;Manage Existing Environment&quot; &gt; &quot;Resume Setup&quot;</li>\n<li>Select the appropriate options to complete setup</li>\n</ol>\n<hr>\n<h2>CLI Alternative</h2>\n<p>For power users, all these operations are also available via command line.</p>\n<p>See the <strong>NGX Ramblers CLI Reference Guide</strong> in Technical Documents for:</p>\n<ul>\n<li><code>ngx-cli env resume</code> - Resume environment setup</li>\n<li><code>ngx-cli f deploy</code> - Deploy to fly.io</li>\n<li><code>ngx-cli db seed --fresh --sync</code> - Fresh database setup with data sync</li>\n<li><code>ngx-cli des</code> - Destroy environment</li>\n</ul>\n<p>The CLI provides the same functionality with additional automation options.</p>\n"}