Как я веб-приложение на Go для архитектуры MIPS кросс-компилировал

Рассмотрим пример сборки go приложения для работы в среде Entware на mips-роутерах Keenetic/Netcraze

Вечный кайф

Рассмотрим пример сборки go приложения для работы в среде Entware на mips-роутерах Keenetic/Netcraze

В статье я расскажу, как эмулировать работу USB-устройства без наличия физического устройства. Для этого мы соберем маленький Linux-дистрибутив в Buildroot (~60мб), который с помощью USB Gadget будет притворяться реальным периферийным устройством - Modbus Slave (но можно любым дргим: мышкой, камерой и т.д.). Запустим несколько таких “устройств” с помощью QEMU, подключим их в Windows через USBip.
vi /etc/yum.repos.d/centos7.repo
Если ваш проект перерос стадию “просто собрать” и теперь требует бесперебойной работы в проде, простого пайплайна больше недостаточно. Главная боль — как исключить downtime и иметь возможность мгновенного отката? В третьей части цикла разбираемся с GitLab Container Registry.
Мы настроим хранение версий Docker-образов, разберем подводные камни Docker in Docker (dind) и SELinux, а также автоматизируем тестирование перед выкатом. Наконец простейший скрипт для запуска контейнера на production-сервере из вашего приватного Gitlab Registry.

Делюсь опытом. Как я настроил AnythingLLM для небольшой компании на базе VPS и своего домашнего компа. Заказчик хочет оценить все эти ваши GPT на практике, но не готов вкладываться и запрещает отдавать свои тайны публичным языковым моделям. Есть запрос - есть и предложение. Делаем решение из того, что уже есть: VPS на Ubuntu, домашний игровой комп, Mikrotik в качестве роутера. Один вечер и минимум вложений. Заказчик в восторге, я в плюсе!

Я использую Linux 15 лет. Ну, то есть как использую: первые года три я его настраивал, а не использовал. Это разные вещи, и мне понадобилось позорно много времени чтобы это понять.
Сейчас у меня Fedora. Из коробки. С GNOME. Почти без кастомизации. Я набираю в ней код, сижу в браузере, иногда монтирую видео для внутренних демок. Всё работает.
Пятнадцать лет назад я бы от такого описания плевался. Как это «из коробки»? А где i3? Где polybar? Где 400 строк .vimrc? Где кастомный скрипт на баше который при подключении второго монитора переключает раскладку DPI и температуру цвета?
Ну вот, нету. И ничего не сломалось.

OpenMediaVault, бот в Telegram и проблема с провайдером, которую пришлось решать через собственный десктоп.

Продолжаем серию о Linux. В прошлой части разбирали права доступа, а теперь переходим к одной из самых важных тем в Linux — процессам. Любая программа в системе в конечном итоге существует как процесс: nginx, postgres, docker, sshd, systemd, ваш shell и даже потоки ядра. Понимание того, как процессы создаются, живут, взаимодействуют с ядром и завершаются, — это база для понимания и диагностики Linux-систем. Цель этой статьи — рассказать кратко и простым языком всю нужную информацию как для начинающих, так и для опытных пользователей и админов, чтобы освежить знания. Важно: для практики, если обучаетесь, лучше всего использовать виртуалку с Linux.

Все мы любим envsubst за простоту, но он примитивен. Переходить на Python с Jinja2 ради шаблонизации конфигов в CI/CD — всё равно что стрелять из пушки по воробьям, да и тащить рантайм ради пары переменных не хочется. В мире Go есть неплохие аналоги, но их вес в 100 МБ вгоняет в тоску, когда стремишься к минимализму в Docker-образах.
Теперь всё изменилось так как появился muenvsubst — замена стандартной утилите, написанная на C++17, заточенная под хардкорную шаблонизацию в инфраструктуре. В этой статье я расскажу, как уместить мощь, близкую к Jinja2 (включая циклы, условия, макросы и вызов shell), в статический бинарник весом менее 400 КБ.

