File Transfer Protocol (FTP)

The File Transfer Protocol (FTP) is a standard network protocol used for the transfer of computer files between a client and server on a computer network.

Connecting to your Ultra.cc slot with FTP

File Transfer Protocol (FTP) is one way you can manage your files on your Slot. With this, you can download and upload your files and directories, move them around, rename them, and much more.

This guide shows you how to change your Password and the general settings to put in an FTP client.


Connecting to your Ultra.cc Slot via FTP

Changing your SSH/FTP Password

Before logging into your FTP Client, you should first set your own SSH/FTP password.

FTPS vs. SFTP

Ultra supports the File Transfer Protocol over SSL (FTPS) and SSH File Transfer Protocol (SFTP). These file transfer protocols provide secure file transfers between your slots and your PC. Also, both protocols do not count towards your allocated upload bandwidth.

File Transfer Protocol over SSL (FTPS)

SSH File Transfer Protocol (SFTP)

Recommendations

Both protocols are safe to use, but we recommended that you use SFTP with Public Key Authentication for file transfers and interacting with the Slots' terminal. This provides greater cryptographic strength than even long passwords provide and makes it easier for you to log in by providing automated, passwordless login to your service. However, higher greater cryptographic strength will almost always lead to slower transfer speeds. If you want faster transfer speeds, then FTPS is preferred.

Connecting to your Slot using FTP Client

Here are the settings you can use to connect to your Slot via FTP to manage your files.

File Transfer Protocol SSL (FTPS)

Hostname: <servername>.usbx.me or IP address: xxx.xxx.xxx.xxx
Username: <your-ultra-username>
Password: <your-ssh/ftp-password>
Port: 21
Encryption: Explicit FTPS

SSH File Transfer Protocol (SFTP)

Hostname: <servername>.usbx.me or IP address: xxx.xxx.xxx.xxx
Username: <your-ultra-username>
Password: <your-ssh/ftp-password>
Port: 22

For SFTP, you may also use Public Key Authentication in place of a password. This makes it more secure and convenient for you.


Recommended FTP Clients

Here are some FTP clients we recommend you use to manage your Ultra.cc service files.

FileZilla

Filezilla is a free FTP application that is available on most platforms. It supports Explicit FTPS and SFTP protocols in addition to the following features:

Installation

Go here and download the latest version for your PC. Execute the downloaded file and follow the installation instructions.

Setting Up FileZilla

FTPS
Protocol: FTP - File Transfer Protocol
Host: servername.usbx.me
Port: 21
Encryption: Require explicit FTP over TLS

Logon type: Normal
Username: <your-ultra-username>
Password: <your-ssh/ftp-password>
SFTP (Normal Logon)
Protocol: SFTP - SSH File Transfer Protocol
Host: servername.usbx.me
Port: 22

Logon type: Normal
Username: <your-ultra-username>
Password: <your-ssh/ftp-password>
SFTP (Keyfile Logon)

For more information on this, you can refer to this guide: Public Key Authentication

Protocol: SFTP - SSH File Transfer Protocol
Host: servername.usbx.me
Port: 22
Encryption: Require explicit FTP over TLS

Logon type: Key file
Username: <your-ultra-username>
Key file: <your-ultra-public-key>

WinSCP

WinSCP (Windows Secure Copy) is a free and open-source SFTP, FTP, WebDAV, Amazon S3, and SCP client for Windows. It offers basic file manager and file synchronization functionality. For secure transfers, it uses Secure Shell (SSH) and supports the SCP protocol in addition to SFTP. In addition to this, WinSCP also offers the following features:

Installation

To download and install WinSCP, go here and download the latest version.

Setting Up WinSCP

FTPS
Fle Protocol: FTP
Encryption: TLS/SSL Explicit Encryption
Host: servername.usbx.me
Port: 21

Username: <your-ultra-username>
Password: <your-ssh/ftp-password>
SFTP (Normal Logon)
Fle Protocol: SFTP
Host: servername.usbx.me
Port: 22

Username: <your-ultra-username>
Password: <your-ssh/ftp-password>
SFTP (Keyfile Logon)

For more information on this, you can refer to this guide: Public Key Authentication

Fle Protocol: SFTP
Host: servername.usbx.me
Port: 22

