1 - Начало работы

Как установить и настроить сервер SelfPrivacy?

Сервер SelfPrivacy создается поэтапно в течение часа. Звучит страшно, но уверяю, учёная степень не понадобится. Процесс не сложнее покупки в интернет-магазине.

  • Поиск паспорта и карты с балансом $10-15 и $5 в месяц
  • Регистрация учётных записей
  • Покупка домена
  • Подключение домена к DNS серверу
  • Создание токенов
  • Установка
  • Подключение к сервисам

Если поручите кому-нибудь эту задачу — лишитесь приватности. Для 100% независимости и контроля необходимо делать всё самостоятельно.

Регистрация учётных записей

Для устойчивости и SelfPrivacy требует много учётных записей. Мы не будем доверять все данные одной компании, лучше распределить части системы по разным местам

Регистрируемся

  • Hetzner или DigitalOcean — хостинги виртуальных серверов. Какой выберете, в том и будут жить ваши данные и сервисы SelfPrivacy.
  • Любой регистратор доменов, к примеру Porkbun (можно оплачивать криптовалютой) для покупки личного адреса в интернете — домена, который будет указывать на сервер.
  • Для DNS-сервера, где будет работать ваш домен, выберите между: deSEC (рекомендуем) или DigitalOcean DNS или CloudFlare.
  • Backblaze — IaaS провайдер, для хранения зашифрованных резервных копий ваших данных.

Регистрация заурядна, но иногда проверка учётной записи длится несколько дней или требует дополнительных документов. Поэтому используйте настоящие документы и заполняйте всё аккуратно. Провайдеры так защищаются от спамеров, ничего личного)

Обязательно включите дополнительную защиту учётных записей — второй фактор (MFA, 2FA). Без этого простого шага ваши данные не будут в безопасности.

Я знаю, было сложно, но теперь ваши данные защищены лучше, чем у 95% пользователей. Можете собой гордиться! Я вот вами уже горжусь 🤗

Покупка домена

Включили второй фактор? Я серьёзно! Тогда переходим к интересному!

Домен — это кусочек интернета, которому вы даёте имя. Простор для творчества огромен, у вас есть 63 символа + несколько сотен вариаций расширения домена, такие как .com, .org, .icu и тд.

Заходим на ваш регистратор домена. В качестве примера будем использовать Porkbun.

Выбираем домен. Можно выбрать просто по фамилии, например ivanov.live или ivanov.health, а можно и что-то творческое — shit-happens.shop

Рекомендации

  • Обязательно смотреть на цену ежегодного продления, она может в разы превышать стоимость покупки.
  • Нормальная цена домена $8-10 в год.
  • При регистрации домена обязательно указывать реальные почту и телефон, иначе регистрацию могут аннулировать. И если вы не сможете продлить домен, система не будет работать так, как задумано.
  • Выбирайте хорошее имя, которое удобно и по телефону диктовать, и на деловой визитке указать.
  • Я уже говорил про второй фактор?

Подключение домена к DNS серверу

Если вы выбрали deSEC: Как добавить домен

  1. Переходим по ссылке, входим в аккаунт.

  2. Нажимаем на плюс.

  1. Вводим ваш домен. Нажимаем Save.

  2. Копируем имена полученные в поле Nameservers.

На примере домена cat-meowmeow.corp мы получили имена серверов: ns1.desec.io и ns2.desec.org. Имена серверов у вас могут отличаться.

Если вы выбрали Cloudflare: Как добавить домен

  1. Переходим по ссылке, входим в аккаунт.

  2. Слева в меню нажимаем Websites, далее синюю кнопку Get started.

  1. Выбираем бесплатный тариф Free, нажимаем Continue.
  1. На вкладке Review DNS records ничего не меняем. Нажимаем Continue.
  1. В пункте 3, копируем имена nameservers. После нажимаем Continue.
  1. Финальная страница, нажимаем Finish later.

Только что мы выбрали бесплатный тариф и получили имена серверов: alberto.ns.cloudflare.com и michelle.ns.cloudflare.com. У вас имена серверов могут отличаться.

Если вы выбрали DigitalOcean DNS: Как добавить домен

Если вы планируете использовать DigitalOcean и для сервера, и для DNS (что мы не рекомендуем), то вам необходимо будет создать отдельный проект (в интерфейсе DigitalOcean) для DNS записей.

DigitalOcean предоставляет только токены которые дают полный доступ ко всему в проекте. Токен для сервера остаётся на вашем устройстве, однако токен для DNS записей будет отправлен на ваш новый сервер. Если токен для DNS будет иметь доступ к самому серверу, в случае его взлома, злоумышленник сможет уничтожить сам сервер.

  1. Создайте новый проект, перейдите в управление новым проектом.

  2. Нажимаем сверху на кнопку Create, выбираем Domain/DNS.

  1. Вводим имя своего домена, выбираем проект созданный под управление доменом.
  1. Нажимаем Add Domain.

Получаем имена серверов, которые понадобятся нам на следующем этапе.

Используем полученные имена у своего регистратора

DigitalOcean имеет хорошую инструкцию для многих популярных регистраторов. Даже если вы не используете DigitalOcean в качестве DNS, эта инструкция может вам помочь!

Далее инструкция для Porkbun, но вы можете использовать свой регистратор домена, действия должны быть примерно схожи.

  1. Переходим в панель управления доменами.

  2. Наводимся мышкой на купленный домен, нажимаем DNS.

  3. В панели управления доменом находим параметр Authoritative nameservers.

  4. Нажимаем Edit.

  5. Заносим туда имена серверов, которые получили на предудущем этапе.

Через несколько минут или, в худшем случае, до двух суток настройки применятся.

Создание токенов

API ключи — это почти то же самое, что и логин с паролем, только для программы, а не человека. С их помощью приложение SelfPrivacy управляет сервисами во всех учётных записях вместо вас. Удобно!

Нам не нужен токен для регистратора домена. Но нам понадобится токен DNS провайдера, чтобы управлять доменом.

Если вы выбрали deSEC: Как получить токен

  1. Авторизуемся в deSEC

  2. Переходим на страницу Domains

  3. Переходим на вкладку Token management.

  4. Нажимаем на большую кнопку с “плюсом” в правом верхнем углу страницы.

  1. Появиться “Generate New Token” диалог. Вводим любое имя токена в Token name. Advanced settings необязательны, так что ничего там не меняем.

  2. Кликаем Save.

  3. Обязательно сохраняем “secret value” ключ токена, потому что он отображается исключительно один раз.

  1. Теперь спокойно закрываем диалог, нажав close.

