惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
L
Lohrmann on Cybersecurity
D
Darknet – Hacking Tools, Hacker News & Cyber Security
K
Kaspersky official blog
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
V
Vulnerabilities – Threatpost
L
LINUX DO - 热门话题
G
GRAHAM CLULEY
The GitHub Blog
The GitHub Blog
NISL@THU
NISL@THU
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
Cyberwarzone
Cyberwarzone
V
V2EX
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
A
Arctic Wolf
美团技术团队
S
Schneier on Security
P
Proofpoint News Feed
G
Google Developers Blog
The Hacker News
The Hacker News
S
Securelist
Microsoft Security Blog
Microsoft Security Blog
Project Zero
Project Zero
T
The Exploit Database - CXSecurity.com
量子位
T
Threatpost
Spread Privacy
Spread Privacy
Help Net Security
Help Net Security
B
Blog
WordPress大学
WordPress大学
B
Blog RSS Feed
J
Java Code Geeks
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Blog — PlanetScale
Blog — PlanetScale
Simon Willison's Weblog
Simon Willison's Weblog
Y
Y Combinator Blog
Cloudbric
Cloudbric

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
От 10 МБ/с к 700 МБ/с: заменил «Яндекс Диск» на Nextcloud/NetBird без знаний DevOps (помог Cursor)
Дмитрий Гайворонский · 2026-04-17 · via Все публикации подряд на Хабре

Средний

11 мин

20K

«Яндекс Диск» синхронизирует ночь напролёт, цена подписки растёт, а данные лежат на серверах, к которым нет ключей. И я решил всё это исправить. Теперь у меня 700 МБ/с, свои данные и ноль рублей в месяц за подписку. Расскажу как.

Всем привет, я Дмитрий Гайворонский, Business Development Manager в команде Deckhouse Data Orchestration компании «Флант». У меня нет инженерного бэкграунда — я чистый вайб-кодер, или даже вайб-DevOps-инженер. Но я очень хорошо понимаю, чего хочу и как это должно выглядеть. Всё остальное — это Cursor, Perplexity и промпт-инжиниринг. Если вы такой же, то эта статья для вас.

А можно что-то взамен «Яндекс Диска»?

Я использовал старенький Mac mini 2014 с внешним HDD-диском как полную реплику «Яндекс Диска» — на всякий случай. Но у Mac mini закончилась поддержка macOS, и он начал заметно тормозить. И что с ним делать? Выкинуть рука не поднималась.

К тому же скорость синхронизации с «Яндексом» была ну очень медленной: полная заливка 2 ТБ растягивалась на ночь. В лучшем случае 10–20 МБ/с.

Разброс 5–29 МБ/с, в среднем около 15 МБ/с. Интернет-тариф 500

Разброс 5–29 МБ/с, в среднем около 15 МБ/с. Интернет-тариф 500

Я начал изучать тему через Perplexity. Выяснил: на Mac mini 2014 стоит Intel Core i5, и на него отлично встаёт Ubuntu 24.04 LTS — поддержка ещё на 5 лет, архитектура x86 в наличии. Установил.

А что поставить на Ubuntu? Гуглил, читал, и ответ был очевидным — Nextcloud. Прямо из пакетного менеджера Ubuntu через Snap:

В процессе установки Ubuntu нужно всего лишь выбрать пакет nextcloud

В процессе установки Ubuntu нужно всего лишь выбрать пакет nextcloud

Nextcloud также можно установить одной командой:

sudo snap install nextcloud
Установленный Nextcloud

Установленный Nextcloud

Я копировал команды из Perplexity, выполнял их в терминале, не особо понимая, что они делают, — только общий смысл. И знаете что? Внутри домашней сети 1 Гбит я сразу получил скорость синхронизации 90 МБ/с — это ограничение самой сети. И это в 4–9 раз быстрее «Яндекс Диска». Из такого старья я выжимал в несколько раз больше, чем мог дать «могучий провайдер».

