wiki/en/installation-tftpd.md

72 lines
2.0 KiB
Markdown

# OpenIPC Wiki
[Table of Content](../README.md)
Running a TFTP server in Docker
-------------------------------
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:
### Install Docker Composer
Follow the [Docker installation instructions][1].
### Create Docker image files
Create a file named `Dockerfile` with the following content:
```dockerfile
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:
```yaml
version: '3.9'
services:
tftpd-hpa:
build: .
container_name: tftp
network_mode: 'host'
restart: unless-stopped
volumes:
- ./tftp:/srv/tftp
```
### Start the container
```bash
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:
```bash
sudo chown systemd-network:input ./tftp
```
Alternatively, you may loosen permissions on that directory:
```bash
sudo chmod 777 ./tftp
```
Use your computer's IP address to access the TFTP server from other machines on
your local network.
### Stop the container
To stop the container and free up memory just run
```bash
docker-compose stop
```
The container will be saved on your computer until the next time you need to
start it.
[1]: https://docs.docker.com/compose/install/