Если вы видите что-то необычное, просто сообщите мне.

Nginx

Загрузка файлов с помощью curl и nginx

Можно использовать DAV для PUT запросов, это то что уже есть в nginx. Указываем location по которому будем загружать файлы.

location /upload {
  alias     upload/data; #куда грузим
  client_body_temp_path  upload/client_tmp;

  dav_methods  PUT DELETE MKCOL COPY MOVE;

  create_full_put_path   on;
  dav_access             group:rw  all:r;

}

Не забываем установить размер файлов

client_max_body_size 10000m;

Загружаем с помощью curl

curl -T ubuntu-10.04.4-alternate-amd64.iso http://localhost/upload/blah2

Полная конфигцрация, curl загружаем и сразу же можно кому-то отдать файл:

server {
        listen 80;
        server_name _ vm.dev.ru;
        client_max_body_size 500m;
       	root /static;

        index index.html;

        location /sharedfiles/ {
       	       	autoindex on;
		autoindex_format html;
    		autoindex_localtime on;
        }

        location ~ "/upload/([0-9a-zA-Z-.]*)$" {
    	  alias sharedfiles/$1;
    	  client_body_temp_path  /tmp/upl_tmp;
          dav_methods  PUT DELETE MKCOL COPY MOVE;
          create_full_put_path   on;
          dav_access             group:rw  all:r;
        
        }
  }

Certbot

Настройка certbot в ручном режиме

certbot certonly --standalone -n --agree-tos --email ПОЧТА -d CАЙТ.РФ -d www.САЙТ.РФ

создадим ссылку для docker-compose если основной nginx работает в докере

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Создаем исполняемый файл в папке /root со след командами:

#!/bin/bash
date
echo -e "stoping nginx service"
systemctl stop nginx
echo -e "renewing certs"
certbot  renew
echo -e "start nginx service"
systemctl start nginx

Лезем в crontab -e и добавляем правило(тут нужно отметить что лезем от имени root):

0 2   *   *   *    bash /root/certrenew.sh >> renew.log 2>&1

Каждый день в 2 ночи будет стартовать скрипт, рядом с ним можно будет найти как прошло обновление в файле renew.log


Настройка certbot в автоматическом режиме, данные берутся из конфига nginx:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run

Ну и добавить к крон certbot renew

0 2   *   *   *   certbot renew  >> /root/renew.log 2>&1

Скрипт на случай если nginx только в docker:

docker exec NGINXCONTANERNAME apk add py3-pip certbot
docker exec NGINXCONTANERNAME pip3 install pip --upgrade
docker exec NGINXCONTANERNAME pip3 install certbot-nginx
docker exec NGINXCONTANERNAME certbot renew

где NGINXCONTANERNAME - название контейнера с докером.

Установить certbot nginx plugin

apt-get install python-certbot-nginx