Static Sites

DanubeData Static Sites lets you deploy static websites and single-page applications with automatic TLS, custom domains, and global caching — powered by a fast nginx edge layer with zero server management.

Key features

  • Three deployment methods — Upload a ZIP file, connect a Git repository, or push via CLI
  • Automatic builds — Push to GitHub, GitLab, or Bitbucket and your site deploys automatically
  • Custom domains — Bring your own domain with DNS verification and automatic TLS via Let's Encrypt
  • Instant rollbacks — Revert to any previous deployment with one click
  • Password protection — Restrict access to your site with HTTP Basic Auth
  • Real-time build logs — Watch your build progress live in the dashboard
  • Global caching — Optimized nginx configuration with aggressive caching for CSS, JS, and images
  • Free tier — Deploy your first site at no cost
  • EU data residency — All data stored in Falkenstein, Germany (GDPR-compliant)

Deployment methods

ZIP upload

Upload a ZIP file containing your pre-built site files directly through the dashboard. Best for simple sites, quick prototyping, or when you have a local build pipeline.

  • Maximum file size: 200 MB
  • Supported format: .zip

Git repository

Connect a GitHub, GitLab, or Bitbucket repository for automatic deployments. Each push to your configured branch triggers a new build and deployment.

  • Supported providers — GitHub, GitLab, Bitbucket
  • Authentication — Public repos require no credentials. Private repos support SSH keys or access tokens.
  • Auto-deploy — Builds trigger automatically on push via webhooks
  • Branch selection — Deploy from any branch (defaults to main)

CLI push

Push your site files from the command line using the DanubeData API. Ideal for CI/CD pipelines and automated workflows.

Bash
# Create a tarball of your site files
tar -czf site.tar.gz -C ./dist .

# Deploy via API
curl -X POST \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "file=@site.tar.gz" \
  https://api.danubedata.ro/api/v1/static-sites/{site-id}/deploy

How it works

Build and deployment pipeline

Text
Upload / Git Push / CLI Push
         |
         v
     Build Queued
         |
         v
  Building Container Image (Kaniko)
         |
         v
   Pushing to Registry
         |
         v
   Deploying via GitOps (ArgoCD)
         |
         v
      Site Active
  1. Source upload — Your files are uploaded to build storage
  2. Container build — A Kaniko job creates an optimized nginx container image with your files
  3. Registry push — The built image is pushed to the DanubeData container registry
  4. GitOps deployment — ArgoCD deploys the container to your tenant namespace
  5. Live — Your site is accessible at its URL with automatic TLS

Build statuses

StatusDescription
PendingBuild queued, waiting for resources
ProcessingPreparing build context
Building imageKaniko is building the container image
PushingUploading the built image to the registry
SucceededBuild completed successfully, deployment starting
FailedBuild failed — check build logs for details
CancelledBuild was cancelled before completion

Site statuses

StatusDescription
PendingSite created, awaiting first deployment
BuildingA build is in progress
DeployingDeployment to infrastructure in progress
ActiveSite is live and accessible
StoppedSite has been stopped
ErrorBuild or deployment failed — check the error details

Status changes are pushed to your dashboard in real time via WebSocket.

Site access

Each site is accessible at:

Text
https://{slug}.pages.danubedata.ro

The slug is auto-generated from your site name with a short suffix to ensure uniqueness.

Plans and pricing

PlanStorageBandwidthSitesCustom domainsPrice/month
Free100 MB10 GB10EUR 0.00
Starter500 MB100 GB105 per siteEUR 2.99
Pro2 GB500 GB5020 per siteEUR 9.99
  • Free — Perfect for personal projects, portfolios, and testing
  • Starter — For small teams with multiple sites and custom domain needs
  • Pro — For agencies and businesses with high-traffic sites

Billing is hourly based on actual usage. Monthly invoices are generated on the 1st of each month.

Custom domains

Add your own domain to any site on a paid plan (Starter or Pro).

Adding a custom domain

  1. Navigate to your site detail page
  2. Click the Domains tab
  3. Click Add Domain
  4. Enter your domain (e.g., www.example.com)

Domain verification

After adding a domain, verify ownership by adding a DNS TXT record:

  1. Record name_danubedata-verify.your-domain.com
  2. Record value — The verification token shown in the dashboard

Add this TXT record at your DNS provider, then click Verify in the dashboard. DNS propagation may take a few minutes.

Connecting your domain

After verification, create a CNAME record pointing your domain to your site:

Text
your-domain.com  CNAME  {slug}.pages.danubedata.ro

Once the CNAME is in place, a TLS certificate is provisioned automatically via Let's Encrypt.

Domain statuses

