Guide · Server providers

Your first server on DigitalOcean.

Create a Droplet, connect it to Kule with root access, then set up the protections and Dokploy. You don’t need to open a terminal.

4 minLast updated: October 14, 2026

Before you start

  • A DigitalOcean account
  • Kule, on macOS 14 or later
  • Optional: a domain. It doesn’t need to be on Cloudflare.

1Create the Droplet

In the DigitalOcean control panel, click Create at the top, then Droplet in the menu that opens. For the region, pick a data center close to you or your visitors. For the image, choose the current LTS release of Ubuntu from the OS tab. For the size, a plan with at least 2 GB of memory and 30 GB of disk is enough; that is the minimum Dokploy itself recommends.

The Choose Authentication Method section has two options: SSH Key or Password. If you choose Password, you set the password yourself; you log in to the Droplet as the root user with it. Finally, click Create Droplet.

When the Droplet is ready, its IP address appears in the control panel, on its row in the Droplet list. These are the two things you need for Kule: the IP address and the root password.

DigitalOcean recommends an SSH key and turns off password login on Droplets created with a key. If you chose a key, use the “ya da SSH anahtarı seç” (or choose an SSH key) option in Kule: Kule reads the ~/.ssh/id_ed25519 file on this Mac, and the key never leaves the Mac. This option doesn’t work with a passphrase-protected key; in that case, create the Droplet with a password.

2Add it to Kule

In Kule, open Sunucu ekle (Add server) from the left menu. Type the IP address, leave the user as root, enter the root password and click Bağlan (Connect). For example, 203.0.113.24.

On the first connection, Kule shows the server’s fingerprint; once you confirm it, it is pinned. Kule then generates an SSH key just for this server, adds it to the server and stores it in the Keychain. From then on, it always connects with this key.

The password is used only once and is never written anywhere. Kule clears it from memory after connecting.

3Preparation

Kule first looks at the server: the operating system, CPU, memory, disk, whether ports 80, 443 and 3000 are free, and access to Docker Hub and GitHub. If something is missing, it tells you why and stops there.

Then it sets up the protections: a firewall, fail2ban, automatic security updates, swap if needed, the time zone and key-only SSH login. All of them are on by default; you can turn off any you don’t want.

apt-get install -y -q ufw fail2ban unattended-upgrades
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw --force enable
systemctl enable --now fail2ban
fallocate -l 2G /swapfile && mkswap /swapfile && swapon /swapfile

Before password login is turned off, Kule verifies that it can log in with the key; after it is turned off, the server’s setting is checked again.

4Installing Dokploy

Next, it installs Docker, Docker Swarm and runs Dokploy’s official install script. You see every line live.

$ curl -fsSL https://dokploy.com/install.sh -o /tmp/dokploy-install.sh
Installing Docker…
Starting Docker Swarm…
Pulling Dokploy services…
Bringing up the panel…
✓ http://203.0.113.24:3000 is responding
Creating admin account and API key…
✓ Key saved to Keychain · panel connected

Once the panel is ready, Kule creates the admin account and the API key without opening a browser, and stores both in the Keychain. You can see the admin password in the last step of the setup. If the connection drops halfway, the setup resumes from the step where it stopped. Details are in the Dokploy guide.

Next steps

We'll let you know when Kule is out.

People on the list get the first version before anyone else.