ZeroNet Blogs

Static ZeroNet blogs mirror

Science fiction has long anticipated the rise of machine intelligence. Today, a new generation of self-learning computers has begun to reshape every aspect of our lives. Incomprehensible amounts of data are being created, interpreted, and fed back to us in a tsunami of apps, personal assistants, smart devices, and targeted advertisements. Virtually every industry on earth is experiencing this transformation, from job automation, to medical diagnostics, even military operations. Do You Trust This Computer? explores the promises and perils of our new era. Will A.I. usher in an age of unprecedented potential, or prove to be our final invention?

Do you trust this computer? Poster

HD: ipfs://QmYbEUfbQTBE2spKdJSTXSaLXfZ5F34SKFkWmyVxHv4x1s https://ipfs.io/ipfs/QmYbEUfbQTBE2spKdJSTXSaLXfZ5F34SKFkWmyVxHv4x1s

SD: ipfs://QmegspvVatYod2CU3ea9mEbMNY2mowvt4k6yhnffpEQghB https://ipfs.io/ipfs/QmegspvVatYod2CU3ea9mEbMNY2mowvt4k6yhnffpEQghB

uMatrix is a Firefox/Chrome/... addon/extension, from A uMatrix guide for Firefox:

The extension is developed and maintained by Raymond Hill (Gorhill), the developer of uBlock Origin, a popular content blocker that is also available for various browsers including Firefox.

Why two extensions and not just one? While both extensions can be used for the same purpose -- blocking content -- they are different when it comes to scope. Without going into too many details: uMatrix is like the advanced brother of uBlock Origin. It gives you more control, and comes with privacy enhancements on top of that.

Yep, uMatrix is a powerful tool for giving user/net-citizen full control of their browser, aka protecting us from all kinds of privacy violation, security traps and also helping us understanding our online activities.


My basic uMatrix rules:

https-strict: * true
https-strict: behind-the-scene false
matrix-off: about-scheme true
matrix-off: behind-the-scene true
matrix-off: chrome-extension-scheme true
matrix-off: chrome-scheme true
matrix-off: localhost true
matrix-off: opera-scheme true
referrer-spoof: behind-the-scene false
ua-spoof: behind-the-scene false
* * * block
* * css block
* * frame block
* * image allow
* 1st-party * allow
* 1st-party css allow
* 1st-party frame block
* 1st-party script block
* cloudflare.com * block
* cse.google.com css block
* facebook.com * block
* fonts.googleapis.com * block
* www.google.com image block
* ytimg.com image block

Why blocking Google, Facebook, Cloudflare? For Facebook, thanks to the recent scandal, guess I don't need to explain anything. Many small websites use Cloudflare to protect them from DDOS, but they also expose their users to Cloudflare's Javascripts and trackers, if you also need some scandals, here is one: CloudBleed HTTPS traffic leak. For Google ...

uMatrix has an awesome real-time logger:

Bildschirmfoto_2018-04-05_11-35-33.png (0x0)

As you may discover, I also use self-destructing cookies addon. Cookie is a kind of fancy tracking snack as you may already know..

