💾 Archived View for dmntv.ru › other › gemsrv.gmi captured on 2024-05-10 at 10:39:49. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-03-21)
-=-=-=-=-=-=-
(памятка/инструкция, краткое пошаговое руководство)
Raspberry Pi
В моем случае это будет Raspberry Pi Zero 2 W
Зарядное устройство (блок питания)
Все модели работают на мощности 5,1 В, но Raspberry Pi 4 и 400 требуют 3A, в то время как другие модели могут нормально работать на 2,5 А.
Кабель соединяющий зарядное устройство и Raspberry Pi с соответствующим коннектором (если такового нет в блоке питания)
Raspberry Pi 4 и 400 питается от разъема USB C, Raspberry Pi Zero 2 W (как в моем случае) от Micro USB.
Micro SD карта (и Card Reader если такового нет в вашем компьютере)
Минимальная необходимая емкость составляет 8 ГБ, но для облегченной версии, в принципе, хватит и 4ГБ.
Ну и, само-собой, какой-нибудь компьютер чтобы записать OS на карту памяти
Я буду делать это на Mac Book Air, но это не имеет принципиального значения.
Raspberry Pi Imager - это быстрый и простой способ установить Raspberry Pi OS и другие операционные системы нашу карту. Скачиваем и устанавливаем Raspberry Pi Imager (MacOS / Windows / Linux), засовываем карту в кард-ридер и запускаем Raspberry Pi Imager. Форматируем карту в FAT32. Выбираем операционную систему (в моем случае, я выберу Raspberry Pi OS (other) > Raspberry Pi OS Lite 32-bit (без десктопного окружения)). Выбираем нашу карту (как цель записи). Нажимаем на иконку выбора параметров (шестерёнка в правом нижнем углу). И заполняем:
Возвращаемся на основной экран и нажимает кнопку WRITE (записать). Соглашаемся с предупреждением о том, что все данные на карте будут потеряны и ждем.
Через какое-то время (которое зависит от скорости интернет соединения, выбранного дистрибутива, скорости карты и прочих вспышек на Солнце) если вы поставили галочку «оповестить о завершении» - вы услышите звуковой сигнал (в моем случае это заняло минут пять). Это значит, что всё готово. Карту можно извлечь из кард-лидера (он больше не понадобится) и установить в Raspberry Pi.
Всё! Готово. Можно переходить к настройке, подключению к сети и установке дополнительного программного обеспечения.
Если вы всё сделали правильно и не допустили ошибок когда в дополнительных настройках указывали имя, логин и пароль вашей WiFi сети, то ваша Raspberry Pi уже в сети. Нам остается узнать её IP адрес, чтобы мы могли к ней подключиться.
Узнать список всех ваших подключенных устройств можно в панели управления вашим роутером. У меня это AirPort и там список всех подключенных устройств есть сразу же на первом экране. Запоминаем (или записываем) адрес нашей Raspberry Pi.
Я думаю, что будет проще если мы закрепим какой-то конкретный IP адрес за нашей Raspberry Pi. Для этого нам также понадобится узнать её MAC-адрес (уникальный идентификатор сетевого оборудования). Это тоже можно узнать в панели управления вашим роутером. У меня это AirPort и там необходимо выбрать наше устройство и во всплывающем окне строка аппаратный адрес и есть тот самый, нужный нам, MAC-адрес. Также запоминаем (или записываем) его.
Далее в панели управления роутером, мы должны найти раздел, который должен называться как-нибудь (в зависимости от производителя и модели вашего роутера) типа: «DHCP резервирование» и зарезервировать конкретный IP адрес за устройством с конкретным MAC-адресом. Подразумевается что вы их помните (или записывали), я же предупреждал.
Также, чтобы как говориться, два раза не ходить - там же, где-то рядом, есть раздел который должен называться как-нибудь (в зависимости от производителя и модели вашего роутера) типа: «Настройки портов». И там вы можете указать - обращения на какие порты пропускать и перенаправлять на вашу Raspberry Pi. Это нужно того если вы хотите иметь доступ к вашей Raspberry Pi не только внутри вашей локальной сети, но и из глобальной (интернета). То есть, если вы захотите настроить вашу Raspberry Pi как, например, веб-сервер, то в этом случае нужно пропускать и перенаправлять обращения на 80-ый (стандартный http) и 433-ий (шифрованный https) порты. Доступ по SSH (по умолчанию) настроен на 22-ой порт, ну и так далее, в зависимости от того, что вам надо. Если доступ из глобальной сети (интернета) не нужен, то и делать это также не нужно. Внутри уже всё работает.
После сохраняем и перегружаем роутер, чтобы настройки вступили в силу. И теперь мы знаем адрес по которому можно заходить на нашу Raspberry Pi. Это тот адрес, который мы для неё зарезервировали.
Чтобы удаленно подключится к Raspberry Pi нам понадобится терминал. В Linux и MacOS, он само-собой и так уже есть. Про Windows я мало чего могу сказать. Я не использовал Windows уже более 20-ти лет и многое уже забыл, а то, что помню касается Windows 98 и ещё более старших версий (и немного WinXP помню). Но я не уверен, что сейчас, кто-то в здравом уме использует Win98 или WinXP. Но в те времена для подключения к *NIX машинам использовали программу PUTTY. Вероятно сейчас есть какие-то современные программы, вероятно и терминал туда уже завезли - не буду утверждать ничего конкретного, но, на крайний случай PUTTY - тоже подходит.
В общем, открываем терминал и подключаемся по протоколу SSH. К тому адресу который мы зарезервировали для нашей Raspberry Pi. С логином и паролем который мы указали на этапе выбора дополнительных параметров когда записывали на карту Raspberry Pi OS при помощи Raspberry Pi Imager.
ssh user@host
Например:
ssh root@10.0.0.10
Вводим пароль. Добрый вечер, я - диспетчер. Добро пожаловать. Мы на месте. В домашней директории нашего пользователя, на нашей Raspberry Pi.
Далее можно крутить и настраивать то, что хочется, но я думаю, что первым делом имеет смысл сделать следующие вещи:
sudo raspi-config
В окне конфинурации обновить raspi-config. Пункт UPDATE.
И развернуть файловую систему до размеров всей карты памяти.
Advanced Options > Expand Filesystem
А также, обновить список пакетов из репозиториев
sudo apt update
И наконец, обновить пакеты
sudo apt full-upgrade
Всё остальное по мере надобности и/или необходимости. Но, в принципе, уже можно начинать играться и устанавливать и настраивать всякие «нужности» и прочие «полезности».
Удаленно заходим на нашу Raspberry Pi
(user - наш пользователь, host - наш IP адрес)
ssh user@host
Создаем директорию gemini
(подразумевается что мы находимся в нашей домашней директории)
mkdir gemini
Внутри директории gemini создадим две поддиректории bin и public
(для файлов сервера и файлов/страничек которые сервер будет отдавать на внешние запросы)
mkdir gemini/bin gemini/public
Я решил, что проще всего будет использовать Agate. Это простой сервер для протокола Gemini.
Предварительно скомпилированные двоичные файлы pre-compiled binary
Нам нужен тот который подходит под нашу систему. Я буду ставить на Raspberry Pi Zero 2 W и значит мне нужен:
agate.armv7-unknown-linux-gnueabihf.gz
Команда uname вывоводит информацию о системе. Например uname -a выводит полную информацию.
uname -a
А например name -m выводит имя аппаратного имени машины.
uname -m
В моем случае (Raspberry Pi Zero 2 W), мы получим armv7l
Скачиваем подходящий нам предварительно скомпилированный двоичный файл
wget https://github.com/mbrubeck/agate/releases/download/v3.3.0/agate.armv7-unknown-linux-gnueabihf.gz
И распаковываем его
gunzip agate.armv7-unknown-linux-gnueabihf.gz
Перемещаем его в созданную ранее директорию bin и переименовываем в agate
mv agate.armv7-unknown-linux-gnueabihf gemini/bin/agate
Даем права на «выполнение» файла
chmod +x gemini/bin/agate
Теперь создадим наш первый «индексный» файл
nano gemini/public/index.gmi
Напишем туда что-нибудь типа:
# Hello! This is my first page in Gemini Space
Запускаем сервер с указанием пути до нашей public директории, портом (1965), именем и языком
/home/gemini/bin/agate --content /home/gemini/public/ --addr [::]:1965 --addr 0.0.0.0:1965 --hostname example.com --lang ru-RU
Agate сгенерирует ключи и самоподписанные сертификаты для каждого указанного имени хоста и поместит их в директорию .certificates Поскольку они самоподписанные, при первом обращении, нам нужно будет подтвердить, что мы им доверяем.
Также, я думаю, для удобства, имеет смысл перенести их в директорию bin
mv .certificates/ gemini/bin/.cert
Для этого создадим файл в директории /etc/systemd/system/
sudo nano /etc/systemd/system/agate.service
Разместим там следующие иструкции
(Подставляя правильные пути для двоичного файла, публичной директории и директории сертификатов указав нашего пользователя)
[Unit] Description=agate After=network.target [Service] User=user Type=simple ExecStart=/home/gemini/bin/agate --content /home/gemini/public/ --addr [::]:1965 --addr 0.0.0.0:1965 --hostname example.ru --certs /home/dmntv/gemini/bin/.cert --lang ru-RU [Install] WantedBy=default.target
Запустить службу
sudo systemctl start agate
Остановить службу
sudo systemctl stор agate
Показать состояние службы
sudo systemctl status agate
Добавить службу в автозагрузку
sudo systemctl enable agate
Обновить конфигурацию после внесения изменений
sudo systemctl daemon-reload
Посмотреть полный список всех опций команды systemctl
systemctl --help