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

Что можно делать в Freenet:

  1. Публиковать и скачивать контент: В Freenet можно анонимно публиковать и скачивать различные типы файлов (текст, изображения, аудио, видео). Контент загружается в зашифрованном виде, и все участники сети хранят небольшие его фрагменты.

  2. Посещать FMS (Freenet Message System): FMS — это анонимная доска объявлений или система обсуждений, подобная форумам, которая работает поверх Freenet. В ней пользователи могут обмениваться сообщениями, не раскрывая свою личность.

  3. Создавать анонимные сайты (Freesites): Freenet поддерживает создание и размещение простых статических веб-сайтов, называемых Freesites. Эти сайты анонимны и распределены по всей сети.

  4. Чат в режиме реального времени (Frost): Frost — это клиент, который позволяет вести анонимные чаты, делиться файлами и участвовать в обсуждениях на форумах в реальном времени через Freenet.

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

Преимущества Freenet:

  • Анонимность: Ваши действия и контент остаются анонимными. Никто не может определить, кто опубликовал или скачал конкретный файл.
  • Устойчивость к цензуре: Freenet предназначена для противодействия цензуре, и информация в ней практически не поддается удалению.
  • Децентрализация: Freenet не имеет центрального сервера, а данные хранятся на узлах участников сети.

Недостатки и риски:

  • Медленное соединение: Freenet может быть медленной по сравнению с обычным интернетом, особенно при использовании в режиме высокой анонимности.
  • Ограниченные ресурсы: В Freenet доступен гораздо меньший объем информации, чем в обычном Интернете.
  • Контент: Из-за анонимности и отсутствия цензуры сеть может использоваться для размещения нелегального или нежелательного контента. Пользователи должны проявлять осторожность при взаимодействии с файлами и веб-страницами.

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

Установка Freenet Debian

Сборку из исходников рассматривать пока не буду. Для винды, macOS и Linux читаем на сайте hyphanet.org

Для примера создать каталог mkdir ~/freenet

Для работы необходима Ява. Обновить индекс пакетов:

sudo apt update

Проверить установлена или нет Ява:

java -version

Если нет, то будет вывод:

bash: java: команда не найдена

Установка JRE

sudo apt install default-jre

На будущее, как надумаю собрать все ручками установить JDK

sudo apt install default-jdk

Скачать установочный файл с помощью команды :

wget https://www.draketo.de/dateien/freenet/build01498/new_installer_offline_1498.jar -O ~/freenet/new_installer_offline.jar

Запустить установочный файл с помощью Java:

java -jar ~/freenet/new_installer_offline.jar

Появится окно выбора языка:

выбор языка

Потом приветствие:

Приветствие

Выбрать каталог /home/USER/freenet, где будет жить Freenet:

Путь к установке

Выбор наборов, информация о необходимом месте на диске:

Набор установок

Прогресс установки Freenet:

Прогресс

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

Установки

Настройка ярлыков:

Ярлыки

Хэппи энд:

Последний штрих

Автоматически откроется браузер с адресом http://127.0.0.1:8888/

Настройка Freenet

На странице настройки поскольку еще нет знакомых подключенных к сети опцию I know someone who runs Freenet оставляем пустым. То есть будет происходить подключение через незнакомые узлы. Можно открыть узел Freenet на сервере и добавить его в дружественный и через него будет происходить подключение.

Опцию I have a monthly bandwidth limit следует использовать если есть ограничения по трафику.

В блоке Storage после Give указать, сколько пространства на диске вы хотите выделить для хранения данных Freenet. Минимальное значение — 0.04 GiB, но лучше выделить больше, сколько не жалко.

Если необходим пароль для входа то указать его поставив галку для опции I want Freenet to require a password when it starts заполнив поля.

Сохранить настройки нажав кнопку Save

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

Установка Freenet на сервер Ubuntu

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

Зайти на сервер по ssh

Проверить установлена или нет Ява:

java -version

Если нет, будут предложены варианты:

