Эссе о селфхостинге (длиннопост)

Что это

Селфхостинг - это хранение ваших данных и запуск сервисов на вашем собственном железе. Через боль и страдания.

Зачем это нужно

Короткий ответ - вам это не нужно. Купите очередной iPhone, прожмите привычные галочки "Я согласен с условиями пользовательского соглашения" не читая, выдайте разрешения на доступ к вашим контактам, фотографиям, геолокации и камере, привяжите банковскую карту, с неё автоматически спишется по 5-10 долларов за очередной месяц в пользу Apple, Google, Amazon, Netflix и Spotify, и забудьте, у нас общество разделения труда.

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

Если вызвал - добро пожаловать под кат.

А в чём собственно проблема

Разблокируйте свой телефон и взгляните на иконки. Каждая из них - это сервис, и каждый, за исключением калькулятора, имеет серверную часть. Приложение, его серверная часть и команда за ним - это сервис. Сервис потокового видео, музыки, подкастов или почты. Каждый из этих сервисов решает одну или несколько задач. И каждый из них доступен вам либо бесплатно, либо по подписке.

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

Мысль проста - ни один сервис не может быть бесплатным по определению.

Стоимость сервиса

Допустим, мы хотим написать простой календарь для телефона - нам нужны два приложения, для iOS и Android, желательна веб-версия, бэкенд для хранения и синхронизации календарей, сервис отправки уведомлений, интеграции со стандартными протоколами (iCalendar, CalDAV, CardDAV, Exchange ActiveSync, WebDAV), а также непосредственно серверные мощности для хранения календарей и синхронизации со всеми клиентами. Оно не так уж и сложно, но работы, очевидно, какое-то обозримое количество присутствует. Теперь представьте 1 год работы 10 инженеров и менеджеров с зарплатой хотя бы в 1000 USD в месяц каждому - это 120000 USD одних зарплат. Откуда тогда берутся бесплатные сервисы?

"Я заплатил за сервис при покупке устройства" - очевидный ответ. Экономика сходится. Скажем Apple, продавая вам iPhone, включила стоимость разработки приложения "Календарь" в стоимость телефона, заложив сразу все долговременные затраты на поддержку серверов. А если вы пользуетесь календарём от Google, скажем, ни разу не купив ни одного телефона на Android? Кто оплачивает банкет? Google заработала миллиарды на продаже рекламы и из любви к искусству готова дать вам дополнительные сервисы? Бывает и так.

По условиям использования есть 4 основных категории сервисов:

Платные сервисы

Примеры: 1Password, Dropbox, Proton Mail.

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

Доступ к контенту

Примеры: Netflix, Spotify, Apple Music, Xbox Game Pass.

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

Бесплатные сервисы

Примеры: Gmail, Instagram, Facebook, TikTok.

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

Бесплатные версии платных сервисов

Примеры: Google Docs, (пиратский) Windows.

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

Почему всюду подписки

Потому что любой сервис - продукт. Вы больше не можете разработать одно хорошее приложение для распаковки RAR архивов и продавать его десять лет, покупая коробку раменов на прибыль раз в год (надеюсь, Евгений Рошал ел чаще). Apple, Google и (реже) Microsoft будет выпускать десятистраничные ченджлисты ежегодно, ломая API ОС, заставляя вас поддерживать ваши приложения буквально постоянно. Приложение в App Store, не обновляющееся несколько лет - это либо элементарный калькулятор с кастомным (и уехавшим в Саратов на последнем iPhone) интерфейсом, либо оно фактически мертво.

Спасибо индустрии за поддержку индустрии разработчиков программного обеспечения, а также всех связанных с Интернетом (то есть всех) индустрий. Вагоны со смузи в офиса программистов и рекламные агенства никогда не придется останавливать, если рекламный кабинет Google Ads будет менять интерфейс каждые полгода, а обновления безопасности Windows будут ронять, ну, скажем... Аэропорты...