Если вы выбрали Cloudflare: Как получить токен

  1. Переходим по ссылке и авторизуемся в ранее созданном аккаунте.

  2. В правом верхнем углу кликаем на иконку профиля (для мобильной версии сайта: в верхнем левом углу нажимаем кнопку Меню с тремя горизонтальными полосками). В выпавшем меню кликаем на пункт My Profile.

  1. Нам предлагается на выбор, четыре категории настройки: Preferences, Authentication, API Tokens, Sessions. Выбираем API Tokens.

  2. Самым первым пунктом видим кнопку Create Token. С полной уверенностью в себе и желанием обрести приватность, нажимаем на неё.

  3. Спускаемся в самый низ и видим поле Create Custom Token и кнопку Get Started с правой стороны. Нажимаем.

  4. В поле Token Name даём своему токену имя. Можете покреативить и отнестись к этому как к наименованию домашнего зверька :)

  5. Далее, у нас Permissions. В первом поле выбираем Zone. Во втором поле, по центру, выбираем DNS. В последнем поле выбираем Edit.

  6. Нажимаем на синюю надпись снизу + Add more (сразу же под левым полем которое мы заполняли ранее). Вуаля, у нас появились новые поля. Заполняем по аналогии с предыдущим пунктом, в первом поле выбираем Zone, во-втором тоже Zone. А уже в третьем нажимаем на Read. Давайте сверим с тем, что у вас получилось:

Ваш выбор должен выглядеть так.

  1. Далее смотрим на Zone Resources. Под этой надписью есть строка с двумя полями. В первом должно быть Include, а во втором — Specific Zone. Как только Вы выберите Specific Zone, справа появится ещё одно поле. В нём выбираем наш домен.

  2. Листаем в самый низ и нажимаем на синюю кнопку Continue to Summary.

  3. Проверяем, всё ли мы правильно выбрали. Должна присутствовать подобная строка: ваш.домен — DNS:Edit, Zone:Read.

  4. Нажимаем Create Token.

  5. Копируем созданный токен.

Если вы выбрали DigitalOcean DNS: Как получить токен

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

  1. Перейдите по ссылке и войдите в ранее созданный аккаунт.

  2. В левом меню перейдите на страницу API - последний пункт в самом низу.

  3. Нажмите Generate New Token в меню Personal Access Tokens.

  4. Копируем токен.

Как получить токен для провайдера сервера

Если вы выбрали Hetzner

  1. Переходим по ссылке и авторизуемся в ранее созданном аккаунте.

  2. Заходим в созданный нами проект. Если такового нет — значит создаём.

  3. Наводим мышкой на боковую панель. Она должна раскрыться, показав нам пункты меню. Нас интересует последний — Security (с иконкой ключа).

  1. Далее, в верхней части интерфейса видим примерно такой список: SSH KEYS, API TOKENS, CERTIFICATES, MEMBERS. Нам нужен API TOKENS. Переходим по нему.

  2. По середине в интерфейсе, нас будет ожидать кнопка GENERATE API TOKEN. Нажимаем на эту кнопку.

  1. В поле Description даём нашему токену название (это может быть любое название, которое вам нравится, сути оно не меняет).

  2. Под полем Description видим возможность выбрать разрешения PERMISSIONS. Выбираем Read & Write.

  3. Нажимаем GENERATE API TOKEN.

  4. Появиться окно с вашим токеном, сохраняем его.

Если вы выбрали DigitalOcean

  1. Перейдите по ссылке и войдите в ранее созданный аккаунт.

  2. В левом меню перейдите на страницу API - последний пункт в самом низу.

  3. Нажмите Generate New Token в меню Personal Access Tokens.

  4. То что нужно, копируем.

Как получить токен Backblaze

  1. Переходим по ссылке и авторизуемся в ранее созданном аккаунте.

  2. В левой части интерфейса выбираем App Keys в подкатегории Account.

  3. Нажимаем на синюю кнопку Generate New Master Application Key.

  4. Во всплывающем окне подтверждаем генерацию.

  5. Копируем keyID и applicationKey.


Откроем приложение

Заходим в мастер установки. Пора использовать токены, что мы получали ранее.

Приложение предложит вам выбрать местоположение и характеристики сервера. Рекомендуем выбирать сервер, находящийся ближе к вашей текущей локации. Если у вас около 5 пользователей, минимального сервера по характеристикам будет достаточно.

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

В финале нажимаем “Создать сервер”, процесс может занять до 30 минут.

Если что-то пошло не так, обращайтесь в чаты поддержки.


🎉 Поздравляю! Теперь вы готовы использовать приватные сервисы.


После установки, рекомендуем вам создать ключ восстановления сервера

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

В приложении, перейдите в пункт меню “Ещё”, затем “Ключ восстановления”. Нажмите “Сгенерировать ключ”.

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

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

2 - Теория

Обсуждение различных аспектов проекта

2.1 - Архитектура проекта

Как организован проект и как он работает.

Да, вы можете использовать kubernetes. Но зачем, если неизменяемость обеспечивается благодаря NixOS?

Пользовательское приложение: Flutter/Dart выбрали из-за скорости и плавности работы UI, а также очень соблазнительна их кроссплатформенность.

Серверная сторона (backend): NixOS + Python. NixOS выбран из-за воспроизводимости, Python из-за универсальности и популярности.

Сервис-провайдеры

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

Хостинг

SelfPrivacy поддерживает два хостинг провайдера: Hetzner и DigitalOcean

Оба были выбраны из-за низкой цены и приемлемого уровня сервиса, качественного REST API.

Кандидаты:

  • Свой личный железный сервер. Сейчас наш основной приоритет;
  • Сервис-провайдер, который предоставит API для разворачивания железного сервера. Вне FVEY;
  • OVH
  • Scaleway

Ещё есть бесплатный Oracle Cloud, но там где вы не платите, обычно вы и есть товар.

DNS

На выбор Cloudlare, deSEC или DigitalOcean DNS.

deSEC — более приватный вариант, рекомендуется по умолчанию.

Cloudflare вероятно, собирает данные в режиме проксирования трафика, иначе сложно объяснить, зачем предоставлять сервис бесплатно. В нашем случае мы ничего не проксируем, а используем его только как DNS-сервер.

Резервные копии

Используем — Backblaze

Первые 20GB бесплатны и в разы дешевле AWS. Backblaze публикует в open source наработки железа, на котором работает. Также делится очень полезной статистикой по отказам дисков, на основе которых можно выбрать себе наиболее надёжный и проверенный.

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

2.2 - Как SelfPrivacy автоматизирует управление сервером

SelfPrivacy старается автоматизировать все этапы настройки и управления сервера, чтобы пользователь не отвлекался на его эксплуатацию.

Self-hosted означает “самостоятельное размещение” или “сам себе хостинг”. Это когда айтишники не используют популярные сервисы вроде гугла, а устанавливают свободные аналоги на свои или арендованных сервера (VPS). Выходит, что ты получаешь тот же сервис, только под своим контролем. Зачастую свободные аналоги будут более функциональнее, приватнее и безопасней бесплатных готовых вариантов, от больших компаний.

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

  • Надо настроить домен для приложения и TLS-сертификат;
  • Нужно позаботиться о безопасности сервера;
  • Не пропустить критическое обновление безопасности;
  • Делать регулярное резервное копирование;
  • Следить, чтобы диск не переполнился;
  • Создавать и удалять пользователей сервисов;

