Решение запилить сайт было принято после того как я случайно (ища на
работе где скачать трек Makino Yui - Madokashi sekai no ue de)
наткнулся на маленький сайт nyom.ru какого-то хиккана сверстанный под
псевдоретро (по лучшм гайдлайнам narod.ru). Сайт показательно
бессмыссленный - содержал несколько папочек с музыкой, картинками и
каким-то opensource софтом. Не то чтобы это было озарением, скорее
поводом реализовать желание прсутствовавшее уже давно - сделать веб 1.0
домашнюю страничку содержащую инфу по мом хобби. Желательно иметь
сервер у себя дома, чтобы была возможность запилить трансляцию видео
или подключть web sdr. Также я хотел чтобы у меня была 1 маленькая
коробочка на проводе с интернетами, которая занимается и роутнгом и
выполняет роль web и ftp серверов. Безусловно настроить микротик на
проброс портов чтобы не возиться с настройкой роутинга через линуксовую
консоль было бы разумнее, но я хотел минимум железок.
Сначала "для танкистов" нужно пояснить что для того чтобы захостть сайт
ил сервер ftp дома вам нужно как минимум иметь подключение к интернету
с т.н. "белым ip". И тут надо погрузиться немного в работу сети IP.
Сеть TCP\IP проектировалась чем-то похожей на телефонную. Основная ее
задача состоит в обеспечении связи любого участника сети с любым. У
каждого компьютера (в идеале) есть свой адрес, как телефонный номер,
который выдается провайдером из запаса адресов арендованного
провайдером (на самом деле вы можете заиметь прямо свой ЛИЧНЫЙ адрес,
но нужно много бумажек). И по этому адресу с каждого компьютера данные
могут быть переданы любому другому компьютеру чей адрес известен. Как
доставить данные между коммутаторами сети-проблема не пользователей
компьютеров. Но абсолютному большинству людей не нужно принимать
"входящие соединения", для того чтобы бродить по сайтам, смотреть видео
и работать с торрентами нет необходимости иметь выделенный белый
адрес, поэтому провайдеры чтобы сэкономить на аренде адресов ставять
"разветвители" - NAT.
Опуская принцип работы скажу одно; через NAT роутер компьютер
находящийся за ним может установить связь с сервером с выделенным IP в
интернете, а вот снаружи компьютер по своей инициативе не может
установить соединение с одним из компьютеров за ним (на самом деле
можно настроить NAT так чтобы запросы на определенный порт однозначно
направлялись выбранному компьютеру за NAT, это так называемый проброс
портов, применяется на домашнем роутере).
Выделенный "Белый ip" покупается как доп услуга у вашего провайдера
(хотя он может изначально предоставлять вам его - стоит уточнить или
проверить). У меня это стоит 150 руб\мес.
Вторая проблема - т.н. днамический IP. Поскольку людей не волнует тп
соединения и адрес многие провайдеры оставляют за собой право менять
адреса клиентов, по техническим причинам и.т.д. Это уже можно обойти с
помощью DynDNS, но об этом позже.
Так вот. Имея белый IP уже можно обращаться к компьютеру подключенному
к ethernet кабелю. Если есть роутер дома-нужно пробрасывать порты.
Для того чтобы к сайту можно было обращаться по имени, типа
bondagegaywebsite.com нужно арендовать это имя у регистратора DNS. DNS
это служба которая связывает имя сайта и адрес сервера на котором сайт
работает, такой автоматический телефонный справочник, только для
интернетов. Нужно завести у одного из регстраторов личный кабнет,
выбрать свободное имя, оплатить аренду, в личном кабинете в настройки
имени ввести ваш IP сервера и через минут 15-20 можно вводить в
браузере www/mysite.com и браузер откроет ваш сайт.
Сам же сайт это по сути файлы лежаще в папке вебсервера, вебсервер
работает на неком выделенном для этого компьютере, который подключен к
кабелю со статическим IP. По IP адресу компьютеру приходит запрос от
человека который хочет сайт открыть, сервер отвечая на запрос
отправляет в ответ (в запросе есть IP адрес компьютера который хочет
просмотреть сайт) файлы с сервера.
Простой веб 1.0 сайтик можно сваять в редакторе NVU, это мало чем отличается от редактирования документа WORD.
Дальше файлы надо закинуть в папку html на сервере и все.
Теперь к железкам. Я писал о том что хотел совместить в маленькой
коробочке серверы ftp, http, и функции домашнего роутера. Для этого
подходят многопортовые одноплатные компьютеры. Типа таких.
Но такие зверушки стоят за 6к. Я зажмотил и купил двухпортовку с одним usb 3.0
У этого девайса нет видеовыхода, для настройки можно подключиться по
SSH узнав IP устройства после его запуска подключенным к кабелю от
роутера
Или подключиться usb-ttl адаптером к UART
Коротко настройки моего одноплатника.
Настройки портов
eth0 подключен к кабелю с интернетом получает ip автоматом
eth1 смотрит в домашнюю сеть
файл /etc/network/interfaces
----------------------------------------------
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
allow-hotplug eth1
iface eth1 inet static
address 192.168.0.6
netmask 255.255.255.0
---------------------------------------------------
Настройка роутинга пакетов между портами
Открываем следующий файл:
sudo nano /etc/sysctl.conf
Добавляем в него строку:
net.ipv4.ip_forward=1
Применяем настройку:
sudo sysctl -p /etc/sysctl.conf
----------------------------------------------------
NAT
В папке /etc/network/if-pre-up.d/ создадим файл nat и в него добавляем следующие строки
sudo nano /etc/network/if-pre-up.d/nat
содержание файла:
#!/bin/sh
/sbin/iptables -A POSTROUTING -t nat -j MASQUERADE
Делаем этот файл «запускаемым».
sudo chmod +x /etc/network/if-pre-up.d/nat
-------------------------------------------------------
DHCP
sudo apt-get install -y dnsmasq
создаем файл настроек DHCP
sudo nano /etc/dnsmasq.conf
содержание файла:
"
domain-needed
bogus-priv
interface=eth1
dhcp-range=eth1,192.168.0.20,192.168.0.253,24h
"
sudo systemctl enable dnsmasq
-------------------------------------------
Запускаем сервер http
sudo apt install lighttpd
sudo systemctl enable lighttpd
sudo chmod -R 0777 /var/www
открываем доступ по локальной сети к папке вебсервера (для удобства, без пароля)
sudo apt install samba
редактируем файл настроек
sudo nano /etc/samba/smb.conf
содержание файла:
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = debian
#security = user
map to guest = bad user
name resolve order = bcast host
os level = 255
wins support = yes
dns proxy = no
local master = yes
#==============================
[Work]
path = /var/www
browsable = yes
writable = yes
guest ok = yes
read only = no
force user = root
По итогу файлы сайта на сервер можно будет закидывать через "сетевое окружение"
В результате у меня получилась маленькая коробочка которая несла мой
сайт, файлохранлище, фтп, всела на стене, жрала ватт пять от usb
заряднка и не шумела
Ну и мощности для таких дел более чем достаточно
Проблема была в том что этот мини-пк не загружался после кратковременных скачков питания.
По этой причине я был вынужден переехать на Orange pi pc 2, вернуть
взад микротик пробрость порты на нем. Висел сайт на оранжпае
пару дней, а потом мой взгляд упал на raspberry pi 4. Я вспомнил что у
меня лежит буквально коробка с SDRками, и подумалось: а почему нет?
Очень быстро выяснилось что проект OpenWebRX web-based software defined radio | Homepage имеет сборку специально для raspberry pi 4. Несколько десятков минут рисования 3д моделек иии...
Сам сервер с полосой 8 мгц на SDRPlay жрал процентов 45, полюс 15 процентов на каждого нового пользователя.
Сборка OpenWebRx уже имеет на борту вебсервер apache если я не
ошибаюсь. Вебсдр работает на отдельном виртуальом хосте с портом 8073.
Для того чтобы запилить на этом же сервере сайт нужно только добавить
виртуальный хост на порт 80 и залить файлы сайта в его папку.
Про виртуальные хосты можно почтать тут Настройка виртуальных хостов Apache - Losst
Шло время, и до меня дошло что у меня на стене висит по сути без дела
куча денег, еднственный из одноплатников имеющий под себя кучу сборок
интересных осей, при этом не самый выгодный по соотношению
цена\производительность. И стоит купить что-нибудь дешевое и мощное на
rk3399 или rk3588. 3399 мощнее rpi4 примерно раза в полтора, 3588 - в
три. Но и стоит денег, а вот orangepi на rk3399 стоит от 3800р.
Правда хотелось бы меть нормальное хранилище. У того же RPi4 из
интерфейсов только usb 2\3 и microsd. Конечно продаются различные
костыли в виде плат usb-sata, но зачем городить костыли
pcie>usb>sata если можно сразу воткнуть nvme ssd на нормальном
одноплатнике. Правда у дешевых orange pi PCIE выведен на шлейф, и нужно
использовать отдельную плату для подключения ssd.
И стоит она вроде херню, но стоимости доставки сейчас на алике
суммируются, и ждать, а накинуть еще 500 рубасов и можно по озонкарте
на озоне купить rockpi 4 a с разъемом m.2 уже на платке. И припаянной
микрушкой spi в которую можно записать загрузчик и грузица с nvme.
Так и было сделано. И куплен был еще радиатор. Правда я люто, бешено
наебался и купил радиатор для версий b\c. Пришлось обработать радиатор
напильнком (буквально) чтобы его прикрутить.
Потом была куплена платка для подключения nvme ssd. Зачем, если можно
вставить накопитель прямо в одноплатник? Потому что нахуй логику, вот
почему.
Поскольку не всем нужно ставить nvme, на rpi4 все более - менее сносно пахало с флешки опишем установку на это все OpenWebRx
Я использовал Armbian, практика показывает что он постабльнее (сам
производитель, RADXA умудрялся ломать файерволл в ядре линукса, он тупо
крашился, и это на двухпортовом одноплатнике созданном для роутеров и
прочей дичи), и тут первый ньюанс. На сайте скачивания Rockpi 4 – Armbian ссылка на прямое скачивание по умолчанию ведет на версию C
https://redirect.armbian.com/rockpi-4c/Jammy_current
Поэтому копируем ссылку для скачивания, вставляем в адресную строку и меняем в верси платы букву на нужную
https://redirect.armbian.com/rockpi-4a/Jammy_current
И тогда скачается нужная версия.
Иначе могут быть баги (у меня не работали пара usb портов и он не грузлся с NVME).
Далее все более-менее логично.
ставим докер
curl -sSL https://get.docker.com | sh
ставим OpenWebRx
sudo docker pull jketterl/openwebrx-full:stable
sudo docker volume create openwebrx-settings
Отключаем мешающие драйвера. Редактируем файл
sudo nano /etc/modprobe.d/blacklist.conf
добавляем в конец строчки
blacklist dvb_usb_rtl28xxu
blacklist sdr_msi3101
blacklist msi001
blacklist msi2500
blacklist hackrf
выход из редактора - Ctrl+O, Enter - сохранить файл, Ctrl+Х закрыть редактор
Чтобы приемник запускался автоматом после включения одноплатника достаточно ввести один раз
sudo docker run --restart always --name OPENWEBRX --device /dev/bus/usb
-p 8073:8073 -v openwebrx-settings:/var/lib/openwebrx
jketterl/openwebrx-full:stable
перезагружаем
sudo reboot
создаем аккаунт для веб-интерфейса приемника (доступ к настройкам на веб-странице радио)
sudo docker exec -it OPENWEBRX bash
python3 openwebrx.py admin adduser username
Можно запустить несколько приемников
Создаем хранлище для настроек второго приемнка
sudo docker volume create openwebrx-settings1
запускаем docker контейнер на другом порту
sudo docker run --restart always --name OPENWEBRX1 --device
/dev/bus/usb -p 8074:8073 -v openwebrx-settings1:/var/lib/openwebrx
jketterl/openwebrx-full:stable
перезагружаем
sudo reboot
создаем пользователя для второго приемника
sudo docker exec -it OPENWEBRX1 bash
python3 openwebrx.py admin adduser username
И у нас работают два сервера приемника на одном одноплатнике (на момент теста был подключен один)
Инструкция по загрузке с NVME доступна много где, но перепишу еще раз по русски. Работает в Armbian 20.11 и старше.
Редактируем /boot/armbianEnv.txt
sudo nano /boot/armbianEnv.txt
Добавляем в конец строчки
overlays=spi-jedec-nor
param_spinor_spi_bus=1
Перезагружаемся sudo reboot
Проверяем видна ли spi
ls /dev/mtdblock0
На nvme создаем один раздел ext4
cfdisk /dev/nvme0n1
Затем запускаем скрипт переноса системы на nvme и записи загрузчика u-boot
sudo nand-sata-install
В открывающихся меню последовательно выбираем:
"Boot from SPI - system on SATA, USB or NVMe"
Выбираем раздел /dev/nvme0n1p1
Подтверждаем стирание YES
Выбираем тип ФС (ext4)
Ждем пока система перепишется с микросд на nvme
Выбираем запись загрузчика на spi -YES
Подтверждаем YES
Ждем запись
Выбираем exit
Перезагружаемся
Вообще самые дешевые в плане мощность\цена одноплатники делает наверно
Orange pi. Opi5 на процессоре rk3588 (мощнее 3399 раза в 2) стоил по
предзаказу 4500рублей. Но после выпуска дошел до 9000. Имеет разъемы
NVME и прочие.
И если бы у меня было побольше терпения я бы купил его, но и rockpi 4a
с RK3399 вполне хватает для вебхостинга и вебсдр на маломощных сдрках.
В итоге у меня получилась небольшая коробочка которая содержит
бесшумный и экономичный сервер с 5-ти полосным сдр приемником. То что я
и хотел.