Verification status:

StatusDescription
PendingAwaiting DNS TXT record verification
VerifyingDNS check in progress
VerifiedDomain ownership confirmed
FailedVerification failed — check your DNS records and retry

TLS status:

StatusDescription
PendingAwaiting TLS certificate provisioning
ProvisioningCertificate being generated via Let's Encrypt
ActiveHTTPS is active with a valid certificate
FailedCertificate provisioning failed — ensure CNAME is correct

Setting a primary domain

You can designate any verified domain as the primary domain. The primary domain is used as the canonical URL for your site.

Password protection

Restrict access to your entire site using HTTP Basic Auth. This is useful for staging environments, client previews, or private content.

  1. Navigate to the site detail page
  2. Click Edit
  3. Enable Password Protection
  4. Enter a username and password (minimum 8 characters)
  5. Click Save

Visitors will be prompted for credentials before accessing any page on the site.

Git webhooks

When using Git repository deployment, DanubeData sets up webhook integration for automatic builds.

Supported providers

ProviderSignature headerVerification method
GitHubX-Hub-Signature-256HMAC-SHA256
GitLabX-Gitlab-TokenToken comparison
BitbucketX-Hub-SignatureHMAC-SHA256

Setting up webhooks

  1. Navigate to the site detail page
  2. Copy the Webhook URL and Webhook Secret shown in the Git configuration section
  3. In your Git provider settings, add a new webhook:
    • URL — The webhook URL from the dashboard
    • Secret — The webhook secret from the dashboard
    • Events — Push events only

Auto-deploy

When auto-deploy is enabled, every push to the configured branch triggers a new build and deployment automatically. You can disable auto-deploy from the site settings if you prefer manual deployments.

Deployment history and rollbacks

Every successful deployment is recorded with its revision number, commit details, and timestamp.

Viewing deployments

Navigate to the site detail page and click the Deployments tab to see your full deployment history.

Rolling back

To revert to a previous deployment:

  1. Open the Deployments tab
  2. Find the deployment you want to restore
  3. Click Activate

The previous deployment is restored immediately without rebuilding. This is useful for quickly reverting a broken deployment.

Caching

Static Sites use an optimized nginx configuration with aggressive caching headers:

Content typeCache policy
CSS and JavaScriptpublic, max-age=31536000, immutable (1 year)
Imagespublic, max-age=604800 (7 days)
HTMLno-cache (always revalidated)

HTML files are always served fresh to ensure visitors see the latest content, while static assets (CSS, JS, images) are cached aggressively for performance.

Technical specifications

SpecificationValue
Web servernginx 1.27 (Alpine)
TLSLet's Encrypt with automatic renewal
Default domain{slug}.pages.danubedata.ro
Maximum upload size200 MB (ZIP)
Build timeout10 minutes
Build systemKaniko (containerized builds)
Deployment methodGitOps via ArgoCD
Data locationGermany (EU)

FAQ

What types of sites can I deploy?

Any static site or single-page application (SPA). This includes sites built with React, Vue, Next.js (static export), Nuxt (static), Hugo, Jekyll, Astro, Eleventy, or plain HTML/CSS/JS.

Can I use a custom build command?

Not currently. Static Sites expects pre-built files. Run your build locally or in CI/CD, then upload the output directory as a ZIP or push via CLI.

How do I deploy a React or Vue app?

Build your app locally (e.g., npm run build), then upload the output directory (typically dist/ or build/) as a ZIP file. For Git deployments, set the Publish directory to the folder containing your built files.

Can I use the Free plan for production?

Yes. The Free plan includes 100 MB storage and 10 GB bandwidth, which is sufficient for personal sites and portfolios. You are limited to one site with no custom domains.

How long does a deployment take?

Most deployments complete within 1-2 minutes. Build time depends on the size of your files. The build timeout is 10 minutes.

Can I password-protect only certain pages?

No. Password protection applies to the entire site. For per-page access control, implement authentication in your application code.

What happens if my build fails?

Your current live deployment remains active. Failed builds do not affect the running site. Check the build logs for error details and try again.

Can I use a root domain (apex domain)?

Custom domains work with both subdomains (www.example.com) and root domains (example.com). For root domains, use an A or ALIAS record instead of CNAME, depending on your DNS provider's capabilities.

Is there a CLI tool?

You can deploy using the DanubeData API with any HTTP client (curl, httpie, etc.) or integrate it into your CI/CD pipeline. See the CLI deployment section for details.

How do rollbacks work?

Each deployment creates a container image stored in the registry. Rolling back activates a previous image without rebuilding, making rollbacks nearly instant.

Next steps


Questions? Contact support at support@danubedata.ro