Айтишнику задачи посильны, хоть и хлопотны. А для остальных почти неподъемны. Задача SelfPrivacy максимально упростить этот процесс. Пользователю не нужно использовать консоль или быть квалифицированным специалистом. Программа автоматизирует это за вас.

Управление доменом

Полная автоматизация

После того как вы настроили домен на CloudFlare, а API-ключ скопировали в приложение SelfPrivacy — ваш домен управляется полностью автоматически:

  • Создаются записи для всех сервисов;
  • Обновятся в случае необходимости;

Вам остаётся только раз в год оплачивать домен у своего регистратора. Не забывайте проверять свой электронный почтовый ящик.

Управление сертификатами

Полная автоматизация

Безопасность взаимодействия с вашим сервером обеспечивает TLS ≥ v.1.2, как в банках. Для этого SelfPrivacy использует сертификат Let’s Ecncypt, самого популярного в мире провайдера, которому доверяют миллионы веб-порталов.

Обновление операционной системы на вашем сервере

Полная автоматизация

Единожды настроенный сервер не является полностью безопасным. В сервисах со временем могут обнаружиться ошибки, и сервер станет подвержен взлому. К сожалению, это не такое уж редкое явление. Поэтому ответственные IT-специалисты регулярно обновляют свои сервера. SelfPrivacy делает это за вас.

  • Cистемные обновления;
  • Мажорный релиз NixOS;

Обновление серверной части SelfPrivacy

Частичная автоматизация

SelfPrivacy состоит из двух частей — это приложение на вашем устройстве, например телефоне или ПК, и серверная backend часть под названием SelfPrivacy API. Приложение SelfPrivacy управляет вашими сервис-провайдерами и вашим сервером. Для этого на стороне сервера работает SelfPrivacy API backend демон. Он тоже требует обновления, например, когда мы добавляем функционал или исправляем ошибки. Обновление зачастую происходит автоматически, однако иногда нужно вручную подтвердить обновление конфигурации системы, чтобы новые функции серверной части SelfPrivacy заработали.

Обновление приложения SelfPrivacy

Полная автоматизация

Приложение SelfPrivacy, грубо говоря — это набор инструкций, которые меняют что-то в сервере. Работа приложения после первичной настройки никак не влияет на работоспособность сервисов на вашем сервере. Тем не менее мы каждый день стараемся что-то автоматизировать, исправить, добавить новый функционал. Обновления приложения происходит автоматически из репозитория, например F-Droid, в скором будущем App Store и Google Play.

Управление ресурсами сервера

Частичная автоматизация

Когда пользователей или сервисов становится много. Сервер может начать тормозить. Через приложение можно отслеживать текущее потребление ресурсов, а вскоре можно будет и заказать апгрейд виртуальной машины.

Управление диском

Частичная автоматизация

Приложение отслеживание свободное пространство на дисках сервера и позволяет переносить данные между ними. Если раздел расширяем, приложение может автоматически заказать больше места после подтверждения пользователя.

Резевные копии

Полная автоматизация

Резервные копии позволяют и восстановить сломанные сервер, и мигрировать с одного сервера на другой. Все резервные копии зашифрованы, под капотом мы используем Restic. Данные каждого сервиса копируются по отдельности. Резервное копирование также может проводиться автоматически с заданной пользователем периодичностью.

Управление пользователями

Частичная автоматизация

У каждого сервиса есть свой интерфейс администратора, который позволяет управлять пользователями. Однако мы работаем над тем, чтобы интегрировать этот функционал в приложение и автоматически создавать пользователей из общего списка.

Ручное управление через SSH (expert)

Ручные операции

В целях безопасности доступ к администрированию SelfPrivacy сервера через SSH отключен. Это уменьшает поверхность возможной атаки. Доступ к консоли нужен в исключительных случаях:

  • Ошибка обновления, или исправление непредвиденных ситуаций;
  • Тюнинг сервера, если вы опытный пользователь NixOS и хотите самостоятельно донастроить SelfPrivacy Server под свои нужды;

При обычной эксплуатации пользователю не нужно использовать SSH-администрирование через консоль. Мы работаем над тем, чтобы общую конфигурацию SelfPrivacy можно было расширить собственными файлами Nix, которые не будут мешать автоматическим обновлениям.

Система очень сложная, почему она приватная?

В отличие от Cloudron, наших коммерческих единомышленников, все операции происходят между вашим приложением, вашим сервером и вашими сервис-провадерами без участия SelfPrivacy. Ваша копия SelfPrivacy App полностью автономна и независима в управлении вашей инфраструктурой. Никакая информация о вашем взаимодействии с вашей инфраструктурой не попадает к SelfPrivacy. Все резервные копии ваших сервисов покидают ваш сервер в полностью зашифрованном виде.

Подробнее об этом, вы можете прочитать в политике приватности.

3 - Доступные сервисы

О сервисах, которые мы используем

3.1 - E-mail

Свой почтовый сервер

E-mail — проверенный временем протокол, не нуждается в представлении. Личный почтовый сервер обеспечит особую приватность всей корреспонденции и пригодится при регистрации в онлайн-сервисах и личных переписках, в особенности для Delta Chat.

Аутентификация

Используются пользователи из вкладки “пользователи” вашего приложения.

Конфигурация подключения

Логин должен содержать имя пользователя с доменом. Например, user@domain.tld.

SMTP

SMTP Server: ваш.домен

SMTP порт: 587

Тип подключения: STARTLS

Юзернейм: ваш_юзернейм@ваш.домен (ваш полный адрес электронной почты)

IMAP

IMAP Server: ваш.домен

IMAP порт: 143

Тип подключения: STARTLS

Юзернейм: ваш_юзернейм@ваш.домен (ваш полный адрес электронной почты)

Рекомендуемые E-mail клиенты

  • WEB-интерфейс “Roundcube”: можно включить после настройки сервера SelfPrivacy. Он будет доступен по адресу https://webmail.ВАШ.ДОМЕН (В качестве логина используйте полный адрес электронной почты: ваш_юзернейм@ваш.домен)
  • FairEmail (Android)
  • Mozilla Thunderbird (GNU/Linux, Windows, MacOS)

Пример конфигурации для Mozilla Thunderbird

Что используем для электронной почты?

На развернутом сервере следующие компоненты отвечают за отправку, получение и фильтрацию электронной почты:

  • Postfix — SMTP-сервер;
  • Dovecot 2 — IMAP сервер;
  • Rspamd — SPAM-фильтр;

Советы

Алиасы (псевдонимы) для адресов

Используйте псевдонимы для сомнительных услуг или одноразовых потребностей.

Сообщения для user+alias@domain.com придут на адрес user@domain.com. Может быть полезно для анализа происхождения спама, если для каждого онлайн-сервиса при регистрации будет использован уникальный алиас. Например, bank+user@domain.com, cryptoexchenge+user@domain.com и так далее.

Фильтр каталогов