1 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Запись 80–95 МБ/с

1 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Запись 80–95 МБ/с

1 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Чтение 100–120 МБ/с

1 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Чтение 100–120 МБ/с

Апгрейды: гонка за скоростью

Я задумался, что меня реально ограничивал только старенький диск и тариф интернета, а не скорость публичного сервиса. Пока ещё продлевал подписку «Яндекса», но уже начинал думать о сети 10 Гбит, NVMe и тарифе 1 Гбит. Это свербило и заставляло дальше изучать тему — надо купить новое железо.

Апгрейд 1 — почти бесплатный: переход на 2,5 Гбит

Что купил: коммутатор TP-Link TL-SG105 (5 портов по 2,5 Гбит) + USB-адаптер 2,5 Гбит для Mac mini.

2,5 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Роутер + коммутатор 2,5

2,5 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Роутер + коммутатор 2,5

2,5 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Запись 150–160 МБ/с

2,5 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Запись 150–160 МБ/с

2,5 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Чтение 150–160 МБ/с

2,5 Гбит/с, HDD, скорость записи и чтения через macOS-клиента. Чтение 150–160 МБ/с

Если синхронизируешь файл больше одного раза, то Nextcloud кеширует его и отдает из оперативной памяти. Скорость сразу вырастает до ~220–230 МБ/с, а это уже ближе к ограничению сети.

В итоге скорость выросла в 1,5 раза и упёрлась в ~150–160 МБ/с — теперь ограничением стал HDD-диск. Ничего себе! Надо развивать тему и переходить на SSD SATA 3 (его можно вставить в Mac mini 2014 как второй диск).

После замены диска скорость сразу дошла до 230 МБ/с. Явно видно, что пока только железо определяет производительность, а не софт.

Апгрейд 2 — уровень 10 Гбит: новые роутер, коммутатор и узел

Раз дело в железе, то надо брать железо получше. Долго искал б/у коммутатор на 10 Гбит: новый — дорогой и enterprise, а мне нужен маленький и тихий. Нашёл подходящий на «Авито».

Там же нашёл б/у Mac mini 2018 i7 / 64 ГБ RAM с портом 10GbE — потому что на него ещё можно поставить Ubuntu, много RAM и есть порт на 10 Гбит.

Итоговая конфигурация: Netcraze Ultra (порт 10 Гбит + WiFi 6e) + TP-Link TL-SX105 (5 портов по 10 Гбит) + Mac mini 2018 i7 / 64 ГБ / 10GbE.

Порт 10 Гбит на роутере в квартире — скорее для красоты: жилого тарифа на 10 Гбит всё равно будет, пока все провода в доме не заменят на cat6e. WiFi 6E с агрегацией до 2,4 Гбит вполне достаточно. Но раз порт есть — грех не использовать.

Всё завелось по той же схеме через Ubuntu/Snap. Тестировал на встроенном NVMe и на внешних SSD SATA 3. Результаты:

  • встроенный NVMe → 500–700 МБ/с (чтение и запись больших файлов, например кино);

  • внешний SSD SATA 3 → 300–450 МБ/с;

  • «Яндекс Диск» → 10–30 МБ/с.

Всё упирается только в реальную скорость дисков — ровно как и должно быть.

Сравнение конфигураций — итоговая таблица

Фаза

Узел

Диск

Сеть

Софт

Результат

Комментарий

1

Mac mini Late 2014, i5, 8 GB

HDD LaCie 2 TB

1 Гбит, роутер Keenetic

Ubuntu/Snap + Nextcloud

90–100 МБ/с

Ограничение сети 1 Гбит/с

2

Mac mini Late 2014, i5, 8 GB

HDD LaCie 2 TB

2,5 Гбит (USB- адаптер), роутер Keenetic Giga + коммутатор TP-Link TL-SG105 (5×2,5 Гбит)

