# Предустановка

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

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

План выполнения работ и основные требования:
1. Наличие паспорта;
2. Банковская карта с балансом $10-15 в настоящий момент и с возможностью оплаты $5 раз в месяц в дальнейшем;
3. Регистрация учетных записей на хостинговых платформах;
4. Покупка домена и его привязка;
5. Создание API-ключей для автоматизированного управления сервисами через приложение SelfPrivacy;
6. Подключение приложения к Вашим аккаунтам и автоматизированная установка конечных сервисов.

Проект SelfPrivacy нацелен на приватность пользователей, которая гарантирует отсутствие утечек чувствительной информации в пользу корыстных корпораций. Это достигается при полной подконтрольности сервера, который вы используете. Так как мы стараемся сделать решение максимально простым в использовании, мы не призываем всех ставить серверы дома. Вместо этого предлагается использовать услуги хостинг-провайдеров, которые, заключая с Вами договор и будучи юридическими лицами, могут требовать удостоверение личности. Если вы полны скепсиса по этому поводу, взгляните на вопрос под другим углом: хостинговые компании трудятся над защитой своей репутации и соблюдают законы стран, в которых располагаются. Если вы не планируете заниматься криминалом, законы на Вашей стороне. Более того, подход SelfPrivacy обеспечивает сквозное шифрование между Вами и Вашими сервисами. Коммерческие социальные сети торгуют данными не потому, что в их распоряжении жесткие диски сервера, а потому, что вся логика их бизнеса нацелена на это. В нашем случае такого случиться не может: используются только этичные программные решения, а хостер, обеспечивающий дисковое пространство и сетевой канал, найдет себе занятие интереснее, чем снимать дамп неизвестной виртуальной машины и пытаться найти в нем что-то, что можно было бы продать рекламодателям. Это глупо, а также нарушает законодательство цивилизованных стран, так как в Вашем договоре с хостером точно не будет пункта, который даст ему разрешение на шпионаж за файлами на вашем сервере. Законы большинства стран гласят, что хостинг-провайдер предоставляет Вам мощности без юридической ответственности за Ваши дальнейшие действия. Если на Ваш сервер не будут поступать жалобы извне (за спам и т.п.), казусы в отношениях с администрацией хостинга не предвидятся. **Если кому-нибудь поручите эту задачу — лишитесь приватности. Для 100% независимости и контроля необходимо все делать самостоятельно.**

## Учетные записи
Для устойчивости и повышения приватности, SelfPrivacy требует много учетных записей. Если все держать в одном месте, получим то, от чего бежали — все возможные данные будут у одной компании. Именно поэтому разные компоненты Вашей небольшой экосистемы будут в разных местах.

