CrushFTP: Enterprise Grade File Transfer For Everyone
100K+
CrushFTP is an extremely powerful, easy to use solution that runs on almost everything: macOS 10.9+/11/12+, Win2012+, Linux, Solaris, BSD, Unix, etc! Any OS that can run Java 8 at a minimum can run CrushFTP.
Arguments for initial admin user are defined with the "-ad" flag like:
"-ad", "crushadmin", "PASSFILE"
The "crushadmin" is the default username for the first admin user, and "PASSFILE" is an environment variable pointing to the path of a password file. By default, PASSFILE is set to /app/CrushFTP11/passfile, which should contain a single password string (without quotes).
This password is used only during the initial creation of the admin user. After setup, you can delete the password file if needed. Subsequent changes to the password file are ignored when using the -ad flag.
The latest image tags use distroless containers (no shell or execution environment), while latest-dev and -dev tags include a shell for debugging. If the second argument to -ad is a string instead of a variable name, it directly sets the initial password for the "crushadmin" user.
Production image:
export PUID=$(id -u) PGID=$(id -g)
docker compose up
Run app with shell
docker compose -f docker-compose-dev.yaml up
docker compose latest example:
services:
crushftp-init:
image: 'crushftp/crushftp11:latest-dev'
container_name: crushftp-init
environment:
- INIT=true
volumes:
- ./CrushFTP11/:/app/CrushFTP11
user: "${PUID:-1000}:${PGID:-1000}"
crushftp:
image: 'crushftp/crushftp11:latest'
container_name: crushftp
ports:
- '8081:8080'
- '9091:9090'
- '8443:443'
volumes:
- ./CrushFTP11/:/app/CrushFTP11
working_dir: "/app/CrushFTP11"
entrypoint: ["java", "-Ddir=/app/CrushFTP11", "-Xmx512M", "-jar", "/app/CrushFTP11/plugins/lib/CrushFTPJarProxy.jar", "-ad", "crushadmin", "PASSFILE"]
user: "${PUID:-1000}:${PGID:-1000}"
depends_on:
crushftp-init:
condition: service_completed_successfully
volumes:
local_folder:
driver: local
driver_opts:
type: none
o: bind
device: ${PWD}
docker-copmpose-dev.yaml
services:
crushftp:
user: "${PUID:-1000}:${PGID:-1000}"
image: 'crushftp/crushftp11:latest-dev'
container_name: crushftp
ports:
- '8081:8080'
- '9091:9090'
- '8443:443'
environment:
CRUSHFTP_ADMIN_PASSWORD: "changeme"
volumes:
- ./CrushFTP11/:/app/CrushFTP11:rw
volumes:
CrushFTP11:
driver: local
driver_opts:
type: none
o: bind
device: ${PWD}
Note:
The CrushFTP11/ bind mount holds users, jobs, prefs, and TLS certs across restarts. By default the containers run as UID:GID 1000:1000 — if that doesn't match
your host user, either set PUID/PGID before docker compose up (as shown above), or after the first run take ownership of the mount: sudo chown -R $(id -u):$(id -g) CrushFTP11.
See chart: https://artifacthub.io/packages/helm/crushftp/crushftp
Content type
Image
Digest
sha256:0c5a99495…
Size
145.2 MB
Last updated
about 15 hours ago
docker pull crushftp/crushftp11:latest-dev