Arama Yap Mesaj Submit
Request a Callback
+90
X
X

Select Your Currency

Turkish Lira $ US Dollar Euro
X
X

Select Your Currency

Turkish Lira $ US Dollar Euro

Contact Us

Location Halkali merkez neighborhood fatih st ozgur apt no 46 , Kucukcekmece , Istanbul , 34303 , TR
Bulk domain automation

Add hundreds of domains to Plesk Linux and Windows servers using CLI

In Plesk, every domain can be created as an independent subscription or attached as an additional site to an existing subscription. This guide combines Linux plesk bin subscription/site utilities and Windows subscription.exe in one operational plan.

Plesk CLI Linux Windows Server Subscription Service Plan Let's Encrypt
root@eka-server
plesk bin subscription --create ornek.com -owner admin -service-plan "Default Domain" -ip 192.0.2.10 -login user01 -passwd 'GucluParola'
plesk bin site --create ekalanadi.com -webspace-name anasite.com
plesk bin site --update ekalanadi.com -hosting true -php true -ssl true
2Subscription and add-on site modes
LinuxPlesk CLI over SSH
Windowssubscription.exe support
CSVTraceable operation log
01
Architecture decision

Choose the correct hosting model before adding hundreds of domains

Bulk automation should not accelerate a wrong architecture. Decide customer isolation, resource limits, application roots, mail and DNS ownership first.

01

Independent subscription

Best for customer environments where each domain needs its own FTP user, resource limit and plan.

02

Site inside an existing subscription

Manages many domains belonging to the same customer under one subscription and resource pool.

03

Linux or Windows Plesk

Command names and service paths differ; process the same list with the CLI tool appropriate for the operating system.

04

Plan synchronization

Service plan changes can propagate to linked subscriptions. Lock down plan limits before bulk creation.

02
Prerequisites

Requirements to complete before the bulk operation

Plesk administrator or root/Administrator access01
SSH for Linux and elevated PowerShell/CMD for Windows02
A valid service plan and shared/dedicated IP selection03
A clean domain list with one domain per line04
Subscription or site limits that accommodate the complete domain list05
Predefined DNS template, mail service and PHP handler decisions06
03
Implementation order

A controlled and recoverable bulk-add workflow

01

Verify Plesk version and license

Confirm that CLI tools and domain limits are available in the installed version.

plesk version
plesk bin license --help | head -n 30
02

List service plans and IPs

Copy the exact plan name and IP address used by the script.

plesk bin service_plan --list
plesk bin ipmanage --ip_list
03

Choose subscription or site mode

Use subscription mode for separate customers/FTP identities and site mode for the same customer.

MOD="abonelik"
04

Run a small batch

Verify hosting, DNS and plan synchronization for the first two domains in the panel.

head -n 2 /root/domainler.txt > /root/domainler-test.txt
05

Run the bulk script

The script generates unique subscription users and stores passwords in a root-only CSV.

chmod 700 /root/plesk-toplu-domain.sh
/root/plesk-toplu-domain.sh
06

Repair and verify

Run Plesk configuration checks and repair only failed domains.

plesk repair web -n
plesk bin site --list
04
SSH, CLI and API

Copy-ready commands and complete automation script

01

Linux Plesk bulk script

Supports subscription mode and sites inside an existing subscription.

#!/usr/bin/env bash
set -Eeuo pipefail

MOD="abonelik"
DOMAIN_DOSYASI="/root/domainler.txt"
SAHIP="admin"
PLAN="Default Domain"
IP="192.0.2.10"
ANA_ABONELIK="anasite.com"
SONUC="/root/plesk-domain-sonuclari.csv"
HATA="/root/plesk-domain-errorlari.log"

[[ "$EUID" -eq 0 ]] || { echo "root gerekli"; exit 1; }
[[ -f "$DOMAIN_DOSYASI" ]] || { echo "domain listesi bulunamadi"; exit 1; }

printf '"domain","mod","durum","kullanici","sifre"\n' > "$SONUC"
: > "$HATA"
chmod 600 "$SONUC" "$HATA"

