---
title: "Put it online: Publish or Deploy"
description: "Put what Ysra built online: Publish a website on Ysra, private until you share it, or Deploy a site or an app with a server to your own hosting account, preview first."
new_in: "3.5"
---

When a thread has built something, there are two ways to put it in front of
people. They answer different questions, so it helps to know which one you
need before you ask.

- **Publish** answers “Can I see it, and show it to someone?” It puts a
  website on Ysra in seconds, at an address of its own. Nothing to set up and
  no credits. It stays private until you share it.
- **Deploy** answers “Can this run for real, on our own hosting?” It puts the
  work on a hosting account of yours, with a server and a database if the app
  needs them: a preview first, then live when you say so.

!!! abstract "At a glance"

    | | Publish | Deploy |
    |---|---|---|
    | **What it can carry** | Websites only: HTML, CSS, JavaScript, images and fonts | Websites and apps, with a server and a database |
    | **Where it lives** | On Ysra, at an address of its own | On your own hosting account |
    | **Who sees it** | Only you, until you choose **Share** | Whoever your hosting lets in |
    | **How long it takes** | Seconds | Minutes: Ysra builds, uploads and checks it |
    | **What it costs** | Nothing | No charge from Ysra for the deploy itself; your hosting bills its own builds |
    | **Say** | “publish it” | “deploy it” for a preview, then “go live” |

## Which one to use

| If you want to… | Use | Why |
|---|---|---|
| Look at the site on your phone, or send a link to a colleague | **Publish** | Free, a link in seconds, private until you share it |
| Show a client a draft before anything is final | **Publish**, then **Share** | One address that stays the same each time you republish |
| Run an app with sign-in, a form that saves, or a database | **Deploy** | Publish carries only files a browser opens; a server needs hosting |
| Put a site on the client’s own domain and account | **Deploy** | It goes to their hosting, so they own it |
| Try a change safely before it reaches real people | **Deploy** (a preview) | **Go live** only becomes possible once the preview answers |

!!! tip "Not sure? Ask for it in your words"

    Say “put it online” and Ysra picks for you: a site with no server can be
    published at once; anything that needs a server is deployed. When nothing
    is set up yet, Ysra asks **Where do you want to deploy it?** and offers
    **Publish on Ysra** for a website, or one of your own hosting accounts.

!!! info "“Publish” means something different in a repository thread"

    In a [cloud project](cloud.md), “publish it” means **Publish** on Ysra.
    In a thread on a GitHub repository, “publish” or “go live” in the chat
    means a deploy to production on your hosting. The **Publish** button in
    the panel still puts a website on Ysra, as described here.

## How Publish works

<div class="steps" markdown>

### Ask, or choose Publish

In the thread, say “publish it”, or open the project’s panel and choose
**Publish** under **Published site**.

### What is published: a copy of the site

Publishing copies the files the thread built, as they are at that moment,
to an address of its own such as `https://p-k3v9x2m4q8r1t6w0.ysra.run/`.
Later work in the thread doesn’t change the published site until you
**Republish**, so a half-finished change never shows up on the link you sent.

### Who can open it: only you, at first

The thread answers with the address: “It’s on Ysra, private for now. Only you
can open it; Share makes it public.” Anyone else who opens it sees: “This page
is private.”

### Share it

**Share** makes it public: anyone with the link can open it, and a small
**Made with Ysra · Report** line sits at the foot of the page. **Make private**
takes that back.

</div>

**Republish** puts the latest version at the **same address**, so a link you
already sent keeps working. **Unpublish…** takes the site down: “The address
will say the page was unpublished.”

??? info "Under the hood: why Publish only takes websites"

    A published site is a set of files that a browser downloads and runs by
    itself: pages, styles, scripts, images, fonts. Ysra serves those files as
    they are, so there is nothing to start, keep running or pay for.

    An app with a server is different: something has to run all the time to
    answer each visitor, save what they send and talk to a database. That is
    what hosting does, so Ysra sends such a project to Deploy instead:
    “This needs a server to run, so it can’t be published on Ysra. Use Deploy
    to put it on your own hosting.”

## How Deploy works

Deploying always goes in two steps, so nothing reaches real people by
surprise.

<div class="steps" markdown>

### Connect your hosting, once

