nginx
November 15

Деплоим HTTP File Server в LXC (NGINX)

Я собрал несколько скриптов под Tampermonkey и понадобился единый ресурс, откуда пользователи смогут получать обновления.

Для Tampermonkey источник обновления указывается прямо в скрипте, а само расширение уже опрашивает этот адрес.

NGINX идеально подходит под такую задачу: лёгкий, быстрый, надёжный и разворачивается меньше чем за минуту.

Ниже — простой и рабочий способ поднять HTTP-хост под раздачу файлов.

В этой инструкции я покажу, как развернуть контейнер, настроить минимальный конфиг и получить рабочий HTTP-хост для файлов.

Для тех, кто уже трогал Proxmox - ничего сложного.

1. Создаём LXC-контейнер

  • Debian 12
  • Unprivileged
  • Network: Static IP
  • Specs: 1 CPU / 512 MB RAM / 8 GB Disk — более чем достаточно

После запуска контейнера подключаемся.

2. Установка базовых пакетов

apt update && apt upgrade -y
apt install curl nginx openssh-server -y
# Создаём каталог, в котором будем хранить скрипты
mkdir -p /var/www/updates
# Активируем NGINX
systemctl enable nginx
systemctl start nginx

3. Проверяем работу

curl http://localhost
Если видишь стандартную страницу — всё ок.

4. Настраиваем NGINX

Открываем конфиг

nano /etc/nginx/sites-enabled/default

Меняем несколько строк:

root /var/www/; # оставляем так, если хотим видеть все каталоги в www
# или
# root /var/www/updates;
index index.html;
autoindex on;
autoindex_exact_size off; # опционально, размеры будут показываться в MB / KB / GB
autoindex_localtime on; # опционально, вывод будет в твоей локальной тайм-зоне

Сохраняем и выходим.

Перезапускаем nginx:

systemctl restart nginx

5. Настраиваем доступ по SSH/SCP

Открываем конфиг SSH:

nano /etc/ssh/sshd_config

Нужно раскомментировать или добавить следующие строчки:

PasswordAuthentication yes
PermitRootLogin yes

Сохраняем и перезапускаем ssh:

systemctl restart ssh

Если сервис доступен только внутри локальной сети, это допустимо.
В публичных сетях лучше переключить на SSH-ключи.

6. Загружаем файлы

Можно через scp

scp /Users/fonwa/script.js root@192.168.1.x:/var/www/updates

Или через любой SFTP-клиент

В GUI-клиент сохраняем хост, подключаемся, просто перетягиваем файлы в /var/www/updates.

7. Проверяем

На этом этапе ресурс уже доступен в локальной сети по IP-адресу контейнера.

В браузере достаточно ввести адрес хоста, чтобы увидеть каталог с загруженными файлами.

Если нужно локально прикрутить доменное имя — ранее я рассказывал, как можно настроить домашний DNS.

А если хочется завернуть трафик в HTTPS и опубликовать - это легко делается через Nginx Proxy Manager.