Username: <your-ultra-username>
Password: <blank>

To add keyfile, go to Advanced -> SSH -> Authentication -> Private key file

Show Hidden Directories

Userland ProFTPD

Please be aware, your upload quota will be used when using ProFTPD to download from your Ultra.cc service.

ProFTPD is a server that can offer FTP access to friends and family without revealing your slot's username and password. Instead, custom usernames and passwords can be set for each friend or family member.

In this section, we'll be installing and setting up Userland ProFTPD into your slot. We'll also be teaching you how to manage and uninstall ProFTPD.

Acquire Absolute path for FTP Root Folder

You will need to find your absolute path to the folder you wish to use for other users. Navigate to the folder with cd ~/path/to/folder then run the command pwd -P Keep this path to one side as this is required for the FTP Root Folder Input during installation

Please use the absolute path starting with /homeXX/ and not just /home/. Failing to do so will grant the ProFTPD user access to all directories on your service.

Installation

wget https://scripts.usbx.me/main/ProFTPD/proftpd-install.sh
chmod +x proftpd-install.sh
./proftpd-install.sh
ultradocs@lw816:~$ ./proftpd-install.sh
Disclaimer: This installer is unofficial, and Ultra.cc staff will not support any issues with it
Type confirm if you wish to continue: confirm
FTP Root Folder: /home12/ultradocs/files
Installing ProFTPD...
Configuring Authentication...
Username: ultradocs
Password: ********
ftpasswd: using alternate file: /home12/ultradocs/.config/proftpd/proftpd.passwd
ftpasswd: creating passwd entry for user usbdocs
ftpasswd: entry created
Do you want to create another user? (y/n) n
Installing Service...
Configuring TLS...
Generating RSA private key, 1024 bit long modulus (2 primes)
...............+++++
.................+++++
e is 65537 (0x010001)
Signature ok
subject=C = NL, ST = NH, L = Amsterdam, O = Ultra, CN = chaos.usbx.me
Getting Private key
Starting ProFTPD...
Downloading Scripts...
Cleaning Up...
Done!
Access your ProFTPD installation at ftp://chaos.usbx.me:32563
Run ./proftpd-uninstall.sh to uninstall | Run ./proftpd-users.sh to manage users

Be sure to take note of the port provided by the script in this line: Access your ProFTPD installation at ftp://hostname.usbx.me:12345

Managing Users

./proftpd-users.sh
ultradocs@lw816:~$ ./proftpd-users.sh
What do you want to do?
1) Create a user
2) Delete a user
3) Change a user's password
4) Exit
Select an option:

Setting Permissions

<Directory ~>
    <Limit ALL>
        AllowAll
    </Limit>
</Directory>
# Permissions example
<Limit ALL>
    # Limit everything
    DenyAll
</Limit>

<Directory /home12/ultradocs/files>
    # Allow everyone inside this folder
    <Limit ALL>
        AllowAll
    </Limit>
</Directory>

<Directory /home12/ultradocs/files/test1>
    # Allow "test1" inside this folder and all other users will be denied
    <Limit ALL>
        Order Allow,Deny
        AllowUser test1
        Deny ALL
    </Limit>
</Directory>
systemctl --user restart proftpd 

Connection Example

Protocol: FTP - File Transfer Protocol
Host: server.usbx.me
Port: Provided by Install Script
Encryption: Require explicit FTP over TLS
User: As set by /proftpd-users.sh 
Pass: /proftpd-users.sh

Update Expired Certificates

systemctl --user stop proftpd.service 
mkdir ~/.config/proftpd/old-cert-backup
mv ~/.config/proftpd/{server.crt,server.key} ~/.config/proftpd/old-cert-backup/
openssl genrsa -out ~/.config/proftpd/server.key 1024
openssl req -new -key ~/.config/proftpd/server.key -out ~/.config/proftpd/server.csr -subj "/C=NL/ST=NH/L=Amsterdam/O=Ultra/CN=$(hostname).usbx.me"
openssl x509 -req -days 365 -in ~/.config/proftpd/server.csr -signkey ~/.config/proftpd/server.key -out ~/.config/proftpd/server.crt
systemctl --user start proftpd.service 

FTP Troubleshooting Information

