Docs / Sites

Sites

WordPress, PHP apps, or static sites on your own server, with automatic HTTPS, file access over SFTP, and daily backups. Sites from cPanel can be moved over together with their databases, and a site can be moved to another server with only a short pause.

Who it is for

Sites (Situs in the app) is built for app owners who used cPanel only to run their own site or app, not for hosting companies that sell accounts to many customers. It focuses on the functions people actually use: installing a site, domains and HTTPS, uploading files, databases, and backups.

Sites connect with the rest of Saka: the database can live on the same server or in a multi-location database cluster, and a site can sit behind a load balancer.

Site types

TypeWhat you getDatabase
WordPressInstalled automatically and ready to use (Indonesian or English). The admin password is randomly generated and shown in the panel.Yes
PHPApache with PHP 8.2, 8.3, or 8.4, and .htaccess works. For Laravel, CodeIgniter, or other PHP apps; upload files over SFTP.Yes
Statis (HTML) (Static)HTML/CSS/JS pages served directly by the web server. The lightest option.No
Pindahkan dari cPanel (Move from cPanel)Sign in to the old cPanel (like the WHM Transfer Tool), or use a cPanel backup file or a site archive. Files and database are moved, and WordPress is adjusted automatically. See Moving from cPanel.Yes

Creating a site

Server requirements: connected to Saka, ports 80 and 443 free (not used by another nginx or apache), and at least 1 GB of RAM.

  1. Open the Situs (Sites) menu in the panel, then press + Buat situs (Create site).
  2. Jenis (Type). Choose WordPress, PHP, Statis (HTML), or Pindahkan dari cPanel.
  3. Server. Pick the target server from the list of connected servers.
  4. Domain. Enter the domain, for example tokokue.id or blog.tokokue.id. For a root domain, tick Sertakan juga www (Also include www) if you want it. A domain can only be used by one site in your account.
  5. PHP & database (not for static sites). Choose the PHP version (8.3 recommended), the WordPress language, and where the database lives: Database di server ini (Database on this server) or Klaster database (Database cluster).
  6. Nama situs (Site name), for example "Toko Kue Ibu". For WordPress, this is also used as the site title (you can change it in WordPress).
  7. Press Buat situs (Create site), or Pindahkan situs (Move site) when moving from cPanel.

A site is usually ready in 2-5 minutes. The first site on a server takes a little longer because PHP is prepared first; a cPanel move depends on the size of the backup. You are also notified on Telegram. If it fails, the detail page shows why; delete that site and try again.

Domains, DNS, and HTTPS

After the site is created, point the domain to the server in your domain's DNS manager (where you bought the domain, or Cloudflare). The Domain & HTTPS card on the detail page shows the records you need:

DNS
tokokue.id.       A      203.0.113.10
www.tokokue.id.   A      203.0.113.10
; optional, if the server has IPv6:
tokokue.id.       AAAA   2001:db8::10
Using Cloudflare?

Turn off the orange cloud first (choose "DNS only", grey cloud) until HTTPS is active in Saka.

Files over SFTP

Every site has its own SFTP account. Open the Akses (Access) card on the detail page and press Tampilkan sandi (Show password) to see the host, port, username, and password.

Database

OptionWhat it isWhen to use it
Database di server ini (Database on this server, recommended)MariaDB 11.8 on the same server, one database and user per site, reachable only from that server.Regular sites on one server.
Klaster database (Database cluster)Saka creates a database and user for this site in your MariaDB cluster, and installs the Saka proxy on the site's server. Connections use TLS; if one database server goes down, the proxy moves to a healthy node.Sites that must keep running even if one database server goes down.

