<pclass="mb-16">Twister is an open source, decentralized p2p microblogging platform, created by <aclass="c-3"href="https://github.com/miguelfreitas">Miguel Freitas</a> in June, 2013.</p>
<pclass="mb-16">Software conception uses it own PoW blockchain to store the user meta and DHT/BitTorrent protocol to share the data. Twister supports TOR to make host connections protected, direct messages end-to-end encrypted, groups, and other features.</p>
<pclass="mb-16">To start using twister, no funds needed, the network works for everyone and for free. Infrastructure running by PoW miners advertising their services in promotion posts and <aclass="c-3"href="/network">DNS seeders</a>, who crawling the active connections. User content saving permanently between following nodes, not require stable online from publisher. Data storage not censured, not owned just by publisher and not limited in time. Your posts accessible as long as you have followers online.</p>
<pclass="mb-16">For more technical details about twister conception, please read original <aclass="c-3"href="https://github.com/twisterarmy/archive/raw/main/whitepaper.pdf">Whitepaper</a>.</p>
<p>According to <aclass="c-3"href="http://twister.net.co/archives/617">Announcement</a>, in June 25, 2020 official project maintenance was discontinued, but the <aclass="c-3"href="/network">Network</a> still active as not requires centralized servers.</p>
<pclass="mb-16">Twisterarmy is a non-profitable organization, created in 2021 by few users with intention to support original twister network in the community format.</p>
<pclass="mb-16">Community resources contain many of independent forks by different people: related software collections, analytics tools, cloud servers and finally - self maintained software solutions, like TwisterArmy Edition with extra-features which not included in official repository. To get more details about our activity, take a look at <aclass="c-3"href="https://github.com/twisterarmy">Twisterarmy GitHub Repository</a>.</p>
<p>Our goal to keep speech tools free, people connection accessible and source code living.</p>
<pclass="mb-16">If you have any of propositions, please create new ticket or send a message to our official account @twisterarmy</p>
<pclass="mb-16">There is few twister versions available: Official and Twisterarmy Editions. We recommend to chose the last one, because it supports new <aclass="c-3"href="/network">DNS seeders</a> and some features, like more templates and media formats support, still not merged with official one. For more details, please read release notes of selected version.</p>
<p>Both of versions are compatible with original twister blockchain, soft- and hard-points, has the same dependencies an code-level versions.</p>
<p>Also, Twisterarmy Edition updates are sending to official branches, but not all of them merged with official codebase. All of official updates are merging with Twisterarmy Edition.</p>
<pclass="mb-16">Pre-compiled binaries contain all requirements to launch twister full node on your machine.</p>
<pclass="mb-16">Package installation example:</p>
<preclass="mx-auto mb-16 pt-16 bg-c-4 b-r-3 o-x">
sudo dpkg -i twister.deb
</pre>
<p>After installing, launch twister node from application menu or by command line interface.</p>
<p>Web application in your browser should be opened automatically at the address: <aclass="c-3"href="http://localhost:28332">http://localhost:28332</a></p>
<h3class="f-size-20 mb-16 px-12 f-normal">Build from Source</h3>
<pclass="mb-16">The better way to use free and open software is building it from the sources.</p>
<pclass="mb-16">We recommend to use <aclass="c-3"href="https://github.com/twisterarmy/twister-cli-installer">Twister CLI Installer</a> script, where you can simply select twister edition and setup remote connection by answering guide questions.</p>
<p>If you would like to build twister for yourself, please, choose edition you like and follow instructions on the <aclass="c-3"href="/install#build-from-source">Installation Page, Build from Source section</a>.</p>
<p>If you have hardware or internet provider restrictions, limited connection or wish to join twisterverse trough smartphone or laptop where power safe in priority,</p>
-htmldir=dir Specify HTML directory to serve (default: data/html)
-dbcache=n Set database cache size in megabytes (default: 25)
-timeout=n Specify connection timeout in milliseconds (default: 5000)
-proxy=ip:port Connect through socks proxy
-socks=n Select the version of socks proxy to use (4-5, default: 5)
-tor=ip:port Use proxy to reach tor hidden services (default: same as -proxy)
-dns Allow DNS lookups for -addnode, -seednode and -connect
-port=port Listen for connections on port (default: 28333 or testnet: 18333)
-maxconnections=n Maintain at most n connections to peers (default: 125)
-addnode=ip Add a node to connect to and attempt to keep the connection open
-connect=ip Connect only to the specified node(s)
-seednode=ip Connect to a node to retrieve peer addresses, and disconnect
-externalip=ip Specify your own public address
-onlynet=net Only connect to nodes in network net (IPv4, IPv6 or Tor)
-multiconnperip Enable libtorrent multiple connections per ip (default: 0)
-discover Discover own IP address (default: 1 when listening and no -externalip)
-checkpoints Only accept block chain matching built-in checkpoints (default: 1)
-listen Accept connections from outside (default: 1 if no -proxy or -connect)
-bind=addr Bind to given address and always listen on it. Use [host]:port notation for IPv6
-dnsseed Find peers using DNS lookup (default: 1 unless -connect)
-banscore=n Threshold for disconnecting misbehaving peers (default: 100)
-bantime=n Number of seconds to keep misbehaving peers from reconnecting (default: 86400)
-maxreceivebuffer=n Maximum per-connection receive buffer, n*1000 bytes (default: 5000)
-maxsendbuffer=n Maximum per-connection send buffer, n*1000 bytes (default: 1000)
-upnp Use UPnP to map the listening port (default: 1 when listening)
-paytxfee=amt Fee per KB to add to transactions you send
-testnet Use the test network
-debug Output extra debugging information. Implies all other -debug* options
-debugnet Output extra network debugging information
-logtimestamps Prepend debug output with timestamp
-shrinkdebugfile Shrink debug.log file on client startup (default: 1 when no -debug)
-printtoconsole Send trace/debug info to console instead of debug.log file
-regtest Enter regression test mode, which uses a special chain in which blocks can be solved instantly. This is intended for regression testing tools and app development.
-rpcuser=user Username for JSON-RPC connections
-rpcpassword=pw Password for JSON-RPC connections
-rpcport=port Listen for JSON-RPC connections on port (default: 28332 or testnet: 18332)
-rpcallowip=ip Allow JSON-RPC connections from specified IP address
-rpcconnect=ip Send commands to node running on ip (default: 127.0.0.1)
-rpcthreads=n Set the number of threads to service RPC calls (default: 10)
-public_server_mode Limit JSON-RPC execution to public/safe commands only.
-blocknotify=cmd Execute command when the best block changes (%s in cmd is replaced by block hash)
-walletnotify=cmd Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)
-alertnotify=cmd Execute command when a relevant alert is received (%s in cmd is replaced by message)
-upgradewallet Upgrade wallet to latest format
-keypool=n Set key pool size to n (default: 100)
-rescan Rescan the block chain for missing wallet transactions
-salvagewallet Attempt to recover private keys from a corrupt twisterwallet.dat
-checkblocks=n How many blocks to check at startup (default: 500, 0 = all)
-checklevel=n How thorough the block verification is (0-4, default: 3)
-txindex Maintain a full transaction index (default: 0)
-loadblock=file Imports blocks from external blk000??.dat file
-reindex Rebuild block chain index from current blk000??.dat files
-par=n Set the number of script verification threads (up to 16, 0 = auto, 0 = leave that many cores free, default: 0)
-blockminsize=n Set minimum block size in bytes (default: 0)
-blockmaxsize=n Set maximum block size in bytes (default: 250000)
-blockprioritysize=n Set maximum size of high-priority/low-fee transactions in bytes (default: 27000)
-rpcssl Use OpenSSL (https) for JSON-RPC connections
-rpcsslcertificatechainfile=file.cert Server certificate file (default: server.cert)
-rpcsslprivatekeyfile=file.pem Server private key (default: server.pem)
<pclass="mb-16"><small>* By using community-written <aclass="c-3"href="https://github.com/twisterarmy/twister-cli-installer">twister-cli-installer</a> script, configuration file and certificates creating automatically.</small></p>
<p><aclass="c-3"href="https://github.com/twisterarmy/cloud-server">cloud-server</a>— Multi-account instance allow users to interact with the twister network through web service.</p>
<p>Twister network requires a couple of special DNS seeders which provide an updated list of known peers. If you have a 24×7 linux machine and you are able to add an special NS record to your domain, please consider running twister-seeder.</p>
<pclass="mb-16">Enable 53 port connections, if the firewall enabled. With the ufw manager for ip-tables, it is possible just by one simple command bellow:</p>
<p>Pay attention, in the ANSWER SECTION transmitting twister-core nodes, that running on port 28333 only, so if you also want to participate DATA sharing, do not forget about opening this port on your twister-core server using <i>-port=28333</i> flag.</p>
<pclass="mb-16">Finally, our seeding instance should be reachable for other <aclass="c-3"href="https://github.com/twisterarmy/twister-seeder">twister-seeder</a> and <aclass="c-3"href="https://github.com/twisterarmy/twister-core">twister-core</a> nodes, so let's declare it in the source code of these projects.</p>
<pclass="mb-16">Note, after these changes, twister-core users need to be noticed about updating their software to apply these changes. Usually, it happens on the new release announcement.</p>
<p>Add your DNS to the <aclass="c-3"href="/network.html">Network Monitor</a> on this website by changing providers list on <aclass="c-3"href="https://github.com/twisterarmy/twisterarmy.github.io/blob/main/network.html">GitHub</a>.</p>
<pclass="mb-16">If your twister-seeder returns empty results on the network crawling, like response on example below, seems that another DNS seeding instances could be offline:</p>
0/2 available (2 tried in 333s, 0 new, 0 active), 0 banned; 31 DNS requests, 13 db queries
</pre>
<pclass="mb-16">As the solution, if you have still connected to the network twister-core instance, it is pretty possible to grab active connections from collected <i>~/.twister/peers.dat</i>. All that is needed - connecting our twister-seeder to the twister-core running, by using it IP and 28333 port.</p>
<pclass="mb-16">Open <i>main.cpp</i> file and find a row:</p>
<pclass="mb-16">Save and <aclass="c-3"href="/guide.html#dns-seeder-install">recompile</a> twister-seeder and launch it again with twister-core running.</p>
<p>Twisterarmy is the community project. Please send your proposes and participate with improvements to development on <aclass="c-3"href="https://github.com/twisterarmy">GitHub</a>.</p>