Создайте каталоги фильтров для различных целей. Это поможет защититься от фишинга и засорения вашего почтового ящика. Сообщение для user-dir@domain.com создаст директорию dir в почтовом ящике user@domain.com, и вся почта будет приходить в директорию dir.

Примеры каталогов:

  • user-w@domain.com — для регистрации в веб-сервисах
  • user-shops — для веб-магазинов
  • user-pay — платежные системы
  • user-forum — уведомления о форумах

Особенности

  • Электронная почта старше 50 лет. В IT это признак зрелости и надежности технологии.
  • Электронная почта — самый популярный способ заражения вирусами (после взломанного программного обеспечения и кряков).
  • Остерегайтесь фишинга (мошеннических писем), он может лишить вас сбережений и контроля над вашей цифровой жизнью.

Не работает отправка писем

Отправка почты может быть заблокирована вашим провайдером.

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

DigitalOcean не позволяет отправлять почту вообще. Они предложат использовать сторонние сервисы для отправки почты, такие как SendGrid. Поддержку сторонних сервисов отправки почты в SelfPrivacy можно отследить в этой задаче.

3.2 - Gitea

Личный git-сервис

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

Собственный гит-хостинг позволяет хранить личные файлы на личном сервере. Один из лучших свободных гит-хостингов — Gitea. Он имеет весь необходимый функционал и удобный веб-интерфейс.

Рекомендуемые клиенты

Если вам нужен клиент с графическим интерфейсом, вы можете выбрать его из списка рекомендаций на официальном сайте.

3.3 - Delta.Chat

Мессенджер на базе E-mail со сквозным шифрованием

Мессенджеры вроде Telegram, Signal, Whatsapp не могут быть приватными из-за особенностей архитектуры — централизации. А одноранговые (p2p) сервисы такие как Tox потребляют слишком много ресурсов и неудобны в использовании на мобильном устройстве.

Лучший выход — использовать свой почтовый сервер для Delta.Chat. Delta.Chat — это мессенджер построенный на протоколе электронной почты.

Если ваш собеседник не использует Delta.Chat, для него это будет обыкновенной почтовой перепиской.

Рекомендуемые клиенты

Особенности Delta.Chat

  • Обычный email-клиент со всеми функциями IM;
  • Надежное оконечное шифрование (e2e) при условии использования личного почтового сервера обоими собеседниками, либо личном обмене ключами, например, через QR-код;
  • Может использовать любой email-сервер (но тогда вы теряете контроль над метаинформацией и рискуете стать жертвой атаки “Человек посередине”);
  • Немного медленнее привычных мессенджеров;
  • Первое сообщение не шифруется, т.к. вместе с ним передаются публичные ключи шифрования;
  • Есть проблемы с пересылкой файлов > 5-7МБ;
  • Нет удобных каналов (чатов для массовых обсуждений и рассылки информации). Для этого рекомендуем использовать децентрализованную социальную сеть.

3.4 - Pleroma

Сервер децентрализованной социальной сети

Любая централизованная социальная сеть должна будет заботиться о модерации, цензуре, внедрении правил, чтении вашей переписки по мере ее роста. Другое дело — ваша собственная социальная сеть, которая может принадлежать только вам, вашей семье или вашей команде. Только децентрализованная сеть может обеспечить максимальную приватность. Именно поэтому мы предлагаем вам стать частью децентрализованной сети Fediverse.

В SelfPrivacy мы используем Pleroma.

Рекомендуемые клиенты

Особенности Pleroma

  • Социальная сеть любого масштаба: от персонального сервера с одним аккаунтом до массовой тематической площадки;
  • Ваша социальная сеть, ваши правила. Вы - цензор, модератор и администратор.

3.5 - Jitsi

Видеоконференции

Zoom и Google Meet — это проприетарные программы, которые имеют ограничения в бесплатных версиях и не предоставляют доступ к исходному коду своих клиентов.

Но существует альтернатива Jitsi — это сервис видео конференций с открытым исходным кодом, и функционалом, аналогичному проприетарным аналогам.

Рекомендуемые официальные клиенты

Особенности Jitsi

  • Не требует регистрации;
  • Использует аватарку с gravatar.com если указать почту (может нарушать приватность!);

3.6 - Bitwarden

Ваш менеджер паролей

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

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

Рекомендуемые клиенты

Настройка админ токена вручную

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

cd /etc/nixos
git pull

Затем нужно сгенерировать токен администратора. Выполните следующее:

nix-shell -p openssl --run 'openssl rand -base64 48'

Будет выведена строка следующего вида:

47pFSgYBbS0G0vCG63nX1yyblzgNaqZ40bNuJnwq2hvOy8ABfe+iHRfBeXlfrRdJ

Это будет пароль к вашей учетной записи администратора. Скопируйте его и вставьте в безопасное место. Чтобы установить его, выполним следующее, заменив PASSWORD на только что созданный пароль:

jq '.bitwarden.adminToken = "PASSWORD"'' /etc/nixos/userdata/userdata.json > /etc/nixos/userdata/userdata.json.new && mv /etc/nixos/userdata/userdata.json.new /etc/nixos/userdata/userdata.json

Теперь нам нужно применить изменения:

nixos-rebuild switch

После восстановления системы перезапустите Bitwarden:

systemctl restart vaultwarden

Теперь ваш админ интерфейс доступен на https://password.YOUR.DOMAIN/admin.

3.7 - Nextcloud

Швейцарский нож в деле совместной работы

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

Мы выбираем Nextcloud - свободное программное обеспечение для удобного планирования и хранения файлов.

Аутентификация

При создании сервера создается пользователь admin Nextcloud с паролем, который вы использовали для вашего основного пользователя.

Для добавления новых пользователей:

  1. Перейдите в админ панель управления пользователями, на веб-интерфейсе вашего Nextcloud.
  1. Нажмите кнопку “New user”

Рекомендуемые клиенты

Как сбросить админ пароль

Для следующих действий вам нужно будет подключиться по ssh к серверу с правами администратора. Минимальное понимание работы командной строки приветствуется ;)

Инструкцию по подключению вы можете прочитать тут.

После подключения введите команду:

nextcloud-occ user:resetpassword admin

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

ЧаВо

Не работает Nextcloud Updater

Всё нормально, так и должно быть. Nextcloud обновляется через NixOS. Обновления зависят от нашего NixOS репозитория, всё происходит без вашего участия.

Почему я не могу использовать мой Nextcloud в сторонних сервисах?

Такое может быть, если в стороннем сервере стоит ограничение на привязку только к конкретному инстансу Nextcloud.

Стоит ли мне использовать расширение для шифрования своего Nextcloud?

Мы не рекомендуем. Ключи шифрования будут храниться на сервере, что делает такое шифрование практически бессмысленным.

Настройка контактов и календаря в web-клиенте Nextcloud

Дополнение контактов

  1. Откройте ваш Nextcloud, справа вверху нажмите на иконку контактов. Далее нажмите на надпись “Install the Contacts app”.
  1. Нажмите “Download and enable”.
  1. Теперь у вас появился новый пункт в меню.

