WebDAV File Server

Overview

This project provides automated installation scripts for deploying a production-ready file server with WebDAV and FTP access.

The server uses Nginx for WebDAV file sharing and vsftpd for FTP access, with optional SSL/TLS via Let’s Encrypt.

Supported Platforms

Platform Versions

Debian

11 (Bullseye) and later

CentOS / RHEL / Rocky

8 and later

Access Protocols

Protocol Port Authentication SSL

WebDAV (open)

82

None

No

WebDAV (secured)

83

Basic Auth

No

FTP

21 (+ 49000-55000 passive)

System user

No

WebDAV SSL (open)

482

None

Yes

WebDAV SSL (secured)

483

Basic Auth

Yes

Quick Start

1. Copy project to the target server

Clone or copy the entire project directory to the server that will act as the file server:

# Option A: clone from git
git clone https://github.com/Friendly-Technologies/ft-webdav.git /opt/webdav-server
cd /opt/webdav-server

# Option B: download from SharePoint (no git access required)
# https://friendlytech.sharepoint.com/:f:/r/Shared%20Documents/RD/webdav?csf=1&web=1&e=YDB36a
# Then copy to the server:
scp -r ./webdav-server root@your-server:/opt/webdav-server
ssh root@your-server
cd /opt/webdav-server

The following files and directories must be present on the host:

/opt/webdav-server/
├── install-debian.sh            # Installer (Debian)
├── install-centos.sh            # Installer (CentOS/RHEL)
├── ssl-setup.sh                 # SSL setup (optional)
└── configs/                     # Config templates (required by scripts)
    ├── nginx/
    │   ├── default.conf.template
    │   └── ssl.conf.template
    └── vsftpd/
        ├── vsftpd-debian.conf
        ├── vsftpd-centos.conf
        ├── chroot_list
        └── ftpusers
The docs/ directory is documentation only and does not need to be copied to the server.

2. Run the installer

Debian
sudo ./install-debian.sh --domain files.example.com --user myuser
CentOS / RHEL
sudo ./install-centos.sh --domain files.example.com --user myuser
With SSL enabled
sudo ./install-debian.sh --domain files.example.com --user myuser --with-ssl

The script will prompt you to set passwords for the WebDAV and FTP user during installation.

Skip system update
sudo ./install-debian.sh --domain files.example.com --user myuser --skip-update
--skip-update skips apt-get update/upgrade or yum update. This saves time but may leave outdated packages on the system. Run a full system update before production use.

Next Steps