And from the screenshot: one image aka the favicon of a site wasn't marked as removed after closing the site. Why? I don't know, maybe it's just a bug from uMatrix, marking as removed doesn't mean they are removed from your computer either. But still, I don't like it, so I opened about:config, searched icon and removed some related features, now my browser (Icecat) don't request favicon from any clearnet sites :3 (I don't mind if some sites use it as a fingerprint to track me)

Yep, I may be a bit of paranoid for privacy, doing too much things like these is probably not good for mind and health, so.. I like to go (half-)offline periodically :3 Anyway, clearnet is naughty/creepy, you never know how creative those cats can be..:

Browser-difference2.png (0x0)

The screenshot shows the difference of surfing a Discourse forum from Firefox 59 and Icecat (Firefox ESR 52) (I guess it may have sth to do with browser version header, but nothing changed when I used User-agent and marked Firefox 59 as IE.., maybe it's because my Icecat is much smarter XD)

Edit: Even different projects in Github have different version, I guess it's caused by some features, not Github wants to do its user a mischief, anyway, that's the clearnet we are using..

Github-difference.png (0x0)

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

Как я ранее писал, разочарование в IPFS заставило искать иные способы георепликации. Плюс к этому — глюки Cloudflare, из-за которых пришлось отказаться от их кеширования, что привело к росту нагрузки на сервер и необходимости растаскивать нагрузку по нескольким серверам. Очевидное решение — Round Robin DNS. Но вылезает несколько мелких проблем:

  • Файлы, которые аплоадятся только на одну ноду, не появляются мгновенно на других при использовании любых средств синхронизации.
  • Автоматика получения и обновления сертификатов Let's Encrypt на Round Robin начинает буксовать.

Итак, у нас было три сервера:


  • Быстрый, основной, на Hetzner, с древними HDD, которых не хватает на высокую нагрузку
  • Быстрый, новый, на Scaleway. С SSD, но с малым объёмом диска, куда все аттачи тупо не влезут.
  • Тормозной, очень медленный VPS у Time4VPS, но с самым дешёвым терабайтом места.

​​​​​​​тут я замечу, что это [пока ещё?] не статья с точными инструкциями, а что-то типа блог-записи с мыслями. Может быть, со временем, доведу и до уровня статьи.

Задача.

Это позволит раскидать нагрузку по разным серверам и задействовать Round Robin DNS, когда одному доменному имени отвечают несколько IP.

Это решается, конечно, элементарно. Например, на NginX:

location ~ ^/forums/attaches/(\w\w/\w\w.*)$ {
    rewrite ^/forums/attaches/(\w\w/\w\w.*)$ <https://archive.attaches.forums.a0z.ru/$1> permanent;
}

location ~ ^/forums/attaches/((\d\d\d\d).*)$ {
    rewrite ^/forums/attaches/(\d\d\d\d)/(.+)$ <https://$1.f.a0z.ru/$2> permanent;
}

Вот дальше было хитрее.

Во-первых, синхронизация файлов между серверами. Я задействовал для этого Syncthing. Хотя он и тормозит при пересканировании, но его можно поставить очень редким (оставив свежее обновление по syncthing-inotify).

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

Это проблему я решил NginX-проксированием на вторичных серверах. Если файл существует, то он показывается. Если нет, то идёт прокси-запрос к мастер-серверу:

server_name 2018.f.a0z.ru;
location / {
# ...
    try_files $uri @htz;
}

location @htz {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass <http://htz.wrk.ru;>
}

# ...

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

Дальше — вопрос сертификата Let's Encrypt при использовании Round Robin DNS. Тут пришлось много возиться и экспериментировать. Я опущу все промежуточные проблемы и эксперименты и поделюсь итоговым решением.

На всех вторичных серверах нужно направить запросы с подкаталогу /.well-known/acme-challenge на мастер-сервер:

location /.well-known/acme-challenge/ {
    proxy_set_header    Host                $host;
    proxy_pass          <http://htz.wrk.ru;>
}

На мастер-сервере отправляем отдачу этого подкаталога из конкретного места сервера:

location ^~ /.well-known/acme-challenge/ {
    default_type "text/plain";
    root /var/www/html/letsencrypt;
}

Прописываем этот путь в настройках /etc/letsencrypt/cli.ini:

authenticator = webroot
webroot-path = /var/www/html/letsencrypt
post-hook = service nginx reload
text = True

Также там же жёстко прописываем плагин аутентификации по умолчанию (webroot). Нужно убедиться, что данный каталог нормально отдаётся со вторичных серверов. Потом можно получать сертификаты:

./certbot-auto certonly -d 2016.f.a0z.ru

(продолжение следует)

Changelog: April 4, 2018

- Posted in ZeroBlog by with comments

Rev3402

  • File server port randomization: In the past few days I got reports that the Great Firewall of China started blocking the ZeroNet protocol based on the port number and also using Deep packet inspection. Using the information and remote shells I got from other ZeroNet users (Thanks again) I was able to reproduce, debug and add a workaround for this restriction. One of the solutions is instead of using a fixed port (15441) your client will listen on a random port (10000-40000). (so please update to allow other clients behind of GFW connect to you)
  • Really enable implicit SSL connection by fixing a typo (doh)
  • Pack a websocket client to allow run any ZeroFrame API call from command line using. Eg.: zeronet.py siteCmd 1yoursite fileGet content.json
  • Command line sitePublish action using websocket connection instead of file server command.
  • Fix site Check files option to allow start seeding files not downloaded using ZeroNet
  • Fix optional file handling when a site has multiple files with the same hash_id (first 4 character of sha512 value)
  • Provide correct result for fileRules for not yet existent user files by using the currently selected certificate
  • Workaround for Chrome 66 Beta IFrame display bug
  • Use transform to scale progress bar instead of width to save some CPU time

Currently I'm working on a connection information page that will allow you to follow what's happening under the hood and get a better overview on possible errors. Eta: 1-2week

Glasba.Blog

- Posted in Geekless.Blog by with comments

Завел еще один блог.

Пока нельзя даже сказать, что всё держится на костылях и подпорках — вообще не держится. Чтобы выкладывать материал, как я задумал, требуется, чтобы парсер markdown-а не портил таблицы, плюс желательно всяких скриптов, чтобы меньше набирать вручную. Ну постепенно доделаю.

Создал блог Geekless.Twitter под всякий флуд и оффтопик.

Прикольно, New ZeroNet Sites, похоже, реально где-то используется для автосидирования. Добавил сайт в New ZeroNet Sites и sites.zeronetwork.bit — через 2 минуты найдено уже 4 пира.

WSL

- Posted in Flood@Balancer by with comments

Чего? В ней есть подсистема запуска POSIX приложений, но это не делает её UNIX

wsl-ssh.png (1241x732)​​​​​​​

Есть такой каталог блогов ZeroBlogs.bit, он заброшен уже два года, с апреля 2016-го. В нем перечислено 67 блогов, созданных в 2015-2016 годах. (На самом деле 68, но ссылку на блог nofish-а не считаем.) Многие из этих блогов не представлены в других каталогах сайтов, потому что тех каталогов тогда еще не было.

Я заметил, что многие блоги заброшены примерно в то же время, в 2016-м. Так что решил проверить, насколько хорошо ZN хранит данные — какие шансы найти пиров для сайта, который никогда не был популярен, а теперь уже пару лет заброшен.

Вот что у меня получилось:

  • Более половины скачались без задержек.
  • Большинство остальных открылось через 1-2 минуты.
  • 5 или 6 штук открылись только через несколько часов попыток.
  • 4 сайта так и не открылись.

Итого, 6% сайтов оказались недоступны. Но для всех 4-х сайтов сеть находит пиры, просто не может соединиться. Вероятно, все источники находятся за NAT.

За одно я посчитал, какие языки мне встретились:

Сайты, которые не открылись:

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

UPDATE: Примерно через сутки после начала этого эксперимента оставшиеся 4 сайта всё же открылись. Таким образом, все 67 блогов доступны в сети.

Px marices with ESP8266

- Posted in DIY@Balancer by with comments

How to connect Px-matrix to ESP8266 without additional chips.

Попалось интересное решение по подключению RGB LED матрицы (Px) к ESP8266/NodeMCU. Обычным вариантом такое не сделать, так как требуется 13 линий (6 — данные, 7 — управление) а на ESP8266 ног не хватает. Я для этого цеплял матрицу к Ardunio Mega, а уже на Mega скармливал управляющий код с ESP по serial. А тут товарищ извернулся, закольцевав шину данных и скармливая туда данные по одной линии. Т.е. получилось как раз 8 линий:

https://github.com/2dom/PxMatrix

P10_cables.jpg (1200x900)

Я, конечно, переделывать уже не буду, даже шилд сделал для подключения ESP01 к Arduno Mega, но на будущее может пригодиться :)

ZeroNet и IPFS

- Posted in Geekless.Blog by with comments

(Это ответ в тему на форуме, чтобы сэкономить там место.)

dude: optional/bigfiles умеют дедупликацию? ipfs умеет

geekless: Допилят когда-нибудь. Нет смысла тащить целый IPFS ради частной фичи.

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

Я согласен, но я думаю, все технологии, которые реально взлетели, делались не так — «потратим 5 лет, задизайним крутую штуку», а так — «есть идея, делаем реализацию из костылей и подпорок и смотрим, кто-то вообще будет пользоваться, или нет». ZN уже сейчас показывает свою полезность. (По крайней мере, лично для меня.) А IPFS я потыкал и отложил в сторону, потому что не нашел для себя ни одного применения. Поэтому если ZN допилят до крутых фич, а IPFS помрёт — туда и дорога. (Если случится наоборот, тоже плакать не буду. ;) ) Возможно, лет через 5 будет и дедупликация, и адресация контента по хэш-суммам, и прочие фичи. Но даже без этих фич ZN-ом можно пользоваться прямо сейчас.

У ZN удачная точка фокуса — сама пиринговая сеть в качестве глобального хостера сайтов, а не конкретный протокол этой сети. Можно сменить или доработатьть протоколы поиска узлов и протоколы обмена данными, можно сменить язык реализации, можно вообще заменить HTML-браузер на что-то другое (мало ли что там придумают лет через 20) — но суть сети от этого не изменится. Вот это мне нравится тут, потому что позволяет надеяться, что постепенно все недочеты исправят.

У IPFS, насколько я понимаю, нет именно вот этого свойства «глобального хостера», там надо вручную пинить данные на ноде. Получается, он сразу не пригоден в качестве гипертекстового фидонета, это не готовый продукт.

Я помню, как я году в 2005-м сидел и мечтал о крутой операционной системе, в которой есть и то, и это, и пятое, и десятое. А сейчас большая часть этих мечталок есть в линуксе прямо из коробки (например, вспоминаются мечталки о ZRAM swap и о удобной контейнеризации приложений), плюс куча всего, что я тогда и представить бы не смог. :)