Дополнение календаря

  1. Нажмите на аватарку вашего профиля, справа сверху.

  2. В выпадающем меню нажмите “Apps”.

  3. Вы перешли в магазин дополнений, перейдите в категорию “Organization” и найдите там дополнение “Calendar”.

  4. Нажмите “Download and enable”.

  1. У вас снова появился новый пункт в меню.

Синхронизация Nextcloud на разных устройствах

Скачайте основное приложение Nextcloud (GNU/Linux, Windows, macOS, Android, iOS). Оно поможет синхронизировать файлы.

Как настроить синхронизацию контактов и календаря? Инструкции на русском для разных систем и приложений.

Как синхронизировать календарь Nextcloud c Android смартфоном?

  1. Скачайте приложение DAVx⁵ на ваше Android устройство, из F-Droid или Google Play Store.

  2. Войдите в приложение, создайте новую учётную запись кнопкой “плюс”.

  3. В меню создания аккаунта, выберете последний пункт “Nextcloud”.

  4. Приложение предложит ввести ссылку на ваш экземпляр Nextcloud. Ссылка должна выглядить по примеру: https://cloud.ВАШ.ДОМЕН.

  5. Откроется браузер. Вам нужно войти в свой Nextcloud аккаунт, и разрешить доступ.

  1. Возвращаемся назад в приложение DAVx⁵. В качестве имени, введите свою почту которая зарегистрирована в настройках аккаунта Nextcloud.

  2. В пункте “Метод контактной группы” выберите вариант “Группы являются категориями контактов”.

  1. Выберите данные, которые вы хотите синхронизировать.

4 - Резервное копирование

Резервное копирование сервисов, чтобы данные никогда не были потеряны

Зачем нужно резервное копирование (backups)

Когда ваш сервис сломался, но ещё вчера он работал, у вас есть два варианта действий:

  • Потратить некоторое время на чтение журналов и отладку того, что пошло не так. Сервис в это время будет оставаться не рабочим, и возможно, некоторые данные уже безвозвратно утеряны;
  • Откатить сервис до рабочего состояния и затем отлаживать в более спокойном темпе. Надеясь, что это была просто солнечная вспышка или сбой в Матрице.

Второй вариант, экономящий нервы, регулярное, а ещё лучше — автоматическое резервное копирование.

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

Мы рассмотрим основные условия и порядок использования системы резервного копирования SelfPrivacy.

Что такое моментальный снимок (snapshot)?

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

Когда происходит резервное копирование?

Снимок создается в трёх случаях:

  • По ручной команде пользователя;
  • Автоматически через определенные промежутки времени, если включена функция автоматического резервного копирования;
  • В качестве меры предосторожности, перед восстановлением сервиса на месте.

Как хранятся данные?

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

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

В таких облаках, как Backblaze, есть возможность запретить немедленное удаление данных. Приложение SelfPrivacy использует эту опцию, чтобы в случае взлома сервера данные не могли быть удалены.

Список моментальных снимков

При просмотре списка доступных резервных копий следует учитывать два фактора:

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

Восстановление моментального снимка

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

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

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

Перед попыткой восстановления приложение проверяет наличие свободного места.

Забывание моментального снимка

Забывание делает снимок недоступным, но его можно восстановить из облачного пользовательского интерфейса в течение некоторого времени (по умолчанию 30 дней для Backblaze).

Автоматическое резервное копирование

Если задать период автоматического резервного копирования, то оно будет производиться регулярно, и работать для всех сервисов.

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

Если отключить автоматическое резервное копирование, то производится оно не будет.

Восстановление после того как кто-то удалил все снимки

  • Перейдите непосредственно в интерфейс Backblaze/другого облака;
  • Откатите состояние ведра до состояния, предшествовавшего удалению;
  • Откройте приложение SelfPrivacy;
  • Обновите список копий;
  • Восстановите моментальный снимок обычным способом.

Устранение неполадок при резервном копировании

  • Если вы подозреваете, что список моментальных снимков неточен, попробуйте обновить список копий.
  • Если восстановление на месте не удалось, убедитесь, что облако доступно и аккаунт не заблокирован, а затем попробуйте восстановить либо снимок, который вы пытались восстановить, либо снимок, сгенерированный автоматически перед восстановлением.
  • Если на диске не хватает места для безопасного восстановления, попробуйте второй вариант восстановления: восстановить на месте

5 - Инструкции

Руководства, которые могут пригодиться.

5.1 - Как получить root-доступ через SSH

Если вам нужно вручную выполнить административные задачи, понадобится root-доступ через SSH.

Чтобы получить доступ к корневой оболочке вашего сервера, вам необходимо сгенерировать SSH-ключ и добавить его в список авторизованных ключей вашего сервера.

Как сгенерировать SSH-ключ

Если вы используете Unix-подобную систему

  1. Откройте терминал.

  2. Выполните следующую команду:

    ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
    

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

    Если вы не хотите использовать кодовую фразу, просто нажмите Enter.

  3. Выведите открытый ключ в терминал и скопируйте его:

    cat ~/.ssh/id_ed25519.pub
    
  4. Обратитесь к следующему разделу, чтобы добавить ключ на ваш сервер.

Если вы используете Windows

  1. Откройте настройки и в разделе “Приложения” нажмите на “Управление дополнительными компонентами”.

  2. Нажмите “Добавить компонент”.

  3. Введите “Клиент OpenSSH” в поле поиска и установите его.

  4. Откройте Командную строку. Это можно сделать, нажав Win+R, введя cmd и нажав Enter.

  5. Выполните следующую команду, заменив user_name на ваше имя пользователя Windows:

    ssh-keygen -t ed25519 -f C:\Users\user_name\.ssh\id_ed25519
    

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

    Если вы не хотите использовать кодовую фразу, нажмите Enter.

  6. Выведите открытый ключ на терминал и скопируйте его:

    type C:\Users\user_name\.ssh\id_ed25519.pub
    

    Еще раз, замените user_name на ваше имя пользователя Windows.

  7. Обратитесь к следующему разделу, чтобы добавить ключ на ваш сервер.

Если вы используете Android (Termux)

  1. Установите Termux. Мы рекомендуем установить его из F-Droid.

  2. Откройте Termux.

  3. Выполните следующую команду:

    apt update -y && apt upgrade -y && apt install openssh -y &&
    ssh-keygen -t ed25519 -f /data/data/com.termux/files/usr/etc/ssh/ssh_host_ed25519_key
    

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

    Если вы не хотите использовать кодовую фразу, нажмите Enter.

  4. Выведите открытый ключ в терминал и скопируйте его:

    cat /data/data/com.termux/files/usr/etc/ssh/ssh_host_ed25519_key.pub
    
  5. Обратитесь к следующему разделу, чтобы добавить ключ на ваш сервер.

