This commit is contained in:
2026-09-09 02:14:19 +03:00
parent 69b78b5db1
commit 88e5e113f8
4 changed files with 105 additions and 2 deletions
+8
View File
@@ -0,0 +1,8 @@
{{define "content"}}
<h2>
blogs
</h2>
<ul>
<li><a href="/blog/xmpp">hosting xmpp on i2p</a> — september 9th 2026</li>
</ul>
{{end}}
+94
View File
@@ -0,0 +1,94 @@
{{define "content"}}
<h2>
tootorial on how to host xmpp server on i2p
</h2>
<p>requirements i2pd (might work with the java i2p's too) and prosody
<br>
<b>dont follow this guide blindly read <a href="https://prosody.im/doc/">prosody</a> and <a href="https://docs.i2pd.website/en/latest/">i2pd</a> documentation</b>
</p>
<h2>
i2pd setup
</h2>
<p>
make sure you have the socks proxy enabled in /etc/i2pd/i2pd.conf it should be enabled by default
<br>
edit /etc/i2pd/tunnels.conf add the following tunnels (if you dont want c2s, s2s or to use prosodys html server you can feel free to delete the entries for them)
</p>
<pre>
[prosody-s2s]
type=server
host=127.0.0.1
port=5269
inport=5269
keys=prosody.dat
[prosody-c2s]
type=server
host=127.0.0.1
port=5222
inport=5222
keys=prosody.dat
[prosody-html]
type=server
host=127.0.0.1
port=5281
inport=5281
keys=prosody.dat</pre>
<p>then go to the <a href="http://localhost:7070/?page=i2p_tunnels">i2pd webconsoles</a> i2p tunnel page, the b32 address will be your address, you can choose to register it in reg.i2p if you want a shortened address like kisu.i2p (if you have a eepsite already like i do you can choose to reuse the same keys)</p>
<h2>
prosody setup
</h2>
<p>
you kinda need to read documentation for this as prosody configuration can be quite complex. i will provide basics for setting it up.
<br>
<br>
open up /etc/prosody/prosody.cfg.lua
note what path plugin_paths specifies, the default on gentoo is plugin_paths = { "/usr/lib64/prosody/modules", "/usr/lib64/prosody/community-modules" };
<br>
also check what the location for certificates is and what group prosody uses on gentoo this is "prosody" but on openbsd it is _prosody
<br>
<br>
you will need to download and place the mod_darknet.lua from <a href="https://github.com/majestrate/mod_darknet">https://github.com/majestrate/mod_darknet</a> module inside of the folder specified.
<br>
i will just do:
<pre>sudo mkdir /usr/lib64/prosody/community-modules
sudo wget -O /usr/lib64/prosody/community-modules/mod_darknet.lua https://raw.githubusercontent.com/majestrate/mod_darknet/refs/heads/master/mod_darknet.lua
</pre>
(this module is only needed for server to server (s2s))
<br>
<br>
to enable the module globally to all virtualhost just add it to the modules_enabled configution block, you also might want to enable other modules you can do so by uncommenting them, examples of these would be mam for message archiving, and s2s-bidi for bidirectional s2s
<br>
you also need to add the following to make i2p s2s work
<pre>s2s_secure_auth = false;</pre>
mod_darknet modules default settings are
<pre>darknet_socks5_host = "127.0.0.1";
darknet_socks5_port = 4447;
darknet_only = false;
darknet_force_all = false;</pre>
if you want to change these you should set the options at the global section of the prosody config
<br>
<br>
then to configure the virtualhosts, muc component and file upload component, you can use this skeleton i provided (you also might want to delete the "localhost" virtualhost (you can also use your shortened i2p url, but you also need to register the muc service if you want it accessible by others)
<pre>VirtualHost "xxx.b32.i2p"
Component "muc.xxx.b32.i2p" "muc"
-- darknet module needs to be enabled on the muc component seperately
modules_enabled = { "darknet", muc_mam" }
Component "upload.xxx.b32.i2p" "http_file_share"
modules_disabled = { "s2s" }
http_host = "xxx.b32.i2p:5281"
</pre>
now we can generate our certs, to generate a cert for all three just do
<pre>openssl genrsa -out /etc/prosody/certs/xxx.b32.i2p.key 2048
openssl req -new -x509 -key /etc/prosody/certs/xxx.b32.i2p.key -out /etc/prosody/certs/xxx.b32.i2p.crt -days 3650 -subj "/CN=xxx.b32.i2p" -addext "subjectAltName=DNS:xxx.b32.i2p,DNS:*.xxx.b32.i2p"
chown root:prosody /etc/prosody/certs/*.b32.i2p.{key,crt}
chmod 640 /etc/prosody/certs/*.b32.i2p.{key,crt}</pre>
<br><br>
now everything should be done and you can create accounts with prosodyctl adduser user@xxx.b32.i2p, you can also add that user to the admin config block.
<br>
to use these accounts you need an xmpp client and the i2p proxy on gajim you add user press advanced options create a new http proxy, you might need to accept the self signed certificate.
</p>
{{end}}
+1 -1
View File
@@ -1,7 +1,7 @@
{{define "content"}} {{define "content"}}
<h2> <h2>
Kisu's cool site Kisu's cool site
<p class="submissivetext">( idk what to write here, so its empty for now, thinking about nginx tricks maybe someone could find those helpful )</p> <p class="submissivetext">( not empty anymore woaw )</p>
</h2> </h2>
<p>public services i host</p> <p>public services i host</p>
<ul> <ul>
+2 -1
View File
@@ -1,6 +1,7 @@
<header> <header>
<p> <p>
<a href="/" target="_top"><b> Home</b></a><b> | <a href="/" target="_top"><b> Home</b></a><b> |
<a href="/contact" target="_top">Contact</a></b> <a href="/contact" target="_top">Contact</a></b> |
<a href="/blog" target="_top"><b>Blog</a></b>
</p> </p>
</header> </header>