Command 'java' not found, but can be installed with:
sudo apt install openjdk-11-jre-headless  # version 11.0.24+8-1ubuntu3~22.04, or
sudo apt install default-jre              # version 2:1.11-72build2
sudo apt install openjdk-17-jre-headless  # version 17.0.12+7-1ubuntu2~22.04
sudo apt install openjdk-18-jre-headless  # version 18.0.2+9-2~22.04
sudo apt install openjdk-19-jre-headless  # version 19.0.2+7-0ubuntu3~22.04
sudo apt install openjdk-21-jre-headless  # version 21.0.4+7-1ubuntu2~22.04
sudo apt install openjdk-8-jre-headless   # version 8u422-b05-1~22.04

Установить последнюю:

sudo apt install openjdk-21-jre-headless

Создать каталог mkdir ~/freenet скачать установщик:

wget https://www.draketo.de/dateien/freenet/build01498/new_installer_offline_1498.jar -O ~/new_installer_offline.jar

Запустить установку в консольном режиме добавив ключ -console:

java -jar ~/new_installer_offline.jar -console

Спросят куда устанавливать, указать нужный путь к директории. /home/USER/freenet

Вывод:

Select target path [/home/USER] 
/home/USER/freenet
press 1 to continue, 2 to quit, 3 to redisplay
1
[ Starting to unpack ]
[ Processing package: Base (1/3) ]
[ Processing package: License (2/3) ]
[ Processing package: Unix (3/3) ]
[ Unpacking finished ]
[ Starting processing ]
Starting process Setting up the environment (1/17)
Offline installation mode
File './wrapper.jar' already exists.
Starting process Setting the Updater up (2/17)
Starting process Setting Opennet up (3/17)
Starting process Setting JSTUN up (4/17)
Downloading the STUN plugin
Starting process Setting UPnP up (5/17)
Downloading the UP&P plugin
Starting process Setting Librarian up (6/17)
Downloading the Library plugin
Starting process Setting KeyUtils up (7/17)
Downloading the KeyUtils plugin
Starting process Setting ThawIndexBrowser up (8/17)
Downloading the ThawIndexBrowser plugin
Starting process Setting Sharesite up (9/17)
Downloading the Sharesite plugin
Starting process Setting plugins up (10/17)
Starting process Downloading freenet-stable-latest (11/17)
Starting process Downloading freenet-ext (12/17)
Starting process Downloading bcprov (13/17)
Starting process Detecting port availability (14/17)
Detecting tcp-ports availability...
Starting process Setting up auto-start (15/17)
Enabling auto-start.
Installing cron job to start Freenet on reboot...
Installed cron job.
Starting process Starting the node up (16/17)
Starting Freenet 0.7...
Starting process Cleaning up (17/17)
All done, please click Next
[ Console installation done ]

В cron будет добавлена строка автостарта при перезагрузке.

Удалить установщик rm ~/new_installer_offline.jar

Для окончательной настройки переподключиться к серверу:

ssh -L 8888:127.0.0.1:8888 -L 9481:127.0.0.1:9481 USER@domain.server

  • Порт 8888 - для прокси, через который происходит доступ к данным из браузера.
  • Порт 9481 - для API интерфейса, который использует jSite

Если на машине с которой происходит удаленное подключение к серверу был установлен Freenet, его нужно остановить или в браузере на главной странице внизу нажать кнопку Shutdown Freenet

В браузере набрать http://127.0.0.1:8888/ Теперь можно серфить удаленно подключившись к серверу.

Что еще нужно знать про Freenet:

По поводу возможных вопросов читать тут

Для повышения безопасности рекомендуется использовать отдельный браузер для работы с Freenet в режиме конфиденциальности.

Запуск Freenet из командной строки:

~/freenet/./run.sh start

Остановка Freenet из командной строки:

~/freenet/./run.sh stop

Файл настройки Freenet

nano ~/freenet/freenet.ini

# This file is overwritten whenever Freenet shuts down, so only edit it when the node is not running.
# Этот файл перезаписывается при каждом завершении работы Freenet, поэтому редактировать его нужно только при выключенном узле.

console.ssl=false
# Отключает SSL (шифрование) для консоли управления.

console.enabled=false
# Отключает консоль управления Freenet.

security-levels.networkThreatLevel=NORMAL
# Устанавливает уровень угрозы сети на "нормальный", то есть стандартный уровень безопасности.

security-levels.physicalThreatLevel=NORMAL
# Устанавливает физический уровень угрозы на "нормальный", то есть стандартный уровень безопасности.

