# Your first website

> Create a website in ZoPanel, point its DNS, get a free Let's Encrypt certificate, upload files with the File Manager or SFTP, and install WordPress.

Source: https://zopanel.net/docs/first-website  
Updated: 2026-10-07

This page walks through hosting one website from start to finish. You need a hosting account to own the website; if you have not created one yet, see the [Quick start](/docs/quick-start).

## 1. Point the domain to the server

Do this first: Let's Encrypt can only issue a certificate once the domain resolves to your server.

At your DNS provider, create these records (replace the IP with your server's):

| Type | Name | Value |
| --- | --- | --- |
| A | `example.com` | `203.0.113.10` |
| A | `www` | `203.0.113.10` |

Add AAAA records too if the server has IPv6. DNS changes can take from a few minutes to a few hours to reach everyone. You can check from your computer:

```bash
dig +short example.com
```

If you host DNS on ZoPanel itself (the DNS server component), create the zone under **DNS** and set your nameservers at the registrar instead.

## 2. Create the website

1. Go to **Websites** and click **New website**.
2. **Owner**: choose the hosting account. (Customers signed in to their own account skip this.)
3. **Domain**: enter the domain without `http://`, for example `example.com`.
4. Keep **Also serve www.example.com** checked if you want both addresses to work.
5. **Website type**:

   | Type | Use it for |
   | --- | --- |
   | WordPress | Installs WordPress automatically |
   | PHP | Any PHP application |
   | Laravel | PHP with the document root at `/public` |
   | HTML | Static HTML files |
   | Node / Proxy | A Node.js, Python or Go app listening on `127.0.0.1` at a port you choose |
   | Git deploy | Next.js, Node, Python, Go, Laravel and more, built from a repository |

6. **PHP version**: choose one of the installed versions.
7. Keep **Free SSL (Let's Encrypt)** on.
8. Click **Create website**.

The website's files live in the account's home directory:

```text
/home/USERNAME/domains/example.com/public_html
```

Until you upload your own files, visitors see a placeholder page.

## 3. Get the SSL certificate

With **Free SSL (Let's Encrypt)** on and DNS already pointing to the server, the certificate is issued when the website is created.

If DNS was not ready yet, you do not need to do anything: ZoPanel checks every hour and requests the certificate as soon as the domain resolves to the server. To issue it right away:

1. Open the website and go to the **SSL** tab.
2. Click **Issue certificate**.
3. Turn on **Redirect HTTP to HTTPS** so every visitor uses the secure address.

Certificates renew automatically 30 days before they expire. If you have a certificate from another provider, paste it under **Custom certificate** in the same tab.

## 4. Upload your files

### With the File Manager

1. Go to **File Manager** (or open it from the website).
2. Open `domains/example.com/public_html`.
3. Drag and drop files onto the page, or click **Upload**.
4. To upload a whole site quickly, upload a `.zip` or `.tar.gz` archive, then select it and click **Extract**.

The File Manager also edits files, changes permissions (**Permissions (chmod)**), compresses and renames.

### With SFTP

SFTP is available when the account's package has **SFTP** turned on. Use any SFTP client (FileZilla, WinSCP, Cyberduck or `sftp`):

| Setting | Value |
| --- | --- |
| Protocol | SFTP |
| Host | Your server's IP or hostname |
| Port | The server's SSH port (usually 22) |
| Username | The hosting account's username |
| Password | The account's password, as set when the account was created |

The connection is restricted (chrooted) to the account's home directory; upload into `domains/example.com/public_html`. The **FTP / SFTP** page shows the connection details. Changing the panel password under **My account** does not change the SFTP password.

To sign in with a key instead of a password, add your public key under **My account → SFTP & SSH keys** (signed in as the account). For classic FTP, install the FTP server component and create FTP accounts restricted to one folder.

## 5. Install WordPress

### When you create the website

Choose **WordPress** as the website type and fill in **WordPress settings**: **Site title**, **Admin email**, **Admin username** and **Admin password**. ZoPanel creates a database and installs WordPress with wp-cli. The progress is shown as a task.

### On an existing website

1. Open the website's **Overview** tab.
2. Under **Applications**, click **Install WordPress**.
3. Enter the details and click **Install**. A database is created and WordPress is installed with wp-cli.

### After installation

The website's **WordPress** tab lets you sign in to wp-admin without a password (**Log in to WordPress**), update core, plugins and themes, apply security hardening, and create a staging copy.

For speed, turn on the **Page cache** in the **PHP & config** tab. Logged-in users, admin pages, carts and POST requests always bypass it. On our test servers, page cache raised capacity from 100 to 250 WordPress sites on a 4 GB VPS.

## 6. Check that it works

- Visit `https://example.com`: the padlock should show a valid certificate.
- The **Logs** tab shows the access and error logs if something fails.
- The **Analytics** tab shows visitors and requests, computed from the web server logs.

## Troubleshooting

| Problem | What to check |
| --- | --- |
| Certificate not issued | The domain's A record must point to this server, and port 80 must be open. Wait for DNS, then click **Issue certificate**. |
| Placeholder page still shown | Files must be inside `public_html`, with an `index.php` or `index.html`. |
| Creating the website is refused | The account's package or the server's license limits the number of websites; the error message says which. See [Packages and limits](/docs/packages-limits) and [Licensing](/docs/licensing). |
