$ docker run -d \
-p 21:21 \
-p 21000-21010:21000-21010 \
-e USERS='[{"name":"one","password":1234}]" \
-e ADDRESS=ftp.site.domain \
zerosuxx/alpine-ftp-server
$ docker-compose up
Environment variables:
USERS
- json object array (optional, default:[{"name":"alpineftp","password":"alpineftp"}]
)- examples
[{"name":"name1","password":"password1","folder":"/folder1","group":"group1","uid":1001,"gid":1001},{"name":"name2","password":"password2"}]
- examples
VSFTPD_*
- vsftp config property (example:VSFTPD_ANONYMOUS_ENABLE=NO
writed into config file asanonymous_enable=NO
)CONFIGURE_WITH_ENV_VARS
- disable to use original vsftp config file (default:1
)
- VSFTPD_CHROOT_LOCAL_USER=YES
- VSFTPD_ALLOW_WRITEABLE_CHROOT=YES [optinal]
- VSFTPD_PASV_ENABLE=YES
- VSFTPD_PASV_MIN_PORT=21000
- VSFTPD_PASV_MAX_PORT=21010
- VSFTPD_PASV_ADDR_RESOLVE=YES [optinal]
- VSFTPD_PASV_ADDRESS=ftpserver.local [optinal]
Issue free Let's Encrypt certificate and use it with alpine-ftp-server
.
$ mkdir -p /etc/letsencrypt
$ docker run -it --rm \
-p 80:80 \
-v "/etc/letsencrypt:/etc/letsencrypt" \
certbot/certbot certonly \
--standalone \
--preferred-challenges http \
-n --agree-tos \
--email [email protected]
-d ftp.site.domain
$ docker run -d \
--name ftp \
-p 21:21 \
-p 21000-21010:21000-21010 \
-e ADDRESS=ftp.site.domain \
-e TLS_CERT="/etc/letsencrypt/live/ftp.site.domain/fullchain.pem" \
-e TLS_KEY="/etc/letsencrypt/live/ftp.site.domain/privkey.pem" \
zerosuxx/alpine-ftp-server
- Do not forget to replace ftp.site.domain with actual domain pointing to your server's IP.
- Be sure you have avalible port 80 for standalone mode of certbot to issue certificate.
- Do not forget to renew certificate in 3 month with
certbot renew
command.