First Yggdrasil Network release candidate in a while, will likely aim for a general release later this week.

https://github.com/yggdrasil-network/yggdrasil-go/releases/tag/v0.5.13-RC.1

#yggdrasil #yggdrasilnetwork #meshnet #meshnetworking #meshnetworks #e2ee #decentralized

Release Version 0.5.13-RC.1 · yggdrasil-network/yggdrasil-go

Go 1.24 is now required to build Yggdrasil Added Pledge is now used on OpenBSD to drop privileges after startup yggdrasilctl getPeers can now optionally sort the peers using sort=uptime or sort=c...

GitHub

Перевод на русский с интеграцией хэштегов прямо в текст.

---

# Настройка Fedi-сервера Snac для сети Yggdrasil | DevZone

#Fediverse #Yggdrasil #SelfHosting #P2P #Linux

Время чтения: 15 минут
11 мая

Вскоре после моих [размышлений о p2p](https://devzone.org.ua/post/hrabli-p2p) я решил попробовать развернуть собственный экспериментальный инстанс #Fediverse. Причём сделать это средствами оверлейной сети #Yggdrasil, так как я не планирую покупать выделенный IP или VPS для этой игрушки; вместо этого сервер будет хоститься за модемом — на одноплатнике или даже на ПК, когда я в сети, с динамическим адресом за NAT.

Эта заметка в первую очередь написана для себя, но может быть полезна тем, кто, как и я, только начинает эксперименты с администрированием собственного узла Fediverse и интересуется альтернативными сетями в контексте #Linux.

## Что такое Snac

#Snac #ActivityPub #Minimalism

[Snac](https://codeberg.org/grunfink/snac2) — это минималистичная альтернатива серверу #Mastodon, написанная на C, без JavaScript и без необходимости установки PostgreSQL. Все данные профилей хранятся в JSON-файлах. Недавно в сервер была добавлена [поддержка IPv6](https://codeberg.org/grunfink/snac2/pulls/256), поэтому он корректно работает и с диапазоном Yggdrasil `0200::/7`.

Поскольку Yggdrasil позволяет бесплатно генерировать неограниченное количество статических IP (на основе приватного ключа #Ed25519), в DNS здесь обычно нет необходимости. Опционально можно прикрутить #Alfis, но лично я этого не делаю (в том числе из-за до сих пор нерешённой проблемы #364), поэтому и не навязываю его в рамках протокола ActivityPub — формат будет просто `username@IPv6`, без необходимости что-то обновлять или «майнить» позже.

## Установка

#BuildFromSource #LinuxAdmin

1. Точный список пакетов для Debian я не знаю — система не новая и многое уже установлено. Согласно [README](https://codeberg.org/grunfink/snac2#building-and-installation), мне понадобились только `libssl-dev` и `libcurl4-openssl-dev` (в Fedora — примерно то же самое, но с суффиксом `-devel`).
2. Создаём отдельного системного пользователя для изоляции от потенциальных уязвимостей:

```
useradd -m snac
```
3. Для удобства меняем shell на bash в `/etc/passwd`.
4. Логинимся `su snac` и переходим в домашний каталог: `cd`.
5. Качаем исходники:
`git clone https://codeberg.org/grunfink/snac2.git`
6. Переходим в каталог проекта: `cd snac2`.
7. Компилируем и устанавливаем:
`make && sudo make install`.
8. Инициализируем хранилище сервера:
`snac init /home/snac/storage`.
9. Добавляем первого пользователя:
`snac adduser /home/snac/storage`.
10. Выходим обратно под root: `exit`.

## Конфигурация

#Networking #Yggdrasil

У меня уже установлен и настроен узел Yggdrasil. Если интересно — см. [предыдущую публикацию](https://devzone.org.ua/post/yggdrasil-mereza-z-detsentralizovanym-routynhom) или [официальную документацию](https://yggdrasil-network.github.io/documentation.html).

### Адрес подсети Yggdrasil

#IPv6

Этот шаг можно пропустить и использовать основной адрес `2*`, если порты `80` или `8001` свободны. Но важно понимать: в API ActivityPub сервер Snac сообщает свой адрес другим узлам, и те кэшируют его как часть ID. Поскольку адрес хранится в файлах, а не в БД, заменить его потом будет сложно. Поэтому лучше сразу выделить отдельный адрес, особенно для продакшена.

1. `yggdrasilctl getself` — узнаём свой IP и диапазон IPv6.
2. `ifconfig lo inet6 add IP` — вместо IP указываем произвольный адрес из полученного диапазона, например `3xx:xxxx:xxxx:xxxx::fed/64`.

⚠️ Данные, добавленные через `ifconfig`, не сохраняются после перезагрузки. Команду нужно прописать, например, в `/etc/netplan/01-ygglo.yaml`, `/etc/network/interfaces` или в `systemd`-сервис `yggdrasil.service` (через `ExecStartPost=`).

### Nginx-прокси

#Nginx #ReverseProxy

На сервере уже установлен Nginx, занимающий порт `80`. Менять это я не хочу, как и светить Snac на стандартном порту `8001`. Поэтому, имея выделенный IPv6-адрес, просто проксирую API на `80`, используя пример из [оригинальной конфигурации](https://codeberg.org/grunfink/snac2/src/branch/master/examples/nginx-alpine-ssl/default.conf):

```nginx
server {
listen [3xx:xxxx:xxxx:xxxx::fed]:80;
server_name 3xx:xxxx:xxxx:xxxx::fed;

location @proxy {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_pass http://[3xx:xxxx:xxxx:xxxx::fed]:8001;
}

location /.well-known/webfinger { try_files $uri @proxy; }
location /.well-known/nodeinfo { try_files $uri @proxy; }
location / { try_files $uri @proxy; }
location /fedi/ { try_files $uri @proxy; }
}
```

SSL здесь намеренно отсутствует: #Yggdrasil уже обеспечивает защищённый канал, и дополнительный слой не нужен.

Административный API (`admin` и `oauth`) я ограничил по IP, поскольку у клиентов Yggdrasil адреса тоже статические:

```nginx
location ~ /([^\/]+/admin|oauth) {
allow ADMIN_IP;
deny all;
try_files $uri @proxy;
}
```

### Конфигурация Snac

#JSON #Config

Редактируем `/home/snac/storage/server.json`, созданный командой `snac init`:

```json
{
"host": "[3xx:xxxx:xxxx:xxxx::fed]",
"address": "3xx:xxxx:xxxx:xxxx::fed",
"port": 8001,
"protocol": "http"
}
```

В моём случае протокол намеренно `http`.

### Доступ через iptables / ufw

#Firewall

Открываю порт только для диапазона Yggdrasil:

```
ufw allow from 0200::/7 to any port 80
```

Если не используете Nginx — указывайте реальный порт, например `8001`.

### systemd

#Systemd

На основе [официального примера](https://codeberg.org/grunfink/snac2/src/branch/master/examples/snac.service):

```ini
[Unit]
After=network-online.target
Wants=network-online.target

[Service]
User=snac
ExecStart=/usr/local/bin/snac httpd /home/snac/storage

[Install]
WantedBy=multi-user.target
```

## Бэкапы

#Backup #Rsync

Так как база — это файлы, резервное копирование тривиально. Использую `rsync` через `crontab -e`:

```
@daily rsync -av --delete /home/snac/storage /path/to/snac/daily
@weekly rsync -av --delete /home/snac/storage /path/to/snac/weekly
@monthly rsync -av --delete /home/snac/storage /path/to/snac/monthly
```

## Использование

#FediverseAdmin

После запуска (`snac httpd /home/snac/storage` или через systemd) можно открыть
`http://[3xx:xxxx:xxxx:xxxx::fed]` в браузере.

### Тест взаимодействия

#ActivityPub

Для проверки федерации разверните второй узел в Yggdrasil и попробуйте подписку или переписку через Web UI или клиент.

### Настройка браузера

#Firefox #IPv6

При первом использовании Yggdrasil-сайтов в Firefox может понадобиться изменить параметры в `about:config`:

* `browser.fixup.fallback-to-https = false`
* `browser.fixup.alternate.enabled = false`

---

#Fediverse #YggdrasilNetwork #Decentralization #AltNet #SelfHosted

Fediverse - the social network of the future
https://fediverse-decentralize.blogspot.com/2026/01/blog-post_10.html

1/2 I'm working on making #download becoming the next #streaming ; simple #yggdrasilNetwork powered music #P2P dubbed #cjdradio is 2yo next month. Crafting a leech only player for on-demand streaming is my current job.

Note: Cjdradio allows to give access to a "private", unshared collection to selected (possibly distant) Yggdrasil IPs (which remains forever valid and authenticated by cypher and #E2Ee 'd at the transport layer)

Who needs hundreds of millions of tracks ? Nobody. But 5 friends…

Ah, the dream of a "True P2P Email" 🌐💌, now floating atop the mythical Yggdrasil Network 🌳—because clearly, the world just can't get enough of mind-bending tech jargon. GitHub's latest endeavor isn't just about writing "better code" with AI, it's about making us ponder why email needed to be any more mythological. 🧙‍♂️📧
https://github.com/JB-SelfCompany/Tyr #TrueP2PEmail #YggdrasilNetwork #MindBendingTech #GitHub #AIInnovation #EmailMythology #HackerNews #ngated
GitHub - JB-SelfCompany/Tyr: True P2P Email on top of Yggdrasil Network for Android

True P2P Email on top of Yggdrasil Network for Android - JB-SelfCompany/Tyr

GitHub
GitHub - JB-SelfCompany/Tyr: True P2P Email on top of Yggdrasil Network for Android

True P2P Email on top of Yggdrasil Network for Android - JB-SelfCompany/Tyr

GitHub
Clewn's Open Mesh

Joint access mesh networking: meshlocals experiment

Hey ! Are you into #meshlocal ; #meshnet ; #yggdrasilNetwork or or similar overlay, trusted networks just like me ? The CDC (Critical Decentralisation Cluster) will relive the #decentralization (and privacy) devroom at #FOSDEM on Jan 31/Feb 1 in Brussels (Belgium), and they need people to run on-topic talks ! Read more and apply at https://decentral.community/FOSDEM2026/
Decentralized Internet and Privacy Devroom at FOSDEM 2026

decentral.community

decentral.community

What do you guys think on

$==--- THINKING ---==$

The yggdrasil protocol?

#yggdrasil #yggdrasilnetwork #yggdrasilnetwork

OK bon une appli d'appel vidéo IP-à-IP utilisant le réseau de confiance #yggdrasilNetwork pour authentifier pour toujours une IP et chiffrer en couche transport, c'était un petit hobby que j'ai eu en octobre, et voici la alpha, c'est un outil minimaliste et plus une preuve de concept qu'autre chose, mais la solution historique Linphone, de nos jours, s'est concentrée sur le SIP et sans serveur tiers, pour du IP à IP, n'est plus du tout adaptée voire inutilisable. Donc https://codeberg.org/shangril/visiophonygg !
visiophonygg

A simple IP-to-IP, 1 to 1 video call application for the Yggdrasil network

Codeberg.org
Ugg... The Yggdrasil msi installer is broken, trying to figure out how to fix, but I don't feel like installing Wix tooset and getting it into my msys2 path right now. Look, I understand that Windows is a pain in the ass, and I would love to just use Linux for everything. I can't though, some people just have to use it for some things. Could we at least try to maintain a working installer please. Just ugg! #yggdrasilNetwork #yggdrasilGo #ipv6 #decentralized