Как добавить ключ на ваш сервер

  1. Откройте приложение SelfPrivacy.
  2. Перейдите на вкладку “Еще”.
  3. Нажмите на пункт “SSH-ключи суперпользователя”.
  4. Нажмите на кнопку “Создать SSH-ключ”.
  5. Вставьте открытый ключ, который вы скопировали ранее.
  6. Нажмите на кнопку “Создать ключ SSH”.
  7. Откройте список заданий.
  8. Нажмите на кнопку “Начать”.
  9. Через несколько минут вы сможете получить доступ к корневой оболочке вашего сервера через SSH.

Как получить доступ к корневой оболочке вашего сервера по SSH

  1. Откройте терминал или командную строку.
  2. Выполните следующую команду, заменив server_domain на домен вашего сервера:
    ssh root@server_domain
    
  3. Введите парольную фразу, которую вы ввели при генерации SSH-ключа, если ключ защищен паролем.

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

5.2 - Как сменить dns провайдера на deSEC

Для тех кто хочет сменить своего dns провайдера уже после установки сервера.

Мы рекомендуем использовать deSEC вместо CloudFlare. DeSEC нацелен на приватность.

Если вы сначала привязали ваш домен к CloudFlare и теперь хотите сменить провайдера, эта статья для вас.

Внимание, процесс довольно сложен, и если вы чувствуете, что что-то идет не так, можете смело писать нам в чат.

Переносим сервер имен (nameserver)

Сервер имен — это сервер, который переводит ваш домен (буквы) в IP-адрес сервера (цифры).

  1. Регистрируемся в deSEC.

  2. На странице “domains” нажимаем на кнопку “плюс”.

  1. Вводим свой домен.

  2. Копируем “nameservers”.

Теперь переходим на сайт провайдера, у которого вы покупали домен. Действия будут схожи для всех провайдеров, мы будем показывать на примере Porkbun.

  1. Переходим в панель управления вашим доменом.

  2. Находим там параметр “Authoritative nameservers”.

  1. Заменяем текущие адреса на те, что мы скопировали из deSEC в инструкции ранее.

  2. Сохраняем изменения.


Получаем токен deSEC

  1. Авторизуемся в deSEC

  2. Переходим на страницу Domains

  3. Переходим на вкладку Token management.

  4. Нажимаем на большую кнопку с “плюсом” в правом верхнем углу страницы.

  1. Должен появиться диалог “Generate New Token”. Вводим любое имя токена в Token name. Advanced settings необязательны, так что ничего там не трогаем.

  2. Кликаем Save.

  3. Обязательно сохраняем “secret value” ключ токена, потому что он отображается исключительно один раз.


Подключение к серверу

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

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

Но помните, вы не сможете больше обращаться к вашему серверу по домену, вам нужно будет знать IP-адрес сервера. Его можно узнать, к примеру, в панели хостер провайдера.

Для следующих действий вам нужно будет подключиться по ssh к серверу с правами администратора. Минимальное понимание работы командной строки приветствуется ;)

Инструкцию по подключению вы сможете прочитать тут.

После подключения к серверу вводим:

nano /etc/nixos/userdata.json

Вы оказались в терминальном текcтовом редакторе под названием “nano”.

Вы редактируете файл /etc/nixos/userdata.json, и можете использовать стрелочки для перемещения.

Находим в файле такие строчки:

"dns": {
    "provider": "CLOUDFLARE",
    "useStagingACME": false
},

Заменяем:

"provider": "CLOUDFLARE",

на

"provider": "DESEC",

Теперь нажимаем CTRL+X, после клавишу Y.

Теперь отредактируем другой файл:

nano /etc/selfprivacy/secrets.json

Находим в файле такие строчки:

"dns": {
    "apiKey": "SECRET-HERE"
},

Убираем ваш старый токен от CloudFlare и вставляем скопированный токен от deSEC. (Если CTRL+V не работает, попробуйте SHIFT+CTRL+V)

"apiKey": "Сюда ваш токен",

Должно получиться так:

"dns": {
        "apiKey": "Ваш токен от deSEC"
    },

Теперь нажимаем CTRL+X, после клавишу Y.

Если файл сохранился и вы успешно вышли из текстового редактора, вводим команду:

systemctl start sp-nixos-rebuild.service

Она начнёт пересборку вашей системы с новыми параметрами.

После выполнения команды можно смело закрывать консоль.


Перенос записей

Входим сразу в CloudFlare и в deSEC.

В интерфейсе deSEC

По ссылке, в панели “Domain Managment” нажмите на ваш домен.

Теперь вы можете добавлять к нему новые записи, с помощью кнопки “Плюс”.

В интерфейсе CloudFlare

По ссылке, переходим в настройки вашего домена, который находится в разделе “Websites”.

Выбираем ваш домен.

Теперь переходим в “DNS”, далее “Records”.

Первая запись: api

Ориентируясь на пример со скриншота переносим ваши параметры “api” (смотрите на столбик “Name”) записи в соответствии с их цветами.

На скриншоте слева — deSEC, а справа Сloudflare. Вам нужно последовательно перенести каждый параметр данной записи.

Вторая запись: корневая

Создаём новую запись типа “А”, в “IPv4 address” пишем ваш адрес сервера, вы уже писали его в поле “Content” предыдущей записи.

Все записи переносить не надо! Вы создали две записи, а третья уже была создана за вас. Давайте проверим, что у нас получилось.


Перенастраиваем приложение

Для правильной работы вам придется сбросить конфиг приложения. Не забудьте создать ключ восстановления и сохранить его в безопасном месте (менеджере паролей)..

Как сбросить приложение:

Переходим в “Настройки приложения”.

Нажимаем “Сбросить конфиг приложения”.

Теперь переходим в раздел “Мастер установки”, где вы настраивали свой сервер, когда в первый раз запускали приложение.

Нажимаем “Подключиться к существующему серверу SelfPrivacy”.

(В старых версиях приложения кнопка может называться “Подключиться к уже существующему серверу”).

Далее следуем указаниям в приложении и вводим ключ восстановления или код с другого устройства, где установлено приложение SelfPrivacy.

После установки вы увидите некоторые проблемы с Доменом и DNS. Приложение предложит вам исправить их. Соглашаемся.

Поздравляем! Вы успешно сменили доменного провайдера. Рекомендуем вам проверить, что все сервисы работают корректно.

5.3 - Как вручную освободить место на сервере

Ручная очистка может потребоваться, если вам нужно больше свободного места на системном разделе.

Существует несколько способов очистки дискового пространства вашего сервера. Чтобы проверить, сколько у вас дискового пространства, выполните следующую команду:

df -h

В результате будет выведена таблица следующего вида:

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         97M     0   97M   0% /dev
tmpfs           969M   52K  969M   1% /dev/shm
tmpfs           485M  3.8M  481M   1% /run
tmpfs           969M  432K  968M   1% /run/wrappers
/dev/sda1        19G  8.2G  9.5G  47% /
/dev/sdb         18G   62M   17G   1% /volumes/sdb
tmpfs           194M     0  194M   0% /run/user/0

Здесь файловая система, смонтированная на / - это ваш системный том.

