Every linux distro is slightly different. This guide is intended to cover the basics and show you around some of the ways you can configure and work with CrushFTP. You can try the single line in Linux for an automated download and install...may work on most distros.
wget -O - https://www.crushftp.com/crush10wiki/attach/Linux%20Install/configure.sh | bash
The assumption is that you are doing this install headless.
Java
CrushFTP10 requires Java 17 to run. First, check if there is a Java/openJDK 17 runtime available on the host, by default most linux distros come with an open source version of Java that may not work with CrushFTP. If there is none, download the latest openJDK tarball for your OS platform ( AMD64 or ARM) from https://jdk.java.net/archive/, untar it into the CrushFTP10 installation folder then rename the resulting jdk-17 folder to Java
Type:
java -version
If it is the wrong version
wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz tar -xvf openjdk-17.0.2_linux-x64_bin.tar.gz /bin/rm openjdk-17.0.2_linux-x64_bin.tar.gz mv jdk-17* /var/opt/CrushFTP10/JavaThen check if the init script detected it, run from within the CrushFTP10 installation the
./crushftp_init.sh infocommand.
Extract CrushFTP folder ideally into /var/opt/ so it's an easier approach if you have issues finding it over time.
Start / Stop CrushFTP
There is a script provided to give you the basics of starting and stopping CrushFTP. It might be overkill for your situation, but you are welcome to use it and modify it for your needs. The script is crushftp_init.sh. Its included with your download of CrushFTP already. You must edit the script the first time you use it to set the correct path in it.
./crushftp_init.sh start ./crushftp_init.sh stop
Install / Uninstall CrushFTP
There is a script provided to give you the automated process supported on most Linux distro's of installing and uninstalling CrushFTP. The script is crushftp_init.sh.
./crushftp_init.sh install ./crushftp_init.sh uninstall
Generating an Admin User
While you technically can do everything with CrushFTP from the command line and editing text XML files, its much easier to use a web browser to do this. You just need to have an admin user created first.
To make your user for doing this, use a command like this (avoid special characters in the comamnd line password creation):
java -jar CrushFTP.jar -a "crushadmin" "password"or
./Java/bin/java -jar CrushFTP.jar -a "crushadmin" "password"
This will make a new user, and write it to the default location:
users/MainUsers/crushadmin/
You can now login to the administration console using a web browser. The default ports are:
http://your_ip:8080/ https://your_ip:443/
Install Video | Quick Start Video
Alternate Start /Stop CrushFTP Methods
You may also want to start it so it stays running even when you logout.
sudo nohup java -jar CrushFTP.jar -d&
The "-?" option will list various command line options you can use:
java -jar CrushFTP.jar -?
To kill CrushFTP, you can do it one of two ways. The standard kill method will definitely work in stopping the server. Its safe to use as CrushFTP takes precautions against issues that could arise.
You can also do it from a script. CrushFTP supports the "SITE QUIT" command if it has been enabled in the User Manager under the Admin tab for a user. So you can have a scripted command that simply logs into the server, issues SITE QUIT, then logs out. The server will then gracefully quit saving any unsaved data to disk before exiting.
Here is an example shell script to login with FTP with a provided script:
#!/bin/sh ftp -n < ftp.txt
You would then put the following into a ftp.txt file:
open 127.0.0.1 quote user crushadmin quote pass password quote site quit quote quit
Provided a user named "crushadmin" exist, and they have permission to execute that command, CrushFTP will terminate once the user logs out.
Generating a Password With CrushFTP from the Command Line
CrushFTP supports a "-p" option to encrypt a password. This is especially useful if you are manipulating CrushFTP user.xml files directly.
java -jar CrushFTP.jar -p DES thePasswordRunning as non-root (not recommanded)
This method details how to run from rc.local on a systemd init based Linux flavor. Running as a non-root user won't allow binding to ports below 1024, will need to use NAT or port rewrite rules in iptables to be able to server on IANA defined well known ports.
Running crush in user mode as "crushftp" system user, by adding below lines into rc.local (generic method)
su - crushftp -c '/var/opt/CrushFTP10/crushftp_init.sh start' exit 0
This may be required in case daemon mode doesn't output to nohup.out, in this case modify the init script as
$NOHUP $JAVA -Ddir=$CRUSH_DIR -Xmx384M -jar plugins/lib/CrushFTPJarProxy.jar -d 2>>nohup.out &
Running in user mode on systemd RHEL 7/8 family Linux
First in crushftp_init.sh will need to set the user as "crushftp" ( or whatever non-root user) then allow rc-local.service to be able to run ( needed for compatibility mode, non root user)
touch /etc/systemd/system/rc-local.service vi /etc/systemd/system/rc-local.service
paste into below
[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target
then edit /etc/rc.local
vi /etc/rc.local
add in
su crushftp /var/opt/CrushFTP10/crushftp_init.sh start exit 0
then make it executable
chmod +x /etc/rc.local
then install the rc.local service
systemctl enable rc-local.service
reboot, check if OK
Obsolete system V init method
create new scriptfile
touch /etc/init.d/crushftp
add this script to /etc/init.d/crushftp
#!/bin/bash #!/bin/sh # # Control script for CrushFTP v1.4 running as crushuser # # chkconfig: - 86 14 # description: CrushFTP # # BEGIN INIT INFO # Provides: crushftp # Required-Start: $local_fs # Should-Start: $network # Required-Stop: # Should-Stop: $network # Default-Start: 2 3 5 # Default-Stop: 2 5 # Short-Description: CrushFTP Server # Description: Starts Crush on boot # END INIT INFO runuser crushuser -c "/var/opt/CrushFTP10/crushftp_init.sh $1" ################################################################
make it executable
chmod 755 /etc/init.d/crushftp
install service
chkconfig --add crushftp chkconfig crushftp on service crushftp start
Add new attachment
List of attachments
Kind | Attachment Name | Size | Version | Date Modified | Author | Change note |
---|---|---|---|---|---|---|
sh |
configure.sh | 0.9 kB | 7 | 22-May-2024 06:34 | Ben Spink |