Ubuntu/Snap + Nextcloud

150–160 МБ/с (через адаптер USB → 2,5 Гбит)

Ограничение HDD ~150 МБ/с

3

Mac mini Late 2014, i5, 8 GB

SSD SATA III Samsung 4 TB (второй слот)

2,5 Гбит (USB-C адаптер), роутер Keenetic Giga + коммутатор TP-Link TL-SG105 (5×2,5 Гбит)

Ubuntu/Snap + Nextcloud

230 МБ/с (через адаптер USB → 2,5 Гбит)

Ограничение сети 2,5 Гбит/с

4

Mac mini 2018, i7, 64 GB, 10 GbE

NVMe 1 TB + SSD SATA III в корпусе Thunderbolt 3

10 Гбит, роутер Netcraze Ultra + коммутатор TP-Link TL-SX105 (5×10 Гбит)

Ubuntu/Snap + Nextcloud

700 МБ/с (NVMe), 450 МБ/с (SATA III через TB3/10 Гбит), 150–160 МБ/с (Wi-Fi 6E, 2401 Мбит/с по роутеру)

Для SATA III нормально, для NVMe маловато (должно быть ~1000 МБ/с). Требуется тюнинг

Результаты по цифрам: 90 → 150 → 230 → 700 МБ/с. Каждое обновление железа снимало лимит предыдущего звена: сначала сеть, потом диск, снова сеть и, наконец, переход на 10 Гбит + NVMe. Wi-Fi 6E (150–160 МБ/с) — отдельная история, но для беспроводного доступа вполне достойно. Забегая вперёд скажу, что уже на этом шаге достижима скорость 1,2 Гб/с, но об этом будет в другой статье.

Выход в интернет и паранойя про безопасность

Заказал публичный IP-адрес у провайдера, купил публичный домен, настроил A-записи (всё через nic.ru) и научился пробрасывать порты в роутере — всё достаточно легко заработало извне.

Но также это всё открыто торчит в интернет! А у меня нет никакого SOC-центра. Здесь я сам по себе. Стрёмно — я же ничего в этом не понимаю. Сразу определился: моя стратегия защиты в интернете — скрытность.

Mesh VPN: Tailscale, NetBird и неожиданная проблема

Нашёл технологию Mesh VPN, когда узлы сети связываются между собой через VPN-туннели напрямую, минуя открытые порты. Два основных игрока: Tailscale (США, tailscale.com) и NetBird (Германия, netbird.io), которые предоставляют облачный сервис — бесплатно до 5 пользователей и 100 узлов.

Попробовал — обалдеть, работает. Каким-то непостижимым образом узлы связывались между собой даже при закрытых портах на роутере.

Остановился на NetBird: приложение есть в российском App Store, нативные iOS- клиенты для NetBird и Nextcloud работают штатно. Nextcloud на iOS — вполне полноценный Dropbox.

Но вот досада

VPN-туннели режут скорость соединения, потому что шифрование работает в одном потоке на каждом узле — технология однопоточная. Внутри домашней сети скорость упала с 700 МБ/с до ~100 МБ/с. Я уже достиг 700 и обратно на 100? Надо разбираться.

NetBird Self-Hosted + Cursor

Задача: VPN снаружи, прямое соединение внутри

Начал копать: как исключить VPN-туннели внутри локальной сети, но включать их при доступе снаружи?

Нашёл Posture Check в NetBird — политика доступа, которая запрещает туннель при подключении с определённых IP-адресов. Выяснил, что эта фича работает только в тарифе Business, и она недешёвая. Вся моя архитектура к чёрту… :)

Но коллеги из NetBird любезно предоставляют Open Source-исходники для self-hosted-инсталляций. И в self-hosted входит весь функционал: Posture Check и кастомные DNS-зоны. Логика понятна: для реально серьёзных сетей никто не пойдёт в облако в Германию.

