Merge pull request 'v0.1' (#1) from phil-add-1 into main

Reviewed-on: Phil/docker-tftp#1
This commit is contained in:
Phil 2025-07-27 09:54:54 +00:00
commit 6bf853cc3f
4 changed files with 81 additions and 0 deletions

22
Dockerfile Normal file
View file

@ -0,0 +1,22 @@
FROM alpine:3.22.0
LABEL maintainer="Phil <phil@hackmi.ch>"
LABEL version="0.1"
LABEL description="Docker image for TFTP server using dnsmasq"
WORKDIR /
RUN apk add --no-cache \
bash \
dnsmasq
EXPOSE 69/udp
COPY start.sh init.sh /
RUN chmod +x start.sh init.sh
VOLUME ["/tftp"]
ENTRYPOINT ["./start.sh"]

24
init.sh/init.sh Normal file
View file

@ -0,0 +1,24 @@
#!/bin/bash
# Configure user and group IDs
PUID=${PUID:-1000}
PGID=${PGID:-1000}
echo "[init] Setting up user nbxyz with PUID=${PUID} and PGID=${PGID}"
if ! getent group ${PGID} > /dev/null 2>&1; then
addgroup --gid ${PGID} tftp
else
echo "[init] Group with GID ${PGID} already exists"
fi
if ! getent passwd ${PUID} > /dev/null 2>&1; then
adduser -u ${PUID} -G tftp -h /tftp -s /bin/false -D tftp
else
echo "[init] User with UID ${PUID} already exists"
fi
usermod -a -G users tftp 2>/dev/null || true
chown -R nbxyz:nbxyz /tftp
chmod -R 7777 -R /tftp

13
init.sh/start.sh Normal file
View file

@ -0,0 +1,13 @@
#!/bin/bash
# Init File
/init.sh
# Wrapper script for dnsmasq to ensure TFTP logs are visible in docker logs
echo "[dnsmasq] Starting TFTP server on port 69"
echo "[dnsmasq] TFTP root: /config/menus"
echo "[dnsmasq] TFTP security: enabled"
echo "[dnsmasq] Logging: enabled (dhcp and queries)"
# Start dnsmasq as root to bind to port 69, then drop privileges to tftp
exec /usr/sbin/dnsmasq --port=0 --keep-in-foreground --enable-tftp --user=tftp --tftp-secure --tftp-root=/tftp --log-facility=- --log-dhcp --log-queries "$@"

22
woodpecker.yml Normal file
View file

@ -0,0 +1,22 @@
when:
branch: main
event: push
variables:
- &repo git.hackmi.ch/${CI_REPO_OWNER}/${CI_REPO_NAME}
steps:
publish:
image: docker.io/woodpeckerci/plugin-docker-buildx:latest
settings:
platforms: linux/amd64
repo: *repo
registry: git.hackmi.ch
tags: latest
username:
from_secret: git-package-user
password:
from_secret: git-package-pw
when:
branch: main
event: push