{"id":21285009,"url":"https://github.com/palw3ey/ye3ftp","last_synced_at":"2026-04-12T22:49:13.549Z","repository":{"id":210758157,"uuid":"727384258","full_name":"palw3ey/ye3ftp","owner":"palw3ey","description":"A docker FTP server based on vsftpd and Alpine. Below 15 Mb. GNS3 ready.","archived":false,"fork":false,"pushed_at":"2024-09-29T23:12:32.000Z","size":68,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T15:11:44.210Z","etag":null,"topics":["alpine","cisco","docker","ftp-client","ftp-server","gns3","lftp","vsftpd-server"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/palw3ey/ye3ftp","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/palw3ey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-12-04T18:58:38.000Z","updated_at":"2024-09-29T23:12:36.000Z","dependencies_parsed_at":"2023-12-04T20:25:31.754Z","dependency_job_id":"e5953bb7-00fd-42fe-aedf-d291e964fecb","html_url":"https://github.com/palw3ey/ye3ftp","commit_stats":null,"previous_names":["palw3ey/ye3ftp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/palw3ey/ye3ftp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palw3ey%2Fye3ftp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palw3ey%2Fye3ftp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palw3ey%2Fye3ftp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palw3ey%2Fye3ftp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/palw3ey","download_url":"https://codeload.github.com/palw3ey/ye3ftp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palw3ey%2Fye3ftp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265009249,"owners_count":23697157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine","cisco","docker","ftp-client","ftp-server","gns3","lftp","vsftpd-server"],"created_at":"2024-11-21T11:17:51.276Z","updated_at":"2026-04-12T22:49:08.493Z","avatar_url":"https://github.com/palw3ey.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ye3ftp\n\nA container FTP server based on vsftpd and Alpine. Light, below 15 Mb. GNS3 ready.  \nA FTP client is also included, the command is : lftp\n\nThe /data folder is persistent, default login: tux/1234\n\n# Simple usage\n\n```bash\ndocker run -dt --name myftp palw3ey/ye3ftp\ndocker exec -it myftp sh --login -c \"mgmt\"\n```\n\n# Test\n\n-\tOn the host\n\n```bash\n# create a test file :\ndocker exec -it myftp sh --login -c \"echo it_works \u003e /data/test.txt\"\n```\n\n-   On a Linux or Windows client  \n\n```bash\nftp\n  open 192.168.9.151 21\n  login tux 1234\n  get test.txt\n  quit\n\n# Verify, on Linux\ncat test.txt\n\n# Verify, on Windows\ntype test.txt\n```\n\nOn Windows, the ftp command in the terminal do not support the passive option nor the SSL option.  \nTo connect using these options you can use Windows explorer or the CURL command.  \nFor advanced use, prefer WinSCP or FileZilla.\n\n# HOWTOs\n\n- Add a user\n```bash\ndocker exec -it myftp sh --login -c \"mgmt --action=add --user=tux2 --password=1234\"\n```\n\n- Map to a host folder\n```bash\ndocker run -dt --name myftp \\\n  --net=host \\\n  -e Y_PORT=1022 \\\n  -v /home/{YOUR_USERNAME}/Documents:/data/tux \\\n  -e Y_USER=tux \\\n  -e Y_PASSWORD=strongPassword \\\n  palw3ey/ye3ftp\n```\n\n- Use the host Let's Encrypt certificates for SSL\n```bash\ndocker run -dt --name myftp \\\n  --net=host \\\n  -e Y_PORT=1022 \\\n  -e Y_SSL=yes \\\n  -v /etc/letsencrypt/live/{YOUR_DOMAIN}/fullchain.pem:/etc/vsftpd/fullchain.pem \\\n  -v /etc/letsencrypt/live/{YOUR_DOMAIN}/privkey.pem:/etc/vsftpd/privkey.pem \\\n  -e Y_USER=tux \\\n  -e Y_PASSWORD=strongPassword \\\n  palw3ey/ye3ftp\n```\n\n- Configure passive port to match your needs and according to your firewall rules\n```bash\ndocker run -dt --name myftp \\\n  --net=host \\\n  -e Y_PORT=1022 \\\n  -e Y_PASV_ADDRESS={YOUR_HOST_IP} \\\n  -e Y_PASV_MIN=40001 \\\n  -e Y_PASV_MAX=41000 \\\n  -e Y_USER=tux \\\n  -e Y_PASSWORD=strongPassword \\\n  palw3ey/ye3ftp\n```\nYou can use \"-p 1022:22\" instead of \"--net=host -e Y_PORT=1022\", but in a PSAV scenario you will have to map every port from PASV_MIN to PASV_MAX, these -p option will create a lot of iptables rules and docker processes.\n\n- Use CURL to get file through FTP, allowing PASV and SSL\n```bash\ncurl ftp://tux:1234@192.168.9.151:21/test.txt --ssl-reqd -T test.txt\n```\n\n- Use the FTP Client to connect to an FTP Server\n```bash\nlftp user:password@FTP_server:FTP_port\nls\n```\n\n# GNS3\n\nTo run through GNS3, download and import the appliance : [ye3ftp.gns3a](https://raw.githubusercontent.com/palw3ey/ye3ftp/master/ye3ftp.gns3a)\n\n## How to connect the docker container in the GNS3 topology ?\nDrag and drop the device in the topology. Right click on the device and select \"Edit config\".  \nIf you want a static configuration, uncomment the lines just below `# Static config for eth0` or otherwise `# DHCP config for eth0` for a dhcp configuration. Click \"Save\".  \nAdd a link to connect the device to a switch or router. Finally, right click on the device, select \"Start\".  \nTo see the output, right click \"Console\".  \nTo type commands, right click \"Auxiliary console\".  \n\n# Environment Variables\n\nThese are the env variables and their default values.  \n\n| variables | format | default | description |\n| :- |:- |:- |:- |\n|Y_LANGUAGE | text | fr_FR | Language. The list is in the folder /i18n/ |\n|Y_DEBUG | yes/no | no | yes, Run vsftpd with debug option |\n|Y_IP | IP address | 0.0.0.0 | IP address to listen to |\n|Y_PORT | port number | 21 | Port to listen to |\n|Y_USER | username | tux | The user to create |\n|Y_PASSWORD | password | 1234 | The password for the user |\n|Y_UID | number | 1000 | The UID to use for all FTP users |\n|Y_GID | number | 1000 | The GID to use for all FTP users |\n|Y_PERMISSION | permission | 0775 | *file_open_mode* |\n|Y_INDIVIDUAL_FOLDER | yes/no | yes | yes, All user use a personal folder. |\n|Y_PASV | yes/no | yes | yes, to enable PASV.  |\n|Y_PASV_ADDRESS | ip address |  | *pasv_address* |\n|Y_PASV_MIN | port number | 0 | *pasv_min_port* |\n|Y_PASV_MAX | port number | 0 | *pasv_max_port* |\n|Y_ANONYMOUS | yes/no | no | yes, to allow anonymous logins. Anonymous usernames are : ftp and anonymous |\n|Y_ANONYMOUS_WRITE | yes/no | no | yes, to allow anonymous to write|\n|Y_SSL | yes/no | no | yes, to enable SSL. Require /etc/vsftpd/fullchain.pem and /etc/vsftpd/privkey.pem |\n|Y_SSL_FORCE | yes/no | no | yes, to allow only SSL connections | \n|Y_SSL_IMPLICIT | yes/no | no | yes, to enable implicit SSL |\n\n# Compatibility\n\nThe docker image was compiled to work on these CPU architectures :\n\n- linux/386\n- linux/amd64\n- linux/arm/v6\n- linux/arm/v7\n- linux/arm64\n- linux/ppc64le\n- linux/s390x\n\nWork on most computers including Raspberry Pi\n\n# Build\n\nTo customize and create your own images. Or simply create an image compatible with your operating system architecture.\n\n```bash\ngit clone https://github.com/palw3ey/ye3ftp.git\ncd ye3ftp\n# Make all your modifications, then :\ndocker build --no-cache --network=host -t ye3ftp .\ndocker run -dt --name my_customized_ftp ye3ftp\n```\n\n# Documentation\n\n[vsftpd man page](https://linux.die.net/man/5/vsftpd.conf)\n\n# Version\n\n| name | version |\n| :- |:- |\n|ye3ftp | 1.0.1 |\n|vsftpd | 3.0.5 |\n|alpine | 3.20.3 |\n\n# Changelog\n## [1.0.1] - 2024-02-24\n### Added\n- FTP Client : lftp\n- A Changelog in README.md, using this syntax : [keepachangelog.com](https://keepachangelog.com/en/1.1.0/)\n## [1.0.0] - 2023-12-04\n### Added\n- first release\n  \n# ToDo\n\n- ~~need to document env variables~~ (2023-12-18)\n- add more translation files in i18n folder. Contribute ! Send me your translations by mail ;)\n\nDon't hesitate to send me your contributions, issues, improvements on github or by mail.\n\n# License\n\nMIT  \nauthor: palw3ey  \nmaintainer: palw3ey  \nemail: palw3ey@gmail.com  \nwebsite: https://github.com/palw3ey/ye3ftp  \ndocker hub: https://hub.docker.com/r/palw3ey/ye3ftp\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalw3ey%2Fye3ftp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalw3ey%2Fye3ftp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalw3ey%2Fye3ftp/lists"}