FTP and SFTP access
You can create dedicated FTP and Secure File Transfer Protocol (SFTP) users with their own home directory, separate from your main system user. This is most often used to connect an external system - for example an Enterprise Resource Planning (ERP) system - to a store, giving it access only to the files it needs (product images, stock exports, report PDFs).
Create an (S)FTP user
In the GUI
-
Open the host and go to Applications. Expand the account, open its settings (the cogwheel), and select Add FTP user.
-
Enter the user name and the home directory (keep it a subfolder, not the account's home), and enable Transport Layer Security (TLS) if your client needs it.
-
Save, then Save & Publish.
In YAML
Add an ftp block under the system user - see The Source (YAML) view:
system_users:
- username: prod
vhosts:
- server_name: www.example.com
app_type: shopware
php_version: "8.4"
cert_type: letsencrypt
ftp:
- user: prod_ftp
homedir: /var/www/prod/public_html/ftp
Choose FTP or SFTP
A host uses either FTP or SFTP for all users. To use SFTP, add this above system_users:
ftp_sftp: true
SFTP runs over port 222 through the existing FTP daemon and users, not the SSH service. Port 22 stays reserved for SSH. If your ERP needs another port, set it:
ftp_sftp_port: 2222
Plain FTP uses port 21.
Connect
Get the user name and password from the host's Credentials tab, then connect with a client such as FileZilla using the host name, the user, and the right port (21 for FTP, 222 - or your custom port - for SFTP).
Fix a "Login failed" error
-
Wrong credentials - even a stray space in the password causes a
530login error. -
Home directory does not exist - the path assigned to the user must exist on the server.
-
No TLS - TLS is required and enforced. Enable "Explicit FTP over TLS" in your client. Only disable it for a system that genuinely cannot do TLS (passwords would be sent in plain text).
-
IP blocked - your IP may be (temporarily) firewalled. Add it to the allow-list under the host's Security tab - see Security.