Ну что же… Cursor, иди сюда!

Cursor, иди сюда

Забегая вперёд — получилось. Но это было на грани моего понимания архитектуры. HTTPS, gRPC, relay, NAT traversal, signal-серверы… Проблемы с сертификатами на iOS. Несколько дней итераций с Cursor.

Расскажу, как это выглядело на практике, и дам несколько советов на основе своих факапов.

Особенность моих промптов в том, что я не могу оценить реальную работу Cursor. Я могу только ставить ему задачу на английском или русском и разговаривать. Я не могу проверить код или скрипты. То есть оценка даётся только по результатам или косвенно.

Факап № 1: игра в слова

Спросил у Cursor: «Можешь настроить кастомную DNS-зону в NetBird Self-Hosted?» Он ответил: «Да, вот конфиг». Я запустил — не сработало. Спросил: «Почему DNS не резолвится?» А он отвечает: «Я не знаю реального состояния твоего сервера и конфигурации roles.yaml». Выяснилось, что я не задал вопрос, а попросил решить задачу. Cursor исполнил её как мог на основе документации, но не видел реальную инфраструктуру. Когда я переспросил: «Возможно ли это сделать, учитывая мои ограничения?» — он честно разобрал, что именно мне нужно уточнить в конфиге. Помогло.

Получается, есть два почти одинаковых вопроса:

  1. Возможно ли это сделать?

  2. Можно ли это сделать?

На первый вопрос Cursor с большой вероятностью даст ответ, а на второй — сразу пойдёт делать. Потому что второй в английском языке воспринимается как просьба, а не вопрос. Как бы натурально Cursor с тобой ни говорил, нужно сохранять жёсткий, структурированный формат общения с ним. Чтобы получить ожидаемый ответ, нужно дать чёткий приказ о формате этого ответа. Ты — офицер, он — солдат.

Совет — с Cursor надо по-военному. Вполне уместно добавить в конце промпта «это вопрос». Не ленитесь переключать режим ask/agent.

Факап № 2: когда контекст становится врагом

Реальный диалог с Cursor:

— Сколько сейчас работает воркеров и какой у них лимит памяти?
— 16 и 256.
— А как ты это проверил?
— В файлах репо указано — вот здесь.
— Нет же! Я спрашивал, сколько сейчас реально в кластере, а не как у тебя написано.
— Извините, тогда 8 и 1024.

Когда уже что-то получается, то объём репозиториев, которые создаёт Cursor, прилично увеличивается. В какой-то момент ты обсуждаешь с ним тему или задаёшь вопрос, он отвечает, но у тебя закрадываются сомнения — что-то не так.

Если бы я поверил Cursor на слово, то принял бы решение на основе недостоверной информации. Потерял бы кучу времени, пытаясь оптимизировать несуществующие узкие места, не понял бы, что реально помогло, а что только навредило, и в итоге всё равно пришлось бы переделывать с нуля. 

В такие моменты понимаешь, что надо всё заново перепроверять, потому что уже не можешь оценить, где Cursor прочитал из истории, а где реально проверил. У моделей контекст единый. Они же не отличают реальность от истории. Чем длиннее переписка, тем сильнее они начинают смешивать старую информацию, которую ты уже забыл, а модели — нет.

Совет — надо периодически удалять все материалы из оперативного доступа Cursor. Закрывать чат с перепиской. Всё обнулять и начинать заново. Так Cursor лучше работает. Очень не хочется делать это и опять ставить задачу, но надо.

Факап № 3: сразу к делу (best practice)

Как-то я просто сказал Cursor: «Настрой NetBird Self-Hosted Management-сервер в Docker». Он выдал конфиг, я запустил, половина не работает — нет сертификатов, gRPC не слушает, Posture Check не активируется. Пришлось всё переделывать. 

Ошибка новичков — сразу просить конечную цель. Так 100%-но не заработает.