while IFS= read -r SATIR || [[ -n "$SATIR" ]]; do
    DOMAIN="$(printf '%s' "$SATIR" | tr -d '\r' | tr '[:upper:]' '[:lower:]' | sed -E 's#^[[:space:]]+##;s#[[:space:]]+$##;s#^https?://##;s#^www\.##;s#/.*$##')"
    [[ -z "$DOMAIN" ]] && continue
    [[ "$DOMAIN" == \#* ]] && continue

    if [[ ! "$DOMAIN" =~ ^[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}$ ]]; then
        printf '"%s","%s","gecersiz","",""\n' "$DOMAIN" "$MOD" >> "$SONUC"
        continue
    fi

    HASH="$(printf '%s' "$DOMAIN" | sha256sum | cut -c1-11)"
    KULLANICI="u${HASH}"
    SIFRE="Eka!$(openssl rand -hex 12)A9"

    if [[ "$MOD" == "abonelik" ]]; then
        if CIKTI="$(plesk bin subscription --create "$DOMAIN" -owner "$SAHIP" -service-plan "$PLAN" -ip "$IP" -login "$KULLANICI" -passwd "$SIFRE" -notify false 2>&1)"; then
            printf '"%s","abonelik","basarili","%s","%s"\n' "$DOMAIN" "$KULLANICI" "$SIFRE" >> "$SONUC"
        else
            printf '%s | %s\n' "$DOMAIN" "$CIKTI" >> "$HATA"
            printf '"%s","abonelik","errorli","%s",""\n' "$DOMAIN" "$KULLANICI" >> "$SONUC"
        fi
    else
        if CIKTI="$(plesk bin site --create "$DOMAIN" -webspace-name "$ANA_ABONELIK" 2>&1)"; then
            plesk bin site --update "$DOMAIN" -hosting true -php true -ssl true >/dev/null 2>&1 || true
            printf '"%s","site","basarili","%s",""\n' "$DOMAIN" "$ANA_ABONELIK" >> "$SONUC"
        else
            printf '%s | %s\n' "$DOMAIN" "$CIKTI" >> "$HATA"
            printf '"%s","site","errorli","%s",""\n' "$DOMAIN" "$ANA_ABONELIK" >> "$SONUC"
        fi
    fi
done < "$DOMAIN_DOSYASI"

echo "Tamamlandi: $SONUC"
echo "Errorlar: $HATA"
02

Windows Plesk example

The equivalent operation uses subscription.exe in elevated CMD or PowerShell.

plesk bin subscription.exe --create ornek.com -owner admin -service-plan "Default Domain" -ip 192.0.2.10 -login user01 -passwd "GucluParola"
plesk bin subscription.exe -c ekalanadi.com -webspace-name anasite.com
03

Enable site features

Update hosting, PHP, SSL and HTTPS redirection per site.

plesk bin site --update ornek.com -hosting true -php true -ssl true -ssl-redirect true
04

Domain inventory and details

Verify the full list and individual domain details from CLI after the operation.

plesk bin site --list
plesk bin site --info ornek.com
plesk bin subscription --info ornek.com
05
Operating system and stack

What changes by distribution and web server

AlmaLinux / Rocky Linux

Plesk can combine nginx proxy, Apache and PHP-FPM. Back up custom templates before repair commands.

  • plesk version
  • plesk sbin nginxmng --status
  • plesk bin php_handler --list

Ubuntu / Debian

Package paths differ, but Plesk CLI syntax is the same. Check systemd services and disk space.

  • systemctl status psa --no-pager
  • df -h
  • plesk repair installation -n

Windows Server

Uses subscription.exe and IIS-based hosting. Run commands in an elevated session and verify NTFS permissions separately.

  • plesk version
  • plesk bin subscription.exe --list
  • iisreset /status
06
Troubleshooting

Common errors during bulk domain creation

5 entries
Error message

The subscription already exists

The domain may already exist as a subscription or additional site.

Error message

Unable to find service plan

The service plan name may not match because of case or spaces.

Error message

IP address does not exist

The IP in the script is not registered in the Plesk IP pool.

Error message

Cannot create webspace

License, plan resources, disk quota or customer limits may be exceeded.

Error message

Web configuration generation failed

A custom nginx/Apache template, conflicting directive or missing PHP handler may be the cause.

No matching error was found.

Security and operational risks

Do not go to production before these checks

  • Run the first execution with 2 test domains; do not push the complete domain list directly to production.
  • Prepare the domain list as plain domain names without HTTPS, www or paths.
  • Back up panel configuration, DNS zones and web server files before the operation.
  • Never store API keys, root passwords or generated user passwords in the web root.
  • Requesting bulk SSL before DNS propagation completes can cause rate limits and failed validation.
Verification checklist

Criteria for a successful operation

  • Domains appear in the panel or web server listing.
  • Each domain resolves to the correct document root directory.
  • The HTTP request returns the expected status code.
  • DNS A/AAAA records point to the correct server IP address.
  • Failed records are written to a separate log and can be retried.
  • SSL is enabled only for domains that pass DNS validation.
07
Frequently asked questions

Plesk Obsidian bulk domain management answers

What is the difference between a subscription and an additional site?

A subscription has separate resources, plan and access identity. An additional site shares the existing subscription's owner and resources.

Do Plesk Linux and Windows use the same script?

The operational logic is the same; Linux uses subscription/site and Windows uses subscription.exe and related .exe utilities.

How is Let's Encrypt issued after bulk creation?

Verify DNS resolution first, then use Plesk SSL It! or CLI/extension automation in small batches.

Can the mail service be disabled?

Yes. If using external mail, set mail_service false per domain and manage MX/SPF records accordingly.

Can SELinux affect site creation?

Plesk's official site CLI documentation notes that create can fail when SELinux is enabled. Review Plesk compatibility rather than blindly disabling security policy.

Are Google rankings guaranteed?

No. A page can be optimized technically and editorially; rankings depend on intent, competition, authority and Google's systems.

08
Topic cluster

Other bulk domain addition guides

09
Primary sources

Official panel, web server and Google documentation

EKA SOFTWARE AND INFORMATION SYSTEMS

Plan your large-scale domain migration without data loss or downtime

We implement panel selection, DNS, SSL, web server, security, backup and verification according to your actual server architecture.

Top