Why is my FTP not logging in?

This largely depends on the response of the FTP server. Here are some of the common errors and how to fix it.

Response: - 530 Non-anonymous sessions must use encryption.

Plain FTP is not supported at Ultra.cc. You must connect over the following:

We have a help document to provide more in-depth help here.

Response: [SFTP] Status: Access denied or [FTP] Response: 530 Login incorrect.

This usually means your password is either.

We have an extensive guide for this here.

Response: ERRCONN REFUSED or Connection Refused

The server’s fail2ban has been triggered due to too many invalid authentication attempts in a period. It restricts your IP address from logging in until that period is expired.

You will need to wait 10 minutes before trying again.

FXP is not working.

FXP support can make a FTP server vulnerable to an exploit known as FTP bounce. As a result of this, our FTP servers have it disabled.

How to resolve slow download speed issues ?

A common issue that can affect you if you have a Windows 10 PC, the Receive Window Auto-Tuning Level setting in netsh is set improperly. Windows usually reset this during OS upgrades. This can affect a number of things such as FTP,VPN or single connection applications

Try running netsh interface tcp show global using Command Prompt or PowerShell running in Administrator mode. You should see the following settings.

PS C:\Windows\system32> netsh interface tcp show global
Querying active state...

TCP Global Parameters

----------------------------------------------
Receive-Side Scaling State      	: enabled
Receive Window Auto-Tuning Level	: normal
Add-On Congestion Control Provider  : default
ECN Capability                  	: disabled
RFC 1323 Timestamps             	: disabled
Initial RTO                     	: 1000
Receive Segment Coalescing State	: enabled
Non Sack Rtt Resiliency         	: disabled
Max SYN Retransmissions         	: 4
Fast Open                       	: enabled
Fast Open Fallback              	: enabled
HyStart                         	: enabled
Proportional Rate Reduction     	: enabled
Pacing Profile                  	: off

Receive Window Auto-Tuning Level should be set to normal, but some clients have better results by switching from normal to experimental. To do that, run the following command:

netsh int tcp set global autotuninglevel=experimental

The **experimental **option can give you full download speeds. Please make sure that you do a reboot before testing.

To go back to the default, run the following command:

netsh int tcp set global autotuninglevel=normal

Another cause of this is the use of VPNs. There are chances that the VPN is throttling your speeds, so make sure you disable your VPN connection whenever you download your files from your slot.

Another possible reason is that your disk has very high IO utilization. To check, run this command in your shell and pay attention to the last column named %util.

iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')

If this is 100%, the disk you’re in is entirely saturated, affecting your apps’ performance. You may need to send a ticket to our support system so the Ultra.cc team can investigate.

I need plain FTP. Is there any way to use it?

Plain FTP is not supported on our slots due to our commitments to security and privacy for our clients.

However, should you really need plain FTP and you fully know the risks, you may install userland ProFTPD in your userspace.

Please see this help document for the installation of userland ProFTPD here.

Then, once you finished installing and setting up roFTPD, you will need to edit ~/.config/proftpd/proftpd.conf and change TLSRequired on to TLSRequired off using a text editor.

After that, run systemctl --user restart proftpd to reflect the changes in Userland ProFTPD.

Logging in with the username/password combo you created during the install will now be unencrypted.

Why does the FTP connection keep disconnecting with Error: “Disconnect after 20 seconds of inactivity”?

Most FTP clients create new threads when transferring files. All this means is that your original connection has timed out for being idle for too long.

If you're having latency issues, then it's likely you will also experience this error too.

Some of my files have duplicates in ~/files or ~/Downloads directory and ~/media directory. Are they using double disk space?

If you're using Radarr/Sonarr/Sickchill/CouchPotato/Medusa etc., they should not be taking any additional space. By default, these applications create a hardlink of the file to the default root directory of your application. A hard link can be described as a single file located at two different paths but pointing at the same block of data on the disk. Think of it as two signposts from other streets that direct you to the same destination. Hardlinks do not take any extra space. You can compare the inode numbers for both files from the Terminal (SSH Access) with ls -I on both files'. The inode number will be the same.

You can read more about Hard Links here: https://en.wikipedia.org/wiki/Hardlink.

Using Rclone FTPS

