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 auf 755 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:

Set up an FTP Server for your 2k+ (WQHD) Camera using Docker

2k+ (WQHD) Kameras

Set up an FTP Server for your 2k+ (WQHD) Camera using Docker

Full HD Kameras

Set up an FTP Server for your 2k+ (WQHD) Camera using Docker