---
title: Craft CMS
description: 'Craft is a flexible, developer-friendly CMS for creating custom digital experiences. This 1-Click installs Craft 5 with a production-ready stack: …'
product: Marketplace
url: https://docs.digitalocean.com/products/marketplace/catalog/craft-cms/
last_updated: "2026-10-05"
---

> **For AI agents:** The documentation index is at [https://docs.digitalocean.com/llms.txt](https://docs.digitalocean.com/llms.txt). Markdown versions of pages use the same URL with `index.html.md` in place of the HTML page (for example, append `index.html.md` to the directory path instead of opening the HTML document).

# Craft CMS

Generated on 5 Oct 2026 from [the Craft CMS catalog page](https://marketplace.digitalocean.com/apps/craft-cms)

## Craft CMS 1-Click Application

Deploy [Craft CMS](https://craftcms.com/) on DigitalOcean with Caddy (automatic HTTPS), PHP 8.3 FPM, and MySQL on Ubuntu 24.04 LTS.

## What is Craft CMS?

Craft is a flexible, developer-friendly CMS for creating custom digital experiences. This 1-Click installs Craft 5 with a production-ready stack: Caddy (edge TLS), PHP 8.3 FPM, and MySQL.

## System Components

- Ubuntu 24.04 LTS
- Craft CMS
- PHP
- MySQL
- Caddy (short-lived Let’s Encrypt certificates for IP and custom-domain HTTPS)
- Composer
- UFW firewall (22, 80, 443)
- fail2ban

## System Requirements

| Use case | RAM | Recommended |
|---|---|---|
| Small site | 2GB | s-1vcpu-2gb |
| Production | 4GB+ | s-2vcpu-4gb |

## Software Included

| Package | Version | License |
|---|---|---|
| PHP | 8.3.33 | [PHP License v3.01 (Official)](https://www.php.net/license/3_01.txt) |
| MySql | 8.0.46 | [GNU GPL v2.0 (Oracle / GitHub)](https://www.google.com/search?q=https%3A%2F%2Fgithub.com%2Fmysql%2Fmysql-server%2Fblob%2F8.0%2FLICENSE) |
| Caddy | v2.11.4. | [Apache License 2.0 (GitHub)](https://github.com/caddyserver/caddy/blob/master/LICENSE) |
| Fail2ban | 1.0.2 | [GNU GPL v2.0 (GitHub)](https://github.com/fail2ban/fail2ban/blob/master/COPYING) |

## Creating an App using the Control Panel

Click the **Deploy to DigitalOcean** button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.

[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/droplets/new?onboarding_origin=marketplace&appId=241521995&image=craftcms&activation_redirect=%2Fdroplets%2Fnew%3FappId%3D241521995%26image%3Dcraftcms)

## Creating an App using the API

In addition to creating a Droplet from the Craft CMS 1-Click App using the control panel, you can also use the [DigitalOcean API](https://docs.digitalocean.com/reference/api). As an example, to create a 4GB Craft CMS Droplet in the SFO2 region, you can use the following `curl` command. You need to either save your [API access token](https://docs.digitalocean.com/reference/api/create-personal-access-token/index.html.md) to an environment variable or substitute it in the command below.

```shell
curl -X POST -H 'Content-Type: application/json' \
         -H 'Authorization: Bearer '$TOKEN'' -d \
        '{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"craftcms"}' \
        "https://api.digitalocean.com/v2/droplets"
```

## Getting Started After Deploying Craft CMS

## Getting Started

1. Create a Droplet from this 1-Click (2 GB RAM minimum).
2. Wait 1–2 minutes for first-boot database setup.
3. Until you finish setup, visiting the Droplet IP shows a **setup-pending** page (Craft web installer is blocked).
4. SSH as `root` and complete the interactive wizard (`/root/craft_setup.sh`):

```
   ssh root@YOUR_DROPLET_IP
```

5. After setup, open:

   - Site: `https://YOUR_DROPLET_IP`
   - Control Panel: `https://YOUR_DROPLET_IP/admin`

MySQL passwords are saved in `/root/.digitalocean_password`.

### Custom domain (HTTPS)

Point DNS to the Droplet, then:

```
/root/craft_setup_domain.sh
```

## Service Management

| Action | Command |
|---|---|
| Start | `/opt/start-craft.sh` |
| Stop | `/opt/stop-craft.sh` |
| Restart | `/opt/restart-craft.sh` |
| Update Craft | `/opt/update-craft.sh` |
| Domain TLS | `/root/craft_setup_domain.sh` |
| Status | `/opt/status-craft.sh` |

## Software Included

| Software | Description |
|---|---|
| Craft CMS | Content management system (pinned version in image) |
| Caddy | Reverse proxy / TLS termination |
| PHP 8.3 FPM | Application runtime |
| MySQL | Database |
| fail2ban | SSH brute-force protection |
| UFW | Firewall |

## Documentation

- [Craft CMS docs](https://craftcms.com/docs/5.x/)
- Caddy config: `/etc/caddy/Caddyfile`