Building trust

Каждый используемый сервис, как никотин, вызывает привыкание. У вас буквально мышечная память формируется на определенное положение кнопок на экране. Я лично могу залипнуть в Reels или новости на любимом новостнике за мгновение.

А еще строит с вами доверие. Представьте, что вы храните фотографии в Apple iCloud уже десятилетие. У соседа сгорел сарай, а в нём NAS, и он уже не покажет своему ребенку его первые шаги. А вы платите какие-то жалкие 5-10 баксов в месяц и забыли о существовании менеджеров фотографий со времён Windows XP. Правда, за 10 лет вы заплатили Apple как минимум 500 долларов за такое удовольствие, но зато у вас было время заняться другими вещами, поприятнее.

Представьте, что вы просто хотите попробовать Android. Вы купили к нему Google Photos и оставили на пару дней старый айфон включенным, чтобы выгрузить всё туда. Но вас будет бесить один лишь интерфейс Google Photos после iOS Photos, и вы, возможно, вернетесь на айфон за одним тем, чтобы не потерять снятые Live Photo и не получить искореженные сменой кодека видео.

Дофаминовая яма

Залипали когда-нибудь на долгие часы в Instagram Reels, TikTok или банально в YouTube? Бинджвотчили Netflix? Это всё они, восьмое чудо света, рекомендательные сервисы. По сути тупые (но сложные и дорогостоящие) нейронки, предлагающие вам посмотреть котиков или похожих укладчиков кафеля на тех, кого вы смотрели вчера.

Следствие конкуренции. Развлекательные сервисы обязаны конкурировать за ваше внимание, так как проведенное в них ваше время - это мультипликатор стоимости рекламы для рекламодателя. Если вы провели 4 часа в TikTok и 20 минут в Reels, значит таргет в TikTok будет настолько эффективнее (и дороже), что вашей компании выпишут судебный ордер на её продажу в другую юрисдикцию под угрозой запрета работы в стране.

И потребительской тупости. Казалось бы, откуда в Instagram появились Reels? Вы раньше счастливо выкладывали туда фотографии своей собаки и следили за личной жизнью одноклассника, а теперь сразу после просмотра трёх сторис от друзей вы либо смотрите рекламу от инфлюенсеров, либо листаете вертикальные ролики. Здесь виноваты уже вы. Разработчики инстаграм не могут заставить вашего одноклассника выкладывать фотографии из отпуска чаще чем раз в 20 минут, а значит очевидное решение с их стороны - предложить вам посмотреть тот ролик про мопса, который уже лайнкул миллион настоящих людей, в отличии от фотографии вашего лучшего друга, которую лайнкули два человека (здесь передаю привет Запуску завтра).

Все продукты вокруг нас - лишь интерфейсы

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

В конце концов, технологическая сфера абсолютно прозрачна и открыта, плечи гигантов растут неизменно, и все сервисы строятся на веренице открытых и (часто с оговорками) бесплатных технологий, используемых повсеместно: GNU/Linux в качестве серверной ОС, Windows/macOS/iOS/Android в качестве клиентской, JavaScript/C#/Golang/Java/Swift/Kotlin/C++ в качестве языков, Oracle/PostgreSQL/MongoDB/ClickHouse/Redis в качестве баз данных и кэшей, Kafka/RabbitMQ/Redis в качестве брокеров сообщений, TypeScript/React/Vue/Svelte для фронтенда, Amazon AWS/Google Cloud Platform/DigitalOcean в качестве серверных мощностей, Kubernetes/Docker/Ansible/Chef/Puppet для управления серверами, Stipe/PayPal для принятия платежей и так далее и тому подобное.

Возьмите абсолютно любой сервис - и для него обязательно найдутся даже абсолютно бесплатные альтернативы, предоставляющие от 99% до 100% функционала платного аналога, без рекламы и, возможно, даже без необходимости самостоятельной установки.