Connect your own hosting accounts in **Settings → Integrations**, where each
hosting service has its own card. If none is connected when you deploy, the card links there. When a
sign-in has ended, the card shows **Reconnect**.

### Deploy a preview

Say “deploy it”, or choose **Deploy preview**. Ysra builds the work and puts
it on your hosting at a preview address. Saying it is the go-ahead: there is
no separate approval card.

### Follow the deploy card

The deploy is a turn of its own in the thread, and its card updates in place
as it goes: **Preparing the files**, **Setting up the hosting**, **Uploading
the files**, **Building**, **Creating the database**, **Starting the server**,
**Connecting the site to the server**, **Checking it answers**. A step that
fails for a passing reason shows **Trying again**.

### Open the preview

When it answers, the card reads **Preview live**, with **Open**. Look around.
Ask for changes in the thread and deploy the preview again.

### Go live

**Go live** appears once the preview is live. Choose it, or say “go live”, and
the card ends on **Live**. The bell tells you as well: “Your app is live.”

</div>

### What the card can end on

| The card says | What happened | What to do |
|---|---|---|
| **Live** | Everything is up and answered the check | Open it |
| **Partly live** | Part of it is up, part of it isn’t: for example the site, but not its server | Read the card’s line, then deploy again |
| **Didn’t go through** | Nothing changed on your hosting | Try again; **Reconnect** if the card says the hosting sign-in has ended |
| **Cancelled** | You stopped it | Deploy again whenever you like |

To deploy from your own computer with the tools you already use instead, see
[Deploy from your computer](deploy.md).

## Ysra warns, it never blocks

Some tools refuse to ship work that hasn’t passed every check. Ysra doesn’t:
it is your work and your decision. When you ask for a commit, a push, a pull
request, a deploy, **Go live** or **Publish**, it goes through, in Ysra’s
cloud and on your own computer, in the desktop app and the CLI alike. What Ysra does instead
is tell you plainly what you are shipping.

<div class="cards" markdown>

- **What was checked**

    The work's receipt line says what ran and how it went, for example
    “Ran: `npm test` (failed).” or “Ran: nothing.”, so you know what you are
    shipping. Look over the live site once it's up.

- **Work still running**

    Ysra stops at its next safe point and delivers what is saved: “Stopping
    and deploying what’s saved…” A pull request can go as a **Draft** or
    **Ready for review**.

- **A secret in the code**

    Ysra asks once: “There’s an API key in config.js (line 12). Move it to a
    secret first, or deploy it as it is?” It never shows the secret itself.

</div>

!!! warning "Move secrets out before you share"

    A key left in a website’s files can be read by anyone who opens the page.
    **Move it to a secret first** is the recommended answer. If you choose
    **Deliver as it is**, Ysra notes it in the thread and reminds you once
    more later.

## What it costs, and the limits

| | Publish | Deploy |
|---|---|---|
| **Credits** | None | No charge for the deploy itself. Building or changing the work before it is ordinary work, in credits |
| **Your hosting** | Not needed | Whatever your hosting plan charges, including its build minutes |
| **Size** | 50 MB per site | Your hosting’s limits |
| **How many** | 10 published sites at a time; unpublish one to publish another | Your hosting’s limits |
| **Who can do it** | The person who owns the thread | The person who owns the thread, with their own hosting connected |

## Example: from “make me a landing page” to a link

=== "Type it"

    ```text
    Make a one-page site for Atlas Bakery: opening hours, the three
    best-selling cakes with photos, and a map. Then publish it.
    ```

    Ysra builds the site in a [cloud project](cloud.md), checks it in its
    browser, and answers with a private address. Open it on your phone. When
    it looks right, choose **Share** and send the link.

=== "Say it"

    Choose **Talk with Ysra** in the start box, then say:

    > “A one-page site for Atlas Bakery, with the opening hours, our three
    > best cakes and a map. Publish it when it’s done.”

    Your first request starts the thread. Ysra tells you when the site is
    published; the address is in the thread to open.

Two weeks later the bakery wants online orders. That needs a server and a
database, so ask for it, then “deploy it”: the preview goes to the bakery’s
own hosting, and **Go live** once they’ve tried it.

## Related

- [Code in Ysra’s cloud](cloud.md)
- [Deploy from your computer](deploy.md)
- [Mayz reviews](mayz.md): have the work reviewed before it goes live.
