| title | Platform Setup |
|---|---|
| description | Configure your self-hosted DeployStack instance with global settings, email functionality, and platform features. |
Configure your self-hosted DeployStack instance with essential settings to customize functionality, enable features, and optimize the platform for your organization.
Platform setup is performed through the web interface after your DeployStack instance is running. All settings are optional but recommended for production deployments. **For Developers**: The initial setup consists of two parts: 1. **Database Setup**: Completed via the frontend wizard at `/setup` which calls `POST /api/db/setup` 2. **Platform Configuration**: Done through the Settings interface after database initialization If this is a fresh installation, first visit `https:///setup` to complete the database initialization wizard. This creates:**For Docker deployments:**
- PostgreSQL database configuration stored in the Docker volume `deploystack_backend_persistent`
- PostgreSQL data stored in `deploystack_postgres_data` volume
- Access the setup wizard at `http://localhost:8080/setup` (or your configured frontend URL)
**For local development:**
- PostgreSQL connection configured via environment variables in `services/backend/.env`
- `services/backend/persistent_data/db.selection.json` (database initialization status)
Configure core platform functionality and features.
| Setting | Description | Default | Recommended |
|---|---|---|---|
| Frontend URL | Base URL where your DeployStack frontend is accessible | http://localhost:5173 |
Your actual domain (e.g., https://deploystack.company.com) |
| Enable Login | Allow users to log in to the platform | Yes |
Yes (disable only for maintenance) |
| Enable Email Registration | Allow new users to register with email | Yes |
Yes (or No for invite-only) |
| Enable API Documentation | Show Swagger API docs at /documentation |
Yes |
No for production (security) |
| Setting | Description | Default | Use Case |
|---|---|---|---|
| Send Mail | Enable email sending functionality | No |
Yes after SMTP configuration |
Configure email functionality to enable notifications, password resets, and user communications.
Email configuration is **optional** but highly recommended for production deployments. Without email, users cannot reset passwords or receive notifications.With email configured, DeployStack can:
- Send password reset emails when users forget their passwords
- Send user invitations to join teams and workspaces
- Notify users about deployment status and important events
- Send welcome emails to new users
- Provide account verification for enhanced security
Navigate to Settings → Global Settings → SMTP Mail Settings tab.
| Setting | Description | Example |
|---|---|---|
| SMTP Host | Your email provider's SMTP server | smtp.gmail.com |
| SMTP Port | Port number for SMTP connection | 587 (TLS) or 465 (SSL) |
| Username | Your email account username | your-email@gmail.com |
| Password | Your email account password or app password | your-app-password |
| Setting | Description | Default | Example |
|---|---|---|---|
| Use SSL/TLS | Enable secure connection | Yes |
Recommended: Yes |
| From Name | Display name for sent emails | DeployStack |
Your Company Name |
| From Email | Email address for sent emails | (uses username) | noreply@yourcompany.com |
- Enable 2-Factor Authentication at https://myaccount.google.com/security
- Generate App Password at https://myaccount.google.com/apppasswords
- Configure in DeployStack:
SMTP Host: smtp.gmail.com SMTP Port: 587 Username: your-email@gmail.com Password: [16-character app password] Use SSL/TLS: Yes
```text Outlook
Outlook/Office 365 Configuration:
SMTP Host: smtp-mail.outlook.com (or smtp.office365.com)
SMTP Port: 587
Username: your-email@outlook.com
Password: [your password or app password]
Use SSL/TLS: Yes
SendGrid Configuration:
1. Create API Key in SendGrid dashboard
2. Configure in DeployStack:
SMTP Host: smtp.sendgrid.net
SMTP Port: 587
Username: apikey
Password: [your SendGrid API key]
Use SSL/TLS: Yes
Note: The username is literally "apikey" for SendGrid.
Other Providers:
Mailgun:
SMTP Host: smtp.mailgun.org
SMTP Port: 587
Username: [Mailgun SMTP username]
Password: [Mailgun SMTP password]
Use SSL/TLS: Yes
Amazon SES:
SMTP Host: email-smtp.[region].amazonaws.com
SMTP Port: 587
Username: [SES SMTP username]
Password: [SES SMTP password]
Use SSL/TLS: Yes
After configuring SMTP settings:
- Save Configuration - Click "Save" to store your SMTP settings
- Test Email Sending - Use the "Send Test Email" button if available
- Check Email Delivery - Verify the test email arrives (check spam folder)
- Enable Email Sending - Set "Send Mail" to
Yesin Global Settings
Follow this recommended setup workflow for new DeployStack instances:
- Navigate to `https:///setup` (Docker: `http://localhost:8080/setup` by default) - Complete the database setup wizard (PostgreSQL) - This initializes the PostgreSQL database and applies migrations - Create your admin account - Log in to the platform - Set the correct Frontend URL for your domain - Configure login and registration preferences - Disable API documentation for production - Configure SMTP settings for your email provider - Test email delivery - Enable email sending in Global Settings - Test user registration (if enabled) - Test password reset functionality - Verify email notifications work - Invite team members - Set up user roles and permissions - Configure team workspaces - Navigate to Admin → Satellites → Pairing - Generate registration tokens for new satellites - Deploy satellite services with registration tokens - Verify satellite registration and healthFor satellite deployment instructions, see [Quick Start - Satellite Service](/self-hosted/quick-start#satellite-service).
Administrators can generate registration tokens for new satellites:
-
Navigate to Satellite Management:
- Log in as
global_admin - Go to Admin → Satellites → Pairing
- Log in as
-
Generate Token:
- Click "Generate Token"
- Copy the full token (starts with
deploystack_satellite_global_) - Token expires in 1 hour for security
-
Deploy Satellite:
- Use the token in
DEPLOYSTACK_REGISTRATION_TOKENenvironment variable - See Quick Start - Satellite Service for deployment instructions
- Use the token in
- Single-Use: Registration tokens are consumed after successful pairing
- Expiration: Global tokens expire after 1 hour
- Scope: All self-hosted satellites are global satellites by default
- Admin Only: Only
global_adminusers can generate registration tokens
After registration, satellites appear in the admin panel with inactive status:
-
Activate Satellite:
- Navigate to Admin → Satellites
- Find your registered satellite
- Click "Activate" to enable it
-
Monitor Health:
- View heartbeat status and system metrics
- Check last communication timestamp
- Review process status and resource usage
- Disable API Documentation (
Enable API Documentation: No) in production - Use HTTPS for Frontend URL in production environments
- Restrict Registration (
Enable Email Registration: No) for private deployments - Use Strong SMTP Passwords and enable 2FA on email accounts
- Secure Satellite Tokens: Store registration tokens securely and don't commit to version control
- Use App Passwords for Gmail and Outlook when 2FA is enabled
- Enable TLS/SSL for SMTP connections
- Monitor Email Activity through your email provider's dashboard
- Set Up Domain Authentication (SPF, DKIM, DMARC) for better delivery
Problem: Settings page not accessible or returns errors
Solutions:
- Ensure the initial database setup at
/setuphas been completed - For Docker: Check that the
deploystack_backend_persistentvolume exists and contains data - For local development: Check for
services/backend/persistent_data/db.selection.jsonfile existence - Ensure you're logged in as an administrator
- Check that your user has the
global_adminrole - Verify the backend service is running properly
- Check that database migrations have been applied (happens automatically after setup)
Problem: SMTP configuration fails or emails not delivered
Solutions:
- Check credentials: Verify username and password are correct
- Test connectivity: Ensure your server can reach SMTP ports (587, 465)
- Check spam folders: Emails might be marked as spam
- Verify provider settings: Confirm SMTP host and port are correct
Problem: Redirects or links point to wrong URLs
Solutions:
- Update Frontend URL: Set the correct domain in Global Settings
- Check environment variables: Ensure Docker containers have correct URLs
- Restart services: Restart after changing URL settings
If you encounter issues during setup:
- Check logs: Review Docker container logs for error messages
- Community: Join our Discord for support
- GitHub: Report issues on our GitHub repository
Configure different settings for different environments:
Development:
- Enable API documentation for testing
- Use localhost URLs
- Optional email configuration
Staging:
- Mirror production settings
- Use staging domain URLs
- Enable email for testing
Production:
- Disable API documentation
- Use production domain URLs
- Enable all email functionality
- Restrict registration if needed
docker run --rm -v deploystack_backend_persistent:/data
-v $(pwd):/backup alpine
tar czf /backup/deploystack-backup-$(date +%Y%m%d).tar.gz /data
docker run --rm -v deploystack_backend_persistent:/data
-v $(pwd):/backup alpine
tar xzf /backup/deploystack-backup-20250108.tar.gz -C /
```bash Local Development
# File System Backup:
# Your data is stored in services/backend/persistent_data/. To backup:
# Create a backup archive
tar czf deploystack-backup-$(date +%Y%m%d).tar.gz \
services/backend/persistent_data/
# Restore from backup:
# Restore from backup archive
tar xzf deploystack-backup-20250108.tar.gz
# The directory contains:
# - db.selection.json - Database initialization status
# - Any other persistent application data
# Note: PostgreSQL runs separately via Docker (npm run postgres:local)
- Document custom settings for disaster recovery
- Test restore procedures in non-production environments
- Schedule regular backups using cron or your preferred scheduling tool
Next Steps: After completing platform setup, configure user roles and permissions and set up your first team workspaces.