# Install Broadcast

> Install Broadcast on a fresh Ubuntu server with the one-command installer, point your domain at it, and finish the first-run setup in the dashboard.

Source: https://sendbroadcast.net/university/getting-started/install-broadcast

With your server ready, you now install Broadcast. By the end of this lesson you have the dashboard running on your own domain over HTTPS, with an admin account and a first channel. The whole route takes about 30 minutes, and most of it is waiting.

## Before you start

Have these three things ready:

1. A fresh Ubuntu 24.04 or 26.04 server that you can reach as `root` over SSH.
2. A domain name for the dashboard. A subdomain such as `broadcast.example.com` is best, so your root domain stays free for your website.
3. Your license key, from your account dashboard. It looks like `XXXXX-XXXXX-XXXXX-XXXXX-XXXXX`. Keys issued before October 2026 are shorter, and they still work.

Some providers create an `ubuntu` user and block `root` logins. The [installation guide](/installation) shows how to switch to `root`, because the `ubuntu` user's IDs conflict with the application's file permissions.

## Step 1: Point the domain at the server

Do this first. At your DNS provider, add an **A record** for your dashboard domain with the server's IP address.

The order matters. Broadcast requests its TLS certificate for that name as soon as it starts. If the name does not resolve to the server yet, the certificate request fails. DNS changes can take up to 24 hours to spread. On Cloudflare they usually take a few minutes.

1. **1. Add the A record** Dashboard domain to server IP
2. **2. Run the installer** Asks for your domain and license key
3. **3. Certificate** Requested for that domain as Broadcast starts
4. **4. Open the dashboard** Create the admin account and first channel

Do these in order. The TLS certificate needs the A record to exist first.

## Step 2: Run the installer

Log in to the server and run one command:

```bash
curl -fsSL https://sendbroadcast.net/install.sh | sudo bash
```

The script is public in the `broadcast-script` repository on GitHub, so you can read it before you run it.

Note where `sudo` goes. It goes before `bash`, not before `curl`. `sudo curl ... | bash` runs the download as root and the installer as your user, and the installer stops with `the installer must run as root`.

## Step 3: Answer two questions

The installer asks for your primary domain name and your license key. It checks the key with the license server before it changes anything. Then it asks you to confirm, and reminds you to point your domain at the server. If you skipped step 1, do it now, before you press Enter.

The install takes 5 to 10 minutes. The installer sets up the software, provisions the SSL certificate, hardens the server and turns on automatic operating system updates. When it is done, the server restarts after one minute.

If you install with an AI agent or a script, pass the answers as environment variables and the installer asks nothing:

```bash
curl -fsSL https://sendbroadcast.net/install.sh | sudo BROADCAST_DOMAIN=broadcast.example.com BROADCAST_LICENSE=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX bash
```

The installer writes its log to `/var/log/broadcast-install.log`.

## Step 4: Create your admin account and first channel

Open `https://` plus your domain in a browser. The onboarding page asks for three things in order:

1. Your name, email address and password, for the admin account.
2. A name for your first **channel**, such as "Newsletter". A channel is what other tools call a list.
3. A confirmation of your domain. Broadcast detects it. Check that it matches the address in your browser.

![Create your admin account form with first name, last name, email address and password fields](https://sendbroadcast.net/assets/docs/setup/onboarding-step1-create-admin-8a536f51.png)

The first screen you see at your new domain.

You land on the dashboard. A card in the bottom-right corner counts the setup steps still missing before you can send. Click it to see the checklist. The next two lessons work through that list: your sending domain and your email server.

![The dashboard with the Setup Required card open in the bottom-right corner, listing Sender Email, Sender Name, Email Footer and Email Server](https://sendbroadcast.net/assets/docs/setup/dashboard-after-setup-4fc0c56f.png)

The setup card lists what is still missing. Click it to open the checklist.

## When something goes wrong

Every installer error starts with `Error:`. Unless the message says otherwise, the installer stopped before it changed anything, so you can fix the cause and run the same command again. Three errors are the most common:

- **Ports 80 and 443 must be free.** Another web server is running. Stop it, or use a fresh server.
- **Broadcast is already installed on this server.** The installer never changes an existing install. To upgrade, run `./broadcast.sh upgrade` from `/opt/broadcast`. To finish an install that stopped part way, run `sudo /opt/broadcast/broadcast.sh install`.
- **The domain in step 3 is wrong.** Point the correct domain at the server, then run `./broadcast.sh change_installation_domain` from `/opt/broadcast`. It updates the configuration and requests a new certificate.

The [installation guide](/installation) lists every error with its fix, and [Setup](/docs/setup) covers the first-run screens. The commands that `broadcast.sh` accepts are in the [CLI reference](/docs/cli-reference).

## Where things live

Everything Broadcast installs is under `/opt/broadcast`. The app settings are in `/opt/broadcast/app/.env`, including the domain (`TLS_DOMAIN`) and the license key (`LICENSE_KEY`). You run `broadcast.sh` commands from `/opt/broadcast`. You come back to this folder for upgrades, backups and restores in lesson 7.

## What you learned

- Point an A record at the server before the installer finishes, because Broadcast requests its TLS certificate at start.
- One command installs Broadcast. It asks for your domain and your license key.
- The installer never changes an existing install. Upgrades use `./broadcast.sh upgrade`.
- The first visit creates the admin account, the first channel, and confirms the domain.

## Quiz
1. What does the installer ask you for?
   - Your email provider's API key and SMTP password
   - Your primary domain name and your license key (correct)
   - A PostgreSQL password and a Redis URL
   The installer asks for two things, the primary domain name and the license key.
2. When must the A record for your primary domain point at the server?
   - Before you press Enter to confirm the install, because Broadcast requests its TLS certificate as it starts (correct)
   - Only after you create the admin account
   - Never, the installer creates the DNS record for you
   Broadcast requests its TLS certificate for the domain as soon as it starts, so DNS must already point at the server.
3. You run the installer on a server that already has Broadcast. What happens?
   - It upgrades Broadcast to the latest release
   - It wipes the database and installs again
   - It stops and changes nothing (correct)
   - It installs a second copy next to the first
   The installer never changes an existing installation. To upgrade, use ./broadcast.sh upgrade instead.