You can pick a MariaDB cluster that is ready and runs on other servers (the site's server must not be a member of that cluster). For WordPress, the TLS connection to the cluster is set up automatically. The database connection details (host, name, user, password) are in the Akses (Access) card. To view and edit the database contents, use phpMyAdmin.

phpMyAdmin

WordPress and PHP sites have their own phpMyAdmin. On the Access card, press Open phpMyAdmin; it opens in a new tab and signs you in.

Via the API: POST /api/v1/situs/{id}/phpmyadmin returns {"url"}, a single-use sign-in link valid for 60 seconds. phpMyAdmin is not available through MCP.

Backups and restore

Backups are stored on the same server as the site. To protect against a server that is lost completely, also keep a copy somewhere else (see Coming soon).

Moving from cPanel

Choose the Pindahkan dari cPanel (Move from cPanel) type when creating a site. There are two ways to move.

Option 1: Sign in to the old cPanel (recommended)

Like the WHM Transfer Tool, but with just the cPanel account login. Saka creates a full backup on the old cPanel, waits for it to finish, downloads it to the new server, deletes that backup file from the old cPanel, and then sets it up.

  1. Old cPanel address: the domain or IP of the old server, for example oldshop.com. Port 2083 is used automatically (you can add your own :port).
  2. cPanel username and cPanel password (the cPanel account password, not the WHM or root password).
  3. If the account uses two-factor authentication (2FA), tick the API token option and enter a token from cPanel (Security, then Manage API Tokens). You can delete the token after the move.
  4. Tick Skip cPanel's HTTPS certificate check only if the old cPanel's certificate is self-signed.

Option 2: Use a backup file

  1. In the old cPanel, open Backup (or Backup Wizard), choose Download a Full Account Backup, then wait until the backup-….tar.gz file is ready.
  2. Fill in one of:
    • A download link for the backup file (it must be reachable from the internet), or
    • A file path on the target server, after you upload it to /root, /home, or /tmp, for example /root/backup-….tar.gz.

A plain site archive also works: a .zip or .tar.gz containing the site folder, with or without .sql files.

What Saka does

All of this is shown in the Catatan pemindahan (Move notes) box on the site's detail page. For a moved WordPress site, sign in with your old WordPress admin account.

Move to another server

For changing VPS (for example to a bigger server or another location) without the hassle. The site is copied straight to the new server, and the old site keeps serving visitors until you are ready. The target server must be connected to the same Saka account, with ports 80/443 free.

  1. Copy. On the site's detail page, open the Move to another server card. Choose the Target server and PHP on the new server (you can change the PHP version, for example up to 8.4). For WordPress, tick Update WordPress, plugins, and themes during the move if you want. Press Copy to new server. The old site keeps running; you are notified on Telegram when the copy is ready. You can press Copy again at any time to refresh the copy.
  2. Move now. The old site shows a maintenance page (HTTP 503) briefly, the latest changes are copied, and the site goes live on the new server. If you chose the WordPress update, WordPress core, plugins, themes, and translations are updated after a backup; if the site breaks afterwards, it is rolled back automatically to the state before the update. If this step fails, the old site goes live again.
  3. Change DNS. Change the domain's A record to the new server's IP at your domain's DNS provider. The DNS column on the Domain & HTTPS card turns to pointing here afterwards.
  4. Finish. Once DNS points to the new server, press Finish (delete from old server). The site on the old server is deleted; its last backup is kept in /root on the old server.

Cancel is available until you finish. Before Move now, the copy on the new server is deleted and the old site is unchanged. After it, Cancel, go back to the old server makes the site live on the old server again and deletes the copy on the new server; changes made on the new server since the move are lost, and an A record you already changed needs to point back to the old server's IP.

How it works

Behind a load balancer

If a load balancer in proxy mode is ready and forwards the site's domain to this server, the site is automatically served through the balancer: visitors come in through the balancer, and the balancer holds HTTPS. The HTTPS column then shows di load balancer (at the load balancer). This is reapplied automatically when a load balancer is created or deleted, or when a balancer's IP changes.

PHP versions

Choose PHP 8.2, 8.3, or 8.4. On the PHP card, pick a version and press Ganti versi (Change version). The site restarts with the new version within a few seconds; a version that has not been used on that server yet is prepared first (about 1-2 minutes).

PHP settings

The same card has PHP settings, like cPanel's MultiPHP INI Editor but without editing files:

Press Save settings; the site restarts for a few seconds. Via the API: PATCH /api/v1/situs/{id} with php_ini; via MCP: the situs_atur_php tool.

Deleting a site

In the Zona berbahaya (Danger zone) section, press Hapus situs (Delete site) and type the site name to confirm. The site's files, database, SFTP account, and all its backups on the server are deleted. Your domain and server are not touched.

Tick Simpan cadangan terakhir dulu di /root server (Keep the last backup in /root on the server first, recommended) to copy one final backup to /root before the site is deleted. If that copy fails, the site is not deleted.

When you release a server, every site on it is cleaned up too; with the keep-backups option, each site's backup is copied to /root.

What we deliberately do not do

Security

Through your AI agent (MCP) and the API

MCP tools

ToolWhat it does
situs_daftarLists sites across all servers, with their domains and state.
situs_buatCreates a WordPress, PHP, or static site, with a local or cluster database, or moves one from cPanel (sumber with a backup file, or cpanel to sign in to the old cPanel). The agent must confirm the plan with you first.
situs_statusSite state: HTTPS and DNS for each domain, size, list of backups, SFTP account. No passwords.
situs_cadangkanMakes a backup now.
situs_atur_phpChanges the PHP settings: upload limit, memory, execution time, max_input_vars, time zone, show errors.
situs_pindah_salinFirst step of moving to another server: copies the site to the target server (optionally with another PHP version and a WordPress update). The old site keeps running.
situs_ubah_siapkanStep 1 of 2 for pulihkan (restore), hapus (delete), pindah_sekarang (move now), pindah_selesai (finish the move), or pindah_batal (cancel the move): a preview and a confirmation token (10 minutes).
situs_ubahStep 2 of 2: runs that action with the token, only after you have approved the preview.

There is no MCP tool for reading site passwords. See Connect your AI (MCP).

API endpoints

MethodPathDetails
GET/situsList sites (can be filtered with ?server_id=).
POST/situsCreate a site. Body {"nama", "server_id", "jenis", "domain", "php", "bahasa", "db", "klaster_id", "sumber", "cpanel"}.
GET/situs/{id}Details and status (DNS, HTTPS, backups, SFTP without password, pindah while a move is in progress).
PATCH/situs/{id}Change the name, domains, PHP version, or PHP settings. Body {"nama", "domain", "php", "php_ini"}.
DELETE/situs/{id}Delete. Body {"konfirmasi": "<site name>", "simpan_cadangan": true}.
POST/situs/{id}/rahasiaRead the database, SFTP, and WordPress admin passwords directly from the server.
POST/situs/{id}/cadanganBack up now.
POST/situs/{id}/pulihkanRestore. Body {"berkas": "<backup name>", "konfirmasi": "<site name>"}.
POST/situs/{id}/phpmyadminStart the site's phpMyAdmin. Returns {"url"}, a single-use sign-in link (60 seconds).
POST/situs/{id}/pindahCopy to another server. Body {"server_id", "php", "perbarui_wp"}.
POST/situs/{id}/pindah/sekarangMove now. Body {"konfirmasi": "<site name>"}.
POST/situs/{id}/pindah/selesaiFinish: delete the site on the old server (last backup kept in /root).
POST/situs/{id}/pindah/batalCancel the move; the site stays on, or goes back to, the old server.
curl
curl -s -X POST https://app.saka.work/api/v1/situs \
  -H "Authorization: Bearer $SAKA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "nama": "Toko Kue Ibu",
    "server_id": "srv_aaaaaaaaaaaaaaaa",
    "jenis": "wordpress",
    "domain": ["tokokue.id", "www.tokokue.id"],
    "php": "8.3",
    "bahasa": "en",
    "db": "lokal"
  }'

jenis (type): wordpress, php, or statis (static); a cPanel move uses php with sumber, or with cpanel: {"host", "pengguna", "sandi"}, or "token" instead of the password, plus "abaikan_tls": true for a self-signed certificate. php: 8.2, 8.3 (default), or 8.4. db: lokal (local, default) or klaster (cluster) with klaster_id. The 202 response contains the site with keadaan: "dibuat" (being created); poll GET /situs/{id} until it is siap (ready) or gagal (failed). General details are in the REST API page.

Coming soon

Coming soon

Sites in two locations that keep running even if one location goes down (file copies between servers, a load balancer, and a database cluster), backups to your own S3 storage and downloading backups from the panel, WordPress and plugin updates at any time with automatic rollback if something breaks (already available when moving to another server), and help with email DNS (MX, SPF, DKIM, DMARC) for the email provider you choose.

Need something else? Suggest it from the Request a feature menu in the panel (see Feature requests & migration help).