{"slug":"vps-creating","title":"Creating VPS Instances","description":"Step-by-step guide to creating and configuring your first VPS instance.","section":"Features","url":"https://docs.danubedata.ro/vps-creating","markdown_url":"https://docs.danubedata.ro/vps-creating.md","breadcrumbs":[{"title":"Features","slug":null},{"title":"VPS Instances","slug":"vps-overview"},{"title":"Creating VPS","slug":"vps-creating"}],"headings":[{"level":1,"title":"Creating VPS Instances","id":"creating-vps-instances"},{"level":2,"title":"Prerequisites","id":"prerequisites"},{"level":2,"title":"Step-by-Step Guide","id":"step-by-step-guide"},{"level":3,"title":"Step 1: Navigate to VPS Section","id":"step-1-navigate-to-vps-section"},{"level":3,"title":"Step 2: Start Creation","id":"step-2-start-creation"},{"level":3,"title":"Step 3: Choose Operating System","id":"step-3-choose-operating-system"},{"level":3,"title":"Choosing an OS","id":"choosing-an-os"},{"level":3,"title":"Step 4: Select Resource Profile","id":"step-4-select-resource-profile"},{"level":3,"title":"Step 5: Name Your Instance","id":"step-5-name-your-instance"},{"level":3,"title":"Step 6: Location","id":"step-6-location"},{"level":3,"title":"Step 7: Authentication (SSH Key or Password)","id":"step-7-authentication-ssh-key-or-password"},{"level":3,"title":"Optional: One-Click Marketplace App","id":"optional-one-click-marketplace-app"},{"level":3,"title":"Step 8: Custom Cloud-Init (Optional)","id":"step-8-custom-cloud-init-optional"},{"level":3,"title":"Step 9: Configure Networking (Optional)","id":"step-9-configure-networking-optional"},{"level":3,"title":"Step 10: Review Configuration","id":"step-10-review-configuration"},{"level":3,"title":"Step 11: Create Instance","id":"step-11-create-instance"},{"level":2,"title":"After Creation","id":"after-creation"},{"level":3,"title":"Get Connection Info","id":"get-connection-info"},{"level":3,"title":"First Connection","id":"first-connection"},{"level":3,"title":"Initial Setup","id":"initial-setup"},{"level":2,"title":"Common Creation Scenarios","id":"common-creation-scenarios"},{"level":3,"title":"Web Server","id":"web-server"},{"level":3,"title":"API Server","id":"api-server"},{"level":3,"title":"Development Environment","id":"development-environment"},{"level":3,"title":"Docker Host","id":"docker-host"},{"level":3,"title":"CI/CD Server","id":"cicd-server"},{"level":2,"title":"Creation Checklist","id":"creation-checklist"},{"level":2,"title":"Troubleshooting","id":"troubleshooting"},{"level":3,"title":"Can't Create VPS","id":"cant-create-vps"},{"level":3,"title":"Creation Stuck","id":"creation-stuck"},{"level":3,"title":"Can't SSH After Creation","id":"cant-ssh-after-creation"},{"level":2,"title":"Best Practices","id":"best-practices"},{"level":3,"title":"Naming","id":"naming"},{"level":3,"title":"Sizing","id":"sizing"},{"level":3,"title":"Security","id":"security"},{"level":3,"title":"Cost Management","id":"cost-management"},{"level":2,"title":"Next Steps","id":"next-steps"}],"format":"markdown","word_count":1638,"content":"# Creating VPS Instances\n\nStep-by-step guide to creating and configuring your first VPS instance.\n\n## Prerequisites\n\nBefore creating a VPS:\n\n1. ✅ Have an active project\n2. ✅ Add a payment method to your project\n3. ✅ Have an SSH key configured — or plan to set a root password instead\n4. ✅ Check your [account limits](https://docs.danubedata.ro/account-limits) — the number of instances you can run depends on your account\n\n## Step-by-Step Guide\n\n### Step 1: Navigate to VPS Section\n\n1. Log in to your DanubeData dashboard\n2. Ensure you're in the correct project\n3. Click **Pods** in the main navigation\n\n### Step 2: Start Creation\n\n1. Click the **Create Pod** button\n2. You'll see the VPS creation form\n\n### Step 3: Choose Operating System\n\nSelect your preferred OS:\n\n**Ubuntu** (Recommended for most users)\n- 26.04 LTS (Latest, best support)\n- 24.04 LTS (Stable, long-term support)\n- 22.04 LTS (Long-term support)\n\n**Debian**\n- 13 (Trixie) - Latest stable\n- 12 (Bookworm) - Previous stable\n- 11 (Bullseye) - Older\n\n**AlmaLinux**\n- 9 - Latest\n- 8 - Stable\n\n**Rocky Linux**\n- 9 - Latest\n- 8 - Stable\n\n**Fedora**\n- 42 - Latest features\n- 41 - Stable\n\n**Alpine**\n- 3.22 - Latest\n- 3.21 - Stable\n- 3.20 - Older\n\n**Windows Server**\n- 2025 (BYOL — bring your own license)\n\n### Choosing an OS\n\n**For Web Applications**:\n- Ubuntu 22.04 or 24.04 LTS\n- Wide software support\n- Large community\n\n**For Stability**:\n- Debian 11 or 12\n- Rock-solid reliability\n- Security focus\n\n**For Enterprise**:\n- AlmaLinux 9 or Rocky Linux 9\n- RHEL compatibility\n- Corporate environment\n\n**For Latest Features**:\n- Fedora 42\n- Cutting edge packages\n- Short support cycle\n\n### Step 4: Select Resource Profile\n\nChoose based on your workload:\n\n**Shared CPU** (4:1 overcommit, best value):\n\n| Profile | vCPUs | RAM | NVMe Disk |\n|---------|-------|-----|-----------|\n| **Nano** | 2 | 2 GB | 20 GB |\n| **Micro** | 3 | 4 GB | 40 GB |\n| **Small** | 4 | 8 GB | 80 GB |\n| **Medium** | 8 | 16 GB | 160 GB |\n| **Large** | 16 | 32 GB | 320 GB |\n\n**Dedicated CPU** (guaranteed cores):\n\n| Profile | vCPUs | RAM | NVMe Disk |\n|---------|-------|-----|-----------|\n| **Nano** | 2 | 2 GB | 40 GB |\n| **Micro** | 3 | 4 GB | 80 GB |\n| **Small** | 4 | 8 GB | 160 GB |\n| **Medium** | 8 | 16 GB | 320 GB |\n| **Large** | 16 | 32 GB | 640 GB |\n\nCurrent prices are shown in the create form and on the [pricing page](https://danubedata.ro/pricing). Billing is hourly (monthly price ÷ 730) with a monthly cap.\n\n**Need a size in between?** Toggle **Customize** on the profile step to fine-tune vCPUs, RAM, and disk beyond the fixed profiles. The form shows a live price estimate as you adjust. See [Resource Profiles → Custom Sizing](https://docs.danubedata.ro/vps-profiles#custom-sizing).\n\n**Profile Selection Tips**:\n\n**Micro** - Good for:\n- Development/testing\n- Learning\n- Personal projects\n- Low-traffic blogs\n\n**Small** - Good for:\n- Small production sites\n- API servers\n- Development environments\n- Small databases (non-critical)\n\n**Medium** - Good for:\n- Standard production workloads\n- E-commerce sites\n- SaaS applications\n- Multiple services\n\n**Large** - Good for:\n- High-traffic applications\n- Data processing\n- Heavy compute tasks\n- Large databases\n\n### Step 5: Name Your Instance\n\nEnter a descriptive name:\n\n**Good Names**:\n- `prod-web-01`\n- `staging-api-server`\n- `dev-frontend`\n- `wordpress-blog`\n\n**Poor Names**:\n- `server1`\n- `test`\n- `vps`\n\n**Naming Convention Tips**:\n```\n[environment]-[purpose]-[number]\nprod-web-01\nstaging-api-02\ndev-database-01\n```\n\n### Step 6: Location\n\nDanubeData runs from a single location:\n\n- **Falkenstein, Germany** (`fsn1`) — EU data residency\n\nThere's no region to choose — every VPS is provisioned in Falkenstein, keeping your data within the EU.\n\n### Step 7: Authentication (SSH Key or Password)\n\nChoose how you'll log in as `root`:\n\n- **SSH key** (recommended) — select one or more existing keys, or add a new one\n- **Root password** — set a password of at least 12 characters instead of (or alongside) a key\n\n> **Windows Server** instances use password authentication automatically, since remote access is over RDP.\n\n**Select existing SSH key(s)**:\n- Check boxes for keys to add\n- Can select multiple keys\n- Keys allow secure server access\n\n**Don't have an SSH key?**\n1. Click **Add SSH Key** link\n2. Generate SSH key on your computer:\n   \n   ```bash\n   # On Linux/Mac\n   ssh-keygen -t ed25519 -C \"your_email@example.com\"\n   \n   # On Windows (PowerShell)\n   ssh-keygen -t ed25519 -C \"your_email@example.com\"\n   ```\n\n3. Copy your public key:\n   ```bash\n   # Linux/Mac\n   cat ~/.ssh/id_ed25519.pub\n   \n   # Windows\n   type %USERPROFILE%\\.ssh\\id_ed25519.pub\n   ```\n\n4. Paste in SSH key form\n5. Give it a name (e.g., \"My Laptop\", \"Work Desktop\")\n6. Click **Add Key**\n7. Return to VPS creation\n\n### Optional: One-Click Marketplace App\n\nIf you'd rather not configure the server yourself, you can pick a **Marketplace App** during creation. The platform installs and configures the selected application automatically on first boot (via cloud-init), so the VPS comes up ready to use.\n\n- Apps are filtered to those compatible with your chosen operating system\n- Apps that need more resources than your selected profile are disabled until you size up\n- Marketplace app setup runs **before** any custom cloud-init you provide\n\n### Step 8: Custom Cloud-Init (Optional)\n\nProvide a shell script or cloud-config YAML to automate your VPS setup on first boot. Your script runs after the platform finishes configuring networking, security, and SSH.\n\n**Examples of what you can automate:**\n- Install Docker, K3s, or LAMP stack\n- Configure services and daemons\n- Deploy applications\n\n```bash\n#!/bin/bash\nset -e\napt update -y && apt install -y docker.io\nsystemctl enable docker && systemctl start docker\n```\n\nOnce your VPS is running, SSH in and run `cloud-init-progress` to monitor your script's execution in real time.\n\nSee [Custom Cloud-Init](https://docs.danubedata.ro/vps-cloud-init) for the full guide, examples, and troubleshooting.\n\n### Step 9: Configure Networking (Optional)\n\n**Network Stack**:\n- **Dual Stack** (default) — public IPv4 + IPv6 for maximum compatibility\n- **IPv4 Only**\n- **IPv6 Only** — for modern IPv6-native networks\n\n**Hostname** (optional):\n- Custom hostname for your server\n- Example: `web-server.example.com`\n- Defaults to auto-generated name\n\n**Firewall** (optional):\n- Attach an existing firewall\n- Leave empty for default (allow all)\n- Can attach later\n\n**Private Network** (optional):\n- Connect to a private network\n- For internal instance communication\n- Can configure later\n\n### Step 10: Review Configuration\n\nReview your selections:\n- Operating System\n- Resource Profile\n- Name\n- Region\n- SSH Keys\n- Monthly cost estimate\n- Hourly cost\n\n**Cost Estimate Example**:\n\nHourly rate = monthly price ÷ 730 hours; you never pay more than the monthly cap.\n\n### Step 11: Create Instance\n\n1. Review everything is correct\n2. Click **Create Pod**\n3. Deployment begins immediately\n\n**Deployment Time**: 3-5 minutes\n\nYou'll see progress stages:\n1. ☐ Provisioning resources\n2. ☐ Creating storage\n3. ☐ Installing OS\n4. ☐ Configuring network\n5. ✅ Ready!\n\n## After Creation\n\n### Get Connection Info\n\nOnce ready, you'll see:\n- **Public IP Address**: For SSH connection\n- **Status**: Should show \"Running\"\n- **Resource Usage**: CPU, memory metrics\n\n### First Connection\n\nConnect via SSH:\n\n```bash\nssh root@YOUR_VPS_IP\n```\n\n**First login**:\n- Accept host key fingerprint\n- You're now logged in as root\n- Change root password (recommended)\n\n### Initial Setup\n\n1. **Update System**:\n   ```bash\n   # Ubuntu/Debian\n   apt update && apt upgrade -y\n   \n   # AlmaLinux/Rocky/Fedora\n   yum update -y\n   ```\n\n2. **Create Non-Root User**:\n   ```bash\n   adduser yourusername\n   usermod -aG sudo yourusername  # Ubuntu/Debian\n   usermod -aG wheel yourusername  # AlmaLinux/Rocky/Fedora\n   ```\n\n3. **Configure Firewall** (if not using platform firewall):\n   ```bash\n   # Ubuntu/Debian\n   ufw allow 22/tcp\n   ufw allow 80/tcp\n   ufw allow 443/tcp\n   ufw enable\n   \n   # AlmaLinux/Rocky/Fedora\n   firewall-cmd --permanent --add-service=ssh\n   firewall-cmd --permanent --add-service=http\n   firewall-cmd --permanent --add-service=https\n   firewall-cmd --reload\n   ```\n\n4. **Install Essential Packages**:\n   ```bash\n   # Ubuntu/Debian\n   apt install -y curl wget git vim htop\n   \n   # AlmaLinux/Rocky/Fedora\n   yum install -y curl wget git vim htop\n   ```\n\n## Common Creation Scenarios\n\n### Web Server\n\n```\nOS: Ubuntu 22.04 LTS\nProfile: Small (2 vCPU, 2 GB RAM)\nPurpose: Host WordPress site\nFirewall: Allow 80, 443, 22\n```\n\n### API Server\n\n```\nOS: Ubuntu 24.04 LTS\nProfile: Medium (4 vCPU, 4 GB RAM)\nPurpose: REST API backend\nFirewall: Allow 443, 22 from specific IPs\n```\n\n### Development Environment\n\n```\nOS: Ubuntu 22.04 LTS\nProfile: Micro (1 vCPU, 1 GB RAM)\nPurpose: Testing and development\nFirewall: Allow 22 from your IP only\n```\n\n### Docker Host\n\n```\nOS: Ubuntu 22.04 LTS\nProfile: Medium (4 vCPU, 4 GB RAM)\nPurpose: Run containers\nFirewall: Allow 22, 80, 443\n```\n\n### CI/CD Server\n\n```\nOS: Ubuntu 22.04 LTS\nProfile: Large (8 vCPU, 8 GB RAM)\nPurpose: Jenkins/GitLab CI\nFirewall: Allow 22, 8080\n```\n\n## Creation Checklist\n\nBefore clicking create, verify:\n\n- [ ] Correct operating system version\n- [ ] Appropriate resource profile for workload\n- [ ] Descriptive, meaningful name\n- [ ] Best region for users\n- [ ] SSH key(s) added\n- [ ] Firewall configured (if needed)\n- [ ] Understand monthly costs\n- [ ] Within project resource limits\n\n## Troubleshooting\n\n### Can't Create VPS\n\n**Error: \"Payment method required\"**\n- Add payment method in Billing section\n\n**Error: \"Resource limit exceeded\"**\n- You've reached your VPS limit — the number of instances you can run depends on your [account limits](https://docs.danubedata.ro/account-limits)\n- Delete unused VPS or request a limit increase\n\n**Error: \"Authentication required\"**\n- Add at least one SSH key, or set a root password (min. 12 characters)\n- Windows Server instances always use a password\n\n### Creation Stuck\n\nIf creation takes longer than 10 minutes:\n1. Refresh the page\n2. Check VPS list for the instance\n3. Contact support if still stuck\n\n### Can't SSH After Creation\n\n**Connection refused**:\n- Wait 5 full minutes after creation\n- VPS might still be booting\n- Check VPS status is \"Running\"\n\n**Permission denied**:\n- Verify SSH key was added correctly\n- Check you're using correct private key\n- Try: `ssh -v root@IP` for verbose output\n\n**Timeout**:\n- Check firewall allows port 22\n- Verify you have the correct IP\n- Check network connectivity\n\n## Best Practices\n\n### Naming\n- Use consistent naming scheme\n- Include environment (prod/staging/dev)\n- Include purpose (web/api/db)\n- Add numbers for multiple instances\n\n### Sizing\n- Start small, scale up if needed\n- Monitor resource usage first week\n- Resize if consistently over 80% usage\n- Don't over-provision \"just in case\"\n\n### Security\n- Add SSH keys before creation\n- Attach firewall immediately\n- Use strong hostname\n- Change default passwords\n- Update system after creation\n\n### Cost Management\n- Choose appropriate profile\n- Delete dev/staging instances when not needed (stopped instances are still billed)\n- Delete unused instances\n- Monitor spending in Billing\n\n## Next Steps\n\nNow that your VPS is created:\n\n1. [Connect via SSH](https://docs.danubedata.ro/vps-ssh)\n2. [Monitor cloud-init progress](https://docs.danubedata.ro/vps-cloud-init) (if you used a custom script)\n3. [Install your application](https://docs.danubedata.ro/vps-managing)\n4. [Configure firewall rules](https://docs.danubedata.ro/networking-firewalls)\n5. [Set up monitoring](https://docs.danubedata.ro/monitoring-overview)\n6. [Create snapshots](https://docs.danubedata.ro/vps-snapshots)\n\nNeed help? Contact support through the dashboard.\n\n","prev":{"title":"VPS Instances","slug":"vps-overview","url":"https://docs.danubedata.ro/vps-overview","markdown_url":"https://docs.danubedata.ro/vps-overview.md","json_url":"https://docs.danubedata.ro/vps-overview.json"},"next":{"title":"Managing VPS","slug":"vps-managing","url":"https://docs.danubedata.ro/vps-managing","markdown_url":"https://docs.danubedata.ro/vps-managing.md","json_url":"https://docs.danubedata.ro/vps-managing.json"},"index_url":"https://docs.danubedata.ro/index.json"}