Аналоги известных сервисов

  • YouTube -> NewPipe/Invidious - не слишком кривые интерфейсы для просмотра базы видео из YouTube без самого YouTube и его рекламы.
  • Apple iCloud Photos/Google Photos -> Immich/PhotoPrism/NextCloud - полные альтернативы сервисов облачных фотографий.
  • Netflix -> Jellyfin - потоковые фильмы и сериалы.
  • Spotify/Apple Music/YouTube Music -> Subsonic/Navidrome - потоковая музыка.
  • Платный контент -> Торрент-трекеры в паре с менеджерами контента (Starr stack - Radarr, Sonarr, Lidarr, Readarr Prowlarr) - автоматический поиск фильмов, сериалов, музыки и книг на торрентах с проставлением всех метаданных к ним, даже если раздача была кривая.
  • Google Drive/Dropbox/Box.com -> NextCloud - облачные документы и синхронизация.
  • Microsoft Office/Google Docs -> NextCloud Office - облачные документы.
  • Slack -> Rocket.Chat -> корпоративные чаты.

Часто подобные сервисы далеки от идеала до доработки напильником, но на рынке нет ни одного продукта без альтернатив. Вероятно, уход с AutoCAD на FreeCAD, или с SAP на 1С парализует работу авиапредприятия, но мы с вами здесь говорим о частных лицах и банальных потребностях, и здесь всё очень и очень хорошо.

Селфхостинг

Ну вот мы и здесь.

Посчитаем среднюю стоимость популярных сервисов. Допустим, что мы смотрим корейские сериалы на Netflix, музыку слушаем у Apple, хостим 500 Гб фоток там же, держим пару личных сайтиков в AWS EC2, и не смотрим рекламу в YouTube:

  • Netflix - 15,49 USD
  • Apple iCloud 2 Tb - 11,99 USD
  • Apple Music - 5,49 USD
  • Amazon AWS - ~7 USD
  • YouTube Premium - 3 USD

Итого: 42,97 USD в месяц, или 515,64 USD в год.

Каждый год. Можете поменять плохонький автомобиль на 10 лет оплаты сериальчиков вперед.

Платные сервисы - это за деньги. А когда этих сервисов и подписок много, то за год набегает круглая сумма. За 5 лет музыки и фотографий у Apple вы потратите на это стоимость iPhone.

Но бесплатные сервисы - это за ваше время. И за ваши навыки. И на ваш страх и риск.

Аргументы за селфхостинг

Проблемы платных сервисов:

  • Подписки (с регулярным повышением стоимости под инфляцию) - подписки вам попытаются продать на всё, вплоть до элементарных приложений в Play Store.
  • Очевидный оверпрайс за хранилище данных (всегда есть игла с 5-10 бесплатными Гб, которых очень быстро перестанет хватать).
  • Вендор-лок - попробуйте переехать на Android после 10 лет жизни с iPhone и наоборот.
  • Таргетинг рекламы и продажа личных данных - давно читали пользовательские соглашения, как вы даете право передавать любым третьим лицам любые свои данные, и кому на самом деле принадлежит ваш контент?
  • Обучение нейронных сетей - ChatGPT станет только лучше на истории ваших переписок.

Примущества селфхостинга:

  • Ваши данные - ваши. Храните пиратский контент, грузите 700 Гб видео из отпуска, покупайте телефоны с минимальным количеством памяти.
  • Цена - вам нужен диск от 1 Тб и первый попавшийся древний ноутбук с кладовки или Авито за копейки.
  • Свобода выбора интерфейсов - не нравится официальный клиент Reddit - скачайте Apollo! (а, подождите, это из параллельной реальности история, в смысле, не хотите смотреть рекламу в YouTube - поставьте NewPipe!).
  • Никакой свободы врагам свободы - никаких пользовательских соглашений (ну, будем так считать), никаких обновлений без вашего ведома, никакого согласия на обучение нейронок и бесконтрольную продажу ваших данных третьим лицам, никакого отзыва музыки из вашей медиатеки из-за нарушенных договоренностей с правообладателем или смены политического режима.
  • Это прикольно, фаново и страшно интересно. Если вы любитель.