Rclone is a software primarily used with cloud storage providers; however, it is also an easy-to-use Command-line download manager for many protocols, including FTP/FTPS/SFTP. We will show you today how to install rclone onto a Linux machine on your local network and how to set up automatic downloading from your Ultra.cc Slot.

Requirements:

Host machine on your home/local network running a Linux distribution (Mac OS can also be used but is not in the scope of this guide; however, it may still work as a general guide)

Ultra.cc FTP Slot details

Installing Rclone on the Host Machine

Installing rclone is made incredibly easy by the developer. First login to your Host via SSH; this can be under a sudo user, but it is recommended to install rclone as root user and later set up rclone under a sudo/sub-user, never set up under root.

Once logged in, run this curl command

curl https://rclone.org/install.sh | sudo bash

If you receive a message telling you that the “curl command cannot be found,” you will need to install it and run the command above again. To install curl, run apt-get install curl -y

Once rclone is installed, it is recommended you switch to a new user and configure under that user. If you have not created a new user, the steps are simple.

adduser ultra ultra is the username we will use in this guide.

Follow the on-screen prompts for user information and password. Once that is completed, it is an excellent idea to promote this user to sudo; this allows for the execution of higher privileged commands, which are not required for Rclone but are certainly worth setting up.

To add a user to sudo after creation, run this command.

adduser ultra sudo

If, for some odd reason, your distro did not have sudo installed, now might be a good time to run an install just in case:

apt-get install sudo -y

Now we can switch to our ultra user

su ultra

Type cd to jump to the user home folder. This isn’t strictly required but is best practice.

Configuring our Rclone FTP remote

The first step is to invoke the rclone config menu with the rclone config command

This will present a list of options


e) Edit existing remote

n) New remote

d) Delete remote

r) Rename remote

c) Copy remote

s) Set configuration password

q) Quit config

e/n/d/r/c/s/q\>

Press N then enter

Now enter a name: you will need this later when writing our automated script.

Now you will be presented with an extremely long list of options at the time of writing this 11 is FTP, but this may change as updates release

Field Value
Host Your Ultra Address (servername.usbx.me) or IP (185.123.123.123)
User Your Ultra Username
Port Port 21 is standard. You can press Enter
FTP password Press Y, then enter your FTP Password. You will be asked for this twice.
Use FTPS over TLS (Implicit) False
Use FTP over TLS (Explicit) True
Edit advanced config? (y/n) Press Y
Maximum number of FTP simultaneous connections, 0 for unlimited Press enter
no_check_certificate True
Disable using EPSV even if server advertises support Press Enter
Enter a encoder.MultiEncoder value. Press Enter for the default ("Slash,Del,Ctl,RightSpace,Dot"). Press Enter
y) Yes this is OK (default) Press Y to complete the rclone configuration

Testing Remote for access

Once the configuration of the remote is completed, it is a relatively simple job to check if all is configured correctly

One command should list all of the folders in your Ultra Slot Home folder.

rclone lsd ultra: Replace Ultra with your remote name

Automating download from Ultra.cc

Our first step is to write a simple script. We will set up a lock folder for a file lock system so the script will not run if it is already running

Create the lock folder with mkdir -p ~/lock