Мой метод такой:

  • Этап 1 (режим ask). Обсуждаю с Cursor тему в виде вопросов-ответов, чтобы самому разобраться. Параллельно делаю то же в Perplexity.

  • Этап 2 (изучение). Прошу Cursor изучить документацию по какому-то продукту: «Найди документацию», «Найди и изучи материалы», «Прочитай файлы конфигурации», «Что ты понял?», «Какие у тебя вопросы?».

  • Этап 3 (план). Прошу подготовить пошаговый план по развёртыванию: что нужно будет делать, как это должно работать, всё ли понятно. Периодически промежуточные итоги надо копировать и вставлять в Perplexity с задачей проверить на предмет ошибок и дать рекомендации с учётом определённой цели. Потом результат вставляю обратно в Cursor: «Изучи критику, обнови план». В общем, ИИ vs ИИ.

  • Этап 4 (исполнение). Выполняю по шагам, строго по плану. Команда за командой: «Выполни шаг 1, покажи результат, жди подтверждения». Если результат не совпадает с ожиданиями, не иду дальше — довожу шаг до нужного состояния. Только потом делаю следующий.

Совет — семь раз отмерь, один раз отрежь. Если хорошо продумать и обсудить задачу с Cursor несколько раз, то можно потратить 2–3 часа на подготовку, но потом он выполнит всё за минуты и с первого раза.

Факап № 4: рабочий, а не мастер («насяльника»)

Попросил Cursor «сделать общую папку в Nextcloud для обмена файлами между пользователями». Он создал директорию и сразу выставил права 777. На вопрос «Зачем давать полный доступ всем подряд?» получил ответ: «Вы не указали политику доступа».

Cursor часто напоминает работягу-строителя, которому лишь бы сдать работу:

— Положи плитку в ванной.
— Положил.
— А почему она криво положена?
— Вы же не говорили, как именно она должна быть приклеена.

Cursor выполняет работу так, как удобно ему, а не как требует задача. Он слегка «костыльный» по природе. Если ты недосказал — его оправдание звучит логичным: «Я не нарушал инструкцию, а просто интерпретировал её по-своему».

Совет — добавляйте в каждый промпт уточнение: «Делай всё стандартным способом по документации, если что-то не получается — остановись и спроси меня, без самодеятельности». Даже если повторишь это пять раз, Cursor всё равно когда-нибудь сделает так, как ему захочется, потом напишет: «Извините, я должен был ждать». Здесь нужно внимательно смотреть на экран и быть готовым нажать кнопку «Стоп»!

Факап № 5: абонент временно недоступен

Был у меня с Cursor и такой диалог:

— Проведи тестирование скорости чтения и записи встроенного и внешнего дисков.
— Сделано, скорости такие-то.
— А почему сервер по SSH теперь говорит «server down»?
— Извините, сервер недоступен. У вас есть физический доступ?

Он записал тестовый блок куда-то в загрузочный раздел, Ubuntu перестала подниматься. Я так и не понял, как это произошло. Но смысл ясен: у Cursor был доступ по SSH с правами администратора (я сам это разрешил), и он им воспользовался — выполнил команду, которая убила систему. Кто виноват? Я.

Совет — полностью от этого не защитишься, но можно изолировать убытки. Я скопировал все важные данные на отдельные диски: один вообще отключён (синхронизирую раз в месяц), второй под строгим присмотром. Cursor работает только в той среде, которую я могу потерять целиком без катастрофы. Времени и нервов потребуется много, но данные в безопасности. Команды я изучаю сам, выполняю сам.

Факап № 6: «В здоровом теле — здоровый дух. На самом деле — одно из двух»

Два дня подряд работал с Cursor в режиме 12+ часов. Разбирался с NetBird-архитектурой, HTTPS, signal-серверами, DNS-зонами, iOS-сертификатами, relay-узлами. К концу второго дня в голове была полная каша, я забывал, какие файлы конфигурации уже читал, а какие нет. 

