Skip to main content

ftp на linux PVE

Отличный выбор! Развертывание FTP-сервера в **LXC-контейнере** на Proxmox VE (PVE) — это легковесное и безопасное решение.  

### **1. Создание LXC-контейнера**  
1. **В веб-интерфейсе PVE**  
   - Перейдите в `Create CT` (контейнер).  
   - Выберите **шаблон** (например, `Debian 12` или `Ubuntu 22.04`).  
   - Укажите **ID контейнера**, **пароль root** и **хранилище**.  
   - В `Network` задайте статический IP (например, `192.168.1.100`) или DHCP.  

2. **Через CLI (альтернатива)**  
   ```bash
   pct create 100 local:vztmpl/debian-12-standard_12.0-1_amd64.tar.zst \
   --storage local-lvm --rootfs 8 \
   --net0 name=eth0,bridge=vmbr0,ip=192.168.1.100/24,gw=192.168.1.1
   pct start 100
   ```

### **2. Установка FTP-сервера (vsftpd)**  
1. **Подключитесь к контейнеру**  
   ```bash
   pct enter 100  # или ssh root@192.168.1.100
   ```
2. **Обновите систему и установите vsftpd**  
   ```bash
   apt update && apt upgrade -y
   apt install vsftpd -y
   ```

### **3. Настройка vsftpd**  
1. **Отредактируйте конфиг:**  
   ```bash
   nano /etc/vsftpd.conf
   ```
2. **Минимальная рабочая конфигурация:**  
   ```ini
   listen=YES
   anonymous_enable=NO
   local_enable=YES
   write_enable=YES
   chroot_local_user=YES
   allow_writeable_chroot=YES
   pasv_enable=YES
   pasv_min_port=40000
   pasv_max_port=40100
   local_umask=022
   ```
3. **Перезапустите vsftpd:**  
   ```bash
   systemctl restart vsftpd
   systemctl enable vsftpd
   ```

### **4. Создание FTP-пользователя**  
1. **Добавьте пользователя (например, `ftpuser`):**  
   ```bash
   useradd -m -d /home/ftpuser -s /bin/bash ftpuser
   passwd ftpuser
   ```
2. **Если нужен доступ к конкретной папке:**  
   ```bash
   mkdir /mnt/storage
   chown ftpuser:ftpuser /mnt/storage
   usermod -d /mnt/storage ftpuser
   ```

### **5. Открытие портов в PVE (если контейнер за NAT)**  
Если у контейнера **NAT** (через `vmbr0`), пробейте порты на хосте PVE:  
```bash
iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to 192.168.1.100:21
iptables -t nat -A PREROUTING -p tcp --dport 40000:40100 -j DNAT --to 192.168.1.100:40000-40100
```
Для сохранения правил:  
```bash
apt install iptables-persistent -y
netfilter-persistent save
```

### **6. Проверка подключения**  
- Используйте **FileZilla** или `ftp` в терминале:  
  ```
  ftp 192.168.1.100
  ```
  Логин: `ftpuser` и ваш пароль.

---

### **Дополнительные настройки**  
- **SFTP (повышенная безопасность):** Используйте OpenSSH (`sftp`).  
- **Резервное копирование:** Настройте `rsync` через FTP.  
- **Логирование:** Включите `xferlog_enable=YES` в `/etc/vsftpd.conf`.  

---

### **Итог**  
Вы настроили **FTP-сервер в LXC-контейнере** на PVE. Это изолирует сервис от хоста и упрощает управление.  

Если нужен **безопасный доступ**, рассмотрите **SFTP/SSH** или **WebDAV** (например, через Nextcloud).