Users
Manage users: Add, Delete, Suspend, Unsuspend, etc.
List Users
To list all users, use the following command:
hitechcloudcli user-list
Example output
# hitechcloudcli user-list
+----+----------------+-------------------+----------------+----------------+-------+---------------------+
| id | username | email | plan_name | server | owner | registered_date |
+----+----------------+-------------------+----------------+----------------+-------+---------------------+
| 1 | stefan | jane@example.com | Developer Plus | stefan | NULL | 2025-12-25 14:49:38 |
| 2 | panel | stefan@netops.com | Developer Plus | panel | NULL | 2025-12-25 14:50:18 |
| 6 | emailfilterapi | emailfilterapi | Developer Plus | emailfilterapi | NULL | 2026-01-28 12:25:41 |
+----+----------------+-------------------+----------------+----------------+-------+---------------------+
You can also format the data as JSON:
hitechcloudcli user-list --json
Example output
{
"data": [
{
"id": 1000,
"username": "stefan",
"context": "stefan",
"owner": "root",
"package": {
"name": "Developer Plus",
"owner": "root"
},
"email": "jane@example.com",
"locale_code": "EN_us"
},
{
"id": 1001,
"username": "panel",
"context": "panel",
"owner": "root",
"package": {
"name": "Developer Plus",
"owner": "root"
},
"email": "stefan@netops.com",
"locale_code": "EN_us"
},
{
"id": 1002,
"username": "emailfilterapi",
"context": "emailfilterapi",
"owner": "root",
"package": {
"name": "Developer Plus",
"owner": "root"
},
"email": "emailfilterapi",
"locale_code": "EN_us"
}
],
"metadata": {
"result": "ok"
}
}
To display only user count:
hitechcloudcli user-list --total
Example output
# hitechcloudcli user-list --total
Total number of users: 3
or:
hitechcloudcli user-list --total --json
Example output
#hitechcloudcli user-list --total --json
3
List all users Quotas
hitechcloudcli user-list --quota
Example output
{
"timestamp": "2026-04-01T10:16:01Z",
"users": [
{"username":"stefan","uid":1000,"home_path":"/home/stefan/","disk_used":269744,"disk_soft":5120000,"disk_hard":5120000,"inodes_used":130,"inodes_soft":1000000,"inodes_hard":1000000},
{"username":"jane","uid":1001,"home_path":"/home/jane/","disk_used":550216,"disk_soft":5120000,"disk_hard":5120000,"inodes_used":143,"inodes_soft":1000000,"inodes_hard":1000000},
{"username":"demo","uid":1002,"home_path":"/home/demo/","disk_used":4138604,"disk_soft":10240000,"disk_hard":10240000,"inodes_used":74889,"inodes_soft":1000000,"inodes_hard":1000000}
]
}
Add User
hitechcloudcli user-add <USERNAME> <PASSWORD|generate> <EMAIL> "<PLAN_NAME>" [--send-email] [--debug] [--reseller=<RESELLER_USERNAME>] [--server=<IP_ADDRESS>] [--key=<SSH_KEY_PATH>]
To create a new user run the following command:
hitechcloudcli user-add <USERNAME> <PASSWORD> <EMAIL> <PLAN_NAME>
Example:
hitechcloudcli user-add jane Str0ngPassw0rd jane@example.com 'Default Plan Nginx'
Provide random as password to generate a strong random password.
To send email to the email address for the user with login credentials, pass the --send-email flag.
Create user on Slave server
To create a new user on another server:
- Create ssh key pair and establish ssh connection from master to the slave server.
- Run the following command:
hitechcloudcli user-add <USERNAME> <PASSWORD> <EMAIL> "<PLAN_NAME>" --server=<IP_ADDRESS> --key=<SSH_KEY_PATH>
Create all new users on Slave server
To automatically create all future users on another server:
- Create ssh key pair and establish ssh connection from master to the slave server.
- Open HiTechAdmin > Server > Default Node (
/server/node), enter the remote server's IPv4 address and the path to the private key on this server, and click Save settings. The page checks that it can log in over SSH with that key before it saves. - That's it, all new user accounts are created on the remote server. To go back to creating them here, clear both fields and save.
NOTE: The remote server must have a fresh installation of Ubuntu 24.04 - other distributions and versions are not supported.
Create user for Reseller
hitechcloudcli user-add <USERNAME> <PASSWORD> <EMAIL> "<PLAN_NAME>" --reseller=<RESELLER_USERNAME>
Transfer User
To transfer user account to another server:
hitechcloudcli user-transfer --account <HITECHCLOUD_USER> --host <DESTINATION_IP> --username <HITECHCLOUD_USERNAME> --password <DESTINATION_SSH_PASSWORD> --port 22
add --live-transfer flag to suspend account after the transfer, and forward DNS to the new server.
Delete User
To delete a user and all his data run the following command:
hitechcloudcli user-delete <USERNAME>
add -y flag to disable prompt.
This action is irreversible and will permanently delete all user data.
To delete all users and all their data use the --all flag:
hitechcloudcli user-delete --all
Suspend User
To suspend (temporary disable access) to user, run the following command:
hitechcloudcli user-suspend <USERNAME> [-y]
Unsuspend User
To unsuspend (enable access) to user, run the following command:
hitechcloudcli user-unsuspend <USERNAME>
Rename User
To change a username run:
hitechcloudcli user-rename <USERNAME> <NEW_USERNAME>
Change Email
To change a email run:
hitechcloudcli user-email <USERNAME> <NEW_EMAIL>
Change Password
To reset the password for a HiTechCloud user, you can use the user-password command:
hitechcloudcli user-password <USERNAME> <NEW_PASSWORD>
Login as User
This command allows you to generate an auto-login link for any HiTechCloud user.
hitechcloudcli user-login <USERNAME>
Example output
# hitechcloudcli user-login demouser --open
https://demo.hitechcloud.org:2083/login_autologin?admin_token=EXAMPLE-TOKEN-NOT-A-REAL-ONE&username=demouser
To invalidate an existing token for a user:
hitechcloudcli user-login <USERNAME> --delete
To open the link in a browser:
hitechcloudcli user-login <USERNAME> --open
Change Plan
Command: hitechcloudcli user-change_plan allows you to change plan for a user.
hitechcloudcli user-change_plan <username> "<new_plan_name>"
Quota
Command: hitechcloudcli user-quota enforces and recalculates disk and inodes for specific or all users.
hitechcloudcli user-quota <username|--all>
Example output
# hitechcloudcli user-quota stefan
[2026-01-28 17:51:40] Processing user: stefan
[2026-01-28 17:51:40] Quota set for user stefan: 20480000 blocks (20 GB) and 2500000 inodes
[2026-01-28 17:51:40] Updating repquota file...
[2026-01-28 17:51:40] Repquota file updated successfully: /etc/hitechcloud/hitechcloud/core/users/repquota
Check / Disable 2FA
To disable Two-Factor Authentication for a user, run the following command:
hitechcloudcli user-2fa <USERNAME> [disable]
Assign / Remove IP to User
To assign free IP address to a user run the following command:
hitechcloudcli user-ip <USERNAME> <IP_ADDRESS>
To assign IP address that is currently used by another user to this user, run the following command:
hitechcloudcli user-ip <USERNAME> <IP_ADDRESS> --y
To remove dedicated IP address from a user run:
hitechcloudcli user-ip <USERNAME> delete
Check
Check files and security for a user:
hitechcloudcli user-check <USERNAME>
# or
hitechcloudcli user-report <USERNAME>
Example output
# hitechcloudcli user-check mozda
===== Checking user: mozda =====
---- Docker Daemon Security ----
[INFO] Running for user: mozda
[WARN] Inter-container communication on default bridge is allowed
[WARN] Docker logging level is not set to 'info' ('default')
[PASS] Docker is not allowed to modify iptables
[PASS] Not using deprecated aufs storage driver
[WARN] TLS authentication for Docker daemon is NOT configured
[PASS] Docker daemon is NOT listening on TCP socket
[PASS] Experimental features are NOT enabled
[PASS] Rootless context is configured
[PASS] Containers can not get new privileges
[PASS] Google DNS resolvers are configured
---- System and User Files ----
[PASS] /home/mozda/docker-data is configured for docker data.
[PASS] home.mozda.bin.rootlesskit file exists.
[PASS] .env file exists.
[PASS] docker-compose.yml file exists.
[PASS] backup.env file exists.
[PASS] crons.ini file exists.
[PASS] custom.cnf file exists.
[PASS] default.vcl file exists.
[PASS] httpd.conf file exists.
[PASS] nginx.conf file exists.
[PASS] openresty.conf file exists.
[PASS] pma.php file exists.
[PASS] Disk usage is below quota (3.80 GB used of 4.88 GB).
[PASS] Inode usage is below quota (113350 used of 1000000).
[INFO] Checking files ownership for user: mozda (UID: 1004, GID: 1004)
[WARN] File '/home/mozda/docker-data/overlay2/25af867389efa6af7eb6120dceef0bb601796ab469af0c9c4c798671594be432/diff/var/www/html' is owned by UID:100032 instead of UID:1004
[FAIL] Some docker files in /home/mozda/docker-data/ are not owned by UID:1004
---- Container Security Checks ----
[INFO] Found 2 running container(s)
---- Container: openresty ----
[PASS] openresty: Container running from HiTechCloud
[PASS] openresty: Container name matches compose service name: openresty
[PASS] openresty: Container is running
[PASS] openresty: Container is running as root
[PASS] openresty: Using specific tag for image: openresty/openresty:bullseye-fat
[WARN] openresty: No HEALTHCHECK configured
[WARN] openresty: SELinux options not set
[WARN] openresty: --no-new-privileges restriction not set
[PASS] openresty: No extra Linux capabilities added
[PASS] openresty: Privileged mode is disabled
[WARN] openresty: Bind mounts under /home/ or /etc/hitechcloud/
[PASS] openresty: Docker socket is NOT mounted
[PASS] openresty: sshd is NOT running inside container
[PASS] openresty: Using HiTechCloud network (mozda_www)
[PASS] openresty: All ports are bound to 127.0.0.1
[PASS] openresty: Memory usage is limited to .50 GB
[PASS] openresty: CPU usage is limited to .50 CPUs
[PASS] openresty: PID cgroup limit is set (100)
[WARN] openresty: Root filesystem is NOT read-only
[PASS] openresty: Host devices are NOT exposed
[WARN] openresty: Default ulimit is used
---- Container: php-fpm-8.2 ----
[PASS] php-fpm-8.2: Container running from HiTechCloud
[PASS] php-fpm-8.2: Container name matches compose service name: php-fpm-8.2
[PASS] php-fpm-8.2: Container is running
[PASS] php-fpm-8.2: Container is running as root
[WARN] php-fpm-8.2: No HEALTHCHECK configured
[WARN] php-fpm-8.2: SELinux options not set
[WARN] php-fpm-8.2: --no-new-privileges restriction not set
[PASS] php-fpm-8.2: No extra Linux capabilities added
[PASS] php-fpm-8.2: Privileged mode is disabled
[WARN] php-fpm-8.2: Bind mounts under /home/ or /etc/hitechcloud/
[PASS] php-fpm-8.2: Docker socket is NOT mounted
[PASS] php-fpm-8.2: sshd is NOT running inside container
[PASS] php-fpm-8.2: Using HiTechCloud network (mozda_db)
[PASS] php-fpm-8.2: No exposed ports
[PASS] php-fpm-8.2: Memory usage is limited to .25 GB
[PASS] php-fpm-8.2: CPU usage is limited to .12 CPUs
[PASS] php-fpm-8.2: PID cgroup limit is set (100)
[WARN] php-fpm-8.2: Root filesystem is NOT read-only
[PASS] php-fpm-8.2: Host devices are NOT exposed
[WARN] php-fpm-8.2: Default ulimit is used
===== Audit Summary =====
Total checks performed: 70
✅ Passed: 50
❌ Failed: 1
⚠️ Warnings: 16
ℹ️ Info: 3
⚠️ Critical issues found! Please review and address failed checks.
View disk usage for user
Disk and inode usage is reported by user-quota, which also recalculates and
enforces the account's quota:
hitechcloudcli user-quota <username|--all>
Block IP
Prevent specific IP addresses or CIDR ranges from accessing any user websites:
hitechcloudcli user-block_ip <username> [--list='ip_here another_ip' | --delete-all]
List blocked IPs for a user:
hitechcloudcli user-block_ip <username>
Block IP addresses from accessing user websites:
hitechcloudcli user-block_ip <username> --list='11.22.33.44 124.64.23.0/24'
Remove all blocked IP addresses for a user:
hitechcloudcli user-block_ip <username> --delete-all
View login log
View up to last 20 successful logins for the user.
hitechcloudcli user-loginlog <USERNAME> [--json]
Varnish
Check Varnish Caching status for user and enable/disable Varnish service.
hitechcloudcli user-varnish <USERNAME> [enable|disable|status]
Enable Varnish:
hitechcloudcli user-varnish <USERNAME> enable
Disable Varnish:
hitechcloudcli user-varnish <USERNAME> disable
Check status:
hitechcloudcli user-varnish <USERNAME> status
Check short status (returns Current status: on/off):
hitechcloudcli user-varnish <USERNAME>
Snapshots
A quick, local snapshot of an account taken before a risky change, and rolled back if it goes wrong.
hitechcloudcli user-snapshot --account <USER> <--create|--list|--restore ID|--delete ID>
Snapshots are local, cheap and short-lived: the newest few are kept and the rest are dropped, and they never leave the machine. They are not a backup — a disk that dies takes them with it. See Snapshots in the hosting panel.
Backup sets
Scheduled, incremental backup sets for one hosting account.
hitechcloudcli user-backupset --account <USER> <--run|--full|--list|--prune|--restore FILE|--install-timer|--remove-timer>
| Option | What it does |
|---|---|
--run | Run the set now, incrementally. |
--full | Take a full backup rather than an incremental one. |
--list | List what the set holds. |
--prune | Drop what has aged out. |
--restore <file> | Restore from one of them. |
--install-timer / --remove-timer | Add or remove the systemd timer that runs the set on a schedule. |
- List Users
- List all users Quotas
- Add User
- Create user on Slave server
- Create all new users on Slave server
- Create user for Reseller
- Transfer User
- Delete User
- Suspend User
- Unsuspend User
- Rename User
- Change Email
- Change Password
- Login as User
- Change Plan
- Quota
- Check / Disable 2FA
- Assign / Remove IP to User
- Check
- View disk usage for user
- Block IP
- View login log
- Varnish
- Snapshots
- Backup sets