Einrichten eines passiven FTP-Servers für Ihre WQHD-Kamera mit Docker
Update: Dieses Tutorial funktioniert sowohl mit Aktiven (PORT Modus) als auch mit Passiven (PASV Modus) Uploads. Wenn Sie nur den Port Modus nutzen lesen Sie bitte unser Tutorial Einrichten eines FTP-Servers für Ihre WQHD-Kamera mit Docker.
Update: Erweitertes Tutorial für das Einrichten eines gesicherten FTP-Servers für Ihre WQHD-Kamera mit Docker über das Hinzufügen der TLS Verschlüsselung. Wenn Sie ohne arbeiten lesen Sie bitte unser Tutorial Einrichten eines ProFTPD Servers für Ihre WQHD Kamera
Q: Ich möchte den FTP-Dienst meiner Kamera nutzen, um Alarmaufzeichnungen und Schnappschussserien auf meinen Linux-Server (Raspberry Pi) hochzuladen.
A: Der einfachste Weg wäre, Ihren Internet-Router als FTP-Server zu verwenden. Wenn Sie einen Linux Server wie z.B. einen Raspberry Pi verwenden möchten, empfehlen wir den sFTP Dienstes anstelle von FTP oder FTPS. Aber natürlich können Sie stattdessen auch Ihren eigenen FTP-Server einrichten. Ich würde empfehlen, ein "vsftpd"-Docker-Image für diese Aufgabe zu erstellen.
Vorbereitung des Docker Images
Beginnen Sie damit, ein Arbeitsverzeichnis und Ihr Dockerfile
zu erstellen, z.B. :
mkdir -p /opt/vsftpd/ftpuser && cd /opt/vsftpd
nano Dockerfile
Und fügen Sie den folgenden Inhalt hinzu. Stellen Sie sicher, dass die Ports 20
- 21
sowie 4242
- 4243
an den Server weitergeleitet werden. Wir benötigen diese zusätzlichen Ports für den passiven Modus - setzen Sie pasv_min_port
und pasv_max_port
entsprechend in der Konfigurationsdatei vsftpd.conf
unten.
# Dockerfile for vsftpd on CentOS7
FROM centos:7
MAINTAINER m.polinowski@instar.com
RUN yum -y update; yum -y install which vsftpd net-tools vsftpd-sysvinit; yum clean all
COPY vusers.txt /etc/vsftpd/
RUN db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vsftpd-virtual-user.db; rm -v /etc/vsftpd/vusers.txt; \
chmod 600 /etc/vsftpd/vsftpd-virtual-user.db
COPY vsftpd.conf /etc/vsftpd/
COPY vsftpd.virtual /etc/pam.d/
RUN mkdir -p /home/vftp/ftpuser; chown -R ftp:ftp /home/vftp
EXPOSE 20 21 4242 4243
CMD ["/usr/sbin/vsftpd","-obackground=NO"]
Dieses Dockerfile
wird CentOS als Basis-Image nehmen - dies kann durch jede beliebige Variante von Enterprise Linux ersetzt werden. Im nächsten Schritt wird der Dienst "vsftpd" installiert und ein FTP-Benutzerkonto für uns erstellt. Danach müssen wir die folgenden Konfigurationsdateien in das Image kopieren - alle müssen in demselben Verzeichnis erstellt werden, in dem wir unsere Dockerdatei
abgelegt haben:
FTP Benutzer Login
vusers.txt
ftpuser
mypassword
Dies ist der Benutzer, den wir für die Verbindung zum FTP-Server verwenden müssen - ändern Sie sowohl den Benutzernamen als auch das Passwort nach Ihren Bedürfnissen.
FTP Benutzer Konfiguration
vsftpd.virtual
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user
session required pam_loginuid.so
Server Konfiguration
vsftpd.conf
anonymous_enable=NO
local_enable=YES
connect_from_port_20=YES
pasv_enable=YES
pasv_addr_resolve=YES
pasv_min_port=4242
pasv_max_port=4243
virtual_use_local_privs=YES
write_enable=YES
local_umask=022
pam_service_name=vsftpd.virtual
guest_enable=YES
user_sub_token=$USER
local_root=/home/vftp/$USER
chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
Starten des Docker-Containers
Bauen des Images
Mit diesen 4 Dateien sind wir nun bereit, unser Docker-Image zu erstellen:
docker build -t vsftpd_pasv .
Ausführen des Containers
Stellen Sie sicher, dass das FTP-Benutzerverzeichnis existiert und von Ihrem Docker-Benutzer beschrieben werden kann:
mkdir -p /opt/vsftpd/ftpuser
chmod 755 -R /opt/vsftpd/*
Stellen Sie sicher, dass das Home-Verzeichnis
/opt/vsftpd/ftpuser
auf755
gesetzt ist, um den FTP-Schreibfehler zu vermeiden ftp 550 Create directory operation failed.
docker run -d \
--name vsftpd \
--net=host \
--privileged \
--rm \
-v /opt/vsftpd/ftpuser/:/home/vftp/ftpuser/ \
vsftpd_pasv:latest
Anbinden einer INSTAR IP-Kamera
Jetzt können Sie auch den PASV-Modus verwenden - z.B. in FileZilla Server: