The easiest way to run a TFTP server is to do that inside a containerized environment. It does not matter if you run Linux, Windows, or Mac, just perform these steps:
Follow the Docker installation instructions.
Create a file named Dockerfile
with the following content:
FROM debian:latest
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install tftpd-hpa -y -qq && \
apt-get clean && rm -rf /var/lib/apt/lists/*
CMD echo -n "Starting $(in.tftpd --version)" && \
in.tftpd --foreground --create --secure --ipv4 --verbose --user tftp \
--address 0.0.0.0:69 --blocksize 1468 /srv/tftp
In the same directory, create a file named docker-compose.yml
with the
following content:
version: '3.9'
services:
tftpd-hpa:
build: .
container_name: tftp
network_mode: 'host'
restart: unless-stopped
volumes:
- ./tftp:/srv/tftp
docker-compose up -d
Docker will build an image if necessary and launch it in the background. During
building the container, Docker will also create tftp/
subdirectory from which
your files will be served. Docker acts as user systemd-network
from group
input
to access that directory. If you want to allow saving files sent via
TFTP to your machine you'll need to change ownership on that directory:
sudo chown systemd-network:input ./tftp
Alternatively, you may loosen permissions on that directory:
sudo chmod 777 ./tftp
Use your computer's IP address to access the TFTP server from other machines on your local network.
To stop the container and free up memory just run
docker-compose stop
The container will be saved on your computer until the next time you need to start it.