1 - Теория

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

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

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

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

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

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

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

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

Хостинг

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

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

Кандидаты:

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

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

DNS

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

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

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

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

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

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

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

1.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. Все резервные копии ваших сервисов покидают ваш сервер в полностью зашифрованном виде.

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

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

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

2.1 - E-mail

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

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

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

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

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

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

SMTP

SMTP Server: your domain

SMTP порт: 587

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

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

IMAP

IMAP Server: your domain

IMAP порт: 143

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

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

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

Пример конфигурации для 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 это признак зрелости и надежности технологии.
  • Электронная почта — самый популярный способ заражения вирусами (после взломанного программного обеспечения и кряков).
  • Остерегайтесь фишинга (мошеннических писем), он может лишить вас сбережений и контроля над вашей цифровой жизнью.

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

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

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

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

2.2 - Nextcloud

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

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

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

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

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

Для добавления новых пользователей стоит перейти в админ панель управления пользователями, на веб-интерфейсе вашего Nextcloud.

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

  • WEB-интерфейс: доступен после настройки сервера SelfPrivacy, по адресу https://cloud.ВАШ.ДОМЕН
  • Официальное приложение (GNU/Linux, Windows, macOS, Android, iOS)

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

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

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

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

nextcloud-occ user:resetpassword admin

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

ЧаВо

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

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

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

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

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

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

2.3 - Gitea

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

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

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

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

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

2.4 - Delta.Chat

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

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

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

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

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

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

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

2.5 - Pleroma

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

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

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

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

  • WEB-интерфейс: доступен после настройки сервера SelfPrivacy, по адресу https://pleroma.ВАШ.ДОМЕН
  • Husky (Android)

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

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

2.6 - Jitsi

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

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

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

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

  • WEB-интерфейс: доступен после настройки сервера SelfPrivacy, по адресу https://meet.ВАШ.ДОМЕН

  • Android

  • iOS

  • Flatpak

  • Также смотрите сборки в репозиториях своего дистрибутива.

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

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

2.7 - Bitwarden

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

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

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

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

  • WEB-интерфейс: доступен после настройки сервера SelfPrivacy, по адресу https://password.ВАШ.ДОМЕН
  • Официальный клиент (GNU/Linux, Windows, macOS, Android, iOS)

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

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

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 - Начало работы

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

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

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

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

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

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

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

  • Hetzner или DigitalOcean — хостинги виртуальных серверов. Какой выберете, в том и будут жить ваши данные и сервисы SelfPrivacy.
  • Любой регистратор доменов, к примеру Porkbun (можно оплачивать криптовалютой) .
  • для покупки личного адреса в интернете — домена, который будет указывать на сервер.
  • На выбор: deSEC, DigitalOcean DNS, CloudFlare (не рекомендуем) — DNS сервер, где работает ваш домен.
  • 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 (что мы не рекомендуем), то вам необходимо будет создать отдельный проект для 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 провайдера, чтобы управлять доменомом.

s

Если вы выбрали 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

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

  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. В целях безопасности приложение не позволяет скопировать ключ.

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

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 open-ssh -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 - Как вручную освободить место на сервере

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

Все команды в этом руководстве выполняются от имени root через подключение SSH. Если у вас нет прав root, смотрите это руководство для получения дополнительной информации.

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

Существует несколько способов очистки дискового пространства вашего сервера.

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

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 не будет перезагружен.

Удаление старой системы

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

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

du -h --max-depth=1 /old-root/

Если старой системы нет, вы увидите сообщение du: cannot access '/old-root/': No such file or directory.

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

rm -rf /old-root/

Это обычно освобождает около 1,8 Гб дискового пространства на типичных серверах SelfPrivacy.

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 - проект с открытым исходным кодом на ARM.
  • Tunrkeylinux - готовое к использованию программное обеспечение для опытных пользователей

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

6.2 - Мотивация

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

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

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

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

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

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

Зачем это нам

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

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

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

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

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

6.4 - Помощь

Помочь Selfprivacy

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

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

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

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

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

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

💸 Librepay

https://liberapay.com/SelfPrivacy.org

6.5 - Политика

Наши принципы и политика

Наша миссия гуманитарная - реализовать право на конфиденциальность частной жизни.

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

Политика конфиденциальности

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

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

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

Сервер SelfPrivacy взаимодействует с вашей инфраструктурой NixOS.

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

  • Delta.Chat при использовании публикации геолокации принудительно используйте mapbox.

Наши веб-ресурсы

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

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

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

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 - Часто задаваемые вопросы

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

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

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

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

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

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

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

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

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

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

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

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

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

Защитит ли селфхостед меня от ФБР, ФСБ, Mi6 и их коллег?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему мы включили CloudFlare в список доступных провайдеров?

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

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

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

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

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

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