Удаление старых состояний NixOS

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

Можно вручную удалить все старые состояния системы, и это может дать вам больше столь необходимого дискового пространства. Для этого просто выполните следующую команду от имени root:

nix-collect-garbage -d

Эта операция может занять некоторое время, в зависимости от количества состояний системы. После ее завершения вы увидите, сколько места на диске освободилось.

Удаление старых журналов

Журналы иногда могут занимать довольно много места на диске. На серверах SelfPrivacy системные журналы всегда ограничены 500MiB, но это не единственные файлы журналов на вашем сервере.

Чтобы проверить, сколько места на диске занимают журналы, выполните следующую команду:

du -h --max-depth=1 /var/log

Результат будет выглядеть примерно так:

4.0K /var/log/private
14M /var/log/nginx
499M /var/log/journal
587M /var/log

Системный журнал

Здесь /var/log/journal - это системный журнал, куда обычно записывают свои журналы все приложения. Как вы можете видеть в этом примере, они соблюдают ограничение в 500MiB.

Если вы хотите очистить все системные журналы, выполните следующую команду:

journalctl --rotate && journalctl --vacuum-time=1s

Это обычно дает вам около 450 Мб свободного дискового пространства, но ненадолго. Однако этого может быть достаточно для выполнения некоторых команд, которые освободят больше места.

Журналы Nginx

Каталог /var/log/nginx содержит журналы веб-сервера Nginx. Если они стали слишком большими, вы можете очистить их, выполнив команду:

rm /var/log/nginx/* && systemctl reload nginx

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

6 - О нас

Кто мы такие, в чем наша мотивация и какова наша политика

6.1 - Команда

Наша команда, вкладчики и единомышленники

О нас

Международная команда независимых профессионалов:

  • Zholnay Kirill - Основатель/CEO/CISO. Более 15 лет создает и защищает корпоративную инфраструктуру в средних и крупных компаниях;
  • Dettlaff - основной backend разработчик;
  • Houkime - основной backend разработчик;
  • Inex Code - основной full-stack разработчик;
  • NaiJi - основной Flutter разработчик;
  • ilchub - DevOps, Backend разработчик;
  • kherel - Flutter разработчик;
  • nikolai - QA инженер;
  • и много крутых соавторов и добровольцев.

Нам помогли

Единомышленники

  • Cloudron - коммерческий проект, код закрыт, от $15 в месяц за электронную почту и несколько сервисов. Вы должны сами установить приложение на сервер, следить за ресурсами сервера;
  • IndieWeb - проект с открытым исходным кодом, сложен в настройке;
  • Kubenav - перспективный инструмент управления docker контейнерами для высококвалифицированных пользователей;
  • Yunohsot - с открытым исходным кодом для ручной установки на сервер;
  • FreedomBox - проект с открытым исходным кодом для ручной установки на сервер;
  • Tunrkeylinux - готовое к использованию программное обеспечение для опытных пользователей;
  • Lunni - коммерческий проект с открытым исходным кодом;
  • Softaculous - коммерческий проект с закрытым исходным кодом.

Может быть полезно

6.2 - Мотивация

Кто мы такие и чего хотим

Каждый пользователь Интернета вынужден пользоваться централизованными услугами, жертвуя конфиденциальностью и личными свободами:

Из-за этого пользователь:

  • Принимает непонятные лицензионные соглашения;
  • Терпит рекламу;
  • Отдает свои данные неизвестным лицам;
  • Попадает в “рекомендательный пузырь”;
  • Подвергается цензуре и блокировкам.

Когда мы пользуемся централизованными сервисами, такими как популярные социальные сети, мы доверяем администраторам ресурса. Они хранят нашу переписку, наши фотографии и даже самые важные секреты, сказанные в чате с близкими людьми. Мы позволяем анализировать наши интересы, переписку и получать на их основе таргетированную рекламу. Часто собранные данные утекают в общий доступ, из-за очередного взлома компании или неблагонадежного сотрудника. Мы привязываемся к централизованным решениям, которые из-за простого сбоя спам-фильтра навсегда могут забанить ваш аккаунт без объяснения причины, вместе со всеми данными, накопленными за годы.

Мы хотим цифровой независимости и конфиденциальности наших данных.

Наша миссия — предложить альтернативу. Ваши сервисы — ваши правила:

  • Никаких лицензионных соглашений, рекламы, слежки, телеметрии, запретов и цензуры;
  • Ваши данные хранятся на вашем сервере и принадлежат только вам.

Зачем это нам

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

Главный мотив SelfPrivacy, которым руководствуется наша команда, — сделать пользование интернетом немного комфортнее, немного проще и — самое главное — немного приватнее.

Приватность — это неотъемлемое право человека, которое позволяет нам чувствовать себя субъектами, независимыми личностями. Мы делаем публичный проект, чтобы черпать вдохновение для новых функций и искать ошибки не силами нескольких человек, а используя ресурсы неограниченной аудитории. В конце концов, почему музыкант пишет мелодии, а художник создаёт картины? Кроме того, разработка бесплатного, свободного решения, способного вывести пользователей на новый уровень конфиденциальности, — дело чести. А у самураев нет цели — есть только путь.

6.3 - План развития

Что мы планируем дальше

Наш план развития постоянно обновляется и доступен только на английском языке.

6.4 - Помощь

Помочь Selfprivacy

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

  • Ориентация на зарабатывание денег, а не на конфиденциальность;
  • Готовность продаться мегакорпорации;
  • Функциональность, диктуемая рынком, маркетингом, рекламными слоганами.

Лучший из способов помочь проекту — регулярное финансирование, хотя бы 1 доллар в месяц.

С 2019 года я вкладываю в проект заметную часть семейного бюджета и времени. Потому что я уверен в необходимости SelfPrivacy.

Кирилл Жолнай (основатель)

Все донаты пойдут на развитие проекта и достойную оплату для команды. Мы как и любой другой открытый (open source) проект, живем за счет пожертвований.

💸 Liberapay: Для регулярных пожертвований

https://liberapay.com/SelfPrivacy.org

7 - Как помочь проекту?

Вы можете помочь как с переводом на разные языки, так и своими знаниями программирования

Помощь с переводом

Для коллаборации мы используем наш собственный инстанс weblate. Вы можете создать аккаунт и помочь нам перевести проект на ваш родной язык.

Если вы программист

Про то, как работает SelfPrivacy, вы можете прочитать в документации.

Вы можете помочь нам закрыть мелкие задачи в Issues, которые помечены тегом “Contributions welcome”. К примеру, по ссылке вы увидите задачи с тегом “Contributions welcome” для основного приложения.

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

Python / NixOS — backend

Серверная часть SelfPrivacy использует дистрибутив NixOS, и программу-демон написанную на Python, под названием SelfPrivacy API. Демон работает ради обеспечения связи между вашим сервером и приложением SelfPrivacy. Про то как тестировать и вносить изменения в SelfPrivacy API, вы можете прочитать тут.

Также вы можете улучшить другие наши NixOS компоненты:

Dart + Flatter — frontend app

Hugo / docsy

Если вы знаете как улучшить наш сайт:

За любой помощью обращайтесь в наши чаты:

8 - Часто задаваемые вопросы

Частые вопросы о проекте

Как получить помощь?

Если у вас возникнут проблемы, не стесняйтесь писать в группы разработчиков SelfPrivacy ;)

Или вы можете создать issue в репозиториях проекта:

Что такое self-host сервисы и в чем их преимущества?

Когда мы пользуемся централизованными сервисами, такими как популярные социальные сети, мы доверяем администраторам ресурса. Они хранят нашу переписку, наши фотографии и даже самые важные секреты, сказанные в чате с близкими людьми. Мы позволяем анализировать наши интересы, переписку и получать на их основе таргетированную рекламу. Часто собранные данные утекают в общий доступ, из-за очередного взлома компании или неблагонадежного сотрудника. Мы привязываемся к централизованным решениям, которые из-за простого сбоя спам-фильтра навсегда могут забанить ваш аккаунт без объяснения причины, вместе со всеми данными, накопленными за годы.

Self-hosted — это термин, означающий, что онлайн-сервис создается собственными силами. Ключ к этому подходу заключается в том, что у вас есть независимая копия программного обеспечения на вашем личном сервере, без участия третьей стороны, управляющей сервисом. Чтобы быть администратором, вам не нужно быть программистом и разбираться во всех тонкостях внутренней работы серверного приложения (сервиса). Как правило, разработчики свободного программного обеспечения, стараются сделать сервис как можно более понятным и простым в использовании. Именно такие сервисы мы и используем в SelfPrivacy.

Популярные примеры — личные сервера электронной почты, мессенджеры, такие как XMPP или Matrix, а также VPN-решения. Если вы работали в крупной организации, вы наверняка видели отдельный почтовый сервис на домене компании, а также, вероятно, сталкивались с корпоративными мессенджерами. Все это — самостоятельные хостинги, но не ваши, а компании, в которой вы работали. Зачем компании нужна собственная электронная почта и мессенджер? Ответ прост: чтобы сотрудники могли общаться и хранить секреты компании в собственных руках, под собственным контролем.

Если вы желаете обладать гибкими self-host инструментами, которые можно настроить под себя, или вы просто не доверяете большим компаниям и хотите держать свои данные под собственным контролем, самостоятельный хостинг — для вас.

Могу ли я доверять своему хостинг-провайдеру?

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

Возникает резонный вопрос: можно ли доверять этим услугам, ведь все данные, хранящиеся на арендованном сервере, — это данные, хранящиеся на дисках провайдера.

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

Хостинг провайдер просит мой паспорт, что мне делать?

В настоящее время инфраструктура SelfPrivacy полагается на возможности хостеров Hetzner и DigitalOcean. Иногда при регистрации хостинг-провайдер может просить предъявить удостоверение личности. Это защищает их от спамеров. Кроме того, европейская юрисдикция требует знать своего клиента (KYC).

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

Однако со своей стороны мы ищем альтернативные решения этого вопроса, например, такие, как установка SelfPrivacy на домашний личный сервер. Подобное будет доступно в будущих обновлениях.

Защитит ли self-hosted от ФБР, ФСБ, Mi6 и их коллег?

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

Могу ли я установить SelfPrivacy на свое домашнее оборудование?

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

Зарабатываем ли мы на пользователях?

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

Откуда у нас деньги?

Мы — некоммерческий проект и не зарабатываем на своих пользователях. Наш основной спонсор — это Европейский фонд NLnet. Вот страница нашего проекта на сайте фонда.

Также нам помог фонд Privacy Accelerator и ваши донаты.

В чем смысл некоммерческого проекта?

В атмосфере агрессивного потребительства, когда только истории об эффективном бизнесе продаются как горячие пирожки, некоммерческие проекты вызывают осторожность.

Главный мотив SelfPrivacy, которым руководствуется наша команда, — сделать пользование интернетом немного комфортнее, немного проще и — самое главное — немного приватнее.

Приватность — это неотъемлемое право человека, которое позволяет нам чувствовать себя субъектами, независимыми личностями. Мы делаем публичный проект, чтобы черпать вдохновение для новых функций и искать ошибки не силами нескольких человек, а используя ресурсы неограниченной аудитории. В конце концов, почему музыкант пишет мелодии, а художник создаёт картины? Кроме того, разработка бесплатного, свободного решения, способного вывести пользователей на новый уровень конфиденциальности, — дело чести. А у самураев нет цели — есть только путь.

Как мы выбираем провайдеров?

Есть несколько критериев, которыми мы руководствуемся при выборе провайдера:

  1. Наличие API интерфейса для разработчиков, который управляет созданием VPS. В противном случае SelfPrivacy не сможет автоматически создать и настроить сервер, и большая часть работы ляжет на плечи пользователя. Также не будет работать автоматическое расширение диска (когда объем данных на вашем сервере растет и требует больше места);
  2. Качество обслуживания;
  3. Цена.

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

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

Отметим, что с Hetzner тоже не всегда всё идеально — мы замечали проблемы с почтой и у них. Именно поэтому мы поддерживаем нескольких провайдеров!

Обязателен ли CloudFlare для работы SelfPrivacy?

Нет, не обязателен. Пользователям доступен выбор между deSEC, CloudFlare и Digitalocean. Мы рекомендуем выбирать deSEC, это приватно ориентированный сервис.

Почему мы позволяем пользоваться CloudFlare? Сервис надежен и бесплатен. Вероятно, собирает данные, иначе трудно объяснить, зачем бесплатно проксировать чужой трафик. В нашем случае мы используем его только как DNS-сервер и ничего не проксируем. В будущем мы заменим его на DNS-сервер, установленный на сервере пользователя, как только решим проблему надежности.

В настоящее время мы тестируем Yggdrasil + Alfis.

Почему SelfPrivacy использует NixOS?

SelfPrivacy использует NixOS в качестве операционной системы для серверов, что может показаться странным выбором, но давайте объясним основные причины, почему NixOS лучше подходит для нашего случая:

  1. NixOS может быть state-less (и таким является в SelfPrivacy). NixOS может загружаться из конфигурации NixOS при каждом запуске, поэтому мы можем избежать дополнительных состояний и хранить только /nix/store и данные ваших сервисов.

  2. NixOS атомарен. Обновления применяются атомарно и могут быть отменены в случае необходимости.

  3. NixOS позволяет хранить всю конфигурацию в одном месте и изменять ее с помощью единого механизма (язык Nix).

Что мы используем для электронной почты?

На развернутом сервере следующие компоненты отвечают за отправку, получение и фильтрацию электронной почты:

  • Postfix — SMTP-сервер;
  • Dovecot 2 — IMAP сервер;
  • Rspamd — SPAM-фильтр.

Подробнее про использование электронной почты, вы можете прочитать на странице сервиса.

Не работает отправка электронной почты

Проблема описана на странице сервиса.