Привет!
В статье рассмотрим создание центров сертификации для автономной системы в реалиях 2026 года. Такой системой может выступать ваш дом, небольшой офис или другая локальная сеть, которая предоставляет пользователям сервисы. Простоты ради мы будем использовать пакет EasyRSA. Рассмотрим все шаги от создания корневого и промежуточного ЦС до выпуска клиентских и серверных ключей(и бонусом — пример их использования в моей домашней сети). Интересно? Тогда добро пожаловать под кат.
Если у вас есть какая-то система мониторинга чего-то - наверняка там есть какие-то показатели, которые актуальны здесь и сейчас: для метеостанции - температура, для роутера - трафик, для сервера - нагрузка, и т.д. - в общем, какая-то актуальная величина. Но кроме онлайн-значений - может быть полезен график, например за ближайшие сутки, или за месяц, или за год - чтобы можно было оценивать тренды.
Или наоборот: иногда происходит какое-то событие, достаточно редкое (сбой, или наоборот срабатывание), но хотелось бы понимать, насколько часто, и не меняется ли его частота в разные периоды - ведь это может быть признаком более серьезной проблемы.
Самое очевидное решение - писать данные в базу. Но такая таблица будет постоянно расти, занимать всё больше места, а выборка за прошлый период может отрабатывать довольно долго, особенно если требуется уместить целый год в 900 пикселей графика.
Когда-то и я наступил на эти грабли - когда база на MongoDB распухла так, что не влезла в 32-битный компьютер. Но это другая история.
При этом мало кому нужно точно знать, какая температура была на датчике 26 июля 2016 года в 14:33:15 - чаще достаточно просто усредненных значений. Вот как раз для подобного давным-давно люди придумали RRD - Round-robin database

Один из ярких воспоминаний детства — просмотр семьёй диафильмов. Выключался свет, и на самодельном экране из простыни мы смотрели сказки. Детское воображение дорисовывало детали, и картинки оживали.
Сейчас в эпоху интернета, мультимедиа и ИИ вроде бы как такой необходимости нет, но слишком сильное чувство ностальгии. Поэтому решил получить ностальгические воспоминания с использованием современных технологий, а заодно и попрактиковаться в использовании энкодеров, разработке программ на Си и настройке Linux на Raspberry Pi.

Подготовлены .ini файл с настройками TinyPXE Server, скрипт запуска WinNFSd, загрузочные файлы iPXE и скрипт autoexec.ipxe. В общем все необходимое для запуска PocketHandyBox Linux через PXE на почти любом ПК в локальной сети, используя в качестве сервера любой ПК/ноутбук с Windows.
Благодаря поддержке в TinyPXE Server режима ProxyDHCP, при наличии в локальной сети основного DHCP сервера (без настроенной опции 67) / роутера - нет необходимости как либо вмешиваться в его работу. А также нет необходимости изменять IP адреса или файловые пути в каких либо конфигах.
Все необходимое для запуска серверной части на Windows находится в одной папке. Не требует установки каких либо служб или правки реестра. То есть просто копированием переносится между разными Windows ПК и разными локальными сетями.
Поддерживается загрузка через PXE как в UEFI так и в Legacy/CSM режимах. К сожалению Secure Boot не поддерживается и его требуется отключать.
Начнем с краткой инструкции и продолжим более подробным разбором файлов конфигурации и дополнительных возможностей.

Если назначить файлу владельца root на хосте — будет ли это тот же самый root внутри контейнера?
Если на хосте существует пользователь gtosss — можно ли переключиться на него внутри контейнера и получить доступ к файлу?
Если создать пользователя gtosss внутри контейнера и выдать ему права на файл — сможет ли хост обратиться к этому файлу под таким же пользователем?
Большинство разработчиков знают, что контейнеры изолируют процессы. Но мало кто задумывается о том, что происходит с правами, когда например директория с хоста монтируется внутрь контейнера через volume (bind mount).
Разобрал три конкретных сценария на Ubuntu с Docker и Fedora с Podman: как UID/GID влияют на доступ к файлам, почему root в контейнере может быть root на хосте и что с этим делает user namespace. Эксперименты, cli и доступные объяснения.
В прошлых статьях я строил домашнее облако на Proxmox. Теперь внутри него живёт кое-что поинтереснее — полностью автономный AI-агент, которого я могу пнуть письмом из обычного почтового клиента или сообщением в Telegram, и он ответит, подумав. Причём подумав по-настоящему: с многошаговым рассуждением, долговременной памятью и возможностью выполнять команды. Зовут его Threlium, и устроен он чертовски необычно и просто, например может модифицировать сам себя.
Зачем, почему и что получилось — расскажу ниже.