fproxy.allowedHosts=127.0.0.1,0:0:0:0:0:0:0:1
# Разрешает доступ к веб-интерфейсу fproxy (локальный веб-прокси Freenet) только с localhost и адреса ::1 (IPv6).

fproxy.showPanicButton=false
# Отключает кнопку "Паника" в интерфейсе fproxy (кнопка для быстрого отключения узла).

fproxy.publicGatewayMode=false
# Отключает публичный режим шлюза, т.е. делает Freenet недоступным для внешних пользователей через веб.

fproxy.port=8888
# Устанавливает порт для fproxy (локального веб-интерфейса) — 8888.

fproxy.noConfirmPanic=false
# Требует подтверждения перед выполнением действия кнопки "Паника".

fproxy.enableCachingForChkAndSskKeys=false
# Отключает кэширование CHK и SSK ключей (используется для контента в Freenet).

fproxy.hasCompletedWizard=true
# Указывает, что мастер первичной настройки завершен.

fproxy.ssl=false
# Отключает SSL (шифрование) для fproxy.

fproxy.enabled=true
# Включает fproxy, локальный веб-прокси для взаимодействия с узлом через браузер.

fproxy.bindTo=127.0.0.1,0:0:0:0:0:0:0:1
# Привязывает fproxy к локальному IP-адресу (localhost и ::1 для IPv6).

fproxy.allowedHostsFullAccess=127.0.0.1,0:0:0:0:0:0:0:1
# Полный доступ к fproxy разрешен только с localhost.

logger.maxZippedLogsSize=10485760
# Максимальный размер сжатых логов — 10 МБ.

logger.priority=WARNING
# Уровень логирования — предупреждения и ошибки (WARNING).

pluginmanager.loadplugin=Library;KeyUtils;Sharesite
# Автозагрузка плагинов: библиотека, утилиты для работы с ключами, плагин Sharesite для обмена сайтами.

pluginmanager.enabled=true
# Включает менеджер плагинов.

ssl.sslKeyStorePass=freenet
# Пароль для хранилища SSL-ключей.

ssl.sslKeyPass=freenet
# Пароль для SSL-ключа.

ssl.sslKeyStore=datastore/certs
# Путь к хранилищу сертификатов SSL.

ssl.sslEnable=false
# Отключает SSL (шифрование) для всех подключений.

toadletsymlinker.symlinks=/sl/search/%23/plugins/plugins.Librarian/;/sl/gallery/%23/plugins/plugins.TestGallery/
# Символьные ссылки для плагинов Librarian и TestGallery, используемые для поиска и галереи.

node.masterKeyFile=master.keys
# Файл мастер-ключей для узла.

node.probeLinkLengths=true
# Включает проверку длины ссылок для мониторинга узла.

node.slashdotCacheSize=107374182
# Размер кэша Slashdot — около 107 МБ.

node.minDiskFreeShortTerm=536870912
# Минимальный объем свободного места на диске для краткосрочного хранения — 512 МБ.

node.probeStoreSize=true
# Включает проверку размера хранилища данных.

node.downloadsDir=./downloads
# Папка для загрузки файлов — "./downloads".

node.uploadAllowedDirs=all
# Разрешает загрузку файлов из всех каталогов.

node.outputBandwidthLimit=163840
# Лимит исходящего трафика — 163840 байт/с (160 КБ/с).

node.probeBuild=true
# Включает проверку сборки узла.

node.maxPacketSize=1280
# Максимальный размер пакета — 1280 байт.

node.connectionSpeedDetection=true
# Включает обнаружение скорости соединения.

node.probeIdentifier=true
# Включает мониторинг идентификатора узла.

node.probeOverallBulkOutputCapacityUsage=true
# Включает мониторинг использования исходящей пропускной способности.

node.probeBandwidth=true
# Включает мониторинг пропускной способности.

node.minDiskFreeLongTerm=1073741824
# Минимальный объем свободного места на диске для долгосрочного хранения — 1 ГБ.

node.probeLocation=true
# Включает проверку геолокации узла.

node.storeSize=858993460
# Размер хранилища данных узла — около 858 МБ.

node.probeUptime=true
# Включает мониторинг времени работы узла.

