KuboRun documentation

Help for your next step.

Create your website, add your content and publish when ready. Find answers to common questions and guidance for advanced settings.

Where do I start?

01 / Practical guide

Choose a type

Would you like to create a website from scratch or publish an application you already have? Choose the starting point that fits.

Application catalog

From Add service, search PostgreSQL, MySQL, MariaDB, MongoDB, Redis, Valkey, n8n and other applications. Choose a version and fill in application-specific settings. Select prepares a draft with image, ports, volume and resources: review, save, complete secrets and deploy. Databases stay private; add a domain to web applications when needed. Supabase creates 11 private service drafts and opens the first, with manual setup instructions for each. Prepare its files, startup commands and keys before deploying; this is not an automatic installation. WordPress and Nextcloud also prepare a private MySQL database with its own volume. Set the requested secrets before deployment; WordPress needs matching database passwords. pgAdmin and Vaultwarden are also available.

Create a website without coding

Start with Kubo Web to design pages, add a blog and prepare content in several languages. Work in the visual editor and publish when ready. The Kubo Web guide is just below.

Static website

For a landing page, documentation or an app that runs in the browser. Publish generated HTML, CSS and JavaScript; no application server runs. A React app built with Vite usually fits here if its API lives elsewhere.

Hybrid website

For pages that need a server: per-request content, sessions or dynamic rendering. The selector supports Astro, Next.js, Nuxt, SvelteKit, React Router and Angular. Prepare the server image, static files and a Kubo-compatible build manifest; selecting a framework does not generate them.

Service

For a full API, a database or a background worker. You define the image to run and how many copies to keep. Choose this for a continuous process or a runtime other than Python.

Function

For a Python task triggered by an HTTP request, such as a webhook. It can start from zero and scale with requests; the first start may take longer. It is not the choice for a database or a continuous process.

02 / Practical guide

Kubo Web

Create a website of your own, add a blog and publish changes without coding. Find help for each step here.

Create your first website

Choose New website, give it a name and start adding pages. You can change the design and content whenever you like. If you already have a compatible project, use the import option.

Change the design

Add text, images and sections from Add elements. Select what you want to change and adjust its colours, size or spacing in the side panel. Drag elements to reorder them; the placement marker shows where they will go.

Check the mobile version

Review desktop, tablet and mobile layouts. You can adjust the arrangement and size of elements in each view. When editing on a phone, the preview fits the available screen.

Use a section across several pages

Save a section in the reusable library and insert it where needed. Editing it updates its copies. To make one copy different, detach it before changing it.

Add photos and videos

Files lets you browse, replace and delete uploaded images and videos. Adjust how they fit to avoid unwanted cropping. To add YouTube, paste the link into a Video element; the player loads when a visitor opens it.

Create and organize pages

Add pages in Pages and choose a short, descriptive address for each one. Delete a page with the trash button and recover it with Undo. The home page is retained. You can also customize the message shown when someone opens an address that does not exist.

Write your blog

Enable Blog and choose New article. Write and format your content, add a title, cover and tags, and keep it as a draft until ready. You can also import articles in Markdown, a text format that preserves headings, links and other information.

Customize the article listing

Open Blog index and template. Change article cards and add search or tag filters. Show articles on numbered pages, with a load-more button or as readers scroll down. Edit the Empty state section too: it appears when there are no results. The listing can be styled and moved, but not removed.

Prepare your website for search engines

Write a title and description that explain each page and use recognizable addresses. Set your public domain in Languages/SEO so the sitemap and page references point to your website. These tools help search engines understand it; they do not guarantee a position in results.

Offer several languages

Add languages and create linked versions of your pages. They share the design, but each has its own text and address. Write translations on the page in that language or in the element panel. Missing text uses the main language. Place a language selector wherever you want. Translation is not automatic.

Receive messages through a form

Add a form, choose its fields and mark the required ones. To receive replies by email, connect a provider such as Resend or SMTP using the setup instructions. You can add spam protection with reCAPTCHA or Turnstile. Test delivery after publishing: preview does not run the email service.

Try your website before publishing

Open Preview to test links, menus and other elements. Full screen shows the website without editor panels. Save keeps your work, but does not publish changes for visitors.

Publish and update your website

Choose Publish, select a new or existing KuboRun project and configure the domain. Follow progress in KuboRun. To publish later changes, use Redeploy: it keeps the same destination and prepares the new version. If something fails, review the message and retry; a saved website is not necessarily published.