`if you ever get a flock failed command delete any files in ~/lock with the command rm -rdf ~/lock/*

And create the script file

nano FTP.sh

Paste the following lines into it :

#!/bin/bash

exec {lock_fd}>/home/ultra/lock/FTPLOCK || exit 1

flock -n "$lock_fd" || { echo "ERROR: flock() failed." >&2; exit 1; }

if [ -z "$STY" ]; then exec screen -dm -S FTP /bin/bash "$0"; fi

rclone copy -v remote:/ultraslotfoldertocopy /home/ultra/pathtosavefiles

flock -u "$lock_fd"

Save it by pressing Ctrl+X then Y Enter.

You will need to change the paths ultraslotfoldertocopy to match the folder you wish to download. You will also be required to alter remotename to match your rclone remote name, which can be found with the rclone config command or rclone listremotes. These need to be run via the SSH Command line.

Now we need to allow it to run with the command chmod +x FTP.sh

And finally, run it

./FTP.sh

If the script is running and you were to rerun it, you may see an error message “Flock Failed” this is a file lock to stop multiple downloads running and is normal. If you are sure it isn’t running you can delete the lock file from ~/lock. You can also check the progress of the backup script, which is running in a screen with the command screen -rd FTP

If all is well after the test, we can automate the check via crontab

Open crontab with

crontab -e

You may have a choice of editors. We recommend Nano

Inside the crontab add a single line under everything else in the file that looks like this

* * * * * /home/ultra/FTP.sh

Save it by pressing Ctrl+X then Y then Enter.

The script will now run every 1 minute, checking for files that have changed and syncing them to the destination folder

MTR Guide

This is a guide for gathering useful information on issues with the download and upload speeds that your local machine gets to and from your Ultra.cc service.

You will require your local machine's public IP address to perform all the steps listed in this guide. Disable any VPN/Proxy on your system and then check your IP at myip.com.

The guide shows you the following:

  1. Perform an MTR test from your Ultra.cc server to your Local Machine.
  2. Install MTR to your local machine and use it.
  3. Understand the results of the MTR tests you performed.

MTR

MTR is a diagnostic tool which can be used to determine which routers transmit data packets onto the destination host and which routers may be experiencing problems. This information allows us to figure out where a network problem lies. It is recommended by us to run a trace in both directions when troubleshooting.

(Local Machine -> Ultra.cc Server) & (Ultra.cc Server -> Local Machine).

MTR is installed by default on all our Ultra.cc servers.

MTR Usage on your Ultra.cc Slot

  1. Login to your Ultra.cc slot via SSH
  2. Execute the following command:
mtr -w -c 100 <Public IP address of your Local Machine>
Example:

Ultra_000065.png

Windows

MTR Installation

  1. Download WinMTR.
  2. Extract the compressed file using your favorite file archiver utiliy like WinRAR.
  3. Based on your system architecture; x32 or x64 navigate to the respective folder.
  4. Run WinMTR.exe

MTR Usage

  1. Enter your slot's hostname i.e hostname.usbx.me in the Host field, then click on Start.
  2. Wait for 100 packets to be sent, you can see this number under the Sent column.
  3. Once 100 packets are sent, click on Stop.
  4. In case results need to be shared with staff, the Copy Text to clipboard option will come in handy.
Example:

Ultra_000064.png

MacOS

MTR Installation

  1. Open a terminal window. You can do a spotlight search for it (Command + Space and then type Terminal).
  2. Install brew if you don't have it installed.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  1. Install MTR using brew.
brew install mtr 
  1. Check MTR version
ls /usr/local/Cellar/mtr/
  1. Change directory to MTR's install location.
cd /usr/local/Cellar/mtr/<version from Step 4>/sbin

Example:

cd /usr/local/Cellar/mtr/0.94/sbin
  1. Make MTR executable by your system.
cp -r mtr* /usr/local/bin/

In case the copy command fails due to permission error(s) run it again with sudo.

sudo cp -r mtr* /usr/local/bin/

MTR Usage

  1. Open a terminal window. You can do a spotlight search for it (Command + Space and then type Terminal).
  2. Execute the following command: sudo mtr -w -c 100 servername.usbx.me
Example:

Ultra_000066.png

Linux

MTR Installation

MTR can be installed on the various Linux Distros using their particular package tools.

sudo apt update && sudo apt -y install mtr
sudo yum update && sudo yum -y install mtr
sudo pacman -Syyu && sudo pacman -S mtr

MTR Usage

  1. Open a terminal window.
  2. Run the following command:
mtr -w -c 100 hostname.usbx.me
Example:
mtr -w -c 100 oblivion.usbx.me

Understanding MTR Results

You should now have two MTR results. One performed from your Ultra.cc slot and one performed from your local device. The former describes the route that your Ultra.cc server is taking to transfer data to your local machine and the latter describes the route that your ISP takes to transfer data from your local device to your Ultra.cc server.

The Loss% at each hop is of importance. If it's 0% then there are no issues with routing and your speed problems lie elsewhere. On the other hand, if there is a lot of loss at multiple hops there is an issue with the route - it is congested.

Unfortunately, in the case that your upload speed isn't great and the route from your local device to your Ultra.cc server is congested, we cannot do much. Your ISP must be queried for this and they must provide better routing.