node.identifier=3794814349636256417
# Идентификатор узла.

node.downloadAllowedDirs=all
# Разрешает загрузку файлов в любые каталоги.

node.storeType=salt-hash
# Тип хранилища данных — salt-hash (хэшированный формат).

node.assumeNATed=true
# Предполагает, что узел находится за NAT.

node.minimumCompressionPercentage=10
# Минимальный процент сжатия данных — 10%.

node.clientCacheSize=107374182
# Размер кэша клиента — около 107 МБ.

node.peersOffersDismissed=false
# Отключает автоматическое отклонение предложений от пиров.

node.probeRejectStats=true
# Включает проверку отклоненных запросов статистики.

node.amountOfDataToCheckCompressionRatio=8388608
# Количество данных для проверки коэффициента сжатия — около 8 МБ.

node.bindTo=0.0.0.0
# Привязывает узел к IP-адресу 0.0.0.0, что позволяет принимать соединения на всех интерфейсах.

node.clientCacheType=salt-hash
# Тип кэша клиента — salt-hash.

node.l10n=Русский
# Локализация узла — русский язык.

node.name=Freenet node with no name #-5353045215024910457
# Имя узла — автоматически сгенерированное.

node.inputBandwidthLimit=1048576
# Лимит входящего трафика — 1048576 байт/с (1 МБ/с).

node.listenPort=32264
# Порт для прослушивания входящих соединений — 32264.

node.storePreallocate=true
# Включает предварительное выделение места для хранилища.

fcp.allowedHosts=127.0.0.1,0:0:0:0:0:0:0:1
# Разрешает подключение к Freenet Client Protocol (FCP) только с localhost.

fcp.port=9481
# Порт для FCP — 9481.

fcp.ssl=false
# Отключает SSL для FCP.

fcp.bindTo=127.0.0.1,0:0:0:0:0:0:0:1
# Привязывает FCP к localhost (IPv4 и IPv6).

fcp.allowedHostsFullAccess=127.0.0.1,0:0:0:0:0:0:0:1
# Полный доступ к FCP только с localhost.

node.updater.updateSeednodes=true
# Включает обновление списка seed узлов.

node.updater.updateInstallers=true
# Включает обновление установочных файлов.

node.updater.URI=USK@vCKI0Kx8cAtKuticcaZ-dwOgmkYPVLj~N1dmz9IYtd3Smg4Y,-cAtKuti7PlhI8Kx4cAwpU9mb6PyOn8wABn60,AQACAAE/jar/1498
# URI для автоматического обновления узла Freenet.

node.updater.autoupdate=false
# Отключает автоматическое обновление узла.

node.install.persistentTempDir=./persistent-temp
# Каталог для временных файлов — "./persistent-temp".

node.install.cfgDir=.
# Каталог для конфигурационных файлов — текущий каталог.

node.install.storeDir=./datastore
# Каталог для хранения данных — "./datastore".

node.install.userDir=.
# Домашний каталог пользователя — текущий каталог.

node.install.pluginStoresDir=plugin-data
# Каталог для данных плагинов — "plugin-data".

node.install.tempDir=./temp
# Каталог для временных файлов — "./temp".

node.install.nodeDir=.
# Каталог для узла — текущий каталог.

node.install.pluginDir=./plugins
# Каталог для плагинов — "./plugins".

node.install.runDir=.
# Каталог для выполнения узла — текущий каталог.

node.opennet.assumeNATed=true
# Предполагает, что узел подключен через NAT.

node.opennet.acceptSeedConnections=false
# Отключает прием соединений от seed узлов.

node.opennet.listenPort=19292
# Порт для соединений в сети Opennet — 19292.

node.opennet.enabled=true
# Включает работу в сети Opennet.

node.opennet.bindTo=0.0.0.0
# Привязывает узел Opennet к IP-адресу 0.0.0.0.

node.load.subMaxPingTime=700
# Устанавливает максимальное время отклика (ping) для подзадач — 700 мс.

node.load.threadLimit=1000
# Ограничивает количество потоков до 1000.

node.load.maxPingTime=1500
# Устанавливает максимальное время отклика (ping) — 1500 мс.

Обновление оболочки Freenet

Производится прямо из браузера, будет предупреждение:

Обновление

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