Return to an earlier version

Versions lets you browse earlier saves and restore one in the editor. Review it before saving or publishing: restoring does not change the website visitors see. Up to 20 recent versions are retained within the history storage allowance.

Bring an existing website

Import an Astro folder or ZIP, or connect a compatible KuboRun project. Original pages are retained, but do not automatically become editable elements. You can add new pages with the visual editor. Some imported pages cannot be previewed; the editor explains why. Projects managed through a repository may need changes made there.

What to do about size warnings

There is no fixed page count. Pages shows project size and the number of elements. Warnings help identify large files or complex designs. Each project supports 25 MB, 5,000 components and 8 nesting levels. Near the limit, reduce image and video sizes or simplify larger pages.

Advanced options and export

For more customization, add CSS, JavaScript or an HTML element. Private variables configure integrations without including their saved values in downloads. External export is disabled by default; an administrator can enable it for your account. Once enabled, Export Astro downloads the project for another compatible host; server-side form actions need a server and the appropriate credentials. These options may require technical help.

Save with confidence

Use Save or Ctrl/Cmd+S to keep your work. Undo recovers recent changes and My websites cards show the last saved edit. If another version was saved while you were working, the editor warns you to prevent overwriting it. Simultaneous editing by several people is not yet available.

Review individual articles

In Review, select an article to submit, approve and schedule it. First publish the entire design through that panel: article publications use that version and keep other draft articles and design changes private.

03 / Practical guide

Create your project

A project groups the parts of an application, such as a website, API and database.

Name and source

Choose a recognizable name (up to 80 characters). Enter a public HTTPS GitHub, GitLab or Bitbucket repository URL, choose a ZIP or start without a repository. Use the repository URL, not a file URL, and never include credentials.

Saving and publishing are separate steps

Save the project to continue later, even if it is incomplete. When ready, choose Deploy. If it is already published, the same button applies changes without you having to stop it first. Check status, versions and activity logs in the project to confirm the result.

04 / Practical guide

Name, image and replicas

Fill in these details for each resource you add.

Resource name

Use a unique name within the project, such as web, api or database. Start with a lowercase letter; use lowercase letters, numbers and hyphens, up to 40 characters.

Container image

This is your executable application package, not the repository URL. Example format: ghcr.io/your-team/app:1.0.0. Replace it with a real image you have prepared. A fixed version makes deployments predictable. Services, hybrid websites and functions require an image.

Replicas

These are copies of a service or hybrid website. Start with 1 if you only need one copy; 0 pauses it. The editor allows up to 5. Each copy needs its own resources. Do not increase database replicas without configuring database replication.

05 / Practical guide

Configure a website

The folder depends on your build output, not just the framework name.

Static files folder

Enter a path relative to the repository root, such as ./dist if that is your web output. It must contain the compiled files to serve, not source components. Do not use an absolute path or ../. Static websites do not support runtime variables or volumes.

Framework and build manifest

For a hybrid website, choose the actual framework and the path to the Kubo-compatible manifest, for example ./kubo-build.json. This file describes static files and dynamic routes. It is not package.json. Check that your build produces it alongside the image and files.

06 / Practical guide

Configure a function

A function also needs an image prepared for its runtime.

Python and directory

Select Python 3.12, 3.13 or 3.14 to match your image. The directory is an absolute path inside that image, such as /app/api, not a folder on your computer.

Maximum instances

This limits the copies that can handle requests concurrently, from 1 to 5. More instances allow more simultaneous work and may increase usage. It is not a number of copies that always stay running.

07 / Practical guide

Port and domain

Expose only resources that need visitors or external requests.

Internal port

This is the port your application listens on inside the image, for example 3000 or 8080. It must match the application configuration. A service with port 0 does not expose a port. A function needs a valid port.

Domain

Enter app.example.com without https:// or paths. Static and hybrid websites require one; an internal service can leave it empty. Publishing requires ownership verification and DNS configuration following platform instructions. localhost is for local testing, not a public domain.

Free KuboRun domain

If you do not own a domain, choose “Generate free domain”. You will receive a name such as ….apps.kuborun.com and the domain field will be filled in. This is available for HTTP websites and APIs once enabled by the platform. The name is free; normal application resource charges still apply. Clicking again returns the same name. You can also select one of “Your generated domains”. Names remain in your account after closing a draft (up to 20). Only your account can configure it. Deleting its last service permanently retires the name and removes its DNS record; old names are never reassigned. If the reserve is being replenished, try again shortly. Assigning a name does not publish the application: deployment and HTTPS are also required.

