Sign inSign up

jusito/vsftpd-alpine

By jusito

Updated almost 7 years ago

FTP Server VSFTPD meets alpine

Image
0

3.7K

jusito/vsftpd-alpine repository overview

FTP Server VSFTPD meets alpine

FTP Server image with: (http://vsftpd.beasts.org) State: Working but could be improved here and there.

Getting Started

Syntax: docker -d [Options] jusito/vsftpd-alpine:*TAG*
  1. Which use case? Choose your Tag below.
  2. Pick name & password. -e MY_NAME="docker" -e MY_PASSWORD="MySecurePW"
  3. Which ID do the data have or should they keep? -e MY_USER_ID="124" -e MY_GROUP_ID="124"
  4. Give me 12 ports (20, 21, 10090-10100 in the container): -p 10020:20 -p 10021:21 -p 10090-10100:10090-10100
  5. Volume to access? -v VolumeToManage:/home/*USER*/
Example:
  • Only one user
  • FTP Login docker, password MySecurePW
  • Data uploaded should be owned by user 124 and group 124
  • External ports are 10020, 10021, 10090-10100
  • A volume with existing data or a new volume should be used
docker run -d \
 -e MY_NAME="docker" -e MY_PASSWORD="MySecurePW" \
 -e MY_USER_ID="10000" -e MY_GROUP_ID="10000" \
 -p 10020:20 -p 10021:21 -p 10090-10100:10090-10100 \
 -v VolumeToManage:/home/docker/ \
 jusito/vsftpd-alpine:simple
Example for Windows-Network-Mount:

You need: -e pasv_address="YourHostIP(not domain)"

docker run -d \
 -e MY_NAME="docker" -e MY_PASSWORD="MySecurePW" \
 -e MY_USER_ID="10000" -e MY_GROUP_ID="10000" \
 -p 10020:20 -p 10021:21 -p 10090-10100:10090-10100 \
 -v VolumeToManage:/home/docker/ \
 -e pasv_address="YourHostIP(not domain)" \
 jusito/vsftpd-alpine:simple

Tags

simple

= one user
= for windows / linux / filezilla...
- no SSL
- no seccomp / ...

base

Contains every (config variable with default)[http://vsftpd.beasts.org/vsftpd_conf.html]:

Environment Variables

(all variables from x, all default values)[http://vsftpd.beasts.org/vsftpd_conf.html]:

windows mount

pasv_address => set to ip for windows usage thanks to https://github.com/onjin/docker-alpine-vsftpd

free to change
VSFTPD Configuration (click me)

Not in man page, but needed for dockerize:

NameDefault
seccomp_sandboxYES
allow_writeable_chrootYES

In man page:

NameDefault
allow_anon_sslNO
anon_mkdir_write_enableNO
anon_other_write_enableNO
anon_upload_enableNO
anon_world_readable_onlyYES
anonymous_enableYES
ascii_download_enableNO
ascii_upload_enableNO
async_abor_enableNO
backgroundNO
check_shellYES
chmod_enableYES
chown_uploadsNO
chroot_list_enableNO
chroot_local_userNO
connect_from_port_20NO
debug_sslNO
delete_failed_uploadsNO
deny_email_enableNO
dirlist_enableYES
dirmessage_enableNO
download_enableYES
dual_log_enableNO
force_dot_filesNO
force_anon_data_sslNO
force_anon_logins_sslNO
force_local_data_sslYES
force_local_logins_sslYES
guest_enableNO
hide_idsNO
implicit_sslNO
listenYES
listen_ipv6NO
local_enableNO
lock_upload_filesYES
log_ftp_protocolNO
ls_recurse_enableNO
mdtm_writeYES
no_anon_passwordNO
no_log_lockNO
one_process_modelNO
passwd_chroot_enableNO
pasv_addr_resolveNO
pasv_enableYES
pasv_promiscuousNO
port_enableYES
port_promiscuousNO
require_certNO
require_ssl_reuseYES
run_as_launching_userNO
secure_email_list_enableNO
session_supportNO
setproctitle_enableNO
ssl_enableNO
ssl_request_certYES
ssl_sslv2NO
ssl_sslv3NO
ssl_tlsv1YES
strict_ssl_read_eofNO
strict_ssl_write_shutdownNO
syslog_enableNO
tcp_wrappersNO
text_userdb_namesNO
tilde_user_enableNO
use_localtimeNO
use_sendfileYES
userlist_denyYES
userlist_enableNO
validate_certNO
virtual_use_local_privsNO
write_enableNO
xferlog_enableNO
xferlog_std_formatNO
accept_timeout60
anon_max_rate0
anon_umask077
chown_upload_mode0600
connect_timeout60
data_connection_timeout300
delay_failed_login1
delay_successful_login0
file_open_mode0666
ftp_data_port20
idle_session_timeout300
listen_port21
local_max_rate0
local_umask077
max_clients0
max_login_fails3
max_per_ip0
pasv_max_port0
pasv_min_port0
trans_chunk_size0
anon_root""
banned_email_file"/etc/vsftpd.banned_emails"
banner_file""
ca_certs_file""
chown_username"root"
chroot_list_file"/etc/vsftpd.chroot_list"
cmds_allowed""
cmds_denied""
deny_file""
dsa_cert_file""
dsa_private_key_file""
email_password_file"/etc/vsftpd.email_passwords"
ftp_username"ftp"
ftpd_banner""
guest_username"ftp"
hide_file""
listen_address""
listen_address6""
local_root""
message_file".message"
nopriv_user"nobody"
pam_service_name"ftp"
pasv_address""
rsa_cert_file"/usr/share/ssl/certs/vsftpd.pem"
rsa_private_key_file""
secure_chroot_dir"/usr/share/empty"
ssl_ciphers"DES-CBC3-SHA"
user_config_dir""
user_sub_token""
userlist_file"/etc/vsftpd.user_list"
vsftpd_log_file"/var/log/vsftpd.log"
xferlog_file"/var/log/xferlog"

internal (please don't change)
VSFTPD Configuration (click me)

NameDefault
MY_GROUP_ID10000
MY_USER_ID10000
MY_NAMEdocker
MY_PASSWORD""
TEST_MODEfalse
DEBUGGINGfalse
CONFIG_FILE"/etc/vsftpd/vsftpd.conf"

Additional Informations

Bug Windows

pasv_address => set to ip for windows usage (thanks to onjin@git)[https://github.com/onjin/docker-alpine-vsftpd] Example Mount: ftp://1.2.3.4:10021

FAQ
  • seccomp_sandbox=NO ? (500 OOPS: 500 OOPS: child died)[https://bugzilla.redhat.com/show_bug.cgi?id=845980]
  • anonymous_enable=YES ? Username: anonymous
  • allow_writeable_chroot=NO & chroot_local_user=NO? 500 OOPS: vsftpd: refusing to run with writable root inside chroot
  • pasv_enable=YES ? Data Connection
  • write_enable=YES ? any FTP command allowed
  • passwd_chroot_enable=YES ? jail is per user, derived from home path "."
  • local_enable=YES ? Local Accounts can use ftp connections
  • local_umask ? Permissions

Tag summary

Content type

Image

Digest

Size

3 MB

Last updated

almost 7 years ago

docker pull jusito/vsftpd-alpine:base