Аргументы против селфхостинга

Неоспоримые плюсы платных сервисов:

  • Много девяток (99,99(9)% SLA) - снег, дождь, буря, экскаватор на соседней улице или обыск не могут повлиять на доступ к вашим данным.

Чудовищные недостатки селфхостинга:

  • Это сложно - несмотря на подробные гайды для школьников младших классов, вы будете заводить группы пользователей и сервисы systemd в Debian, отличать host network от bridge network в Docker, поезете в BIOS, потянете провода и будете настраивать DNS, DHCP, SSL/TLS и проброс портов и заведете два десятка новых внешних сервисов и доменных имен (платных, да) для поддержки вашего зоопарка.
  • Это затратно по времени - вы потратите добрую неделю фуллтайма на настройку собственного сервера с нуля, даже если вы занимались этим за деньги последние 10 лет, как минимум допиливая любовно теги в коллекции музыки и выбирая правильную версию Pink Floyd The Wall из 24 доступных релизов, не говоря уже об установке софта.
  • Это ненадежно - вы выгрузите все свои фотографии, а через 9 месяцев жесткий диск умрёт, и даже если вы были умны и не пожалели времени и денег на RAID0, окажется, что БД вашего сервиса по хранению фотографий покорраптилась из-за резкого отключения питания и не подлежит восстановлению, и как только вы всё настроите и пойдете показывать друзьям результаты ваших трудов - у вас дома выключат электричество или кончится сеть.

Философская рубрика

Решаясь на селфхостинг или его отсутствие, предлагаю кратко пробежаться по ряду вопросов.

Этический вопрос с контентом

Пиратство - это плохо, понятненько? В подвале мрачном клуб, хрен еще найдешь среди магазов и халуп, в клубе группа, играет вечно, рубится беспечно - как же скачивать их музыку с торрентов, если берет за душу, не лучше ли заплатить свои 3 бакса Spotify, чтобы ребятам перепало на пиво? Нет! Сходите на концерт или киньте денег на их Patreon, а заодно почитайте, сколько небольшие исполнители действительно получают денег со стримингов.

Страшно переживаете за доходы Sony Pictures? Прикупите PlayStation 5 и пару игр к ней.

Окей, без шуток, кража контента вещь сомнительная. Но индустрия авторских прав, подтираясь наличной зеленью, настолько наплевательски относится к самим творцам и к сохранению культурного наследия, что их абсолютно не жалко.

Я лично, спиратив в школьные годы все игры серии GTA, впоследствии купил оригинальную трилогию трижды (Steam, iOS, Android), GTA IV трижды (Steam, Xbox, PlayStation 3) и GTA V четырежды (Steam, Xbox, PlayStation 3 и PlayStation 4). Надеюсь, за эти два десятилетия никто в Rockstar не умер с голоду.

Хорошей игре - хорошие продажи, тут без вопросов.

Проблема сбора данных

А есть ли она? Представим, что наши данные категоризируются и используются исключительно в обезличенном виде для целей таргетинга рекламы (никакие базы данных целых государственных институтов и коммерческих компаний в полном виде со списком заказов еды и вашими адресами пусть никогда не утекают).

Что видит рекламодатель в рекламном кабинете Google или Facebook? Он не видит конечного покупателя, он видит когорты - "люди, бывающие в данном районе", "люди, приехавшие в город с целью туризма", "люди, интересующиеся покупкой автомобиля". Вы провели вечер на YouTube просматривая обзоры Volkswagen Golf, а автодилеру нужно продать партию и он готов заплатить за привлечение клиентов. У него даже может быть партия Skoda Octavia, и он даже может вас перебудить.