### Защита учетных записей
Прежде, чем вы приступите к регистрации, подумайте о том, каким образом взламывают большинство аккаунтов на самых различных площадках. Чаще всего для этого не требуется даже обходить систему защиты сервиса! Дело в слабых паролях. Наш мозг подталкивает нас к простым паролям, а также к использованию похожих или даже одинаковых паролей на разных сайтах. Аксиома такова, что пароли должны быть разными и сложными. `MamaDajKushat`, как ни странно, плохой пароль. `MamaDajKushat@100` — чуть лучше, но все равно слабоват. Хорошими паролями являются парольные фразы, состоящие из нескольких несвязанных по смыслу слов, например, `expert repose postwar freestyle effects anytime liability`, либо случайный набор символов вроде `}!@$DSjda12jl34<!`. Важную роль играет длина и непредсказуемость. Если вы последуете совету о парольной фразе и создадите его вручную, наверняка в нем будет какая-то логика, которую смогут угадать знакомые с вами люди. Лучшим решением для создания и хранения паролей является менеджер паролей. [KeePassXC](https://keepassxc.org/download/) — легковесное кроссплатформенное приложение с открытым исходным кодом для генерации случайных паролей и их удобного хранения в зашифрованном виде. При таком подходе, вам придется помнить только один пароль - от менеджера паролей. Забудьте про бумажки под клавиатурой и текстовые файлы для хранения секретной информации. Зашифрованную базу KeePassXC можно назвать любым неприглядным именем вроде "runtime64.dll" и хранить ее резервную копию среди других файлов в любом облачном хранилище. Естественно, для душевного спокойствия для базы KeePassXC следует придумать самый сложный пароль из всех, что вы придумывали, и крепко его запомнить. Всего лишь один! Небольшой файл, представляющий собой базу данных KeePassXC, является AES-контейнером, криптостойкости которого хватит еще нашим внукам. Поэтому пароль забывать нельзя. Наравне с KeePassXC спросом пользуется [Bitwarden](https://bitwarden.com/) — также свободное программное обеспечение, распространяемое в виде  приложения с графической оболочкой для компьютеров и смартфонов, приложения с веб-интерфейсом (который открывается через браузер), а также в виде полноценного расширения для браузера и в конце концов в виде CLI-дистрибутива (command line interface, программа без графической оболочки). Главным отличием Bitwarden от KeePassXC является "облачный" подход, в котором база данных с паролями хранится в зашифрованном виде на удаленном сервере, а не на локальном устройстве. На вкус и цвет товарищи находятся не всегда, поэтому начните с чего-то одного и, если выбранный вариант не удовлетворит, попробуйте альтернативу.

Также настоятельно рекомендуем включить двухфакторную авторизацию (MFA, 2FA), которая для входа в аккаунт будет требовать помимо пароля что-то еще: код из приложения, электронной почты и тому подобное. Максимально возможная безопасность при создании максимально приватных сервисов!

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

Сервисы, на которых необходимо завести аккаунт:
1. [Hetzner](https://accounts.hetzner.com/login) — хостинг виртуального сервера. Здесь будут жить наши сервисы и данные SelfPrivacy;
2. [NameCheap](https://www.namecheap.com/myaccount/login/) — для покупки домена — личного адреса в интернете, — который будет указывать на сервер. При желании, можете воспользоваться любым другим регистратором доменных имен.
3. [CloudFlare](https://dash.cloudflare.com/login) — DNS сервер, который будет обслуживать Ваш домен. CloudFlare славится сервисом защиты от DDoS-атаки, который вызывает много упреков в сообществе специалистов по приватности, так как раскрывает внутри себя весь зашифрованный трафик для анализа. Можете быть спокойны, в рамках этой инструкции мы будем использовать от CloudFlare только их DNS с удобным API для автоматизации управления через приложение SelfPrivacy.
4. [Backblaze](https://secure.backblaze.com/user_signin.htm)— IaaS (Infrastructure as a service) провайдер хранения резервных копий Ваших данных в зашифрованном виде. Backblaze предусматривает [тарифный план](https://www.backblaze.com/ru_RU/cloud-storage.html) с оплатой $0.005/ГБ в месяц, однако, первые 10ГБ даются бесплатно. Этого вполне достаточно для наших нужд, поэтому будем считать, что бэкапы за счет заведения.

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

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

## Покупка домена
<video src="/screencast/1.mp4" alt="NameCheap" controls></video>

Домен — это кусочек интернета, которому Вы даете имя. Простор для творчества огромен, у Вас есть 63 символа плюс `.com`, `.org`, `.icu` и еще несколько сотен доменных зон (окончание адреса после последней точки). Домен можно выбрать просто по фамилии, например, `ivanov.live` или `ivanov.health`, а можно что-то творческое вроде `shit-happens.shop`. 

Несколько рекомендаций, которые нужно иметь ввиду при покупке:
1. Обязательно смотрите на цену ежегодного продления, она может в разы превышать стоимость покупки;
2. Нормальная цена домена $8-10 в год. Самые дешевые — китайские: `.icu` и `.cyou` (по $4-6);
3. Хорошее доменное имя удобно и по телефону диктовать и на деловой визитке указать не стыдно;
4. Фамилия в домене хороша тем, что можно раздать почту всем однофамильцам (главным образом, родственникам), например, `name.secondname@surname.com`, `ns@surname.com` или `name@surname.com`;
5. При регистрации домена обязательно указывайте реальные почту и телефон, иначе регистрацию могут аннулировать. Если Вы не сможете продлить домен, система SelfPrivacy не будет работать так, как задумано, и почти все нужно будет начинать заново.

### Подключение домена к DNS-серверу
После покупки, добавляем домен в CloudFlare:

<video src="/screencast/2.mp4" alt="Adding domain to Cloudflare" controls></video>

На примере домена `bazari.sh` мы выбрали бесплатный тариф и получили имена серверов: `anton.ns.cloudflare.com` и `rose.ns.cloudflare.com`, которые надо прописать у своего регистратора. У вас имена DNS-серверов наверняка будут другие. В примере домен был куплен на NameCheap:

<video src="/screencast/3.mp4" alt="Namecheap to Cloudflare" controls></video>

Заодно проверьте, что у Вас включено автопродление и защита персональных данных — WhoisGuard (незамысловатые пункты в меню управления доменом). Через несколько минут или, в худшем случае, в период до двух суток настройки применятся. Как правило, приходится ожидать меньше десяти минут. Можете не останавливаться: пока выполните следующие действия, привязка домена наверняка закончится.

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

Для NameCheap специальный ключ не нужен. Управление доменом будет осуществляться через сервис CloudFlare.

### CloudFlare
1. Перейдите по [ссылке](https://dash.cloudflare.com/) и авторизуйтесь в ранее созданном аккаунте;
2. В правом верхнем углу кликните на иконку профиля (человечек в кружочке). В мобильной версии сайта расположение кнопок отличается: в
верхнем левом углу находится кнопка Меню (три горизонтальных полоски), нажмите на нее. В выпавшем списке найдите пункт "My Profile";
3. Будет предложено выбрать одну из четырех категорий настроек: "Preferences", "Authentication", "API Tokens" и "Sessions". Выберите "API Tokens";
4. Самым первым пунктом является кнопка "Create Token". Нажмите на неё;
5. Спуститесь в самый низ к полю "Create Custom Token" и нажмите кнопку "Get Started" с правой стороны;
6. В поле "Token Name" дайте имя новому токену. Можете покреативить и отнестись к этому как к наименованию домашнего зверька :)
7. Далее окно "Permissions". В первом поле выберите "Zone". Во втором поле (по центру) выберите DNS. В последнем поле — "Edit";
8. Далее, прямо под этой строчкой, нажмите на "Add More". Появится строка, аналогичная той, которую вы только что заполняли;
9. В первом поле новой строки выберите "Zone" по аналогии с предыдущим шагом. Во втором поле снова "Zone". В третьем — "Read";
10. Найдите глазами "Zone Resources". Под этой надписью есть строка с двумя полями. В первом должно быть "Include", а во втором — "Specific Zone". Как только вы выберите "Specific Zone", справа появится ещё одно поле. В нём выбираем наш домен;
11. Пролистайте в самый низ и нажмите на синюю кнопку "Continue to Summary";
12. Убедитесь, что все поля были заполнены верно: должна присутствовать подобная строка, содержащая ваш домен и "DNS:Edit, Zone:Read";
13. Если всё на своих местах, завершите операцию нажатием кнопки "Create Token";
14. Скопируйте созданный токен во временный текстовый файл, либо сразу в приложение SelfPrivacy.

<video src="/screencast/4.mp4" alt="Cloudflare token setup" controls></video>

### Hetzner
1. Перейдите по [ссылке](https://console.hetzner.cloud/) и авторизуйтесь в ранее созданном аккаунте;
2. Создайте новый проект. Наведите мышкой на боковую панель. Она должна раскрыться, показав пункты меню. Сейчас нас интересует последний — "Security" (с иконкой ключика);
3. В верхней части интерфейса увидите примерно такой список: "SSH KEYS", "API TOKENS", "CERTIFICATES", "MEMBERS". Выберите "API TOKENS";
4. Посередине интерфейса нажмите кнопку "GENERATE API TOKEN";
5. В поле "Description" дайте новому токену название (это может быть любое слово, которое Вам нравится);
6. Под полем "Description" есть возможность выбрать разрешения ("PERMISSIONS"). Выберите "Read & Write";
8. Завершаем операцию нажатием "GENERATE API TOKEN";
9. После этого появится окно с API-токеном. Скопируйте созданный токен во временный текстовый файл, либо сразу в приложение SelfPrivacy.

![Hetzner token setup](https://selfprivacy.org/img/screencasts/Hetzner.gif)

### Backblaze
1. Перейдите по [ссылке](https://secure.backblaze.com/user_overview.htm) и авторизуйтесь в ранее созданном аккаунте;
2. В левой части интерфейса в подкатегории "Account" выберите "App Keys";
3. Нажмите на синюю кнопку "Generate New Master Application Key";
4. Подтвердите действие во всплывающем окне;
5. Сохраните "keyID" и "applicationKey" во временном текстовом файле, либо сразу введите их в приложение SelfPrivacy.

<video src="/screencast/6.mp4" alt="Backblaze token setup" controls></video>


# Все сделано!
Когда все необходимые API-токены в ваших руках, добавьте их в приложение SelfPrivacy, если еще этого не сделали. Ваши приватные сервисы ждут! Если возникнут вопросы по конфигурации, обратитесь к нашим ответам на часто задаваемые вопросы (FAQ). Если вашего вопроса там нет, либо ответ не помог с решением, обратитесь в поддержку.
