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
sudo ./install-debian.sh --domain files.example.com --user myuser
sudo ./install-centos.sh --domain files.example.com --user myuser
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.
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
-
Architecture — understand the server components
-
Prerequisites — system requirements before installation
-
Nginx WebDAV Setup — detailed WebDAV configuration
-
FTP Setup — FTP server configuration