# DanubeData > DanubeData is a European managed infrastructure provider offering VPS instances, managed databases (MySQL, PostgreSQL, MariaDB), managed caches (Redis, Valkey, Dragonfly), managed RabbitMQ queues, S3-compatible object storage, a private container registry at cr.danubedata.ro, serverless containers ("Rapids"), static site hosting, managed Nextcloud (Storage Share), and managed apps (WordPress, n8n, Ghost). All infrastructure runs on dedicated Hetzner servers in Germany with GDPR-compliant EU data residency. Pricing starts at EUR 4.49/month for VPS. DanubeData provides a dashboard at danubedata.ro, a RESTful API at danubedata.ro/api/v1, a CLI (`npm i -g @danubedata/cli`), an official Terraform provider (AdrianSilaghi/danubedata), a container registry at cr.danubedata.ro, and interactive API docs at danubedata.ro/docs/api with an OpenAPI 3.0 spec at danubedata.ro/docs/api.json. Resources are organized by team (called "projects" in the UI). Each team gets an isolated Kubernetes namespace, shared billing, and a unified dashboard. API authentication uses bearer tokens with granular abilities (read/write/delete per resource type). ## Agents & Automation Start here if you are a script, a CI pipeline, or an AI agent operating this platform without a human watching. Every documentation page is also served in machine-readable form: append `.md` for the raw markdown source (cheapest to put in a context window) or `.json` for the same content plus title, section, outline and prev/next links — e.g. https://docs.danubedata.ro/concepts.md and https://docs.danubedata.ro/concepts.json. https://docs.danubedata.ro/index.json catalogues every page with all three URLs. Both formats send an `ETag`, so a conditional request re-fetches nothing when the page has not changed. - [Platform Automation & Diagnostics](https://docs.danubedata.ro/platform-automation): **THE machine contract.** Every managed resource — VPS, databases, cache, queues, storage, static sites, apps, uptime checks, volumes — reports state through the same `status_details` model and answers the same diagnostic questions. Read this first; it applies to every product. - [Failure Codes](https://docs.danubedata.ro/failure-codes): Every stable error and finding code, with severity, retryability and remediation. Branch on these, never on prose. - [Rapids Automation & Diagnostics](https://docs.danubedata.ro/rapids-automation): The platform contract plus the surfaces unique to Rapids containers — preflight, probe, revisions. - [API Authentication](https://docs.danubedata.ro/api-authentication): Bearer tokens, abilities, and project scoping - [API Overview](https://docs.danubedata.ro/api-overview): Base URL, response envelope, pagination, error codes - [API Rate Limits](https://docs.danubedata.ro/api-rate-limits): Limit headers and backoff behaviour - [CI/CD: Build, Push, Deploy](https://docs.danubedata.ro/tutorial-cr-rapids-cicd): End-to-end pipeline from git push to running container - [Troubleshooting CR + Rapids](https://docs.danubedata.ro/tutorial-cr-rapids-troubleshooting): Diagnosing a deploy that did not come up Rules that prevent the most common automation failures. Rules 1-3, 5, 6, 9, 10, 13 and 15-17 hold for **every product**. Rules 4, 7, 8, 11, 12 and 14 name fields that only Rapids containers have (revisions, conditions, replicas), though the principles behind them carry over. 1. **Scope every request to a project.** Send `X-Team-Id: {id}` on API calls, or `--project {id}` on CLI calls. Omitting it uses the account default, which is rarely what automation wants. 2. **Poll `status_details.operation.terminal`, never the status string.** Terminality is an explicit boolean; inferring it from text is how loops hang forever. 3. **`health: "unknown"` is not a failure.** During a rollout the platform genuinely does not know yet. Treating it as an outage makes every deploy look broken. 4. **`summary: "degraded"` is terminal but your site is UP** — a new revision failed while an older one keeps serving. Redeploying the same config fails identically. 5. **`data.available: false` is not an empty result.** `available: true` with `entries: []` means your container printed nothing; `available: false` (HTTP 503) means the log store did not answer and says nothing about your container. Retry the latter, act on the former. 6. **Always pass `since` when reading logs.** The default window is 30 minutes, so a container that failed an hour ago legitimately returns nothing. 7. **Conditions are tri-state.** `True`, `False` (a settled verdict), `Unknown` (still in progress). Treating `Unknown` as `False` is the single most common mistake. 8. **`actual_replicas: 0` with a failed `Ready` condition means no pod was ever scheduled** — usually an image that could not be pulled. Logs will be legitimately empty; fix the image reference or credential instead of hunting for output. 9. **Check `error.retryable` before retrying.** Retrying a non-retryable failure only consumes build and request quota. 10. **Use `--json` on every CLI call** and parse the result; human-readable output is not a stable interface. Every `--json` invocation emits one envelope on stdout — `{success, data, error, meta}` — for failures as well as successes. 11. **Preflight the image before deploying it.** `danube rapids preflight --image --json` resolves the digest and architectures and says whether a pull can succeed. A missing tag or an arm64-only image otherwise appears as a revision stuck in `ContainerMissing` minutes later, naming neither. `can_pull: null` means the image is in a registry DanubeData cannot read — unknown, not broken. 12. **Wait on the operation, not on a status string.** Create, deploy and redeploy return `operation.operation_id`; `danube operations wait --timeout 30m --json` blocks until `terminal` and honours the server's `poll_after_ms`. A `operation.wait_timeout` means the work has not finished — it does not mean it failed. 13. **`stale: false` with an old `observed_at` is correct.** `stale` flags only an *in-flight* operation unconfirmed for 15 minutes; a settled state never expires, because an error established an hour ago is still an error. 14. **A plain-HTTP URL is not a TLS failure.** Internal Knative URLs are HTTP by design and public TLS terminates at the edge proxy, so `danube rapids probe` reports `tls.negotiated: null` rather than an error. Do not treat `TLSNotEnabled` on an internal address as a deployment failure. 15. **Every managed resource reports the same `status_details` model** — VPS, databases, cache, queues, object storage, static sites, managed apps, uptime checks, block volumes and Rapids containers. Write the polling and error handling once. The field names, value domains and the meaning of `operation.terminal` are identical across products. 16. **Branch on `code`, never on prose.** `finding.code` from `/diagnose` and `error.code` from a failure are stable interfaces; `message`, `summary` and `remediation` are written for humans and get reworded. Codes are namespaced by product (`cache.`, `database.`, `vps.`, …) and listed at https://docs.danubedata.ro/failure-codes. 17. **Read `capabilities` before calling a sub-resource.** Each resource states whether `logs`, `events` and `diagnose` will answer for it, so you never have to probe and eat a 404. VPS reports `logs: false` by design — guest output is yours, and the platform does not read inside your VM. ## Docs - [Getting Started](https://docs.danubedata.ro/getting-started): Platform introduction, account setup, and core concepts - [Quick Start](https://docs.danubedata.ro/quick-start): Create your first resource in 5 minutes - [Core Concepts](https://docs.danubedata.ro/concepts): Teams, resources, billing, and platform terminology - [Release Notes](https://docs.danubedata.ro/platform-releases): Platform changelog ## Products - [VPS Instances](https://docs.danubedata.ro/vps-overview): KubeVirt-based virtual machines with shared (EUR 4.49-49.99/mo) and dedicated CPU (EUR 8.99-99.99/mo); Ubuntu, Debian, AlmaLinux, Rocky, Fedora, Alpine - [Managed Databases](https://docs.danubedata.ro/databases-overview): MySQL, PostgreSQL, MariaDB with replicas, backups, parameter groups; EUR 19.99-79.99/mo - [Managed Cache](https://docs.danubedata.ro/cache-overview): Redis, Valkey, Dragonfly with replicas and persistence; EUR 4.99-59.99/mo - [Object Storage](https://docs.danubedata.ro/object-storage): S3-compatible on replicated Ceph, AES-256 encryption, versioning, lifecycle rules; EUR 5.49/mo (1TB storage + 1TB egress included) - [Container Registry](https://docs.danubedata.ro/container-registry): Private OCI registry at cr.danubedata.ro; free Starter plan on every team - [Serverless Containers (Rapids)](https://docs.danubedata.ro/serverless-overview): Knative-based with scale-to-zero, Docker/Git/ZIP deploy, buildpacks, custom domains; pay-per-use pricing - [Static Sites](https://docs.danubedata.ro/static-sites): Deploy static websites and SPAs via ZIP, Git, or CLI with automatic TLS and nginx caching; free tier available - [Storage Share](https://docs.danubedata.ro/storage-share): Managed Nextcloud with S3-backed storage (1-10TB), WebDAV, mobile app QR setup; EUR 4.99-29.99/mo - [Managed Apps](https://docs.danubedata.ro/managed-apps): WordPress, n8n, Ghost with dedicated resources, custom domains, snapshots; EUR 6.99-79.99/mo ## Quick Starts - [VPS Quick Start](https://docs.danubedata.ro/quick-start): Create a VPS instance - [Object Storage Quick Start](https://docs.danubedata.ro/object-storage-quickstart): Create an S3-compatible bucket with code examples - [Serverless Quick Start](https://docs.danubedata.ro/serverless-quickstart): Deploy a serverless container - [Static Sites Quick Start](https://docs.danubedata.ro/static-sites-quickstart): Deploy a static website step by step - [Build a Static Site with AI](https://docs.danubedata.ro/static-sites-ai): Use Claude, ChatGPT, or other LLMs to generate and deploy a website - [Storage Share Quick Start](https://docs.danubedata.ro/storage-share-quickstart): Deploy a managed Nextcloud instance - [Managed Apps Quick Start](https://docs.danubedata.ro/managed-apps-quickstart): Deploy WordPress, n8n, or Ghost ## Container Registry - [Container Registry](https://docs.danubedata.ro/container-registry): Push to `cr.danubedata.ro/{team-slug}/{repo}:{tag}`; token-only auth, plans, quotas, GC, troubleshooting - [First Deploy Tutorial](https://docs.danubedata.ro/tutorial-cr-rapids-first-deploy): Push your first image and run it on Rapids - [CI/CD Tutorial](https://docs.danubedata.ro/tutorial-cr-rapids-cicd): Automate build, push, and deploy - [Production Tutorial](https://docs.danubedata.ro/tutorial-cr-rapids-production): Domains, secrets, and autoscaling - [Troubleshooting Tutorial](https://docs.danubedata.ro/tutorial-cr-rapids-troubleshooting): ImagePullBackOff, quota, and auth failures - [Private Container Registry](https://docs.danubedata.ro/serverless-private-registry): Pull from GHCR, Docker Hub, GitLab, ECR into a Rapid ## Serverless Containers (Rapids) - [Rapids Automation & Diagnostics](https://docs.danubedata.ro/rapids-automation): Machine contract for scripts, CI, and agents - [Serverless Invoking](https://docs.danubedata.ro/serverless-invoking): Code examples in cURL, JavaScript, Python, PHP, Go - [Serverless Authentication](https://docs.danubedata.ro/serverless-authentication): Secure container endpoints - [Serverless Custom Domains](https://docs.danubedata.ro/serverless-domains): DNS verification and TLS setup - [Serverless Git Deployments](https://docs.danubedata.ro/serverless-git): Webhooks and auto-build - [Rapids Egress IPs](https://docs.danubedata.ro/serverless-egress-ips): Source addresses for allow-listing on third-party services ## Static Sites - [Static Sites](https://docs.danubedata.ro/static-sites): ZIP, Git, or CLI deploys with automatic TLS and nginx caching - [Static Sites Custom Domains](https://docs.danubedata.ro/static-sites-domains): DNS verification and Let's Encrypt TLS - [Static Sites Git Deployments](https://docs.danubedata.ro/static-sites-git): GitHub/GitLab/Bitbucket webhooks and auto-deploy ## VPS - [Creating VPS Instances](https://docs.danubedata.ro/vps-creating): Provisioning options and first boot - [Managing VPS Instances](https://docs.danubedata.ro/vps-managing): Start, stop, resize, rebuild, console - [VPS Resource Profiles](https://docs.danubedata.ro/vps-profiles): CPU/memory/disk per plan - [VPS SSH Access](https://docs.danubedata.ro/vps-ssh): SSH key management and remote access - [Custom Cloud-Init Scripts](https://docs.danubedata.ro/vps-cloud-init): User data for unattended provisioning - [VPS Snapshots](https://docs.danubedata.ro/vps-snapshots): Point-in-time backups and restore ## Databases & Cache - [MySQL](https://docs.danubedata.ro/databases-mysql), [PostgreSQL](https://docs.danubedata.ro/databases-postgresql), [MariaDB](https://docs.danubedata.ro/databases-mariadb): Per-engine details and connection instructions - [Database Replicas](https://docs.danubedata.ro/databases-replicas): Read replica setup and management - [Database Backups](https://docs.danubedata.ro/databases-backups): Automated and manual backup strategies - [Database Parameter Groups](https://docs.danubedata.ro/databases-parameters): Custom configuration profiles - [SQL Studio](https://docs.danubedata.ro/databases-sql-studio): Browser-based SQL client - [Redis Managed Cache](https://docs.danubedata.ro/cache-redis): Redis-specific configuration - [Cache Replicas](https://docs.danubedata.ro/cache-replicas): Read replica setup - [Cache Persistence](https://docs.danubedata.ro/cache-persistence): RDB, AOF, and hybrid persistence modes - [Cache Monitoring](https://docs.danubedata.ro/cache-monitoring): Hit rate, memory, and connection metrics - [Queues via MQTT & STOMP](https://docs.danubedata.ro/queue-mqtt-stomp): Connecting to managed RabbitMQ over MQTT and STOMP ## Storage - [Storage Overview](https://docs.danubedata.ro/storage-overview): Choosing between NVMe, block, and object storage - [NVMe Storage](https://docs.danubedata.ro/storage-nvme): High-performance local NVMe SSDs - [Block Storage](https://docs.danubedata.ro/storage-block): Network-attached block devices - [Network-Attached Volumes](https://docs.danubedata.ro/volumes): Attaching and resizing volumes - [Storage Snapshots](https://docs.danubedata.ro/storage-snapshots): Volume snapshot lifecycle - [Automated Snapshots](https://docs.danubedata.ro/automated-snapshots): Scheduling and retention - [S3 Access Keys](https://docs.danubedata.ro/object-storage-access-keys): Creating and rotating S3 credentials - [Object Storage Security](https://docs.danubedata.ro/object-storage-security): Access control, bucket policies, encryption - [Object Storage Versioning](https://docs.danubedata.ro/object-storage-versioning): Version management and recovery - [S3 API Supported Actions](https://docs.danubedata.ro/object-storage-supported-actions): Exact S3 operation coverage - [Lifecycle Rules Guide](https://docs.danubedata.ro/guides/object-storage-lifecycle): Expiring and transitioning objects - [Object Storage Migration](https://docs.danubedata.ro/object-storage-migration): Moving data in, and troubleshooting ## Networking - [Networking Overview](https://docs.danubedata.ro/networking-overview): Public, private, and internal addressing - [Firewalls](https://docs.danubedata.ro/networking-firewalls): Per-instance inbound traffic rules - [Private Networks](https://docs.danubedata.ro/networking-private): Isolated inter-resource networking - [Network Peering](https://docs.danubedata.ro/networking-peering): Connecting private networks - [Load Balancers](https://docs.danubedata.ro/networking-load-balancers): Distributing traffic across backends - [Custom Domains & DNS](https://docs.danubedata.ro/custom-domains): DNS records, verification, and TLS issuance ## Monitoring - [Monitoring Overview](https://docs.danubedata.ro/monitoring-overview): CPU, memory, disk, and network metrics - [Monitoring Metrics](https://docs.danubedata.ro/monitoring-metrics): Available metrics per resource type - [Logs](https://docs.danubedata.ro/monitoring-logs): Instance log explorer and retention - [Uptime Checks](https://docs.danubedata.ro/monitoring-uptime): External availability probes - [Alerting](https://docs.danubedata.ro/monitoring-alerting): Email and webhook notifications ## CLI - [CLI Overview](https://docs.danubedata.ro/cli-overview): Install `npm i -g @danubedata/cli`, authenticate, configure; `--json` and `--project` on every command, `DANUBE_TOKEN` for CI - [CLI: VPS](https://docs.danubedata.ro/cli-vps): Manage VPS instances from the terminal - [CLI: Object Storage](https://docs.danubedata.ro/cli-storage): Buckets, keys, and object operations - [CLI: Static Sites](https://docs.danubedata.ro/cli-pages): `danube pages link`, `danube pages deploy`, domains, rollbacks - [CLI: Serverless Containers](https://docs.danubedata.ro/cli-serverless): `danube rapids create/deploy/update/rm`, plus `logs`, `revisions`, `events` for diagnostics ## API & Terraform - [API Overview](https://docs.danubedata.ro/api-overview): RESTful API at danubedata.ro/api/v1 with OpenAPI 3.0 spec - [API Authentication](https://docs.danubedata.ro/api-authentication): Bearer tokens with granular abilities (vps:read, serverless:diagnostics, etc.) - [API Rate Limits](https://docs.danubedata.ro/api-rate-limits): Rate limiting headers and best practices - [Object Storage API](https://docs.danubedata.ro/api-storage): S3 API endpoint at s3.danubedata.ro with code examples - [Terraform Overview](https://docs.danubedata.ro/terraform-overview): Provider AdrianSilaghi/danubedata ~> 0.1 - [Terraform Resources](https://docs.danubedata.ro/terraform-resources): danubedata_vps, danubedata_database, danubedata_cache, danubedata_storage_bucket, danubedata_serverless, etc. - [Terraform Data Sources](https://docs.danubedata.ro/terraform-data-sources): danubedata_vps_images, danubedata_cache_providers, danubedata_database_providers, danubedata_ssh_keys - [Terraform Examples](https://docs.danubedata.ro/terraform-examples): Real-world configuration examples ## Billing & Account - [Billing Overview](https://docs.danubedata.ro/billing-overview): Hourly billing, monthly invoices, payment methods - [Pricing](https://docs.danubedata.ro/billing-pricing): Complete pricing tables for all products with cost examples and comparisons - [Payments](https://docs.danubedata.ro/billing-payments): Payment methods and failures - [Projects (Teams)](https://docs.danubedata.ro/account-projects): Team management, roles, and resource quotas - [Account Limits](https://docs.danubedata.ro/account-limits): Default resource limits per project ## Platform - [Infrastructure](https://docs.danubedata.ro/platform-infrastructure): Kubernetes on Hetzner dedicated servers, KubeVirt, Knative, ArgoCD - [Security](https://docs.danubedata.ro/platform-security): 2FA, SSH keys, encryption, firewalls, network isolation - [SLA & Uptime](https://docs.danubedata.ro/platform-sla): 99.99% network availability SLA - [Data Centers](https://docs.danubedata.ro/platform-datacenters): FSN1 (Falkenstein), NBG1 (Nuremberg), HEL1 (Helsinki), ASH (Ashburn) ## Optional - [Managing Managed Apps](https://docs.danubedata.ro/managed-apps-management): Day-2 operations for WordPress, n8n, Ghost - [Managing Storage Share](https://docs.danubedata.ro/storage-share-management): Day-2 operations for Nextcloud - [Invoices](https://docs.danubedata.ro/billing-invoices): Invoice management and downloads - [Account Settings](https://docs.danubedata.ro/account-settings): Profile, 2FA, and preferences