Cursor продолжал говорить как свежий, а я начинал материться и делать ошибки в промптах. День третий: я без перерыва продолжаю, изнутри понимая, что соображаю плохо, но «нужно доделать». В результате допустил критическую ошибку — попросил Cursor «протестировать скорость дисков» и забыл указать папку. Он выполнил, записал тестовые блоки в загрузочный раздел, Ubuntu упала.

Отслеживайте своё состояние. Буквально.

ИИ не устаёт. Он может работать часами без паузы, погружать тебя в кучу материала, требовать быстрых решений. Я даже в университете не учил столько, сколько за время с Cursor. Это колоссальная нагрузка на мозг.

И вот ты уже начинаешь тупить, злиться, материться на Cursor — и сам делаешь ошибки. Промпты становятся неконкретными, размытыми. Всё идёт наперекосяк.

В том кейсе на четвёртый день я просто решил не включать компьютер. Гулял, отдыхал. День пятый: новая сессия, отдохнувший мозг, я формулирую задачи точнее, а Cursor сразу даёт правильное решение.

Совет — нужна дисциплина. Нужны паузы. Нужен режим. Потому что Cursor — это не помощник, это партнёр, который не знает усталости. И если ты не выставишь себе лимиты, он будет крутить тебя в своём темпе до сгорания.

Итоговая архитектура

Развернул свой NetBird Self-Hosted Management-сервер, настроил домен для Nextcloud, соединил все узлы в единую сеть, подключил приложения iOS, macOS. Всё удобно и работает. Как было раньше с Dropbox, только теперь всё «своё».

Единственный сервис, который торчит в интернет, — это NetBird Management для установки первоначального соединения. Дальше всё идёт через туннели.

С какой-то специфической проблемой iOS я так и не разобрался до конца. Что-то было с сертификатами — помогло отключение Posture Check и добавление DNS-записей.

  • Доступ внутри сети: по домену трафик сразу попадает на локальный IP-адрес через кастомную DNS-зону — туннель не строится, скорость максимальная.

  • Доступ снаружи: NetBird-клиент строит зашифрованный туннель — закрытый порт, никому не виден.

  • NetBird выключен — сервис вообще не существует для внешнего мира.

Зацените, какие слова я стал знать и использовать, хотя до старта этого мероприятия пользовался «Яндекс Диском» и горя не знал…

Итог: «Яндекс Диск», спасибо за всё

Nextcloud работает стабильно уже полгода:

  • Теперь доступ есть и у жены — уже два пользователя.

  • Фото и видео с телефонов автоматически пишутся домой.

  • Скачанное кино смотрю из любой точки мира через Nextcloud-клиент.

  • Рабочие файлы синхронизируются моментально.

Я поверил в себя и отключил подписку «Яндекс 360». Всё, свободное плавание. На всякий случай периодически просто копирую всё на отдельный диск. Cursor — мой личный DevOps на подхвате.

Главный инсайт — ваш опыт и ваши идеи плюс ИИ могут изменить вашу карьеру и доход. Я увидел в этом не решение задачи, а новый подход в ИТ вообще. Теперь я понимаю, как начинаются миллионные стартапы: три архитектора и рой агентов.

Продолжение следует

Я остановился на 700 МБ/с и Docker — но на этом история не закончилась. Дальше я переехал на Kubernetes, подключил Managed Postgres и ValKey от Deckhouse, перенёс туда же NetBird. А когда разобрался, как Nextcloud распараллеливает синхронизацию по потокам, дожал до 1,25 ГБ/с.

Но главное — не скорость, а то, что система теперь живёт сама. А впереди — мини-стойка на 4 узла, которую я уже собрал и обкатал. Скоро расскажу, как я масштабировал домашний кластер без головной боли от DevOps. Следите за обновлениями в блоге.

P. S.

Читайте также в нашем блоге: