When developing or debugging in a DeepSeek Harness (DSH) environment, you sometimes need to share file directories locally or over a network. In addition to using an external FTP service, you can also start an FTP service directly inside Harness. The dsh-plugin-ftp-server plugin is designed for this purpose. It starts a pure Node.js FTP server within the Harness process and allows it to be managed through the browser settings panel.

Installation and Activation

  1. Run the following command in the command line to install the plugin:
dsh plugin --profile web add github:YinjiangCN/dsh-plugin-ftp-server
  1. Restart DeepSeek Harness after the installation is complete.

  2. Open the settings page in your browser, find the FTP Service tab, complete the configuration, and click Start Service.

Configuration

After the plugin is started, you can control the service status through the settings panel. The default configuration is as follows:

Field Default Value Description
Listening address (host) 0.0.0.0 Network address bound by the FTP service
Port (port) 2121 FTP control port
Shared root directory (root) workspace/ftp-root Root directory accessible by FTP
Username (user) ftp Login username (ignored in anonymous mode)
Password (pass) (empty) Login password (ignored in anonymous mode)
Allow anonymous (anonymous) off Whether to allow anonymous login

The client connection address format is ftp://<user>@<host>:<port>. The password is stored only in memory, passed through child process arguments, and is not written to disk.

Core Features

  • Zero-dependency core: The FTP server core is written entirely based on Node.js built-in modules and does not rely on third-party libraries.
  • Complete protocol support: It supports standard FTP commands, including USER/PASS, PWD/CWD/CDUP, LIST/NLST/MLSD, RETR/STOR/APPE, DELE/MKD/RMD, RNFR/RNTO, SIZE/MDTM/REST, PASV/EPSV/PORT, FEAT/STAT/ABOR/NOOP.
  • Security isolation: The file system is constrained to the shared root directory, blocking path traversal (such as ..), and the root directory itself cannot be deleted or renamed.
  • Management panel: It provides a browser interface for viewing runtime status (PID, uptime), shared root directory listings, real-time logs, and start/stop controls.
  • Process management: It supports an idle timeout (180 seconds), crash detection, and automatic cleanup of child processes when the plugin is stopped.

Security and Considerations

  • Plaintext transmission: This plugin is based on the plain FTP protocol and does not provide TLS encryption. Credentials and data are transmitted in plaintext, so it is recommended only for internal or trusted networks.
  • Permission risk: The server runs with the permissions of the Harness user. If the shared root directory is set to /, any user with valid credentials can read and write the entire file system.
  • Single-instance limitation: The current version supports only one account per instance. If multi-user access is required, run multiple instances using different ports.

Summary

This plugin provides DeepSeek Harness with a lightweight, embedded file-sharing solution. The FTP service can be managed directly through the browser, making it suitable for local debugging or temporary file directory sharing in an internal network.

GitHub repository: YinjiangCN/dsh-plugin-ftp-server