FTP Manager
Vinza Store FTP Manager
FTP Manager
Free Tools
ftpvsftpdfile-transferchrootmanagementlogs
Get this app
Free
Available to all users. No license needed.

FTP Manager creates and manages vsftpd accounts that are tied to websites the panel already knows about. An account is created through the root agent with an ftp_ prefix forced onto the username, its home set to a website's root path plus an optional subdirectory, and its ownership mapped to that site's Linux user — so uploaded files land with the site's uid and no recursive chown rewrites the existing files. Accounts can be listed, have their password changed, be moved to another folder (website or subdirectory, validated like a new account), and be deleted.

Who may do what is enforced per object rather than per page. A non-admin website owner sees and affects only accounts whose home sits under a site they manage, and creation additionally checks their hosting plan: whether FTP is allowed at all, and the account cap, where zero means unlimited. The quota view reports the plan name, the cap and current usage so the limit is visible before it is hit.

Administrators get the parts tenants do not. Service state can be read and vsftpd started or stopped, and the managed vsftpd.conf settings — passive port range, max clients and connections per IP, idle and data-connection timeouts, umask, write enable and anonymous access — are validated, merged into the existing config file in place so unrelated lines survive, then applied with a service restart; if the restart fails the save is still reported as saved with a warning. A log tab tails /var/log/vsftpd.log through the root agent, since the file is not readable by the panel user, and it will be empty unless xferlog logging is turned on in vsftpd. The plugin assumes vsftpd is installed and does not configure FTPS or SFTP.

Min Panel Version
1.0.0
Platform
Ubuntu 20.04+ / 22.04+ / 24.04+
License
Free — no key needed
Permissions
plugins.manage
VinzaPanel handles installation automatically via the Vinza Store. Make sure the panel agent has internet access to download dependencies.
1.1.8 — An FTP account or website on a Vinza Server node shows that node's host, not the panel's, in the connection details. 1.1.7 — Creating an account for a site on a node without an FTP server now says to install the FTP (vsftpd) component there, instead of reporting success for an account that could never log in. 1.1.6 — Fix: the 8-character password minimum is enforced on the server for new accounts and password changes (only the form checked it, so API calls could create FTP logins with any password). 1.1.2 — Accounts can be edited: a new Edit button opens a dialog that moves an account's home (its chroot folder) to another website or subdirectory, keeping the username and password. The new folder is checked exactly like on creation (website ownership, no traversal or symlink escape, hosting-plan FTP access and account cap when it moves to another website). Requires the updated root agent (ftp.set_home). 1.1.1 — Three correctness fixes. The action allow-list advertised get_users, which had been renamed to list_accounts, so calls to it answered "not found". The ownership check ran its empty-path test after os.path.realpath(), which returns the process working directory for an empty string rather than an empty path. And the hosting-plan FTP cap counted accounts by a bare path prefix, so one under ".../blog-staging" was measured against the site ".../blog". 1.1.0 — Transfer log viewer: a new admin tab tails /var/log/vsftpd.log (read via the root agent) with a lines selector. 1.0.1 — Trimmed FTPS/SFTP tags and the transfer-log claim to match reality (now implemented). 1.0.0 — FTP account management, per-user chroot jail, passive port configuration, quota enforcement.

Use VinzaPanel's REST API to download and install this app programmatically.

Download app files
HTTP
POST /plugins/api/download/ftpmanager/
Content-Type: application/json

{
  "panel_version": "1.0.0"
}
Example response
JSON
{
  "success": true,
  "plugin_id": "ftpmanager",
  "version": "1.1.8",
  "download_url": "..."
}