<pclass="mb-16">Twister — децентралізована пірингова платформа мікроблогів, створена <aclass="c-3"href="https://github.com/miguelfreitas">Miguel Freitas</a> у червні, 2013.</p>
<pclass="mb-16">Для початку користування, не потрібно жодних вхідних капіталів та інших вимог, що відрізняють платформу на фоні інших децентралізованих рішень. Мережа twister створена, щоб бути доступною для кожного без обмежень та звідусіль, в незалежності від географії користувача.</p>
<pclass="mb-16">Роботоздатність інфраструктури забезпечується іншими вузлами, зокрема тих, які рекламують свої послуги шляхом майнінгу блоків, та <aclass="c-3"href="/network">провайдерів DNS</a>, хто сканує та поширює актуальні вузли для підключення нових.</p>
<pclass="mb-16">Користувацький контент зберігається перманентно між користувачами, які читають один одного, тому для доступності дописів, публікатору не потрібне постійне підключення до мережі інтернет (за схожим принципом працює протокол IPFS, утім twister використовує незалежну екосистему власної реалізації). Сховище даних не цензурується, не може бути заблоковане чи видалене третьою стороною, оскільки кожен учасник мережі — є частиною суспільної бази даних. Термін зберігання контенту обмежується лише вашим часом перебування в мережі та перебуванням в мережі ваших читачів.</p>
<pclass="mb-16">Для отримання більш детальної інформації стосовно технічної концепції twister, будь ласка, ознайомтесь з оригінальним документом <aclass="c-3"href="https://github.com/twisterarmy/archive/raw/main/whitepaper.pdf">Whitepaper</a>.</p>
<p>Згідно <aclass="c-3"href="http://twister.net.co/archives/617">Анонсу</a>, 25 червня 2020 року, офіційна підтримка проекту була припинена автором, утім <aclass="c-3"href="network">Мережа twister</a> все ще активна, оскільки для функціонування не потребує централізованих ресурсів.</p>
<pclass="mb-16">Twisterarmy — некомерційна організація, заснована на початку 2021 року кількома користувачами з наміром підтримувати та розвивати проект twister у форматі спільноти.</p>
<pclass="mb-16">Ресурси нашої спільноти включать багато незалежних рішень, форків від багатьох розробників суміжних рішень: колекції програмного забезпечення для аналітики, хмарних сервісів та інших концепцій, які можуть бути реалізовані довкола екосистеми twister. Зокрема, спільнота Twisterarmy веде власну редакцію програмних продуктів twister-core, twister-html, twister-seeder та інших продуктів, що включають останні офіційні оновлення, утім мають власні доповнення — колекції тем оформлення, кращу підтримку сучасних медіа-форматів та актуальних DNS сервісів для забезпечення більш стабільної роботи. Щоб отримати більше інформації щодо практичної діяльності спільноти, будь ласка, завітайте до нашого проекту на <aclass="c-3"href="https://github.com/twisterarmy">GitHub</a>.</p>
<pclass="mb-16">Мета нашої організації — збереження та підтримка інструментів для вільного спілкування, надаючи людям змогу спілкуватися з будь якого куточку планети без обмежень та цензури, а кодову базу — забезпечити актуальними оновленнями.</p>
<pclass="mb-16">Якщо ви маєте будь-які пропозиції стосовно доповнення ресурсів, виправлення помилок, перекладу цього сайту — будь ласка, напишіть повідомлення до офіційного аккаунту спільноти @twisterarmy</p>
<p>Наразі доступні декілька версій програмного забезпечення: Офіційна та редакція Twisterarmy. Ми рекомендуємо обрати останню, оскільки вона є повністю сумісною з мережею twister, включає нову функціональність а також містить останні офіційні оновлення. Ви можете ознайомитись з подробицями на сторінці обраного релізу.</p>
<pclass="mb-16">Зкомпільовані бінарні пакети містять все необхідне для запуску вузла twister на персональному комп’ютері.</p>
<pclass="mb-16">Приклад встановлення завантаженого пакету:</p>
<preclass="mx-auto mb-16 pt-16 bg-c-4 b-r-3 o-x">
sudo dpkg -i twister.deb
</pre>
<p>Після встановлення, додаток twister буде доступний в меню програм. Запуск twister також може бути ініційований через командний термінал.</p>
<p>Веб застосунок відкриється автоматично у браузері, що використовується системою, як стандартний. Якщо цього не сталось, просто відкрийте наступну адресу URL: <aclass="c-3"href="http://localhost:28332">http://localhost:28332</a></p>
<pclass="mb-16">Кращим способом користуватися вільним програмним забезпеченням є компіляція його з первинного коду.</p>
<pclass="mb-16">Тим не менше, для спрощення процесу, ми рекомендуємо нашу розробку <aclass="c-3"href="https://github.com/twisterarmy/twister-cli-installer">Twister CLI Installer</a>, за допомогою якої, ви зможете відповідаючи на прості питання встановити та безпечно налаштувати twister як на персональному комп’ютері, так і на віддаленому сервері.</p>
<pclass="mb-16">У разі, якщо бажаєте контролювати процес компіляції особисто, або змінити первинний код під специфічні потреби, слідуйте за посиланнями на інструкції, що додані до кожного з продуктів у розділі <aclass="c-3"href="/install#build-from-source">Компіляція з початкового коду</a>.</p>
<p>Якщо ви маєте обмежені апаратні ресурси або проблеми з підключенням, надаєте перевагу смартфонам або маєте обмежений запас батареї на ноутбукі, зверніть увагу на <aclass="c-3"href="cloud">Хмарні рішення</a>, де не потрібне встановлення жодного програмного забезпечення локально, а мережею twister можна користуватися за допомогою веб-сайту провайдера.</p>
-discover Віднайти власну IP адресу (стандартно: 1 на прослуховуванні та за умови -externalip)
-checkpoints Приймати тільки блоки, що відповідають вбудованим checkpoints (стандартно: 1)
-listen Отримувати підключення із-зовні (стандартно: 1 якщо -proxy або -connect)
-bind=addr Приєднайтеся до вказаної адреси і завжди слухайте її. Використовуйте [host]:port позначення для IPv6
-dnsseed Знайти пірів використовуючи пошук DNS (стандартно: 1 за вийнятком -connect)
-banscore=n Порогове значення для відключення вузлів, які погано працюють (стандартно: 100)
-bantime=n Кількість секунд, протягом яких вузли, які погано працюють, не підключаються знову (стандартно: 86400)
-maxreceivebuffer=n Максимальний буфер отримання на з’єднання, n*1000 байтів (стандартно: 5000)
-maxsendbuffer=n Мінімальний буфер отримання на з’єднання, n*1000 байтів (стандартно: 1000)
-upnp Використовувати UPnP щоб відобразити порт, який прослуховування (стандартно: 1 коли прослуховується listening)
-paytxfee=amt Комісія за кілобайт для додавання до трансакцій, які ви надсилаєте
-testnet Використовувати тестову мережу
-debug Вивести додаткову інформацію про налагодження. Мається на увазі параметри -debug*
-debugnet Вивести додаткову інформацію про налагодження мережі
-logtimestamps Додати мітку часу в інформацію про налагодження
-shrinkdebugfile Стиснути файл debug.log під час запуску (стандартно: 1 коли не вказано -debug)
-printtoconsole Відобразити інформацію про трасування в консоль замість файлу debug.log
-regtest Увійти в режим регресійного тесту, який використовує спеціальний ланцюжок, у якому блоки можна розв’язувати миттєво. Це призначено для інструментів регресійного тестування та розробки програм.
-rpcuser=user Логін для з’єднань JSON-RPC
-rpcpassword=pw Пароль для з’єднань JSON-RPC
-rpcport=port Вказати порт для з’єднань JSON-RPC (стандартно: 28332 або testnet: 18332)
-rpcallowip=ip Обмежити підключення через JSON-RPC для заданої IP адреси
-rpcconnect=ip Надіслати команди до вузла, який працює за адресою ip (стандартно: 127.0.0.1)
-rpcthreads=n Вказати кількість потоків для сервісу викликів RPC (стандартно: 10)
-public_server_mode Обмежити виконання JSON-RPC тільки для публічно-безпечних команд.
-blocknotify=cmd Виконати команду при зміні блоку (%s в команді замінюється хешем блоку)
-walletnotify=cmd Виконати команду при зміні транзакції у гаманці / обліковому записі (%s в команді змінюється на TxID)
-alertnotify=cmd Виконати команду на отриманні релевантного сповіщення (%s в команді змінюється на повідомлення)
-upgradewallet Оновити гаманець / обліковий запис до останнього формату
-keypool=n Встановити розмір ключа в пулі на n (стандартно: 100)
-rescan Пересканувати ланцюг блоків на наявність загублених транзакцій
-salvagewallet Спроба відновити приватні ключі з пошкодженого файлу twisterwallet.dat
-checkblocks=n Скільки блоків перевіряти при запуску (стандартно: 500, 0 = усі)
<pclass="mb-16"><small>* Використовуючи <aclass="c-3"href="https://github.com/twisterarmy/twister-cli-installer">twister-cli-installer</a>, файл конфігурації буде створено автоматично, відповідно до вимог.</small></p>
<p><aclass="c-3"href="https://github.com/twisterarmy/cloud-server">cloud-server</a>— Хмарна платформа, з підтримкою мульти-аккаунтів, дозволяє працювати з мережею twister віддалено через веб-інтерфейс.</p>
<pclass="mb-16">Мережа twister вимагає декілька службових серверів DNS (seeders) які здійснюють пошук та надають актуальний список адресів для підключення нового вузла. Якщо у вашому розпоряджені linux сервер, доступний 24×7 та ви маєте змогу додати NS записи до власного домену, долучайтеся до списку вузлів DNS.</p>
<p>У прикладах нижче буде розглянуто процес налаштування на прикладі демонстраційних доменів першого рівня: domainseed.tk, domaindns1.tk, domaindns2.tk та у якості альтернативи - субдоменів seed.domain.org, ns1.domain.org, ns2.domain.org.</p>
<pclass="mb-16">Дозвольте підключення через 53 порт, якщо ваш сервер використовує інші налаштування фаєрволу. За допомогою утиліти ufw, яка оперує ip-tables, це можна виконати простою командою нижче:</p>
<preclass="mx-auto pt-16 mb-16 bg-c-4 b-r-3 o-x">
sudo ufw allow 53
</pre>
<pclass="mb-16">Користувачі операційних систем на базі Ubuntu повинні звільнити 53 порт, оскільки він стандартно використовується процесом systemd-resolved. Для цього внесіть наступні зміни у файл <i>/etc/systemd/resolved.conf</i>:</p>
<pclass="mb-16">Більшість доменних реєстраторів вимагають щонайменше два записи NS, наприклад, один із таких реєстраторів - безкошктовний сервіс dot.tk. Нижче наведено приклад конфігурації, коли для домену domainseed.tk вказані сервери імен у зонах верхнього рівня:</p>
<preclass="mx-auto pt-16 mb-16 bg-c-4 b-r-3 o-x">
domainseed.tk NS domaindns1.tk, domaindns2.tk
domaindns1.tk A Server IP
domaindns2.tk A Server IP
</pre>
<pclass="mb-16">У якості альтернативного прикладу, якщо у вашому розпорядженні платний домен, та ви не бажаєте замовляти додаткові адреси, достатньо створити два піддомени та вказати в налаштуваннях NS ті, які використовуються у якості NS серверу.</p>
<pclass="mb-16">У разі, якщо знайдений вузол twister-core працює на динамічному порті, він не буде відображатися в результатах індексу.</p>
<pclass="mb-16">У списку відображаються тільки вузли twister-core, які працюють на відкритому порті 28333. Утім, прийнанні одного достатньо для поширення інших вузлів на динамічних портах.</p>
<p>Якщо ви бажаєте опублікувати власний вузол у списку серверів DNS, запустіть twister-core з опцією <i>-port=28333</i> та дочекайтесь оновлення кешу.</p>
<h3class="f-size-20 mb-16 px-12 f-normal">Реєстрація в мережі</h3>
<pclass="mb-16">Після того, як все зроблено та перевірено, додайте адресу вашого серверу DNS в реєстри вузлів <aclass="c-3"href="https://github.com/twisterarmy/twister-core">twister-core</a> і <aclass="c-3"href="https://github.com/twisterarmy/twister-seeder">twister-seeder</a>.</p>
<pclass="mb-16">Сервер DNS буде доступний для користувачів twister-core тільки після оновлення програмного забезпечення до версії, що включає ці зміни.</p>
<pclass="mb-16">Оскільки twister-seeder також потребує ініціальних вузлів для початку сканування інших, запис DNS буде доступний для інших серверів після повторної компіляції.</p>
<p>Для того, щоб додати новий DNS сервіс до <aclass="c-3"href="/network.html">Мережевого монітору</a> на цьому сайті для зручного відстеження статусу, достатньо доповнити список інших провайдерів на <aclass="c-3"href="https://github.com/twisterarmy/twisterarmy.github.io/blob/main/network.html">сторінці GitHub</a>.</p>
<pclass="mb-16">Якщо налаштований сервер не знаходить ініціальні адреси та ви бачете схоже повідомлення в журналі сканування, це означає, що жоден з інших DNS вузлів не доступний онлайн:</p>
<preclass="mx-auto pt-16 mb-16 bg-c-4 b-r-3 o-x">
0/2 available (2 tried in 333s, 0 new, 0 active), 0 banned; 31 DNS requests, 13 db queries
</pre>
<pclass="mb-16">Утім, за наявності вузла twister-core, якому все ще вдається підключитись до старих адрес IP (які збережено у файлі <i>~/.twister/peers.dat</i>), є змога відновити сканування, шляхом ручного додавання адреси підключеного вузла twister-core до twister-seeder для ініціації сканування.</p>
<pclass="mb-16">Для цього необхідно у файлі <i>main.cpp</i> знайти строку:</p>
<pclass="mb-16">Після цього <aclass="c-3"href="guide.html#dns-seeder-install">скомпілювати</a> та <aclass="c-3"href="/guide.html#dns-seeder-testing">пезапустити</a> twister-seeder знову.</p>
<p>Twisterarmy є відкритим до пропозицій суспільним проектом. Будь ласка, будьте вільні надсилати ваші пропозиції та вдосконалення на <aclass="c-3"href="https://github.com/twisterarmy">GitHub</a>.</p>