В конце концов, суть рекламы сводится к тому, что держатель ценности или поставщик услуги хочет донести до своих потенциальных покупателей информацию о своём существовании - "эй, чувак, продам гараж, ты как раз искал". Весь профиль, который ведет о вас Google и Facebook нужен для того, чтобы вы попадали в нужные когорты, из-за чего Facebook будет продавать рекламу дороже, так как она от этого таргетированная. Мечта рекламодателя. Всеобщий win-win. Вы получаете бесплатную соцсеть, соцсеть получает деньги за рекламу, автодилер находит клиента, вы ездите на своей машине.

Глаз бога

Возможно, проблема в сборе данных всё еще есть. Базы данных текут. Все наши идентификаторы провязаны (домашнее задание - найдите номер телефона владельца стоящего на улице автомобиля). Нас приучили к тому, что любое пользовательское соглашение нужно не читать, так как оно специально написано невозможным языком. При этом всём данные текут настолько, что вы можете по любой ниточке достать о человеке приблизительно всё, и никакой ответственности за сливы, кроме штрафа от 5 долларов до 5% годового оборота для компаний и государства не предусмотрено, даже если они открыли сети всю вашу жизнь.

Чёрт с ним с текут, мы сами ими делимся и сами даём ко всему доступ. Фотографии в Instagram? Ну это допустим. А как насчёт скидки на страховку на автомобиль за установку телематики? Как насчёт Tesla, которая может отключить ваш автомобиль удаленно? Не слишком ли много мы даём контроля над своей жизнью крупным компаниям в обмен на удобство? Тут вопрос без ответа.

Представьте себя государством

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

Вы можете управлять целыми когортами. Вы можете влиять на нужные слои населения. Вы можете ввести социальный рейтинг.

Не мечта ли это руководителя?

Представьте себя бизнесом

Вы заходите в свой 7Eleven, Пятерочку, Carrefour или Lidl. Ваше лицо снимает камера, распознает, и понимает, что именно вам и именно сегодня мы продаём все по фуллпрайсу. А вот той многодетной матери или пенсионеру мы автоматом делаем скидку в 10-20%. С вас не убудет, вы молодой/молодая и здоровый/здоровая.

Вы открываете приложение с такси или заказом еды, а вы прям очень похожи на состоятельного гражданина, вот только что с экзотического острова выкладывали фотографии, почему бы вам не сделать такси на жалкие 40% дороже?

Социальный рейтинг - это в Азии. У нас это называется кредитной историей. Зачем запрещать летать на самолете, если вы себя плохо вели, когда можно сделать билет на самолет лично для вас на 70% дороже?

Hide in a plain sight?

А можно ли (и нужно ли скрываться)? А попробуйте. Скачайте OpenStreetMap вместо Google Maps и проживите с ними год. Картографический сервис почти равносилен социальному. Если вы не знаете, открыто ли еще заведение, куда вы идете, смысла в сервисе будет мало.

Представьте, что вы сотрудник аэропорта США, и в очереди среди людей с iPhone и Samsung A24 вы видите у человека старый Google Pixel с установленным на нём GrapheneOS или Calyx OS, на экране которого нет логотипов WhatsApp, Facebook и Instagram, а еще у него на каждое приложение стоит пароль. Вызывает обоснованные подозрения. Или хуже. Если у человека есть WhatsApp и Telegram, но они нарочито пустые, будто всё было только что удалено. Кто из очереди первым доедет до своего отеля?

Ну а если всё же да?

Тогда сил, удачи и удовольствия вам!

Каталог софта

Железо

  • Любой NAS (Synology - выбор олигархата).
  • Любой древний ноутбук или десктоп от 30 USD.
  • Raspberry Pi 4 и выше (не рекомендую, но большую часть сервисов потянет).

ОС

  • Debian/Ubuntu/Raspberry Pi OS