08 / Practical guide

CPU, memory and files

Choose resources per copy of your application. Adjust them based on actual usage.

CPU and memory

1000 mCPU equals 1 CPU; 1024 MiB equals 1 GiB of memory. The editor accepts 100–4000 mCPU and 128–8192 MiB per replica or instance. Initial values do not guarantee every app will run: check your runtime requirements.

Volumes

Add one to keep data across versions, such as database files. Enter a name, the absolute path where the app writes and capacity in GiB. The path must match your image; /data is only an example. A volume is not a substitute for a backup.

Disk capacity

The maximum is 900 GiB per volume. 0 means no capacity reservation. Reserved space requires managed storage allocation before deployment. Removing a volume from the draft only changes configuration; it does not delete deployed data.

09 / Practical guide

Variables and secrets

Separate public configuration from credentials.

Environment variables

For non-sensitive values, such as NODE_ENV=production. Names use uppercase letters, numbers and underscores and cannot start with a number. They appear in exported configuration; do not put passwords or tokens here.

Secrets

Add the key, such as DATABASE_URL or API_KEY, and save the project configuration. Under Secrets, choose Set value to store it encrypted. Values are never displayed again or included in YAML. Redeploy affected services after updating a value. Deleting a saved value does not remove it from an already running service; redeploy that service. Do not reuse a name for both a variable and a secret.

10 / Practical guide

Review and publish

Valid configuration is the first step; confirm a deployed version through its status.

Before continuing

Review editor errors, image, paths, port, domains and pending secrets. Create and edit resources in Services. Variables, secrets and storage are in expandable sections. Use “View YAML” to inspect the file and download kubo.yaml to keep the draft. You do not need to write YAML to fill in the fields.

Check that publishing completed

Follow deployment progress and wait for it to finish. Then check the service status and open its public address. If it fails, review the error and logs before trying again. Saving configuration does not publish changes.

If something fails

If the editor rejects a path, check whether it expects a repository-relative path or an absolute path inside the image. If a deployed app does not respond, check its port, domain and state; logs, when available, help identify failures. Never share credentials when asking for help.

11 / Practical guide

Replica protection

Let a service finish a job before a version change or scale-down retires its replica. Your application requests protection, checks whether retirement is pending and releases protection when it finishes.

What is protected?

Only the service replica making the request. Kubo identifies it through its private credential; the request cannot select another replica or service. Concurrent jobs can hold separate protections. Releasing one does not release the others. This API is for service replicas, not functions.

How long does protection last?

During normal operation, choose a TTL from 1 to 1,800 seconds and renew it before it expires if needed. When Kubo first requests retirement, any protections still active receive a common deadline exactly 30 minutes from that request, replacing their previous expiry. For example, retirement requested at 14:00 allows waiting until 14:30, even if the original TTL was about to expire. Without an active protection, there is no grace period.

What happens when retirement is pending?

No new protections or renewals are accepted: those calls return HTTP 409 with retirement_pending. Check GET /lifecycle regularly. It reports retirement_pending, the reason, requestedAt, deadline and acceptingProtections. Stop accepting new jobs and finish existing work. Releasing all protections allows earlier retirement; otherwise Kubo may retire the replica after the fixed deadline. Polling, further deployments, restarts and node reuse do not restart the countdown.

How does my application connect?

Newly created service replicas receive KUBO_LIFECYCLE_URL and KUBO_REPLICA_TOKEN as environment variables. Use the injected URL and send Authorization: Bearer followed by the token on every request. Do not publish this endpoint or log the token. Existing replicas created before this feature need to be recreated to receive these variables. No administrator credential is needed.

Acquire and renew protection

Send POST /protect relative to KUBO_LIFECYCLE_URL with Content-Type: application/json, a unique Idempotency-Key per job and a body such as {"ttl":120}. Save the returned protectionId and start critical work only after success. If the response is lost, retry with the same key and TTL; never reuse the key for another job. PATCH /protect/{protectionId} with the same body format renews protection only before retirement. An unavailable API does not confirm protection.

Release protection

