{"version":3,"file":"component---src-pages-frequently-asked-question-ftp-secure-server-for-your-wqhd-camera-using-docker-index-mdx-370b2d6eda9f45a1e818.js","mappings":"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","sources":["webpack://instar-wiki/./src/pages/Frequently_Asked_Question/FTP_Secure_Server_for_your_WQHD_Camera_using_Docker/index.mdx"],"sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport { EuiSpacer } from '@elastic/eui';\nimport BreadCrumbs from 'components/Layout/BreadCrumbs';\nimport SEOHelmet from 'components/Layout/SEOHelmet';\nimport TimeLine from 'components/Products/CommentList/MqttIFTTTList';\nexport const _frontmatter = {\n \"title\": \"Set up a Secure FTP Server for your WQHD Camera using Docker\",\n \"path\": \"/Frequently_Asked_Question/FTP_Secure_Server_for_your_WQHD_Camera_using_Docker/\",\n \"dateChanged\": \"2022-05-25\",\n \"author\": \"Mike Polinowski\",\n \"excerpt\": \"I want to use my cameras FTP service to upload alarm recordings and snapshot series to my Linux Server (Raspberry Pi).\",\n \"image\": \"../../FAQ_SearchThumb.png\",\n \"social\": \"/images/Search/FAQ_SearchThumb.webp\",\n \"toc\": \"/images/Search/TOC_Icons/Wiki_Tiles_FAQs_white.webp\",\n \"chapter\": \"FAQs\",\n \"faq\": \"WQHD & UHD Cameras\"\n};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n\n \n \n

{`Set up a Secure FTP Server for your WQHD Camera using Docker`}

\n

{`Update`}{`: This tutorial works with both `}{`Active`}{` (`}{`PORT Mode`}{`) and `}{`Passive`}{` (`}{`PASV Mode`}{`) uploads. If you only need `}{`Port Mode`}{` please read our tutorial `}{`Set up an FTP Server for your WQHD Camera using Docker`}{`.`}

\n

{`Q`}{`: I want to use my cameras FTP service to upload alarm recordings and snapshot series to my Linux Server (Raspberry Pi).`}

\n

{`A`}{`: The simplest way would be to use your `}{`Internet Router as FTP Server`}{`. If you want to use a Linux Server like an Raspberry Pi we recommend using the `}{`sFTP Service`}{` instead of FTP or FTPS. But of course you can also set up your own FTP server instead. I would recommend building an `}{`vsftpd`}{` Docker image for this task.`}

\n {/* TOC */}\n \n {/* /TOC */}\n

{`Preparing the Docker Image`}

\n

{`Start by creating a work directory and your `}{`Dockerfile`}{`, e.g. :`}

\n
{`mkdir`}{` -p /opt/vsftpd/ftpuser `}{`&&`}{` `}{`cd`}{` /opt/vsftpd\n`}{`nano`}{` Dockerfile`}
\n

{`And add the following content. Make sure port `}{`20`}{` - `}{`21`}{` as well as `}{`4242`}{` - `}{`4243`}{`, are being forwarded to the server. We will need these extra ports for the passive mode - set `}{`pasv_min_port`}{` and `}{`pasv_max_port`}{` accordingly in the `}{`vsftpd.conf`}{` configuration file below.`}

\n
{`# Dockerfile for vsftpd on CentOS7`}{`\nFROM centos`}{`:`}{`7`}{`\n\nMAINTAINER m.polinowski@instar.com\n\nRUN yum `}{`-`}{`y update; yum `}{`-`}{`y install which vsftpd net`}{`-`}{`tools vsftpd`}{`-`}{`sysvinit; yum clean all\n\nCOPY vusers.txt /etc/vsftpd/\nRUN db_load `}{`-`}{`T `}{`-`}{`t hash `}{`-`}{`f /etc/vsftpd/vusers.txt /etc/vsftpd/vsftpd`}{`-`}{`virtual`}{`-`}{`user.db; rm `}{`-`}{`v /etc/vsftpd/vusers.txt; \\\\\n\tchmod 600 /etc/vsftpd/vsftpd`}{`-`}{`virtual`}{`-`}{`user.db\nCOPY vsftpd.conf /etc/vsftpd/\nCOPY vsftpd.virtual /etc/pam.d/\nRUN mkdir `}{`-`}{`p /home/vftp/ftpuser; chown `}{`-`}{`R ftp`}{`:`}{`ftp /home/vftp\n\nEXPOSE 20 21 4242 4243\n\nCMD `}{`[`}{`\"/usr/sbin/vsftpd\"`}{`,`}{`\"-obackground=NO\"`}{`]`}
\n

{`This `}{`Dockerfile`}{` will take the CentOS as a base image - this can be replaced by any flavour of Enterprise Linux. The next step installs the `}{`vsftpd`}{` service and creates the FTP User account for us. After that we need to copy the following configuration files into the image - all of the need to be created in the same directory where we placed our `}{`Dockerfile`}{`:`}

\n

{`FTP User Login`}

\n

{`vusers.txt`}

\n
{`ftpuser\nmypassword`}
\n

{`This is the user we will have to use to connect to the FTP server - change both the username and password according to your needs.`}

\n

{`FTP User Configuration`}

\n

{`vsftpd.virtual`}

\n
{`#%PAM-1.0`}{`\nauth       required     pam_userdb.so `}{`db`}{`=`}{`/etc/vsftpd/vsftpd-virtual-user\naccount    required     pam_userdb.so `}{`db`}{`=`}{`/etc/vsftpd/vsftpd-virtual-user\nsession    required     pam_loginuid.so`}
\n

{`Server Configuration`}

\n

{`vsftpd.conf`}

\n
{`ftpd_banner`}{`=`}{`Welcome to the INSTAR FTP service.\n`}{`# Enforce user logins`}{`\n`}{`anonymous_enable`}{`=`}{`NO\n`}{`guest_enable`}{`=`}{`YES\n`}{`# Local linux users are allowed to log in`}{`\n`}{`local_enable`}{`=`}{`YES\n`}{`# Make sure PORT transfer connections originate from port 20`}{`\n`}{`connect_from_port_20`}{`=`}{`YES\n`}{`# Enable PASV mode on ports 4242-4243`}{`\n`}{`pasv_enable`}{`=`}{`YES\n`}{`pasv_addr_resolve`}{`=`}{`YES\n`}{`pasv_min_port`}{`=`}{`4242`}{`\n`}{`pasv_max_port`}{`=`}{`4243`}{`\n`}{`virtual_use_local_privs`}{`=`}{`YES\n`}{`# FTP users can create, delete, rename and save files`}{`\n`}{`write_enable`}{`=`}{`YES\n`}{`# Default umask for local users`}{`\n`}{`local_umask`}{`=`}{`022\n`}{`# Add user`}{`\n`}{`pam_service_name`}{`=`}{`vsftpd.virtual\n`}{`user_sub_token`}{`=`}{`$USER`}{`\n`}{`local_root`}{`=`}{`/home/vftp/`}{`$USER`}{`\n`}{`chroot_local_user`}{`=`}{`YES\n`}{`allow_writeable_chroot`}{`=`}{`YES\n`}{`hide_ids`}{`=`}{`YES\n`}{`# Set network interface`}{`\n`}{`listen`}{`=`}{`YES\n`}{`listen_ipv6`}{`=`}{`NO\n`}{`# Activate logging of uploads/downloads.`}{`\n`}{`xferlog_enable`}{`=`}{`YES\n`}{`xferlog_std_format`}{`=`}{`YES\n`}{`# log file in standard ftpd xferlog format`}{`\n`}{`xferlog_file`}{`=`}{`/var/log/vsftpd.log`}
\n

{`Enable TLS Encryption`}

\n

{`Starting from the standard configuration file `}{`vsftpd.conf`}{` from the previous step we now need to add a TLS certificate to our server. If your server runs on a public server you can use a service like Let's Encrypt / Certbot to generated a valid certificate for the domain name of your server. You can use this certificate for your Web as well as your FTP server. Otherwise you can follow our tutorial on how to `}{`generate your own CA certificate`}{`. This tutorial goes through the steps of generating a valid CA cert for a local domain (provided by an AVM Fritzbox Home Internet Router) and put it to use with an `}{`external MQTT Broker`}{`. The same certificate can be used here as well.`}

\n

{`But in the following steps we will simply generate a self-signed certificate that can be used with an local IP address (instead of a domain name). Of course, this means that we will have to activate the `}{`insecure`}{` mode in our cameras FTP client. This does not mean that the encryption will be weaker, but the camera will not try to verify if your personal FTP server really is the server the TLS certificate was issued to.`}

\n

{`Generate a Private Key and Certificate`}

\n

{`Start by creating a private key and a TLS certificate with `}{`Openssl`}{`. To generate a private key, run:`}

\n
{`mkdir`}{` /opt/vsftpd/tls\nopenssl genrsa -out /opt/vsftpd/vsftpd.key`}
\n

{`Next, generate a certificate signing request with the command below. You will be asked several questions during this process. Since we are not going to verify the resulting certificate, you can leave most of those fields empty. Just add your FTP servers local IP address when asked for the FQDN (fully qualified domain name), e.g. `}{`192.168.2.111`}{`:`}

\n
{`openssl req -new -key /opt/vsftpd/vsftpd.key -out /opt/vsftpd/vsftpd.csr\n\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter `}{`'.'`}{`, the field will be left blank.\n-----\nCountry Name `}{`(`}{`2`}{` letter code`}{`)`}{` `}{`[`}{`AU`}{`]`}{`:.\nState or Province Name `}{`(`}{`full name`}{`)`}{` `}{`[`}{`Some-State`}{`]`}{`:.\nLocality Name `}{`(`}{`eg, city`}{`)`}{` `}{`[`}{`]`}{`:.\nOrganization Name `}{`(`}{`eg, company`}{`)`}{` `}{`[`}{`Internet Widgits Pty Ltd`}{`]`}{`:.\nOrganizational Unit Name `}{`(`}{`eg, section`}{`)`}{` `}{`[`}{`]`}{`:.\nCommon Name `}{`(`}{`e.g. server FQDN or YOUR name`}{`)`}{` `}{`[`}{`]`}{`:192.168.2.111\nEmail Address `}{`[`}{`]`}{`:.\n\nPlease enter the following `}{`'extra'`}{` attributes\nto be sent with your certificate request\nA challenge password `}{`[`}{`]`}{`:\nAn optional company name `}{`[`}{`]`}{`:`}
\n

{`Now, generate and sign the certificate which will be valid for `}{`397 days`}{` (the maximum allowed length = 13 months) as follows:`}

\n
{`openssl x509 -req -days `}{`397`}{` -in /opt/vsftpd/vsftpd.csr -signkey /opt/vsftpd/vsftpd.key -out /opt/vsftpd/vsftpd.pem`}
\n

{`And make sure that Docker will be able to use these new files:`}

\n
{`chmod`}{` `}{`755`}{` /opt/vsftpd/*`}
\n

{`Add the Certificate and Key to your Configuration File`}

\n

{`vsftpd.conf`}

\n
{`ftpd_banner`}{`=`}{`Welcome to the INSTAR FTP service.\n`}{`# Enforce user logins`}{`\n`}{`anonymous_enable`}{`=`}{`NO\n`}{`guest_enable`}{`=`}{`YES\n`}{`# Local linux users are allowed to log in`}{`\n`}{`local_enable`}{`=`}{`YES\n`}{`# Make sure PORT transfer connections originate from port 20`}{`\n`}{`connect_from_port_20`}{`=`}{`YES\n`}{`# Enable PASV mode on ports 4242-4243`}{`\n`}{`pasv_enable`}{`=`}{`YES\n`}{`pasv_addr_resolve`}{`=`}{`YES\n`}{`pasv_min_port`}{`=`}{`4242`}{`\n`}{`pasv_max_port`}{`=`}{`4243`}{`\n`}{`virtual_use_local_privs`}{`=`}{`YES\n`}{`# FTP users can create, delete, rename and save files`}{`\n`}{`write_enable`}{`=`}{`YES\n`}{`# Default umask for local users`}{`\n`}{`local_umask`}{`=`}{`022\n`}{`# Add user`}{`\n`}{`pam_service_name`}{`=`}{`vsftpd.virtual\n`}{`user_sub_token`}{`=`}{`$USER`}{`\n`}{`local_root`}{`=`}{`/home/vftp/`}{`$USER`}{`\n`}{`chroot_local_user`}{`=`}{`YES\n`}{`allow_writeable_chroot`}{`=`}{`YES\n`}{`hide_ids`}{`=`}{`YES\n`}{`# Set network interface`}{`\n`}{`listen`}{`=`}{`YES\n`}{`listen_ipv6`}{`=`}{`NO\n`}{`# Add encryption`}{`\n`}{`rsa_cert_file`}{`=`}{`/etc/vsftpd/vsftpd.pem\n`}{`rsa_private_key_file`}{`=`}{`/etc/vsftpd/vsftpd.key\n`}{`ssl_enable`}{`=`}{`YES\n`}{`allow_anon_ssl`}{`=`}{`NO\n`}{`force_local_data_ssl`}{`=`}{`YES\n`}{`force_local_logins_ssl`}{`=`}{`YES\n`}{`ssl_tlsv1`}{`=`}{`YES\n`}{`ssl_sslv2`}{`=`}{`NO\n`}{`ssl_sslv3`}{`=`}{`NO\n`}{`require_ssl_reuse`}{`=`}{`NO\n`}{`ssl_ciphers`}{`=`}{`HIGH\n`}{`# Activate logging of uploads/downloads.`}{`\n`}{`xferlog_enable`}{`=`}{`YES\n`}{`xferlog_std_format`}{`=`}{`YES\n`}{`# log file in standard ftpd xferlog format`}{`\n`}{`xferlog_file`}{`=`}{`/var/log/vsftpd.log`}
\n

{`Copy Certificate and Key into your Docker Image`}

\n
{`# Dockerfile for vsftpd on CentOS7`}{`\nFROM centos`}{`:`}{`7`}{`\n\nMAINTAINER m.polinowski@instar.com\n\nRUN yum `}{`-`}{`y update; yum `}{`-`}{`y install which vsftpd net`}{`-`}{`tools vsftpd`}{`-`}{`sysvinit; yum clean all\n\nCOPY vusers.txt /etc/vsftpd/\nRUN db_load `}{`-`}{`T `}{`-`}{`t hash `}{`-`}{`f /etc/vsftpd/vusers.txt /etc/vsftpd/vsftpd`}{`-`}{`virtual`}{`-`}{`user.db; rm `}{`-`}{`v /etc/vsftpd/vusers.txt; \\\\\n\tchmod 600 /etc/vsftpd/vsftpd`}{`-`}{`virtual`}{`-`}{`user.db\nCOPY vsftpd.conf /etc/vsftpd/\nCOPY vsftpd.virtual /etc/pam.d/\nCOPY vsftpd.pem /etc/vsftpd/\nCOPY vsftpd.key /etc/vsftpd/\nRUN mkdir `}{`-`}{`p /home/vftp/ftpuser; chown `}{`-`}{`R ftp`}{`:`}{`ftp /home/vftp\n\nEXPOSE 20 21 4242 4243\n\nCMD `}{`[`}{`\"/usr/sbin/vsftpd\"`}{`,`}{`\"-obackground=NO\"`}{`]`}
\n

{`Starting the Docker Container`}

\n

{`Build the Image`}

\n

{`With those 4 files in place we are now ready to build our Docker image:`}

\n
{`docker build -t vsftpd_tls `}{`.`}
\n

{`Run the Container`}

\n

{`Make sure that the FTP user directory exists and can be written to by your Docker user:`}

\n
{`mkdir`}{` -p /opt/vsftpd/ftpuser\n`}{`chmod`}{` -R `}{`755`}{` /opt/vsftpd/ftpuser/`}
\n
\n

{`Make sure that the home directory `}{`/opt/vsftpd/ftpuser`}{` is set to `}{`777`}{` to prevent the FTP write error `}{`ftp 550 Create directory operation failed.`}

\n
\n
{`docker run -d `}{`\\\\`}{`\n    --name vsftpd `}{`\\\\`}{`\n    --net`}{`=`}{`host `}{`\\\\`}{`\n    --privileged `}{`\\\\`}{`\n    --rm `}{`\\\\`}{`\n    -v /opt/vsftpd/ftpuser/:/home/vftp/ftpuser/ `}{`\\\\`}{`\n    vsftpd_tls:latest`}
\n \n\n
;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["_frontmatter","layoutProps","MDXLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","Object","assign","mdxType","SEOHelmet","title","dateChanged","author","tag","description","image","twitter","location","pathname","BreadCrumbs","locationBC","locationEN","locationDE","locationFR","crumbLabel","parentName","isMDXComponent"],"sourceRoot":""}