# Standalone SFTP Server

WARNING

Standalone SFTP support was introduced in Panel@v0.7.11 and Daemon@v0.6.8 and will not work with prior versions.

Pterodactyl now ships with the option to use a standalone SFTP server rather than using the one that was built into the Daemon. This provides better compatibility with SFTP clients, improved transfer speeds, and a more native approach to file handling and server operation.

Because this functionality is new, we've decided to make it an opt-in process, rather than an opt-out process. This page will cover how to setup your standalone SFTP server.

# Disable Daemon's Server

To disable the Daemon SFTP server, you only need to add sftp.enabled=false to your Daemon's core.json file.

{
  ...
  "sftp": {
    ...
    "ip": "0.0.0.0",
    "enabled": false,
    "port": 2022,
    ...
  },
  ...
}

Once you've done that, restarting the Daemon will apply the change and not boot the built-in server.

# Run the Standalone Server

To download the standalone server, execute the command below in your Daemon's base directory (generally /srv/daemon).

curl -Lo sftp-server https://github.com/pterodactyl/sftp-server/releases/download/v1.0.5/sftp-server
chmod +x sftp-server

Excellent, now you've got the server binary. Because we've written this server using go there are no additional dependencies you need to install.

# Start the Server

Finally, start the SFTP server so that you can then use it to access your files.

./sftp-server

By default, this will start the SFTP server on the old port of 2022. If you want to use a different port it can be specified by passing the --port flag. For more advanced usage, please refer to the Github README which includes all of the flags and their default values.

# Daemonize Server

Chances are you'll want to daemonize the SFTP server using something like systemd so that it will run in the background. Place the contents below in a file called pterosftp.service in the /etc/systemd/system directory.

[Unit]
Description=Pterodactyl Standalone SFTP Server
After=wings.service

[Service]
User=root
WorkingDirectory=/srv/daemon
LimitNOFILE=4096
PIDFile=/var/run/wings/sftp.pid
ExecStart=/srv/daemon/sftp-server
Restart=on-failure
StartLimitInterval=600

[Install]
WantedBy=multi-user.target

Then, run the command below to enable it in systemd and start the SFTP server.

systemctl enable --now pterosftp

# Customizing Startup

If you're trying to pass additional arguments to the server when starting it using SystemD you'll want to modify the ExecStart line. Something like ExecStart=/srv/daemon/sftp-server --port 2022 for example.