HI.
I installed HestiaCP on a VPS server and configured my first user / domain name on it.
I wanted to reinstall several WordPress sites, but when I upload the files via FTP, I keep getting errors:
- It can’t upload certain files (often the same ones)
- It doesn’t upload/create folders on the server when they’re empty
I’m using vsftpd and I’ve tried several configuration changes, without being able to fix the problem.
I have feel that it has to be with files containing special characters or uppercase letters, for example.
Here are some examples of files that consistently cause problems:
- wp-includes/Requests/Auth.php
- wp-includes/Requests/Autoload.php
- wp-includes/js/tinymce/plugins/colorpicker/plugin.js
- wp-content/uploads/2025/06 (empty folder)
- wp-content/uploads/2025/07 (empty folder)
- wp-content/plugins/elementor/modules/ai/module.php
When I resend the affected files/folders a second time, it works without error. But I have to spend 10 minutes resending everything that didn’t go through the first time.
Here is what appear on Filezilla :
Command : MKD Requests Answer : 550 Create directory operation failed.
Command : CWD /home/*******/subfolder/wp-includes/Requests/src Answer: 550 Failed to change directory.
Command : SIZE /home/*****/subfolder/wp-includes/Requests/src/Auth.php Answer: 550 Could not get file size.
Command : PASV Answer: 227 Entering Passive Mode (**,**,***,***,46,243).
Command : STOR /home/******/subfolder/wp-includes/Requests/src/Auth.php Answer: 553 Could not create file.
Error: Critical error during file transfer
I tried with domain name user and with an additional ftp account created in Hestia Panel.
Here is my VSFTPD configuration file :
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
anon_upload_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
dual_log_enable=YES
chroot_local_user=YES
pam_service_name=vsftpd
ftpd_banner=Welcome! Please note that all activity is logged.
userlist_enable=NO
tcp_wrappers=YES
force_dot_files=YES
ascii_upload_enable=YES
ascii_download_enable=YES
allow_writeable_chroot=YES
local_root=/srv/jail/%u
user_sub_token=%u
seccomp_sandbox=NO
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=12000
pasv_max_port=12100
max_per_ip=0
max_clients=0
use_localtime=NO
utf8_filesystem=YES
ssl_enable=YES
allow_anon_ssl=NO
require_ssl_reuse=NO
ssl_ciphers=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
ssl_sslv2=NO
ssl_sslv3=NO
ssl_tlsv1=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
rsa_cert_file=/usr/local/hestia/ssl/certificate.crt
rsa_private_key_file=/usr/local/hestia/ssl/certificate.key
If you need any further information, just ask me.
Thank you for your help.