У меня телевизор, который читает файлы с USB-флешки. Флешка отформатирована в FAT32, а значит — максимум 4 ГБ на файл. Типичный вечер выглядит так:
Linux-приложение для тех, кто смотрит фильмы с USB-флешки. Поиск торрентов по Rutor, NoNaMe-Club и RuTracker, скачивание через libtorrent и автоматическое копирование на флешку с умным разбиением MKV-файлов под FAT32. Один бинарник, PyQt5, open source.
Пару недель назад или чуть больше попалась тут статья про то, как вернуть к работе старый компьютер.
Но то ли стиль изложения народу не понравился, то ли еще что - в общем, статью сняли с публикации, а автор явно обиделся. Я думал, он доработает и напишет еще - но что-то не написал.
А зря: были предложены вполне годные вещи, которые я попробовал, и увидел, что это хорошо весьма. Что ж, напишу сам, вдруг кому тоже пригодится.
Почему меня эта тема вообще заинтересовала: у меня, как уже писал раньше, сейчас такой весьма спартанский рабочий компьютер: перепрошитый под Debian TV-box, процессор ARM, питание всего 5 вольт от USB-зарядки.
Начиналось как прикольный эксперимент - а потом понравилось: не гудит, не шумит, электричества не жрёт, места почти не занимает, вопреки ожиданиям работает вполне неплохо.
Единственный минус - памяти всего 4 гигабайта, и увеличить ее физически нельзя.
Причем, для работы-то вполне достаточно, а вот браузер, зараза такая, любит покушать, точнее пожрать.
Не сам браузер - а некоторые сайты, чуть более чем полностью набитые всякими свистелками и анимацией (лучи радости создателям модных современных сайтов с многопоточными скриптами и HD-иконками, типа "img1920х1025.jpg style='width:100px'").
Соответственно, если запущены рабочие программы, и тут повезет открыть такой сайт - начинаются тормозааа, главное успеть его закрыть, пока всю память не выжрал.
Как уже говорилось, память физически нерасширяема. Можно добавить своп-файл - но жалко места, которое будет занято всегда, хотя использовано будет только изредка.
И тут - сразу два решения, которые могут помочь с этой проблемой!

Как безопасно опубликовать домашний сервер без белого IP и проброса портов: домашний сервер сам устанавливает исходящее SSH-соединение к VPS, на VPS создаётся локальный endpoint обратного SSH-туннеля, а внешний доступ к сервисам отдаётся через Caddy по HTTPS. Backend-порты вроде Nextcloud, Home Assistant или Jellyfin не открываются напрямую в интернет, а остаются доступными только через loopback и reverse proxy. Отдельное внимание уделено hardening: ограниченный пользователь tunneluser, SSH-ключи, autossh, systemd, UFW, проверка sshd_config и диагностика типовых ошибок.

Было бы неверным рассматривать WireGuard только как средство для обхода блокировок. Однако без этого свойства его тоже рассмотреть не получится. Сегодня я порассуждаю о безопасности связи с внешним миром, и соберу в одном месте полную пошаговую инструкцию по развёртыванию.

iPXE без лишних слов, но с большим количеством пояснений
Данная статья является туториалом и принципом "сделай сам", проект является завершённым и окончательным продуктом с возможностью дополнять и улучшать его до бесконечности, поскольку можно по аналогии добавлять свои пункты меню в iPXE или настроить графику под себя (подробнее в статье)
Весомым отличием статьи от остальных статей на тему pxe-загрузчиков по сети является то, что рассмотрены оба варианта, как UEFI так и Legacy режимы, настроен DHCP на уровне Active Directory с политиками определения по железу, кто Legacy, кто UEFI через Vendor Classes и 60 правило в DHCP
А также проект актуализирован для 2026 года и объяснены тонкости и нюансы автоустановки Linux Ubuntu, загрузчика sanboot, и принцип устройства BCD загрузчика WinPE и как его "отдавать" по сети для Legacy систем