Сеть

  • Tailscale - mesh-сеть для ваших устройств.
  • Cloudflare - домены, DNS и тоннели для вывода сервисов в Интернет (Cloudflare ZeroTrust).
  • Caddy - Веб-сервер, HTTPS сертификаты от Let's Encrypt и reverse proxy.

Сервисы

  • AdGuard Home - DNS с обрезкой рекламы на уровне сети для всех ваших устройств.
  • Navidrome - музыкальный стриминг с Subsonic API.
  • Jellyfin - видеостриминг.
  • Starr - Lidarr, Radarr, Readarr, Sonarr, Prowlarr - управление медиатекой (автоматическая загрузка фильмов, сериалов, музыки и книг с торрентов с проставлением тегов).
  • Invidious - альернативный фронтенд для YouTube без рекламы с загрузкой роликов.
  • NextCloud - облачное хранилище данных, документов и фотографий, с модулями для чатов, звонков и видеоконференций.
  • Immich - облачное хранилище фотографий.

Важные моменты

  • Избегайте потерь питания (выбирайте ноутбук или ставьте UPS). Как минимум EXT4 очень плохо их переживает, а базы данных в Docker мгновенно корраптятся от этого.
  • Ваше железо должно перезагружаться после потери питания. Обычно в настройках BIOS есть опция Wake on AC. Не забудьте включить.
  • Диски желательно брать одинаковые, от 2 штук, в RAID0 массиве, для сохранности.
  • Обеспечьте адекватное охлаждение (хотя бы не закрывайте вентиляционные отверстия), так как сервер часто будет жить с нагрузкой близкой к 100%.
  • Обязательно перезагрузите машину несколько раз после окончания первичной настройки и убедитесь, что сеть поднимается, диски монтируются, сервисы грузятся. Все сервисы.
  • Аккуратнее с Docker и Portainer - если вы не до конца понимаете networking, предпочитайте обычные Debian пакеты контейнерам в Docker, либо используйте подготовленные сообществом Docker Compose файлы.
  • Приготовтесь долго ждать и занять весь сетевой канал. Например, выгрузка фотографий может занять буквально недели чистого времени, и устроит стресс-тест вашему железу при их обработке.
  • Не бросайтесь в омут. Поживите с селфхостингом немного, и уже после решайте, от чего из платных сервисов вы готовы отказаться.

Спасибо за внимание!

1515
11
11
11
30 комментариев

Селфхостинг чисто хобби, имхо. Когда хочется чего-нить своими руками напилить / поднять. Не знаю ни одного человека, которого на полном серьезе бы волновала слежка от корпораций и государства.

А статья интересная, читается хорошо.

5
Ответить

Слежка - вопрос философский. А вот завести одну такую машинку сразу на семью и несколько друзей уже даёт ощутимый эффект минимум в финансах. Я после подсчёта только личных трат на подписки слегка ахнул.

1
Ответить

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

2
Ответить

А вообще с таким материалом на хабр идти надо, тут наверное не зайдет

2
Ответить

Пожалуйста!
Личные данные и так уже де-факто утекли. Но можно перевести на селфхостинг фотографии, календари и прочую мелочь, чтобы не отдавать хотя бы часть информации.

1
Ответить

Уже несколько лет играюсь, но не сильно активно.
Впрочем уже успел вырасти и из Raspberry Pi, и даже из старого ноута. Теперь это полноценный системник на старых игровых запчастях в HTPC корпусе.

Некоторыми подписками всё ещё пользуюсь (Apple Music в основном), правда.

*arr-стак вообще бомбезный. Гораздо приятнее и удобнее регэкспов в торренте.

1
Ответить

Красота! Я сам начинал с Raspberry Pi 5. Но из-за его требования к адаптеру питания 5V5A, который негде было взять, он с зарядки от ноутбука просто умирал под нагрузкой. Раза 4 восстанавливал ФС, после отрыл древний ноутбук с Core i3 и счастливо увёл все на него. Immich с его нейронками и ffmpeg при стриминге на Raspberry так себе себя чувствовал.

1
Ответить