Skip to main content
Version: 2.0.1

Customizing FTP Server Info and Client Templates

The FTP Accounts page (OpenPanel > Files > FTP Accounts) shows users the FTP server address/port and lets them download ready-made config files for FileZilla and Cyberduck.

By default:

  • The server address shown is the user's dedicated IP (if one is assigned) or the server's public IP, and the port is always 21.
  • The FileZilla/Cyberduck files are generated in the background with hardcoded XML.

Administrators can override both of these, without editing any code and without restarting OpenPanel โ€” the files below are read fresh on every request.


1. Customize the displayed server address and portโ€‹

File path: /etc/openpanel/ftp/server.conf

This file doesn't exist by default. If it's missing, or a key is missing/invalid, OpenPanel falls back to its normal auto-detected behavior for that value.

Format (plain key=value, one per line):

hostname=ftp.example.com
port=2121
  • hostname โ€” shown instead of the dedicated/public IP, and used as the <Host>/<hostname> value in downloaded client configs.
  • port โ€” shown as the FTP port, and used as the <Port> value in the FileZilla config. Must be a number between 1 and 65535; anything else is ignored and 21 is used instead.

Either key can be set on its own โ€” you don't need to provide both.


2. Customize the FileZilla / Cyberduck download filesโ€‹

File paths:

  • /etc/openpanel/ftp/filezilla.conf
  • /etc/openpanel/ftp/cyberduck.conf

If either file is present, OpenPanel uses it as the template for that client's downloadable config instead of its built-in one. If a file is missing, empty, or doesn't contain well-formed XML after substitution, OpenPanel silently falls back to the built-in generator โ€” users are never shown an error because of a bad template.

Available placeholders, substituted before the file is validated and served:

PlaceholderValue
{host}The FTP server address (respects server.conf's hostname, if set)
{port}The FTP port (respects server.conf's port, if set)
{username}The FTP account's username
{path}The FTP account's home/root path

Example: filezilla.confโ€‹

<?xml version="1.0" encoding="UTF-8"?>
<FileZilla3>
<Servers>
<Server>
<Host>{host}</Host>
<Port>{port}</Port>
<Protocol>0</Protocol>
<Type>0</Type>
<User>{username}</User>
<Logontype>2</Logontype>
<EncodingType>Auto</EncodingType>
<RemoteDir>{path}</RemoteDir>
<UsePassive>1</UsePassive>
</Server>
</Servers>
</FileZilla3>

Example: cyberduck.confโ€‹

<?xml version="1.0" encoding="UTF-8"?>
<bookmark>
<hostname>{host}</hostname>
<port>{port}</port>
<username>{username}</username>
<protocol>ftp</protocol>
<path>{path}</path>
</bookmark>
NOTE

FileZilla site-export files and Cyberduck bookmarks don't carry a password field, so neither the built-in generator nor a custom template can pre-fill one โ€” users are prompted for their password on first connect either way.


Scopeโ€‹

  • Both files under /etc/openpanel/ftp/ are shared across all users and hosting plans โ€” there's no per-user or per-plan override.
  • Everything above โ€” the server.conf host/port override and the custom filezilla.conf/cyberduck.conf templates โ€” applies equally to the FTP Accounts page's download links and to the REST API equivalent (GET /api/ftp/configuration/{type}/{account}).