Send DELETE /protect/{protectionId} as soon as the job finishes, including on error. Release is idempotent, so it can be retried. Use a separate protectionId for each concurrent job and keep checking GET /lifecycle while working. A replacement replica has its own identity and cannot inherit the old replica’s credential.

What can I choose in Run?

When updating or stopping a protected replica explicitly, choose Wait to respect protection or Continue immediately to interrupt it. Deleting a service or project, or shutting down the whole project, warns about protection but proceeds anyway. Protection does not prevent a crash, an out-of-memory termination, a host failure or an externally forced stop; jobs still need recovery handling.

When does it cost extra?

Requesting protection accepts this pricing: a surcharge applies only while protection is the sole reason an otherwise removable node must stay running. Each blocking replica then costs twice its normal reserved CPU and memory rate: normal compute plus a 100% surcharge. Holding protection on a node that is still needed normally adds no surcharge. Storage, network and account minimums are unchanged.

How is the surcharge calculated?

The price depends on that replica’s reserved CPU and memory, not the size or price of the physical node. It is not shared between customers and does not increase because another customer protects a replica. For example, if your reserved compute normally costs €0.10 per hour, ten minutes of blocking add about €0.0167 to ordinary compute charges. The usage breakdown labels this extra amount Replica protection.

When does the surcharge end?

It ends when the blocking protection is released, its fixed deadline expires, or Kubo commits to reusing the node for needed capacity. You do not pay for the provider’s subsequent shutdown delay. Reusing a node ends the surcharge without resetting the original replica’s retirement deadline. Billing uses elapsed whole seconds, with no additional minimum charge period.

12 / Practical guide

Balance and alerts

You can prepare configuration before adding credit.

Balance and minimum

Billing shows available credit, reservation and period usage. The minimum depends on your account: if it is €5 per 30 days and you use €3, only €2 remains to cover it; it is not an extra €5. A €0 minimum does not apply. Check period dates beside period usage.

Top-ups, alerts and taxes

Add credit manually or configure automatic top-up when payments are enabled. Low-balance alerts are separate: they default to off and let you choose a threshold; they do not add money. Delivery requires notifications to be available. Review tax and total before paying, and manage tax details and invoices in the billing portal.

Replica protection surcharge

If protection keeps an otherwise removable node running, the blocking replica costs twice its normal reserved CPU and memory rate during that interval. See Replica protection in this guide for the deadline, release API and pricing example.

13 / Go further

A little under the hood

Optional: enough to understand what your configuration describes.

Configuration and execution

The form generates a project description for Kubo Core. The platform must validate it and provision resources before running a version. This is why changing a draft does not itself change a running application.

Files and processes

A static website serves files. A hybrid website combines files with a server for dynamic routes. Services run images; functions add HTTP activation and scaling limits. Networking, secrets and volumes are configured separately from code.

Versions and data

A new image changes the program, but persistent data belongs to volumes. Returning to an older program version does not automatically roll back a database. Prepare backups and compatible migrations before changing its structure.

Configuration safety

Configuration describes what your application needs. KuboRun checks resources and domains before publishing it. If a setting is not allowed, an error explains what to correct before continuing.

14 / Practical guide

Builds on deployment

Save keeps your work; Deploy prepares and publishes a new version. Follow progress and review errors from the project.

ZIP versions

A new ZIP changes the fingerprint of modified services. An existing tag never bypasses rebuilding new source. Saving does not deploy. A failed build does not apply the new release.

Deployment logs

Logs shows preparation, builds and blockers before containers start. History survives refresh and diagnostics explain how to address image, registry access, capacity and readiness problems. Runtime logs are available below.

15 / Practical guide

Kubo Run shared accounts

Choose the owning account and grant access to individual projects.

Share a project

Create a team account and invite people by email in Settings. Invitees verify that email and accept in their Settings within seven days. Select an account in the sidebar; its resources are billed to that account. Transfer team ownership to a member who accepts, keeping projects, balance and invoices together.

Choose permissions

Separate read, edit, deploy, secrets, billing, members, domains, packages and Git-provider access. Kubo Web can limit a collaborator to blog writing or design. Publishing an approved version requires Web publication and deployment access to the connected Run project. Editing code is a separate permission that allows using application secrets.

Drafts and publication

Kubo Web autosaves and offers recovery of browser-kept changes. Review lets you submit a version, approve it and choose when to publish. Later changes need another review. Posts marked as drafts stay unpublished.