<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.kanthaus.online/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Timber1</id>
	<title>Kanthaus wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kanthaus.online/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Timber1"/>
	<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/Special:Contributions/Timber1"/>
	<updated>2026-04-22T17:32:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.5</generator>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Positions_and_evaluations&amp;diff=2193</id>
		<title>Positions and evaluations</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Positions_and_evaluations&amp;diff=2193"/>
		<updated>2026-01-14T15:23:26Z</updated>

		<summary type="html">&lt;p&gt;Timber1: /* After evaluation */ Add information on evaluation notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This appears to be a duplicate of a page on the website https://kanthaus.online/en/governance/positionsandevaluations Consider deleting one or the other.}}&lt;br /&gt;
&lt;br /&gt;
👍️ This document is meant to give an overview about the structure of social hierarchy at Kanthaus.&lt;br /&gt;
&lt;br /&gt;
== Positions ==&lt;br /&gt;
&lt;br /&gt;
There are 3 positions at Kanthaus, in ascending level of responsibility &#039;&#039;and&#039;&#039; power they are: Visitor, Volunteer and Member. These Positions reflect and regulate the actual responsibility and power people hold. People move between Positions based on &#039;&#039;&#039;evaluation.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Evaluation ==&lt;br /&gt;
&lt;br /&gt;
Everyone at Kanthaus gets evaluated—it’s normal! Evaluation is a formal opportunity for you and the rest of the Kanthaus community to honestly inspect how that relationship is going and which Position suits you at this time: the whole thing lasts for ~1,5 hours. This document is a more human-readable version of the formal agreements located in the [https://kanthaus.online/governance/constitution Constitution].&lt;br /&gt;
&lt;br /&gt;
=== 1. Meeting with Kanthaus Volunteers and Members (~75 minutes) ===&lt;br /&gt;
&lt;br /&gt;
When it is time for your evaluation, a meeting will be arranged with you in which you and existing Kanthaus Members and Volunteers are invited. This will probably be done during a Coordination Meeting. No official notes will be taken, although you are welcome to take notes if you want, and an informal summary will be shared with the other Volunteers and Members afterwards. The only question that needs to be answered is whether you want to apply to continue at your current Position (e.g. Visitor) or progress to the next Position (e.g. Volunteer); aside from that the discussion is open and you are warmly invited to ask anything you want an answer to. Questions to consider include—&lt;br /&gt;
&lt;br /&gt;
* What project-work are you doing for Kanthaus, Wurzen or elsewhere?&lt;br /&gt;
* Where do you see your role in Kanthaus?&lt;br /&gt;
* What do you see as your strengths/allowable weaknesses?&lt;br /&gt;
* What have you enjoyed/disliked about your time so far?&lt;br /&gt;
* How do you prefer to receive critical feedback?&lt;br /&gt;
* Do you have any outstanding conflicts with people involved at Kanthaus?&lt;br /&gt;
* Do you have allergies, dietary requirements or medical conditions you want to tell us about?&lt;br /&gt;
* What are your plans for the future?&lt;br /&gt;
&lt;br /&gt;
=== 2. Kanthaus Members and Volunteers meet privately (~15 minutes) ===&lt;br /&gt;
&lt;br /&gt;
After meeting with you, the Kanthaus Members and Volunteers will meet without you to decide which Position they find appropriate for you at this time. This meeting has three stages—&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.1. ‘Mock’ vote&#039;&#039;&#039; Before any discussion takes place, the question will be asked, &#039;&#039;“Do you support, accept or oppose (your name) becoming/remaining as a (Position you applied for) at this point in time?”&#039;&#039; The participants will vote anonymously and see the predictive result.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.2. Discussion&#039;&#039;&#039; The participants will talk personally about the result and any personal opinions they have. There is no particular format.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.3. Vote&#039;&#039;&#039; Again the question will be asked, &#039;&#039;“Do you support, accept or oppose (your name) becoming/remaining as a (Position you applied for) at this point in time?”&#039;&#039; and again the participants will vote anonymously. A successful outcome occurs when there are 3 or more times as many ‘support’ votes to ‘oppose’ votes (e.g. 4 ‘support’, 2 ‘accept’ and 1 ‘oppose’.) If unsuccessful, the procedure will be repeated at the lower position, for example: if you requested to become Volunteer and it was unsuccessful, the process would be repeated as if you’d applied to remain as a Visitor. Only the result of the vote, not the individual votes, are recorded.&lt;br /&gt;
&lt;br /&gt;
=== 3. Position outcome and feedback (~5 minutes) ===&lt;br /&gt;
&lt;br /&gt;
You will receive feedback immediately regarding which Position you are offered and further feedback if you weren’t offered the Position you applied for.&lt;br /&gt;
&lt;br /&gt;
== After evaluation ==&lt;br /&gt;
The facilitator should fill out the [[evaluation record]] and write a summary (either post it to the [https://chat.kanthaus.online/kanthaus/channels/evaluation-checkin-notes ~evaluation-checkIn-notes] [[Mattermost]] channel or print and hang it. Delete / destroy it after one month).&lt;br /&gt;
[[Category:Social]]&lt;br /&gt;
[[Category:test]]&lt;br /&gt;
[[Category:Meeting]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Evaluation_record&amp;diff=2192</id>
		<title>Evaluation record</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Evaluation_record&amp;diff=2192"/>
		<updated>2026-01-14T15:20:10Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Update outdated information and add reference to evaluation recorder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;📝 In the evaluation record, we record a summary of the [[Positions and evaluations|evaluations required by our positions system]]. [https://git.kanthaus.online/kanthaus/kanthaus-private/src/branch/main/evaluationRecord.yml The file] is stored in [https://git.kanthaus.online/kanthaus/kanthaus-private kanthaus-private] (a [[Git|git repository]]). At the end of an evaluation, the facilitator is expected to record the evaluation in this file. This can also be done using [https://kanthaus-server/evaluation-recorder/ the Evaluation Recorder]; this is only reachable within the &amp;lt;code&amp;gt;kanthaus&amp;lt;/code&amp;gt; [[Wifi]] and has a self signed certificate, so accept the risk if your browser warns you about it. In case you have a custom DNS server configured, use this link instead: https://192.168.100.2/evaluation-recorder/.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
The evaluation record is a file (written in YAML format), containing for each evaluation the following fields:&lt;br /&gt;
&lt;br /&gt;
* Date&lt;br /&gt;
* Person being evaluated&lt;br /&gt;
* Position before the evaluation&lt;br /&gt;
* Position applied for&lt;br /&gt;
* New position&lt;br /&gt;
* People who got to vote on the position&lt;br /&gt;
* Other non-voting people present at the evaluation&lt;br /&gt;
&lt;br /&gt;
Note that it doesn&#039;t contain notes anymore; those are instead posted to a dedicated [[Mattermost]] channel or printed on a sheet of paper and destroyed after one month.&lt;br /&gt;
&lt;br /&gt;
== Uses ==&lt;br /&gt;
This file is used to determine automatically who is due for evaluation before each [[CoMe]].&lt;br /&gt;
&lt;br /&gt;
Occasionally, this file is analyzed to gather statistics about our position system or attendance of evaluations.&lt;br /&gt;
&lt;br /&gt;
Occasionally old entries are deleted to adhere to our privacy concept.&lt;br /&gt;
[[Category:Social]]&lt;br /&gt;
[[Category:Digital]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Powerhour&amp;diff=2132</id>
		<title>Powerhour</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Powerhour&amp;diff=2132"/>
		<updated>2025-11-21T14:42:32Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;✨ The weekly communal cleaning session.&lt;br /&gt;
&lt;br /&gt;
== Time and place ==&lt;br /&gt;
&#039;&#039;&#039;Mondays immediately after [[CoMe]]&#039;&#039;&#039; (or at 11 am when there&#039;s no CoMe) we stay in the same room to distribute tasks. Then K20 and K22 will be cleaned for a maximum of 2 hours.&lt;br /&gt;
&lt;br /&gt;
== Initial meeting ==&lt;br /&gt;
[[File:PowerHourTaskList2024.png|thumb|Power Hour Task List]]&lt;br /&gt;
There is a Power Hour Task List for the most relevant tasks.&lt;br /&gt;
&lt;br /&gt;
The facilitator decides how to assign tasks to people.&lt;br /&gt;
&lt;br /&gt;
Usually, it goes something like this:&lt;br /&gt;
&lt;br /&gt;
The facilitator goes through the tasks briefly to find out which ones are of priority this week. Visitors are given tasks first so that they can be paired with more experienced Kanthausians easily. Then there is a round in which people can grab their preferred task. The facilitator makes sure that no important task is left and that everybody has something to do in the end.&lt;br /&gt;
&lt;br /&gt;
This meeting should not take more than 10 minutes.&lt;br /&gt;
&lt;br /&gt;
== General Info ==&lt;br /&gt;
Most cleaning supplies are stored in the [[Intermediate|Intermediate Storage Room]].&lt;br /&gt;
&lt;br /&gt;
If the layout of the house is not clear to you, please refer to the [https://kanthaus.gitlab.io/expfloorer/ expfloorer].&lt;br /&gt;
&lt;br /&gt;
If you can’t clean immediately after the Power Hour meeting, please do it in the next 2-3 days.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
In November 2015, during the pre-[[History|history of Kanthaus]] (yunity), several people stayed at the [https://sensor-magazin.de/so-wohnt-mainz-das-liebermenschhaus/ Liebermenschhaus] (&amp;quot;Lovely-people-house&amp;quot;) in Mainz. This was a living collective formed by some people of the Livingutopia network. They organized a weekly &amp;quot;Putzparty&amp;quot; (&amp;quot;Cleaning party&amp;quot;) which was horribly early on a Thursday (if memory correct) since it was the only time that all the residents where able to make. They would split tasks and clean for an hour or two as their main cleaning action of the week.&lt;br /&gt;
&lt;br /&gt;
Many other experiences were made during the pre-history period, none of which seemed as good. The &amp;quot;Powerhour&amp;quot; was pretty much directly copied from the &amp;quot;Putzparty&amp;quot; and included in the Collective Agreements at the founding of Kanthaus, at 10:00 on Thursdays.&lt;br /&gt;
&lt;br /&gt;
In mid-2023, the time of Powerhour was [https://git.kanthaus.online/kanthaus/kanthaus-governance/commit/75e0172d5c5096681e1268fb872c8b531c0a0564 changed] to after [[CoMe]] (i.e. 11:00 on Mondays) in an effort to &amp;quot;concentrate&amp;quot; Kanthaus activities, to leave people more time to focus on non-Kanthaus things.&lt;br /&gt;
&lt;br /&gt;
== Analysis ==&lt;br /&gt;
The topic of communal cleaning is evergreen and there are many systems. The Powerhour has some advantages:&lt;br /&gt;
&lt;br /&gt;
* simplicity: meet at a given time, get task, clean for an hour, done&lt;br /&gt;
* regularity: you can plan with/around it (i.e. when Powerhour happens &amp;amp; when house cleanest!)&lt;br /&gt;
* mutual-monitoring: everyone is there, everyone sees who gets what task&lt;br /&gt;
* reliability: people less likely to forget&lt;br /&gt;
* community: doing something together in time can be bonding&lt;br /&gt;
&lt;br /&gt;
== Detailed description of tasks ==&lt;br /&gt;
&lt;br /&gt;
=== [[Power Hour/Main Kitchen|Main Kitchen]] ===&lt;br /&gt;
=== [[Power hour/Snack Kitchen|Snack Kitchen]] ===&lt;br /&gt;
=== [[Power hour/Bathrooms K20|Bathrooms K20]] ===&lt;br /&gt;
=== [[Power hour/Bathrooms K22|Bathrooms K22]] ===&lt;br /&gt;
=== Vacuuming Central Rooms ===&lt;br /&gt;
* get a vacuum cleaner from the [[Intermediate|Intermediate Storage Room]]&lt;br /&gt;
* vacuum all of K20-1 and K22-1 except the staircases&lt;br /&gt;
&lt;br /&gt;
=== Vacuuming Staircase K20 Plus ===&lt;br /&gt;
* get a vacuum cleaner from the [[Intermediate|Intermediate Storage Room]]&lt;br /&gt;
* vacuum the K20 staircase and whatever needs vacuuming in K20-0, K20-2 and/or K20-3&lt;br /&gt;
* skip the basement&lt;br /&gt;
&lt;br /&gt;
=== Vacuuming Staircase K22 Plus ===&lt;br /&gt;
* get a vacuum cleaner from the [[2nd bathroom|2nd Bathroom]]&lt;br /&gt;
* vacuum the K22 staircase and whatever needs vacuuming in K22-0 and/or K22-2&lt;br /&gt;
* skip the basement and workshops&lt;br /&gt;
&lt;br /&gt;
=== [[The Vortex|Vortex Shifting]] ===&lt;br /&gt;
=== [[Power hour/Indoor Plant Care|Indoor Plant Care]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[Power hour/Bin Emptying|Bin Emptying]] ===&lt;br /&gt;
=== [[Power Hour/Incoming Food Care|Incoming Food Care]] ===&lt;br /&gt;
=== [[Power hour/Existing food care|Existing Food Care]] ===&lt;br /&gt;
=== Communal Closet Sorting ===&lt;br /&gt;
* sort the clean communal clothes into the fitting spots in the closet&lt;br /&gt;
* mind the sizes!&lt;br /&gt;
* sort out ripped or torn clothes&lt;br /&gt;
* fold towels and put them into the closet in the Main Bathroom&lt;br /&gt;
* fold tea towels, put them in extra basket together with other kitchen things&lt;br /&gt;
* fold duvet covers inside out and in a way that one can read the size written on the bottom&lt;br /&gt;
* bring bed cloths, kitchen textiles, clean butt towels and sorted-out clothes to [[Intermediate storage|Intermediate Storage Room]]. Place them in designated boxes.&lt;br /&gt;
&lt;br /&gt;
=== [[Power hour/Basic Workshop Clean-Up|Basic Workshop Clean-Up]] ===&lt;br /&gt;
=== Mopping Central Rooms + Main Bathroom ===&lt;br /&gt;
* wait for the vacuuming to be finished&lt;br /&gt;
* then get a mop and bucket from the [[Intermediate|Intermediate Storage Room]]&lt;br /&gt;
* mop the Main Kitchen, the Snack Kitchen, the Dining Room, the Elephant Room, the Main Bathroom&lt;br /&gt;
* mop where you think it should be mopped&lt;br /&gt;
&lt;br /&gt;
=== Deep Clean Room of Choice ===&lt;br /&gt;
* name one room and give it all your love&lt;br /&gt;
* this includes moving furniture to clean underneath, dusting book shelves or anything that’s rarely done&lt;br /&gt;
&lt;br /&gt;
=== [[Power hour/Glass and Pfand|Sort and Return Glass and Pfand]] ===&lt;br /&gt;
=== [[Power hour/Clean Sidewalks|Clean Sidewalks]] K18, K20, K22 ===&lt;br /&gt;
[[Category:Social]]&lt;br /&gt;
[[Category:Regular]]&lt;br /&gt;
[[Category:Maintenance]]&lt;br /&gt;
[[Category:Meeting]]&lt;br /&gt;
[[Category:Repro]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Server&amp;diff=2125</id>
		<title>Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Server&amp;diff=2125"/>
		<updated>2025-11-18T16:50:59Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Remove tor relay&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;⭐️ We have a server running locally that provides a few services to residents as well as guests.&lt;br /&gt;
&lt;br /&gt;
== File sharing services ==&lt;br /&gt;
&lt;br /&gt;
The server provides the possibility to store and exchange data. Some services are publicly available (e.g. connecting with an anonymous user), for others you need a user account with some privileges. All file services are only available in the &amp;lt;code&amp;gt;full&amp;lt;/code&amp;gt; [[Wifi|network]] and served via [[wikipedia:Samba_(software)|Samba]]. Use your computers file manager to browse the available network computers and locate the server as &amp;lt;code&amp;gt;KANTHAUS-SERVER&amp;lt;/code&amp;gt;. If this doesn’t show up in your file manager or the link is broken, you can try entering &amp;lt;code&amp;gt;smb://kanthaus-server/&amp;lt;/code&amp;gt; directly into your file managers address bar. This should work on most Linux environments.&lt;br /&gt;
&lt;br /&gt;
=== Getting a user account ===&lt;br /&gt;
To get a user account, speak to an admin (e.g. Antonin or Tilmann). The admin will add you to the Ansible user configuration and ask you to set a temporary password using your account. You can change the password yourself, e.g. via &amp;lt;code&amp;gt;smbpasswd -r kanthaus-server -U yourusername&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Actually, you have two passwords: &lt;br /&gt;
&lt;br /&gt;
* System user account: Used for local access and SSH access. Change password using &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; when logged in &lt;br /&gt;
* Samba account: Used for accessing the samba network shares. Change password using command above remotely or using &amp;lt;code&amp;gt;smbpasswd&amp;lt;/code&amp;gt; when logged in.&lt;br /&gt;
&lt;br /&gt;
==== Kanthaus cloud copy ====&lt;br /&gt;
* The share &amp;lt;code&amp;gt;kanthaus-public&amp;lt;/code&amp;gt; offers an anonymously usable read only copy of the public part of the kanthaus cloud.&lt;br /&gt;
* The share &amp;lt;code&amp;gt;cloud.kanthaus.online&amp;lt;/code&amp;gt; offers a read only copy of the whole kanthaus cloud. You need to have a user with the permissions class &amp;lt;code&amp;gt;kanthaus&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The cloud copy is synchronized from the Kanthaus cloud once every minute.&lt;br /&gt;
&lt;br /&gt;
==== Internal cloud ====&lt;br /&gt;
The share &amp;lt;code&amp;gt;internalcloud&amp;lt;/code&amp;gt; stores some data which should only be available from inside Kanthaus (e.g. financial data) and is only available to users with the permissions class &amp;lt;code&amp;gt;internal&amp;lt;/code&amp;gt;. Please make sure to only put security sensitive stuff in here and also make sure to not leak your user credentials or the contents of this folder, when you have access to it.&lt;br /&gt;
&lt;br /&gt;
This folder is part of the daily backup.&lt;br /&gt;
&lt;br /&gt;
==== Home folder ====&lt;br /&gt;
Every user account also has their personal &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; folder available as the &amp;lt;code&amp;gt;homes&amp;lt;/code&amp;gt; storage. All data you put here is only available to yourself. Inside the home folder, there is a directory called &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt;. This folder lies on an easily expandable, cheap hard-disk storage. It is slower to access but suitable to store lots of data (e.g. backups of your computer).&lt;br /&gt;
&lt;br /&gt;
Your home folder is part of a daily backup. Please put files called &amp;lt;code&amp;gt;.nobackup&amp;lt;/code&amp;gt; into folders that you don’t want to be backed up (e.g. to save storage space). The &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; folder is &#039;&#039;&#039;not&#039;&#039;&#039; part of the backup, but the hard-disks have a raid configuration to tolerate the loss of one hard-disk.&lt;br /&gt;
&lt;br /&gt;
== Shell access ==&lt;br /&gt;
&lt;br /&gt;
When you have a user account, you can also use SSH to connect to the server and use it for computing tasks. To set an initial password, ask an admin. When you already have file sharing access, you can add your SSH public key to the &amp;lt;code&amp;gt;homes/.ssh/authorized_keys&amp;lt;/code&amp;gt; and use that for logging in. Same as above: In your home directory there is a symlinked folder called &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; which is on spinning disks, whereby the rest of your home folder is on limited SSD space.&lt;br /&gt;
&lt;br /&gt;
== Limiting crawlers ==&lt;br /&gt;
Our web services all run through an NGINX reverse proxy web server. The recent intensification of crawling for LLM training was significantly affecting our Forgejo instance, with periodic spikes over 100% greater than baseline. To diagnose the issue, &amp;lt;code&amp;gt;ngxtop&amp;lt;/code&amp;gt; was installed and can be ran with &amp;lt;code&amp;gt;/opt/kh-services/ngxtop/bin/ngxtop --group-by remote_addr -n 50 -l /data/services/data/nginx-logs/forgejo-access.log&amp;lt;/code&amp;gt; this provides a &amp;quot;top-like&amp;quot; overview the HTTP responses the web server sends them back to (bucketed) IPs. Additionally, &amp;lt;code&amp;gt;tail -f /data/services/data/nginx-logs/&amp;lt;service&amp;gt;-access.log&amp;lt;/code&amp;gt; provides a more detailed, chronological view of HTTP responses.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, for countermeasures we have&lt;br /&gt;
&lt;br /&gt;
* an &amp;lt;code&amp;gt;nginx&amp;lt;/code&amp;gt; rate limiting of 15 requests / second in addition to some burst allowances&lt;br /&gt;
* a &amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt; that forbids all robots entry&lt;br /&gt;
* an &amp;lt;code&amp;gt;nginx&amp;lt;/code&amp;gt; blocklist that blocks all AI robots user agents&lt;br /&gt;
* &amp;lt;code&amp;gt;go-away&amp;lt;/code&amp;gt; that blocks requests based on some non-javascript challenges, based on the [https://git.gammaspectra.live/git/go-away/src/branch/master/examples/forgejo.yml default example for forgejo] (with the only differences that &amp;lt;code&amp;gt;js-refresh&amp;lt;/code&amp;gt; is replaced by &amp;lt;code&amp;gt;header-refresh&amp;lt;/code&amp;gt; and the final &amp;lt;code&amp;gt;js-pow-sha256&amp;lt;/code&amp;gt; challenge is removed)&lt;br /&gt;
Stats of &amp;lt;code&amp;gt;go-away&amp;lt;/code&amp;gt; are available on [https://grafana.yunity.org/d/f7bd6db8-b503-48b3-8a4d-fd1011aac8e0/go-away grafana].&lt;br /&gt;
&lt;br /&gt;
== SFTP Access ==&lt;br /&gt;
&lt;br /&gt;
You can use software like FileZilla to access your home folder through &amp;lt;code&amp;gt;sftp://kanthaus-server&amp;lt;/code&amp;gt; providing your username. See the Shell Access section above for other details.&lt;br /&gt;
&lt;br /&gt;
=== How to unlock the encrypted &amp;lt;code&amp;gt;kanthaus-server&amp;lt;/code&amp;gt; via network ===&lt;br /&gt;
* be in &amp;lt;code&amp;gt;kh-admin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ssh -p 2222 root@192.168.178.249&amp;lt;/code&amp;gt;&lt;br /&gt;
** your key must be stored on the server in &amp;lt;code&amp;gt;/etc/dropbear-initramfs/authorized_keys&amp;lt;/code&amp;gt; -&amp;amp;gt; &amp;lt;code&amp;gt;update-initramfs -u&amp;lt;/code&amp;gt;&lt;br /&gt;
** ED25519 key fingerprint: &amp;lt;code&amp;gt;SHA256:mvCVYx8D/Fv/qYq+a/H4MoRAcfExAUsAFW3L2NVHnD0&amp;lt;/code&amp;gt;&lt;br /&gt;
* enter password (stored in keepass -&amp;amp;gt; Server)&lt;br /&gt;
&lt;br /&gt;
== System specs ==&lt;br /&gt;
&lt;br /&gt;
* System is designed to save power but still have some computing resources. &lt;br /&gt;
* CPU: Intel Core i5-2500K (4x 3.3 GHz) &lt;br /&gt;
* Ram: 16 GB DDR3L&lt;br /&gt;
* SSD: 1 TB Samsung 860 Evo as root file system &lt;br /&gt;
* HDD: BTRFS pool with 2 disks. Current usable size 3 TB&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
Backups are done using Borgmatic. The backup target is the local hard-disk storage, so it does not safe us against fire or theft of the computer. We might think about adding a remote backup as well.&lt;br /&gt;
&lt;br /&gt;
== Other services ==&lt;br /&gt;
&lt;br /&gt;
* Foodsharing Gitlab which CI runner (dockerized)&lt;br /&gt;
* House bus services&lt;br /&gt;
** local Web interface (dockerized)&lt;br /&gt;
** Logging daemon to externally hosted influxdb&lt;br /&gt;
* Virtual machines (kvm/libvirt)&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Digital]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Brotagonist&amp;diff=2113</id>
		<title>Brotagonist</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Brotagonist&amp;diff=2113"/>
		<updated>2025-11-02T13:59:13Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Create brotagonist instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We have a corporation with [https://www.brotagonist.de/ Wendl, the Brotagonist], where we get bread (rolls) every two weeks.&lt;br /&gt;
&lt;br /&gt;
=== How to pick up Bread ===&lt;br /&gt;
It&#039;s very similar to Foodsharing. Here&#039;s detailed instructions though:&lt;br /&gt;
&lt;br /&gt;
* Look at the schedule. We pick up bread (rolls) every two weeks, the dates are entered in the [https://cloud.kanthaus.online/apps/calendar/timeGridWeek/now# calendar]. Pick up times are during the opening hours of the store, so between 6am and 3pm&lt;br /&gt;
* Sign up for the pick up in [[CoMe]] one week before the pickup&lt;br /&gt;
* Take a lot of space. We typically get up to 5 bakery boxes of bread (rolls). You will need a big backpack, big bike bags and potentially up to three Ikea bags. Take big plastic / bread bags for inside the other bags. It&#039;s easier if you don&#039;t go alone&lt;br /&gt;
* Take the S-Train to &#039;&#039;Völkerschlachtdenkmal&#039;&#039;, then cycle the rest of the way to Apelsteinallee 4, 04416 Markkleeberg&lt;br /&gt;
* Take at least two of the big plastic / bread bags inside the store&lt;br /&gt;
* Be friendly! Tell them you&#039;re from &#039;&#039;Wandel Würzen e.V.&#039;&#039; for the biweekly pickup (preferably in German)&lt;br /&gt;
* Take everything they give you and don&#039;t complain&lt;br /&gt;
* Travel back with hopefully lots of bread (rolls)&lt;br /&gt;
* Freeze everything we can&#039;t immediately use or put bread (rolls) that don&#039;t fit into the freezers in the Fairteiler&lt;br /&gt;
* That&#039;s it! Thank you for your bread service :)&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Bread&amp;diff=2112</id>
		<title>Bread</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Bread&amp;diff=2112"/>
		<updated>2025-11-02T13:47:31Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Add bread source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We eat a lot of bread in Kanthaus.&lt;br /&gt;
&lt;br /&gt;
== Where to find bread ==&lt;br /&gt;
Unfrozen bread is typically stored in the [[Snack kitchen]], in the box under the bread cutting board. Frozen bread is in one of the [[Freezer|freezers]].&lt;br /&gt;
&lt;br /&gt;
== Obtaining new bread ==&lt;br /&gt;
There are two main options for obtaining new bread: [[Saving food|Saving]] (either dumpster diving, from [[Brotagonist]] or foodsharing) or making it yourself, e.g. with the help of the [[Bread machine]].&lt;br /&gt;
[[Category:Practicalities]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Peanut_Butter&amp;diff=2087</id>
		<title>Peanut Butter</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Peanut_Butter&amp;diff=2087"/>
		<updated>2025-09-23T14:48:33Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Correct amount of trays&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We make peanut butter ourselves. This is the current process that seems to work best:&lt;br /&gt;
&lt;br /&gt;
* Roast two trays of peanuts for about 45 minutes at 150°C (circulating air) in the oven. Make sure to utilize solar power!&lt;br /&gt;
* Let the peanuts cool down a bit&lt;br /&gt;
* Put most of them into the manual food processor&lt;br /&gt;
* Put on the custom lid with a hole&lt;br /&gt;
* Put in the following parts in the electric &#039;&#039;&#039;brushless&#039;&#039;&#039; drill: [[File:Drill bits.jpg|alt=3 parts that go into the electric drill and fit the manual part with the spinning knives|none|thumb|Drill bits]]&lt;br /&gt;
* Put the bits into the manual part with the spinning blades&lt;br /&gt;
* Process them for about 5 minutes on the highest setting or until the consistency is nice and creamy&lt;br /&gt;
* Possibly add some rapeseed oil (try without!)&lt;br /&gt;
* Add the rest of the peanuts&lt;br /&gt;
* Process them for another 1 minute or until the added peanuts are small enough&lt;br /&gt;
* Done!&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Peanut_Butter&amp;diff=2086</id>
		<title>Peanut Butter</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Peanut_Butter&amp;diff=2086"/>
		<updated>2025-09-23T14:48:15Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Update process to utilize electricity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We make peanut butter ourselves. This is the current process that seems to work best:&lt;br /&gt;
&lt;br /&gt;
* Roast one tray of peanuts for about 45 minutes at 150°C (circulating air) in the oven. Make sure to utilize solar power!&lt;br /&gt;
* Let the peanuts cool down a bit&lt;br /&gt;
* Put most of them into the manual food processor&lt;br /&gt;
* Put on the custom lid with a hole&lt;br /&gt;
* Put in the following parts in the electric &#039;&#039;&#039;brushless&#039;&#039;&#039; drill: [[File:Drill bits.jpg|alt=3 parts that go into the electric drill and fit the manual part with the spinning knives|none|thumb|Drill bits]]&lt;br /&gt;
* Put the bits into the manual part with the spinning blades&lt;br /&gt;
* Process them for about 5 minutes on the highest setting or until the consistency is nice and creamy&lt;br /&gt;
* Possibly add some rapeseed oil (try without!)&lt;br /&gt;
* Add the rest of the peanuts&lt;br /&gt;
* Process them for another 1 minute or until the added peanuts are small enough&lt;br /&gt;
* Done!&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=File:Drill_bits.jpg&amp;diff=2085</id>
		<title>File:Drill bits.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=File:Drill_bits.jpg&amp;diff=2085"/>
		<updated>2025-09-23T14:44:59Z</updated>

		<summary type="html">&lt;p&gt;Timber1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;3 parts that go into the drill to fit the manual part with the rotating knives&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Peanut_Butter&amp;diff=2051</id>
		<title>Peanut Butter</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Peanut_Butter&amp;diff=2051"/>
		<updated>2025-08-26T14:55:26Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Add peanut butter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We make peanut butter ourselves. This is the current process that seems to work best:&lt;br /&gt;
&lt;br /&gt;
* Roast one tray of peanuts for about 60 minutes at 150°C (top and bottom heat) in the oven. Make sure to utilize solar power!&lt;br /&gt;
* Let the peanuts cool down a bit&lt;br /&gt;
* Put them into the manual food processor&lt;br /&gt;
* Process them for about 20 minutes&lt;br /&gt;
* Add some rapeseed oil&lt;br /&gt;
* Process them for another 10 minutes&lt;br /&gt;
* Done!&lt;br /&gt;
&lt;br /&gt;
This is a great example of work we do in Kanthaus that technically saves us money, but only if we don&#039;t value our time that much. The peanuts cost 2€/kg, but factoring in 15€/h, the peanut butter costs about 20€/kg. With a bigger / better / electrical food processor, the time necessary could be greatly reduced, but already it has the advantage of highlighting the value and &#039;&#039;speciallness&#039;&#039; of peanut butter.&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Server&amp;diff=2046</id>
		<title>Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Server&amp;diff=2046"/>
		<updated>2025-08-20T15:06:37Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Add link to grafana.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;⭐️ We have a server running locally that provides a few services to residents as well as guests.&lt;br /&gt;
&lt;br /&gt;
== File sharing services ==&lt;br /&gt;
&lt;br /&gt;
The server provides the possibility to store and exchange data. Some services are publicly available (e.g. connecting with an anonymous user), for others you need a user account with some privileges. All file services are only available in the &amp;lt;code&amp;gt;full&amp;lt;/code&amp;gt; [[Wifi|network]] and served via [[wikipedia:Samba_(software)|Samba]]. Use your computers file manager to browse the available network computers and locate the server as &amp;lt;code&amp;gt;KANTHAUS-SERVER&amp;lt;/code&amp;gt;. If this doesn’t show up in your file manager or the link is broken, you can try entering &amp;lt;code&amp;gt;smb://kanthaus-server/&amp;lt;/code&amp;gt; directly into your file managers address bar. This should work on most Linux environments.&lt;br /&gt;
&lt;br /&gt;
=== Getting a user account ===&lt;br /&gt;
To get a user account, speak to an admin (e.g. Antonin or Tilmann). The admin will add you to the Ansible user configuration and ask you to set a temporary password using your account. You can change the password yourself, e.g. via &amp;lt;code&amp;gt;smbpasswd -r kanthaus-server -U yourusername&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Actually, you have two passwords: &lt;br /&gt;
&lt;br /&gt;
* System user account: Used for local access and SSH access. Change password using &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; when logged in &lt;br /&gt;
* Samba account: Used for accessing the samba network shares. Change password using command above remotely or using &amp;lt;code&amp;gt;smbpasswd&amp;lt;/code&amp;gt; when logged in.&lt;br /&gt;
&lt;br /&gt;
==== Kanthaus cloud copy ====&lt;br /&gt;
* The share &amp;lt;code&amp;gt;kanthaus-public&amp;lt;/code&amp;gt; offers an anonymously usable read only copy of the public part of the kanthaus cloud.&lt;br /&gt;
* The share &amp;lt;code&amp;gt;cloud.kanthaus.online&amp;lt;/code&amp;gt; offers a read only copy of the whole kanthaus cloud. You need to have a user with the permissions class &amp;lt;code&amp;gt;kanthaus&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The cloud copy is synchronized from the Kanthaus cloud once every minute.&lt;br /&gt;
&lt;br /&gt;
==== Internal cloud ====&lt;br /&gt;
The share &amp;lt;code&amp;gt;internalcloud&amp;lt;/code&amp;gt; stores some data which should only be available from inside Kanthaus (e.g. financial data) and is only available to users with the permissions class &amp;lt;code&amp;gt;internal&amp;lt;/code&amp;gt;. Please make sure to only put security sensitive stuff in here and also make sure to not leak your user credentials or the contents of this folder, when you have access to it.&lt;br /&gt;
&lt;br /&gt;
This folder is part of the daily backup.&lt;br /&gt;
&lt;br /&gt;
==== Home folder ====&lt;br /&gt;
Every user account also has their personal &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; folder available as the &amp;lt;code&amp;gt;homes&amp;lt;/code&amp;gt; storage. All data you put here is only available to yourself. Inside the home folder, there is a directory called &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt;. This folder lies on an easily expandable, cheap hard-disk storage. It is slower to access but suitable to store lots of data (e.g. backups of your computer).&lt;br /&gt;
&lt;br /&gt;
Your home folder is part of a daily backup. Please put files called &amp;lt;code&amp;gt;.nobackup&amp;lt;/code&amp;gt; into folders that you don’t want to be backed up (e.g. to save storage space). The &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; folder is &#039;&#039;&#039;not&#039;&#039;&#039; part of the backup, but the hard-disks have a raid configuration to tolerate the loss of one hard-disk.&lt;br /&gt;
&lt;br /&gt;
== Shell access ==&lt;br /&gt;
&lt;br /&gt;
When you have a user account, you can also use SSH to connect to the server and use it for computing tasks. To set an initial password, ask an admin. When you already have file sharing access, you can add your SSH public key to the &amp;lt;code&amp;gt;homes/.ssh/authorized_keys&amp;lt;/code&amp;gt; and use that for logging in. Same as above: In your home directory there is a symlinked folder called &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; which is on spinning disks, whereby the rest of your home folder is on limited SSD space.&lt;br /&gt;
&lt;br /&gt;
== Limiting crawlers ==&lt;br /&gt;
Our web services all run through an NGINX reverse proxy web server. The recent intensification of crawling for LLM training was significantly affecting our Forgejo instance, with periodic spikes over 100% greater than baseline. To diagnose the issue, &amp;lt;code&amp;gt;ngxtop&amp;lt;/code&amp;gt; was installed and can be ran with &amp;lt;code&amp;gt;/opt/kh-services/ngxtop/bin/ngxtop --group-by remote_addr -n 50 -l /data/services/data/nginx-logs/forgejo-access.log&amp;lt;/code&amp;gt; this provides a &amp;quot;top-like&amp;quot; overview the HTTP responses the web server sends them back to (bucketed) IPs. Additionally, &amp;lt;code&amp;gt;tail -f /data/services/data/nginx-logs/&amp;lt;service&amp;gt;-access.log&amp;lt;/code&amp;gt; provides a more detailed, chronological view of HTTP responses.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, for countermeasures we have&lt;br /&gt;
&lt;br /&gt;
* an &amp;lt;code&amp;gt;nginx&amp;lt;/code&amp;gt; rate limiting of 15 requests / second in addition to some burst allowances&lt;br /&gt;
* a &amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt; that forbids all robots entry&lt;br /&gt;
* an &amp;lt;code&amp;gt;nginx&amp;lt;/code&amp;gt; blocklist that blocks all AI robots user agents&lt;br /&gt;
* &amp;lt;code&amp;gt;go-away&amp;lt;/code&amp;gt; that blocks requests based on some non-javascript challenges, based on the [https://git.gammaspectra.live/git/go-away/src/branch/master/examples/forgejo.yml default example for forgejo] (with the only differences that &amp;lt;code&amp;gt;js-refresh&amp;lt;/code&amp;gt; is replaced by &amp;lt;code&amp;gt;header-refresh&amp;lt;/code&amp;gt; and the final &amp;lt;code&amp;gt;js-pow-sha256&amp;lt;/code&amp;gt; challenge is removed)&lt;br /&gt;
Stats of &amp;lt;code&amp;gt;go-away&amp;lt;/code&amp;gt; are available on [https://grafana.yunity.org/d/f7bd6db8-b503-48b3-8a4d-fd1011aac8e0/go-away grafana].&lt;br /&gt;
&lt;br /&gt;
== SFTP Access ==&lt;br /&gt;
&lt;br /&gt;
You can use software like FileZilla to access your home folder through &amp;lt;code&amp;gt;sftp://kanthaus-server&amp;lt;/code&amp;gt; providing your username. See the Shell Access section above for other details.&lt;br /&gt;
&lt;br /&gt;
=== How to unlock the encrypted &amp;lt;code&amp;gt;kanthaus-server&amp;lt;/code&amp;gt; via network ===&lt;br /&gt;
* be in &amp;lt;code&amp;gt;kh-admin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ssh -p 2222 root@192.168.178.249&amp;lt;/code&amp;gt;&lt;br /&gt;
** your key must be stored on the server in &amp;lt;code&amp;gt;/etc/dropbear-initramfs/authorized_keys&amp;lt;/code&amp;gt; -&amp;amp;gt; &amp;lt;code&amp;gt;update-initramfs -u&amp;lt;/code&amp;gt;&lt;br /&gt;
** ED25519 key fingerprint: &amp;lt;code&amp;gt;SHA256:mvCVYx8D/Fv/qYq+a/H4MoRAcfExAUsAFW3L2NVHnD0&amp;lt;/code&amp;gt;&lt;br /&gt;
* enter password (stored in keepass -&amp;amp;gt; Server)&lt;br /&gt;
&lt;br /&gt;
== System specs ==&lt;br /&gt;
&lt;br /&gt;
* System is designed to save power but still have some computing resources. &lt;br /&gt;
* CPU: Intel Core i5-2500K (4x 3.3 GHz) &lt;br /&gt;
* Ram: 16 GB DDR3L&lt;br /&gt;
* SSD: 1 TB Samsung 860 Evo as root file system &lt;br /&gt;
* HDD: BTRFS pool with 2 disks. Current usable size 3 TB&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
Backups are done using Borgmatic. The backup target is the local hard-disk storage, so it does not safe us against fire or theft of the computer. We might think about adding a remote backup as well.&lt;br /&gt;
&lt;br /&gt;
== Tor Relay ==&lt;br /&gt;
We run a [https://metrics.torproject.org/rs.html#details/DB35C03124D5EC03BCFE2754078A48366133EE05 Tor middle/guard relay]. It was set up according to [https://community.torproject.org/relay/setup/guard/debian-ubuntu/ those instructions]. You can check its status with&lt;br /&gt;
 sudo systemctl status tor@default&lt;br /&gt;
It (re)started successfully if the following line (with a different IP) appears in the journal (&amp;lt;code&amp;gt;sudo journalctl -xeu tor@default&amp;lt;/code&amp;gt;):&lt;br /&gt;
 Self-testing indicates your ORPort 84.184.31.103:9001 is reachable from the outside. Excellent. Publishing server descriptor.&lt;br /&gt;
However, you don&#039;t need to worry too much about it, since [https://chat.kanthaus.online/kanthaus/messages/@timber Timber] will get notified within 5 minutes of the Tor relay being down.&lt;br /&gt;
&lt;br /&gt;
Also note that the Tor relay restarts every night something past 5 since our IP address changes around that time. This is expected behavior and nothing to worry about.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re very curious and want to see what happens on the server, you can check out &amp;lt;code&amp;gt;sudo nyx&amp;lt;/code&amp;gt;, though be mindful to [https://community.torproject.org/relay/setup/post-install/ not share this data publicly], since it can endanger the anonymity of our users.&lt;br /&gt;
&lt;br /&gt;
The keys of the relay lie in &amp;lt;code&amp;gt;/var/lib/tor/keys&amp;lt;/code&amp;gt; and are included in &amp;lt;code&amp;gt;/opt/kh-services/configs/borgmatic.yml&amp;lt;/code&amp;gt;, which &#039;&#039;should&#039;&#039; mean that they&#039;re being backed up.&lt;br /&gt;
&lt;br /&gt;
== Other services ==&lt;br /&gt;
&lt;br /&gt;
* Foodsharing Gitlab which CI runner (dockerized)&lt;br /&gt;
* House bus services&lt;br /&gt;
** local Web interface (dockerized)&lt;br /&gt;
** Logging daemon to externally hosted influxdb&lt;br /&gt;
* Virtual machines (kvm/libvirt)&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Digital]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Server&amp;diff=2045</id>
		<title>Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Server&amp;diff=2045"/>
		<updated>2025-08-20T12:03:00Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Describe crawler countermeasures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;⭐️ We have a server running locally that provides a few services to residents as well as guests.&lt;br /&gt;
&lt;br /&gt;
== File sharing services ==&lt;br /&gt;
&lt;br /&gt;
The server provides the possibility to store and exchange data. Some services are publicly available (e.g. connecting with an anonymous user), for others you need a user account with some privileges. All file services are only available in the &amp;lt;code&amp;gt;full&amp;lt;/code&amp;gt; [[Wifi|network]] and served via [[wikipedia:Samba_(software)|Samba]]. Use your computers file manager to browse the available network computers and locate the server as &amp;lt;code&amp;gt;KANTHAUS-SERVER&amp;lt;/code&amp;gt;. If this doesn’t show up in your file manager or the link is broken, you can try entering &amp;lt;code&amp;gt;smb://kanthaus-server/&amp;lt;/code&amp;gt; directly into your file managers address bar. This should work on most Linux environments.&lt;br /&gt;
&lt;br /&gt;
=== Getting a user account ===&lt;br /&gt;
To get a user account, speak to an admin (e.g. Antonin or Tilmann). The admin will add you to the Ansible user configuration and ask you to set a temporary password using your account. You can change the password yourself, e.g. via &amp;lt;code&amp;gt;smbpasswd -r kanthaus-server -U yourusername&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Actually, you have two passwords: &lt;br /&gt;
&lt;br /&gt;
* System user account: Used for local access and SSH access. Change password using &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; when logged in &lt;br /&gt;
* Samba account: Used for accessing the samba network shares. Change password using command above remotely or using &amp;lt;code&amp;gt;smbpasswd&amp;lt;/code&amp;gt; when logged in.&lt;br /&gt;
&lt;br /&gt;
==== Kanthaus cloud copy ====&lt;br /&gt;
* The share &amp;lt;code&amp;gt;kanthaus-public&amp;lt;/code&amp;gt; offers an anonymously usable read only copy of the public part of the kanthaus cloud.&lt;br /&gt;
* The share &amp;lt;code&amp;gt;cloud.kanthaus.online&amp;lt;/code&amp;gt; offers a read only copy of the whole kanthaus cloud. You need to have a user with the permissions class &amp;lt;code&amp;gt;kanthaus&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The cloud copy is synchronized from the Kanthaus cloud once every minute.&lt;br /&gt;
&lt;br /&gt;
==== Internal cloud ====&lt;br /&gt;
The share &amp;lt;code&amp;gt;internalcloud&amp;lt;/code&amp;gt; stores some data which should only be available from inside Kanthaus (e.g. financial data) and is only available to users with the permissions class &amp;lt;code&amp;gt;internal&amp;lt;/code&amp;gt;. Please make sure to only put security sensitive stuff in here and also make sure to not leak your user credentials or the contents of this folder, when you have access to it.&lt;br /&gt;
&lt;br /&gt;
This folder is part of the daily backup.&lt;br /&gt;
&lt;br /&gt;
==== Home folder ====&lt;br /&gt;
Every user account also has their personal &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; folder available as the &amp;lt;code&amp;gt;homes&amp;lt;/code&amp;gt; storage. All data you put here is only available to yourself. Inside the home folder, there is a directory called &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt;. This folder lies on an easily expandable, cheap hard-disk storage. It is slower to access but suitable to store lots of data (e.g. backups of your computer).&lt;br /&gt;
&lt;br /&gt;
Your home folder is part of a daily backup. Please put files called &amp;lt;code&amp;gt;.nobackup&amp;lt;/code&amp;gt; into folders that you don’t want to be backed up (e.g. to save storage space). The &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; folder is &#039;&#039;&#039;not&#039;&#039;&#039; part of the backup, but the hard-disks have a raid configuration to tolerate the loss of one hard-disk.&lt;br /&gt;
&lt;br /&gt;
== Shell access ==&lt;br /&gt;
&lt;br /&gt;
When you have a user account, you can also use SSH to connect to the server and use it for computing tasks. To set an initial password, ask an admin. When you already have file sharing access, you can add your SSH public key to the &amp;lt;code&amp;gt;homes/.ssh/authorized_keys&amp;lt;/code&amp;gt; and use that for logging in. Same as above: In your home directory there is a symlinked folder called &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; which is on spinning disks, whereby the rest of your home folder is on limited SSD space.&lt;br /&gt;
&lt;br /&gt;
== Limiting crawlers ==&lt;br /&gt;
Our web services all run through an NGINX reverse proxy web server. The recent intensification of crawling for LLM training was significantly affecting our Forgejo instance, with periodic spikes over 100% greater than baseline. To diagnose the issue, &amp;lt;code&amp;gt;ngxtop&amp;lt;/code&amp;gt; was installed and can be ran with &amp;lt;code&amp;gt;/opt/kh-services/ngxtop/bin/ngxtop --group-by remote_addr -n 50 -l /data/services/data/nginx-logs/forgejo-access.log&amp;lt;/code&amp;gt; this provides a &amp;quot;top-like&amp;quot; overview the HTTP responses the web server sends them back to (bucketed) IPs. Additionally, &amp;lt;code&amp;gt;tail -f /data/services/data/nginx-logs/&amp;lt;service&amp;gt;-access.log&amp;lt;/code&amp;gt; provides a more detailed, chronological view of HTTP responses.&lt;br /&gt;
&lt;br /&gt;
At the time of writing, for countermeasures we have&lt;br /&gt;
&lt;br /&gt;
* an &amp;lt;code&amp;gt;nginx&amp;lt;/code&amp;gt; rate limiting of 15 requests / second in addition to some burst allowances&lt;br /&gt;
* a &amp;lt;code&amp;gt;robots.txt&amp;lt;/code&amp;gt; that forbids all robots entry&lt;br /&gt;
* an &amp;lt;code&amp;gt;nginx&amp;lt;/code&amp;gt; blocklist that blocks all AI robots user agents&lt;br /&gt;
* &amp;lt;code&amp;gt;go-away&amp;lt;/code&amp;gt; that blocks requests based on some non-javascript challenges, based on the [https://git.gammaspectra.live/git/go-away/src/branch/master/examples/forgejo.yml default example for forgejo] (with the only differences that &amp;lt;code&amp;gt;js-refresh&amp;lt;/code&amp;gt; is replaced by &amp;lt;code&amp;gt;header-refresh&amp;lt;/code&amp;gt; and the final &amp;lt;code&amp;gt;js-pow-sha256&amp;lt;/code&amp;gt; challenge is removed)&lt;br /&gt;
&lt;br /&gt;
== SFTP Access ==&lt;br /&gt;
&lt;br /&gt;
You can use software like FileZilla to access your home folder through &amp;lt;code&amp;gt;sftp://kanthaus-server&amp;lt;/code&amp;gt; providing your username. See the Shell Access section above for other details.&lt;br /&gt;
&lt;br /&gt;
=== How to unlock the encrypted &amp;lt;code&amp;gt;kanthaus-server&amp;lt;/code&amp;gt; via network ===&lt;br /&gt;
* be in &amp;lt;code&amp;gt;kh-admin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ssh -p 2222 root@192.168.178.249&amp;lt;/code&amp;gt;&lt;br /&gt;
** your key must be stored on the server in &amp;lt;code&amp;gt;/etc/dropbear-initramfs/authorized_keys&amp;lt;/code&amp;gt; -&amp;amp;gt; &amp;lt;code&amp;gt;update-initramfs -u&amp;lt;/code&amp;gt;&lt;br /&gt;
** ED25519 key fingerprint: &amp;lt;code&amp;gt;SHA256:mvCVYx8D/Fv/qYq+a/H4MoRAcfExAUsAFW3L2NVHnD0&amp;lt;/code&amp;gt;&lt;br /&gt;
* enter password (stored in keepass -&amp;amp;gt; Server)&lt;br /&gt;
&lt;br /&gt;
== System specs ==&lt;br /&gt;
&lt;br /&gt;
* System is designed to save power but still have some computing resources. &lt;br /&gt;
* CPU: Intel Core i5-2500K (4x 3.3 GHz) &lt;br /&gt;
* Ram: 16 GB DDR3L&lt;br /&gt;
* SSD: 1 TB Samsung 860 Evo as root file system &lt;br /&gt;
* HDD: BTRFS pool with 2 disks. Current usable size 3 TB&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
Backups are done using Borgmatic. The backup target is the local hard-disk storage, so it does not safe us against fire or theft of the computer. We might think about adding a remote backup as well.&lt;br /&gt;
&lt;br /&gt;
== Tor Relay ==&lt;br /&gt;
We run a [https://metrics.torproject.org/rs.html#details/DB35C03124D5EC03BCFE2754078A48366133EE05 Tor middle/guard relay]. It was set up according to [https://community.torproject.org/relay/setup/guard/debian-ubuntu/ those instructions]. You can check its status with&lt;br /&gt;
 sudo systemctl status tor@default&lt;br /&gt;
It (re)started successfully if the following line (with a different IP) appears in the journal (&amp;lt;code&amp;gt;sudo journalctl -xeu tor@default&amp;lt;/code&amp;gt;):&lt;br /&gt;
 Self-testing indicates your ORPort 84.184.31.103:9001 is reachable from the outside. Excellent. Publishing server descriptor.&lt;br /&gt;
However, you don&#039;t need to worry too much about it, since [https://chat.kanthaus.online/kanthaus/messages/@timber Timber] will get notified within 5 minutes of the Tor relay being down.&lt;br /&gt;
&lt;br /&gt;
Also note that the Tor relay restarts every night something past 5 since our IP address changes around that time. This is expected behavior and nothing to worry about.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re very curious and want to see what happens on the server, you can check out &amp;lt;code&amp;gt;sudo nyx&amp;lt;/code&amp;gt;, though be mindful to [https://community.torproject.org/relay/setup/post-install/ not share this data publicly], since it can endanger the anonymity of our users.&lt;br /&gt;
&lt;br /&gt;
The keys of the relay lie in &amp;lt;code&amp;gt;/var/lib/tor/keys&amp;lt;/code&amp;gt; and are included in &amp;lt;code&amp;gt;/opt/kh-services/configs/borgmatic.yml&amp;lt;/code&amp;gt;, which &#039;&#039;should&#039;&#039; mean that they&#039;re being backed up.&lt;br /&gt;
&lt;br /&gt;
== Other services ==&lt;br /&gt;
&lt;br /&gt;
* Foodsharing Gitlab which CI runner (dockerized)&lt;br /&gt;
* House bus services&lt;br /&gt;
** local Web interface (dockerized)&lt;br /&gt;
** Logging daemon to externally hosted influxdb&lt;br /&gt;
* Virtual machines (kvm/libvirt)&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Digital]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Network&amp;diff=1991</id>
		<title>Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Network&amp;diff=1991"/>
		<updated>2025-07-12T00:13:25Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Update location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;👻 This page should document some bits of the network infrastructure of Kanthaus. Please maintain so people with a bit of network knowledge can understand and maintain the network. See also [[Server]].&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[File:Network topology 2024-10-18 .png|none|thumb]]&amp;lt;!--&lt;br /&gt;
drawn with https://excalidraw.com/&lt;br /&gt;
raw file for modifying: /images/network-topology.svg&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ISP ==&lt;br /&gt;
We currently use Telekom as our internet provider. They have a [https://www.telekom.de/hilfe/hilfe-bei-stoerungen/leitungspruefung help page] for diagnosing internet issues from their side: good idea to check this first if the wifi networks are still up, but not connected to the internet.&lt;br /&gt;
&lt;br /&gt;
== TRUNK network ==&lt;br /&gt;
&lt;br /&gt;
the backbone of our network, connecting all Access Points and the central firewall, carries all the different networks via VLAN:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; width=&amp;quot;17%&amp;quot;| VLAN-ID&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;| IP Range&lt;br /&gt;
!width=&amp;quot;26%&amp;quot;| Name&lt;br /&gt;
!width=&amp;quot;22%&amp;quot;| Purpose / Devices&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| untagged&lt;br /&gt;
| 192.168.178.x&lt;br /&gt;
| ADMIN&lt;br /&gt;
| configuration tnterfaces of all AP’s &amp;amp;amp; Switches&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 4&lt;br /&gt;
| 192.168.4.x&lt;br /&gt;
| PRINTER&lt;br /&gt;
| connection between print server (kanthaus-server) and printer&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 5&lt;br /&gt;
| 192.168.5.x&lt;br /&gt;
| IOT &#039;&#039;(former SMA)&#039;&#039;&lt;br /&gt;
| only access to kanthaus-server and potentially whitelisted internet IP’s + isolated clients¹&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 100&lt;br /&gt;
| 192.168.100.x&lt;br /&gt;
| RESTRICTED&lt;br /&gt;
| normal internet access + isolated clients¹&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 101&lt;br /&gt;
| 192.168.101.x&lt;br /&gt;
| VPN&lt;br /&gt;
| tunneled to VPN (currently NL)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 102&lt;br /&gt;
| 192.168.102.x&lt;br /&gt;
| UNSECURE&lt;br /&gt;
| normal internet access&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
¹ client isolation does not work between LAN &amp;amp;lt;-&amp;amp;gt; LAN clients&lt;br /&gt;
&lt;br /&gt;
== Wifis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! SSID&lt;br /&gt;
! Network&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| Encrypt.&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| 802.11r&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| 802.11w&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| Isolation&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kanthaus&amp;lt;/code&amp;gt;&lt;br /&gt;
| RESTRICTED&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| WPA3&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -¹&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| required&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| on&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kanthaus-insecure&amp;lt;/code&amp;gt;&lt;br /&gt;
| INSECURE&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| WPA2&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
| unsupported drivers, LAN parties, etc.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kanthaus-gast&amp;lt;/code&amp;gt;&lt;br /&gt;
| VPN&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| on&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kh-admin&amp;lt;/code&amp;gt;&lt;br /&gt;
| ADMIN&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| WPA3&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| required&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kh-iot&amp;lt;/code&amp;gt;&lt;br /&gt;
| IOT&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| WPA2&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| on&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;802.11r:&#039;&#039;&#039; Fast Roaming &#039;&#039;&#039;802.11w&#039;&#039;&#039;: Management Frame Protection&lt;br /&gt;
&lt;br /&gt;
¹ would be cool to have it on, but eventually led to issues. let’s reevaluate in a few months&lt;br /&gt;
&lt;br /&gt;
== Device list ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;| Type&lt;br /&gt;
!width=&amp;quot;18%&amp;quot;| Name&lt;br /&gt;
!width=&amp;quot;19%&amp;quot;| Admin-IP&lt;br /&gt;
!width=&amp;quot;18%&amp;quot;| Location&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;| Hardware&lt;br /&gt;
!width=&amp;quot;8%&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
| Router&lt;br /&gt;
| &amp;lt;code&amp;gt;fritz.box&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.200.1&lt;br /&gt;
| K20-1 hallway&lt;br /&gt;
| FritzBox 7530&lt;br /&gt;
| DSL termination (on main network), telephone&lt;br /&gt;
|-&lt;br /&gt;
| Router&lt;br /&gt;
| &amp;lt;code&amp;gt;firewall&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.1&lt;br /&gt;
| K20-B rack&lt;br /&gt;
|&lt;br /&gt;
| central router / firewall&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k20-0&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.207&lt;br /&gt;
| K20-0 hallway&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|switch with servers&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k20-1&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.201&lt;br /&gt;
| K20-1 hallway&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|maybe overloaded&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k20-3&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.208&lt;br /&gt;
| K20-3 center&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k20-B&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.206&lt;br /&gt;
| K20-B water room&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|for IoT devices&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;AP&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dragon-k22-0&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;192.168.178.204&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;K22-0 side hallway&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;Archer C5 v1.2&amp;lt;/s&amp;gt;&lt;br /&gt;
|usually unplugged&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dragon-k22-1&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
| &amp;lt;s&amp;gt;192.168.178.202&amp;lt;/s&amp;gt; 192.168.178.217&lt;br /&gt;
| in front of baby bathroom [TODO: What is the name for this?]&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|Timber installed the &amp;quot;normal&amp;quot; firmware, now it has a separate wifi (see [https://chat.kanthaus.online/kanthaus/pl/px368istkib7xdf4ekae76oqze Mattermost])&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k22-2&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.203&lt;br /&gt;
| K22-2 hallway&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|maybe overloaded&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;AP&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dragon-k20-outside&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;192.168.178.205&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;K20-0-2 window&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;Archer C5 v1.2&amp;lt;/s&amp;gt;&lt;br /&gt;
| broken?&lt;br /&gt;
|-&lt;br /&gt;
| Managed Switch&lt;br /&gt;
| k20 firewall switch&lt;br /&gt;
| 192.168.178.9&lt;br /&gt;
| K20-B rack&lt;br /&gt;
| TL-SG108E&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Managed Switch&lt;br /&gt;
| k22 trunk switch&lt;br /&gt;
| 192.168.178.10&lt;br /&gt;
| K22-B stairs&lt;br /&gt;
| GS108E v3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Switch&lt;br /&gt;
| k20 trunk switch&lt;br /&gt;
| -&lt;br /&gt;
| K20-B Rack&lt;br /&gt;
|&lt;br /&gt;
| provides PoE for some AP’s in K20&lt;br /&gt;
|-&lt;br /&gt;
| Server&lt;br /&gt;
| &amp;lt;code&amp;gt;kanthaus-server&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.*.2&lt;br /&gt;
| K20-0 hallway&lt;br /&gt;
| Server, i5-2500K, 16GB Ram&lt;br /&gt;
| file storage, nextcloud, foodsharing gitlab CI Server, housebus logging &amp;amp;amp; time/sunset provider (see [https://git.kanthaus.online/kanthaus/kanthaus-server-services/ Repo])&lt;br /&gt;
|-&lt;br /&gt;
| Main water meter reader&lt;br /&gt;
| &amp;lt;code&amp;gt;mainwatermeter&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.5.37&lt;br /&gt;
| K20 basement (former heating room)&lt;br /&gt;
| ESP32-CAM&lt;br /&gt;
| see [[./water.html|Water usage tracking]]&lt;br /&gt;
|-&lt;br /&gt;
| Warm water meter reader&lt;br /&gt;
| &amp;lt;code&amp;gt;warmwatermeter&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.5.38&lt;br /&gt;
| K20 basement (rainwater room)&lt;br /&gt;
| ESP32-CAM&lt;br /&gt;
| see [[./water.html|Water usage tracking]]&lt;br /&gt;
|-&lt;br /&gt;
| Ventilation watcher&lt;br /&gt;
| &amp;lt;code&amp;gt;ventilation&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.5.39&lt;br /&gt;
| K20 attic&lt;br /&gt;
| ESP32-WROOM&lt;br /&gt;
| see [https://git.kanthaus.online/kanthaus/ventilation-watcher docs]&lt;br /&gt;
|-&lt;br /&gt;
| K20 door&lt;br /&gt;
| &amp;lt;code&amp;gt;k20-door&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.5.40&lt;br /&gt;
| K20 hallway&lt;br /&gt;
| ESP32-CAM&lt;br /&gt;
| see [https://git.kanthaus.online/kanthaus/door-esp32 docs]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firewall / Router ==&lt;br /&gt;
&lt;br /&gt;
Central point of all subnets, routes between them &lt;br /&gt;
&lt;br /&gt;
* runs OPNSense &lt;br /&gt;
* due to lack of ports on firewall, a VLAN switch added, bound to the firewall, also connecting to the fritz!box&lt;br /&gt;
* Features: &lt;br /&gt;
** VPN client&lt;br /&gt;
** DNS Server&lt;br /&gt;
** DHCP Server&lt;br /&gt;
&lt;br /&gt;
== Access Points ==&lt;br /&gt;
&lt;br /&gt;
* see Device list&lt;br /&gt;
* so far all Archer C5 v1.2&lt;br /&gt;
* centrally configured by OpenWISP: https://openwisp.im.kanthaus.online (only reachable inside the &amp;lt;code&amp;gt;ADMIN&amp;lt;/code&amp;gt; net)&lt;br /&gt;
* starting point for other ethernet cables on that floor&lt;br /&gt;
* in K20 all powered by PoE (802.3af) from the switch in the basement&lt;br /&gt;
&lt;br /&gt;
== Printer (Canon C2025i) ==&lt;br /&gt;
&lt;br /&gt;
* Printer is in its own subnet together with the kanthaus-server&lt;br /&gt;
* On the kanthaus-server, there is &#039;&#039;CUPS&#039;&#039; running with printer sharing and auto discovery in the networks via avahi-daemon&lt;br /&gt;
* In &amp;lt;code&amp;gt;RESTRICTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;UNSECURE&amp;lt;/code&amp;gt; the printer is also reachable directly via 192.168.4.153:9100&lt;br /&gt;
&lt;br /&gt;
== kanthaus-server ==&lt;br /&gt;
&lt;br /&gt;
* Most of the services are running inside a docker-compose setup&lt;br /&gt;
** Repo: https://git.kanthaus.online/kanthaus/kanthaus-server-services&lt;br /&gt;
** in &amp;lt;code&amp;gt;/opt/kh-services&amp;lt;/code&amp;gt;&lt;br /&gt;
** checking state: &amp;lt;code&amp;gt;docker-compose ps&amp;lt;/code&amp;gt;&lt;br /&gt;
** starting everything: &amp;lt;code&amp;gt;docker-compose up -d&amp;lt;/code&amp;gt;&lt;br /&gt;
** logs: &amp;lt;code&amp;gt;docker-compose logs -f --tail=20&amp;lt;/code&amp;gt;&lt;br /&gt;
* BTRFS raid for HDD’s under &amp;lt;code&amp;gt;/data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Random notes ==&lt;br /&gt;
&lt;br /&gt;
=== Building customized OpenWRT for Archer C5 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh kanthaus-server&lt;br /&gt;
sudo -iu openwrt-builder&lt;br /&gt;
cd openwrt&lt;br /&gt;
make&lt;br /&gt;
ls -l bin/targets/ath79/generic/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== included changes ====&lt;br /&gt;
* root password&lt;br /&gt;
* default IP &amp;lt;code&amp;gt;192.168.178.200&amp;lt;/code&amp;gt; in ADMIN range&lt;br /&gt;
* switch: all ports in ADMIN net&lt;br /&gt;
* disabled DNS rebind protection&lt;br /&gt;
* wireless interface names&lt;br /&gt;
* additional packages&lt;br /&gt;
** openwisp-config&lt;br /&gt;
** prometheus-node-exporter-lu&lt;br /&gt;
** luci-ssl (for https)&lt;br /&gt;
** ebtables (for [https://blog.matthias-larisch.de/openwrt_client_isolation/ effective client isolation])&lt;br /&gt;
** tcpdump (for easier debugging)&lt;br /&gt;
&lt;br /&gt;
=== Upgrading customized OpenWRT ===&lt;br /&gt;
&lt;br /&gt;
Documentation: https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem&lt;br /&gt;
 ssh kanthaus-server&lt;br /&gt;
 sudo -iu openwrt-builder&lt;br /&gt;
 cd openwrt&lt;br /&gt;
 git pull&lt;br /&gt;
 git checkout v23.05.2&lt;br /&gt;
Edit &amp;lt;code&amp;gt;feeds.conf&amp;lt;/code&amp;gt; to change the branch for each feed to the new version, e.g. &amp;lt;code&amp;gt;...;openwrt-23.05&amp;lt;/code&amp;gt;&lt;br /&gt;
 ./scripts/feeds update -a&lt;br /&gt;
 ./scripts/feeds install -a&lt;br /&gt;
 make -j4 defconfig download clean world&lt;br /&gt;
 ls -l bin/targets/ath79/generic/&lt;br /&gt;
Errors during &amp;lt;code&amp;gt;make world&amp;lt;/code&amp;gt; are to be expected, usually the set of default packages changed and dependency conflicts are happening. Investigate generated the &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file and compare with the official ones at https://downloads.openwrt.org/releases/23.05.2/targets/ath79/generic/config.buildinfo&lt;br /&gt;
&lt;br /&gt;
=== How to update OPNsense ===&lt;br /&gt;
&lt;br /&gt;
There is a short downtime involved during the two reboots, usually 2 minutes each.&lt;br /&gt;
&lt;br /&gt;
# Join the &amp;lt;code&amp;gt;kanthaus-admin&amp;lt;/code&amp;gt; wifi network and log in to 192.168.178.1 (user &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt;, password in keepass). Export the configuration to make a backup.&lt;br /&gt;
# Check if updates are available (System-&amp;amp;gt;Firmware-&amp;amp;gt;Updates)&lt;br /&gt;
# In case of minor updates, just use the button to perform&lt;br /&gt;
# If there is a major update (2x per year), download the newest version from https://opnsense.org/download/, unzip and flash to any USB stick&lt;br /&gt;
# Take a VGA monitor, a USB keyboard and the USB stick to the K20 basement big room, open the rack box and connect the devices to the small computer (HP)&lt;br /&gt;
# Log in with the USB keyboard (same credentials as above) and trigger a reboot. It should now boot from the USB stick.&lt;br /&gt;
# Press any key when it prompts to run the “Importer”. Now it will boot up a live environment and read the configuration file. If successful, network services should run as before.&lt;br /&gt;
# If all looks good, it’s time to install to disk. Run &amp;lt;code&amp;gt;opnsense-installer&amp;lt;/code&amp;gt; from the shell (either on local keyboard or via ssh), choose ZFS and let the installer do its job.&lt;br /&gt;
# Remove the USB stick and reboot again.&lt;br /&gt;
# Check if the system came up good.&lt;br /&gt;
# Perform any last updates from the web UI.&lt;br /&gt;
# Delete the configuration backup again, it can contain secrets.&lt;br /&gt;
&lt;br /&gt;
=== Pitfalls ===&lt;br /&gt;
&lt;br /&gt;
* We use 802.1q VLAN tagging. All switches everywhere need to have at least passive passthrough support, otherwise the Vlans disappear at that switch. I don’t know of any gigabit switch that does not support this.&lt;br /&gt;
* Again Vlan: Managed switches normally need to have all VLANs that should be forwarded (also tagged -&amp;amp;gt; tagged forward) defined in them.&lt;br /&gt;
* Again Vlan: Some Access Points like WDR841 v7/v8 cannot handle tagged and untagged vlan on the same port at the same time. So far, we don’t have any equipment like that and likely we will never have, but just to know…&lt;br /&gt;
* Again Vlan: fritz boxes have their switch in managed vlan mode and don’t forward any tagged vlan&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Network&amp;diff=1990</id>
		<title>Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Network&amp;diff=1990"/>
		<updated>2025-07-11T20:46:17Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Update Piano Room AP information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;👻 This page should document some bits of the network infrastructure of Kanthaus. Please maintain so people with a bit of network knowledge can understand and maintain the network. See also [[Server]].&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
[[File:Network topology 2024-10-18 .png|none|thumb]]&amp;lt;!--&lt;br /&gt;
drawn with https://excalidraw.com/&lt;br /&gt;
raw file for modifying: /images/network-topology.svg&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ISP ==&lt;br /&gt;
We currently use Telekom as our internet provider. They have a [https://www.telekom.de/hilfe/hilfe-bei-stoerungen/leitungspruefung help page] for diagnosing internet issues from their side: good idea to check this first if the wifi networks are still up, but not connected to the internet.&lt;br /&gt;
&lt;br /&gt;
== TRUNK network ==&lt;br /&gt;
&lt;br /&gt;
the backbone of our network, connecting all Access Points and the central firewall, carries all the different networks via VLAN:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!align=&amp;quot;right&amp;quot; width=&amp;quot;17%&amp;quot;| VLAN-ID&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;| IP Range&lt;br /&gt;
!width=&amp;quot;26%&amp;quot;| Name&lt;br /&gt;
!width=&amp;quot;22%&amp;quot;| Purpose / Devices&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| untagged&lt;br /&gt;
| 192.168.178.x&lt;br /&gt;
| ADMIN&lt;br /&gt;
| configuration tnterfaces of all AP’s &amp;amp;amp; Switches&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 4&lt;br /&gt;
| 192.168.4.x&lt;br /&gt;
| PRINTER&lt;br /&gt;
| connection between print server (kanthaus-server) and printer&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 5&lt;br /&gt;
| 192.168.5.x&lt;br /&gt;
| IOT &#039;&#039;(former SMA)&#039;&#039;&lt;br /&gt;
| only access to kanthaus-server and potentially whitelisted internet IP’s + isolated clients¹&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 100&lt;br /&gt;
| 192.168.100.x&lt;br /&gt;
| RESTRICTED&lt;br /&gt;
| normal internet access + isolated clients¹&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 101&lt;br /&gt;
| 192.168.101.x&lt;br /&gt;
| VPN&lt;br /&gt;
| tunneled to VPN (currently NL)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 102&lt;br /&gt;
| 192.168.102.x&lt;br /&gt;
| UNSECURE&lt;br /&gt;
| normal internet access&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
¹ client isolation does not work between LAN &amp;amp;lt;-&amp;amp;gt; LAN clients&lt;br /&gt;
&lt;br /&gt;
== Wifis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! SSID&lt;br /&gt;
! Network&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| Encrypt.&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| 802.11r&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| 802.11w&lt;br /&gt;
!align=&amp;quot;center&amp;quot;| Isolation&lt;br /&gt;
! Comment&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kanthaus&amp;lt;/code&amp;gt;&lt;br /&gt;
| RESTRICTED&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| WPA3&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -¹&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| required&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| on&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kanthaus-insecure&amp;lt;/code&amp;gt;&lt;br /&gt;
| INSECURE&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| WPA2&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
| unsupported drivers, LAN parties, etc.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kanthaus-gast&amp;lt;/code&amp;gt;&lt;br /&gt;
| VPN&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| on&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kh-admin&amp;lt;/code&amp;gt;&lt;br /&gt;
| ADMIN&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| WPA3&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| required&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;kh-iot&amp;lt;/code&amp;gt;&lt;br /&gt;
| IOT&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| WPA2&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot;| on&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;802.11r:&#039;&#039;&#039; Fast Roaming &#039;&#039;&#039;802.11w&#039;&#039;&#039;: Management Frame Protection&lt;br /&gt;
&lt;br /&gt;
¹ would be cool to have it on, but eventually led to issues. let’s reevaluate in a few months&lt;br /&gt;
&lt;br /&gt;
== Device list ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;| Type&lt;br /&gt;
!width=&amp;quot;18%&amp;quot;| Name&lt;br /&gt;
!width=&amp;quot;19%&amp;quot;| Admin-IP&lt;br /&gt;
!width=&amp;quot;18%&amp;quot;| Location&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;| Hardware&lt;br /&gt;
!width=&amp;quot;8%&amp;quot;| Comments&lt;br /&gt;
|-&lt;br /&gt;
| Router&lt;br /&gt;
| &amp;lt;code&amp;gt;fritz.box&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.200.1&lt;br /&gt;
| K20-1 hallway&lt;br /&gt;
| FritzBox 7530&lt;br /&gt;
| DSL termination (on main network), telephone&lt;br /&gt;
|-&lt;br /&gt;
| Router&lt;br /&gt;
| &amp;lt;code&amp;gt;firewall&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.1&lt;br /&gt;
| K20-B rack&lt;br /&gt;
|&lt;br /&gt;
| central router / firewall&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k20-0&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.207&lt;br /&gt;
| K20-0 hallway&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|switch with servers&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k20-1&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.201&lt;br /&gt;
| K20-1 hallway&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|maybe overloaded&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k20-3&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.208&lt;br /&gt;
| K20-3 center&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k20-B&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.206&lt;br /&gt;
| K20-B water room&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|for IoT devices&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;AP&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dragon-k22-0&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;192.168.178.204&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;K22-0 side hallway&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;Archer C5 v1.2&amp;lt;/s&amp;gt;&lt;br /&gt;
|usually unplugged&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dragon-k22-1&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
| &amp;lt;s&amp;gt;192.168.178.202&amp;lt;/s&amp;gt; 192.168.178.217&lt;br /&gt;
| K22-1-4 piano room&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|Timber installed the &amp;quot;normal&amp;quot; firmware, now it has a separate wifi (see [https://chat.kanthaus.online/kanthaus/pl/px368istkib7xdf4ekae76oqze Mattermost])&lt;br /&gt;
|-&lt;br /&gt;
| AP&lt;br /&gt;
| &amp;lt;code&amp;gt;dragon-k22-2&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.178.203&lt;br /&gt;
| K22-2 hallway&lt;br /&gt;
| Archer C5 v1.2&lt;br /&gt;
|maybe overloaded&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;AP&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;s&amp;gt;dragon-k20-outside&amp;lt;/s&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;192.168.178.205&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;K20-0-2 window&amp;lt;/s&amp;gt;&lt;br /&gt;
| &amp;lt;s&amp;gt;Archer C5 v1.2&amp;lt;/s&amp;gt;&lt;br /&gt;
| broken?&lt;br /&gt;
|-&lt;br /&gt;
| Managed Switch&lt;br /&gt;
| k20 firewall switch&lt;br /&gt;
| 192.168.178.9&lt;br /&gt;
| K20-B rack&lt;br /&gt;
| TL-SG108E&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Managed Switch&lt;br /&gt;
| k22 trunk switch&lt;br /&gt;
| 192.168.178.10&lt;br /&gt;
| K22-B stairs&lt;br /&gt;
| GS108E v3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Switch&lt;br /&gt;
| k20 trunk switch&lt;br /&gt;
| -&lt;br /&gt;
| K20-B Rack&lt;br /&gt;
|&lt;br /&gt;
| provides PoE for some AP’s in K20&lt;br /&gt;
|-&lt;br /&gt;
| Server&lt;br /&gt;
| &amp;lt;code&amp;gt;kanthaus-server&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.*.2&lt;br /&gt;
| K20-0 hallway&lt;br /&gt;
| Server, i5-2500K, 16GB Ram&lt;br /&gt;
| file storage, nextcloud, foodsharing gitlab CI Server, housebus logging &amp;amp;amp; time/sunset provider (see [https://git.kanthaus.online/kanthaus/kanthaus-server-services/ Repo])&lt;br /&gt;
|-&lt;br /&gt;
| Main water meter reader&lt;br /&gt;
| &amp;lt;code&amp;gt;mainwatermeter&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.5.37&lt;br /&gt;
| K20 basement (former heating room)&lt;br /&gt;
| ESP32-CAM&lt;br /&gt;
| see [[./water.html|Water usage tracking]]&lt;br /&gt;
|-&lt;br /&gt;
| Warm water meter reader&lt;br /&gt;
| &amp;lt;code&amp;gt;warmwatermeter&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.5.38&lt;br /&gt;
| K20 basement (rainwater room)&lt;br /&gt;
| ESP32-CAM&lt;br /&gt;
| see [[./water.html|Water usage tracking]]&lt;br /&gt;
|-&lt;br /&gt;
| Ventilation watcher&lt;br /&gt;
| &amp;lt;code&amp;gt;ventilation&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.5.39&lt;br /&gt;
| K20 attic&lt;br /&gt;
| ESP32-WROOM&lt;br /&gt;
| see [https://git.kanthaus.online/kanthaus/ventilation-watcher docs]&lt;br /&gt;
|-&lt;br /&gt;
| K20 door&lt;br /&gt;
| &amp;lt;code&amp;gt;k20-door&amp;lt;/code&amp;gt;&lt;br /&gt;
| 192.168.5.40&lt;br /&gt;
| K20 hallway&lt;br /&gt;
| ESP32-CAM&lt;br /&gt;
| see [https://git.kanthaus.online/kanthaus/door-esp32 docs]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firewall / Router ==&lt;br /&gt;
&lt;br /&gt;
Central point of all subnets, routes between them &lt;br /&gt;
&lt;br /&gt;
* runs OPNSense &lt;br /&gt;
* due to lack of ports on firewall, a VLAN switch added, bound to the firewall, also connecting to the fritz!box&lt;br /&gt;
* Features: &lt;br /&gt;
** VPN client&lt;br /&gt;
** DNS Server&lt;br /&gt;
** DHCP Server&lt;br /&gt;
&lt;br /&gt;
== Access Points ==&lt;br /&gt;
&lt;br /&gt;
* see Device list&lt;br /&gt;
* so far all Archer C5 v1.2&lt;br /&gt;
* centrally configured by OpenWISP: https://openwisp.im.kanthaus.online (only reachable inside the &amp;lt;code&amp;gt;ADMIN&amp;lt;/code&amp;gt; net)&lt;br /&gt;
* starting point for other ethernet cables on that floor&lt;br /&gt;
* in K20 all powered by PoE (802.3af) from the switch in the basement&lt;br /&gt;
&lt;br /&gt;
== Printer (Canon C2025i) ==&lt;br /&gt;
&lt;br /&gt;
* Printer is in its own subnet together with the kanthaus-server&lt;br /&gt;
* On the kanthaus-server, there is &#039;&#039;CUPS&#039;&#039; running with printer sharing and auto discovery in the networks via avahi-daemon&lt;br /&gt;
* In &amp;lt;code&amp;gt;RESTRICTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;UNSECURE&amp;lt;/code&amp;gt; the printer is also reachable directly via 192.168.4.153:9100&lt;br /&gt;
&lt;br /&gt;
== kanthaus-server ==&lt;br /&gt;
&lt;br /&gt;
* Most of the services are running inside a docker-compose setup&lt;br /&gt;
** Repo: https://git.kanthaus.online/kanthaus/kanthaus-server-services&lt;br /&gt;
** in &amp;lt;code&amp;gt;/opt/kh-services&amp;lt;/code&amp;gt;&lt;br /&gt;
** checking state: &amp;lt;code&amp;gt;docker-compose ps&amp;lt;/code&amp;gt;&lt;br /&gt;
** starting everything: &amp;lt;code&amp;gt;docker-compose up -d&amp;lt;/code&amp;gt;&lt;br /&gt;
** logs: &amp;lt;code&amp;gt;docker-compose logs -f --tail=20&amp;lt;/code&amp;gt;&lt;br /&gt;
* BTRFS raid for HDD’s under &amp;lt;code&amp;gt;/data&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Random notes ==&lt;br /&gt;
&lt;br /&gt;
=== Building customized OpenWRT for Archer C5 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh kanthaus-server&lt;br /&gt;
sudo -iu openwrt-builder&lt;br /&gt;
cd openwrt&lt;br /&gt;
make&lt;br /&gt;
ls -l bin/targets/ath79/generic/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== included changes ====&lt;br /&gt;
* root password&lt;br /&gt;
* default IP &amp;lt;code&amp;gt;192.168.178.200&amp;lt;/code&amp;gt; in ADMIN range&lt;br /&gt;
* switch: all ports in ADMIN net&lt;br /&gt;
* disabled DNS rebind protection&lt;br /&gt;
* wireless interface names&lt;br /&gt;
* additional packages&lt;br /&gt;
** openwisp-config&lt;br /&gt;
** prometheus-node-exporter-lu&lt;br /&gt;
** luci-ssl (for https)&lt;br /&gt;
** ebtables (for [https://blog.matthias-larisch.de/openwrt_client_isolation/ effective client isolation])&lt;br /&gt;
** tcpdump (for easier debugging)&lt;br /&gt;
&lt;br /&gt;
=== Upgrading customized OpenWRT ===&lt;br /&gt;
&lt;br /&gt;
Documentation: https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem&lt;br /&gt;
 ssh kanthaus-server&lt;br /&gt;
 sudo -iu openwrt-builder&lt;br /&gt;
 cd openwrt&lt;br /&gt;
 git pull&lt;br /&gt;
 git checkout v23.05.2&lt;br /&gt;
Edit &amp;lt;code&amp;gt;feeds.conf&amp;lt;/code&amp;gt; to change the branch for each feed to the new version, e.g. &amp;lt;code&amp;gt;...;openwrt-23.05&amp;lt;/code&amp;gt;&lt;br /&gt;
 ./scripts/feeds update -a&lt;br /&gt;
 ./scripts/feeds install -a&lt;br /&gt;
 make -j4 defconfig download clean world&lt;br /&gt;
 ls -l bin/targets/ath79/generic/&lt;br /&gt;
Errors during &amp;lt;code&amp;gt;make world&amp;lt;/code&amp;gt; are to be expected, usually the set of default packages changed and dependency conflicts are happening. Investigate generated the &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt; file and compare with the official ones at https://downloads.openwrt.org/releases/23.05.2/targets/ath79/generic/config.buildinfo&lt;br /&gt;
&lt;br /&gt;
=== How to update OPNsense ===&lt;br /&gt;
&lt;br /&gt;
There is a short downtime involved during the two reboots, usually 2 minutes each.&lt;br /&gt;
&lt;br /&gt;
# Join the &amp;lt;code&amp;gt;kanthaus-admin&amp;lt;/code&amp;gt; wifi network and log in to 192.168.178.1 (user &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt;, password in keepass). Export the configuration to make a backup.&lt;br /&gt;
# Check if updates are available (System-&amp;amp;gt;Firmware-&amp;amp;gt;Updates)&lt;br /&gt;
# In case of minor updates, just use the button to perform&lt;br /&gt;
# If there is a major update (2x per year), download the newest version from https://opnsense.org/download/, unzip and flash to any USB stick&lt;br /&gt;
# Take a VGA monitor, a USB keyboard and the USB stick to the K20 basement big room, open the rack box and connect the devices to the small computer (HP)&lt;br /&gt;
# Log in with the USB keyboard (same credentials as above) and trigger a reboot. It should now boot from the USB stick.&lt;br /&gt;
# Press any key when it prompts to run the “Importer”. Now it will boot up a live environment and read the configuration file. If successful, network services should run as before.&lt;br /&gt;
# If all looks good, it’s time to install to disk. Run &amp;lt;code&amp;gt;opnsense-installer&amp;lt;/code&amp;gt; from the shell (either on local keyboard or via ssh), choose ZFS and let the installer do its job.&lt;br /&gt;
# Remove the USB stick and reboot again.&lt;br /&gt;
# Check if the system came up good.&lt;br /&gt;
# Perform any last updates from the web UI.&lt;br /&gt;
# Delete the configuration backup again, it can contain secrets.&lt;br /&gt;
&lt;br /&gt;
=== Pitfalls ===&lt;br /&gt;
&lt;br /&gt;
* We use 802.1q VLAN tagging. All switches everywhere need to have at least passive passthrough support, otherwise the Vlans disappear at that switch. I don’t know of any gigabit switch that does not support this.&lt;br /&gt;
* Again Vlan: Managed switches normally need to have all VLANs that should be forwarded (also tagged -&amp;amp;gt; tagged forward) defined in them.&lt;br /&gt;
* Again Vlan: Some Access Points like WDR841 v7/v8 cannot handle tagged and untagged vlan on the same port at the same time. So far, we don’t have any equipment like that and likely we will never have, but just to know…&lt;br /&gt;
* Again Vlan: fritz boxes have their switch in managed vlan mode and don’t forward any tagged vlan&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=User:Timber1/PrivacyProposal&amp;diff=1981</id>
		<title>User:Timber1/PrivacyProposal</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=User:Timber1/PrivacyProposal&amp;diff=1981"/>
		<updated>2025-07-01T08:58:51Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Link note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moved to a [https://cloud.kanthaus.online/f/922122 private note].&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=User:Timber1&amp;diff=1977</id>
		<title>User:Timber1</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=User:Timber1&amp;diff=1977"/>
		<updated>2025-06-30T14:47:54Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Create page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m Timber, I&#039;m a member of Kanthaus.&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Mattermost&amp;diff=1961</id>
		<title>Mattermost</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Mattermost&amp;diff=1961"/>
		<updated>2025-05-27T19:10:57Z</updated>

		<summary type="html">&lt;p&gt;Timber1: /* Creating a personal account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;👪️ We use Mattermost to organize ourselves, at https://chat.kanthaus.online/&lt;br /&gt;
&lt;br /&gt;
== Creating a personal account ==&lt;br /&gt;
You can get an account by asking someone with admin privileges, e.g. a member.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
Our main channel is &amp;lt;code&amp;gt;#kanthaus&amp;lt;/code&amp;gt;. Many channels we use have been historically prefixed by &amp;lt;code&amp;gt;#kanthaus-&amp;lt;/code&amp;gt; because they were in a Slack instance shared with other people.&lt;br /&gt;
&lt;br /&gt;
Some of those channels are private, because they contain private or sensitive information. Those are reserved to Volunteers and Members.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
This lists the issues we have encountered when switching from Slack to Mattermost:&lt;br /&gt;
* No email integration. We have built the [https://codeberg.org/mailmirror/mailmirror MailMirror plugin] for that, which could still be [https://codeberg.org/mailmirror/mailmirror/issues improved in many ways]&lt;br /&gt;
* No support for reminders of events (for instance stored in an ICS file)&lt;br /&gt;
* Not possible to fully rename the &amp;quot;Town Square&amp;quot; channel (the id will stay `~town-square`)&lt;br /&gt;
[[Category:Digital]]&lt;br /&gt;
[[Category:Social]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Rat_trap&amp;diff=1954</id>
		<title>Rat trap</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Rat_trap&amp;diff=1954"/>
		<updated>2025-04-30T18:37:58Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Create the rat trap page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical]]&lt;br /&gt;
We have a somewhat elaborate rat trap in the basement. The code is in [https://git.kanthaus.online/timber/rattrap git].&lt;br /&gt;
[[File:Freeing.png|alt=The rat is leaving the trap in the wild|thumb|The rat leaving the trap in the wild.|none]]&lt;br /&gt;
&lt;br /&gt;
== Operating the trap ==&lt;br /&gt;
&lt;br /&gt;
=== Setting it up ===&lt;br /&gt;
To set up the trap, first make sure all cables are connected properly and the two light sensors sit well on the holes in the case. Open the gate and put bait at the very end of the inside of the trap. Put the slit of the gate on the arm of the motor, so that the arm can move freely when retreating to close the gate (the arm will move in the direction where it takes the least amount of distance to close the gate). Put the second magnet under the trap, exactly under the position the magnet of the gate will be when the gate is closed. Plug everything in.&lt;br /&gt;
&lt;br /&gt;
If the trap is within [[Wifi|WiFi]] range (of kanthaus-gast) and nothing is broken, a message should be sent to the [[Mattermost]] channel [https://chat.kanthaus.online/kanthaus/channels/rat-trap Rat Trap].&lt;br /&gt;
&lt;br /&gt;
=== Catching the rodent ===&lt;br /&gt;
When something caused the trap to close (e.g. a rat), again a message is sent on Mattermost. Also you can observe that it went off by the closed gate. Note that sometimes other things / people cause the gate to close without it going off; sometimes the trap also thinks there was something without that being the case.&lt;br /&gt;
&lt;br /&gt;
=== Freeing the rodent ===&lt;br /&gt;
It&#039;s a tricky question where to put the rat. The problem is that we don&#039;t want it coming back, but we also don&#039;t want to kill it. For it not to come back, it should be safe to bring it about 3km away. For it not to die it needs it&#039;s family though; so for it to find its way back it should not be brought away more than 100m. So far we made the decision in favor of the rat not coming back.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;open the trap&#039;&#039;&#039;, first remove the magnet from under the trap, by sliding it to the front. Not doing this will likely break the gate. Then you can pull the gate up. Be careful not to get bitten by the rat!&lt;br /&gt;
&lt;br /&gt;
Afterwards you can clean the trap and set it up again following the steps from the &#039;&#039;Setting it up&#039;&#039; section. Make sure not to damage the electronics when cleaning the trap!&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=File:Freeing.png&amp;diff=1953</id>
		<title>File:Freeing.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=File:Freeing.png&amp;diff=1953"/>
		<updated>2025-04-30T18:22:29Z</updated>

		<summary type="html">&lt;p&gt;Timber1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The rat leaving the trap in the wild&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Bread&amp;diff=1845</id>
		<title>Bread</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Bread&amp;diff=1845"/>
		<updated>2025-03-06T22:24:56Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Clarify that the bread machine is just one way to create bread&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We eat a lot of bread in Kanthaus.&lt;br /&gt;
&lt;br /&gt;
== Where to find bread ==&lt;br /&gt;
Unfrozen bread is typically stored in the [[Snack kitchen]], in the box under the bread cutting board. Frozen bread is in one of the [[Freezer|freezers]].&lt;br /&gt;
&lt;br /&gt;
== Obtaining new bread ==&lt;br /&gt;
There are two main options for obtaining new bread: [[Saving food|Saving]] (either dumpster diving or foodsharing) or making it yourself, e.g. with the help of the [[Bread machine]].&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Bread_machine&amp;diff=1844</id>
		<title>Bread machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Bread_machine&amp;diff=1844"/>
		<updated>2025-03-06T22:24:08Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Link other pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is about the [https://manuall.de/ambiano-bm21-08631-brotbackautomat/ Aldi Ambiano Brotbackautomat], which is (currently) the main machine used for making [[bread]].&lt;br /&gt;
&lt;br /&gt;
== Recipe ==&lt;br /&gt;
The most tested recipe is the &#039;&#039;Brot-Grundrezept&#039;&#039;, so basic bread recipe. For this we use (slightly different to the original recipe):&lt;br /&gt;
&lt;br /&gt;
* 320ml water (= 320g)&lt;br /&gt;
* 4tbs oil (= 52g, typically sunflower seed oil)&lt;br /&gt;
* 2tsp salt (= 12g)&lt;br /&gt;
* 2.5tbs sugar (= 35g)&lt;br /&gt;
* 500g flour (typically a mixture of 405 and non-405 wheat flour)&lt;br /&gt;
* 1.75tsp yeast (= 5.25g)&lt;br /&gt;
&lt;br /&gt;
== Device operation ==&lt;br /&gt;
&lt;br /&gt;
* Remove the bread container (number 1 in the manual) from the machine&lt;br /&gt;
* Make sure the dough hook (number 2 in the manual) is inserted correctly in the bread container&lt;br /&gt;
* Put the ingredients in the bread container, using a scale if necessary. For measuring tsp / tbs we have a special spoon in the [[Kitchen|main kitchen]] (number 5 in the manual). Make sure the yeast is not getting wet in case you later increase the time&lt;br /&gt;
* Insert the bread container in the machine. You will need to insert it a bit diagonally and then twist it until it locks in&lt;br /&gt;
* Close the lid&lt;br /&gt;
* Plug in the bread machine&lt;br /&gt;
* The display should display a 1 to the left of the estimated time, indicating the first program (&#039;&#039;GRUNDPROGRAMM&#039;&#039;). If this is not the program you want, push the &#039;&#039;MENÜ&#039;&#039; button (number 14 in the manual) repeatedly. If you follow the basic recipe, leave it at 1&lt;br /&gt;
* Push the &#039;&#039;GEWICHT&#039;&#039; button (number 13 in the manual) until the little arrow points at &#039;&#039;1000g&#039;&#039;&lt;br /&gt;
* Push the &#039;&#039;BRÄUNUNGSGRAD&#039;&#039; button (number 9 in the manual) until the little arrow points at &#039;&#039;DUNKEL&#039;&#039;&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: If you want the device to be done later, e.g. because you want it to utilize solar energy and still be done at 7am in the morning, push the time button (number 12 / 11 in the manual) repeatedly until the time displayed is to your liking. The time displayed is the time the machine takes until the machine is done&lt;br /&gt;
* Wait until the time has passed and the machine is done&lt;br /&gt;
* Take out the bread container. Try not to burn your hands: It&#039;s very hot!&lt;br /&gt;
* Flip the bread container onto a plate, kicking the bread out of it&lt;br /&gt;
* Carefully remove the hook from the bread, utilizing a knife and/or another hook (number 6 in the manual)&lt;br /&gt;
* Let the bread cool down for some time&lt;br /&gt;
* Eat the bread&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Bread_machine&amp;diff=1843</id>
		<title>Bread machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Bread_machine&amp;diff=1843"/>
		<updated>2025-03-06T22:22:02Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Create bread machine page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is about the [https://manuall.de/ambiano-bm21-08631-brotbackautomat/ Aldi Ambiano Brotbackautomat], which is (currently) the main machine used for making bread.&lt;br /&gt;
&lt;br /&gt;
== Recipe ==&lt;br /&gt;
The most tested recipe is the &#039;&#039;Brot-Grundrezept&#039;&#039;, so basic bread recipe. For this we use (slightly different to the original recipe):&lt;br /&gt;
&lt;br /&gt;
* 320ml water (= 320g)&lt;br /&gt;
* 4tbs oil (= 52g, typically sunflower seed oil)&lt;br /&gt;
* 2tsp salt (= 12g)&lt;br /&gt;
* 2.5tbs sugar (= 35g)&lt;br /&gt;
* 500g flour (typically a mixture of 405 and non-405 wheat flour)&lt;br /&gt;
* 1.75tsp yeast (= 5.25g)&lt;br /&gt;
&lt;br /&gt;
== Device operation ==&lt;br /&gt;
&lt;br /&gt;
* Remove the bread container (number 1 in the manual) from the machine&lt;br /&gt;
* Make sure the dough hook (number 2 in the manual) is inserted correctly in the bread container&lt;br /&gt;
* Put the ingredients in the bread container, using a scale if necessary. For measuring tsp / tbs we have a special spoon in the main kitchen (number 5 in the manual). Make sure the yeast is not getting wet in case you later increase the time&lt;br /&gt;
* Insert the bread container in the machine. You will need to insert it a bit diagonally and then twist it until it locks in&lt;br /&gt;
* Close the lid&lt;br /&gt;
* Plug in the bread machine&lt;br /&gt;
* The display should display a 1 to the left of the estimated time, indicating the first program (&#039;&#039;GRUNDPROGRAMM&#039;&#039;). If this is not the program you want, push the &#039;&#039;MENÜ&#039;&#039; button (number 14 in the manual) repeatedly. If you follow the basic recipe, leave it at 1&lt;br /&gt;
* Push the &#039;&#039;GEWICHT&#039;&#039; button (number 13 in the manual) until the little arrow points at &#039;&#039;1000g&#039;&#039;&lt;br /&gt;
* Push the &#039;&#039;BRÄUNUNGSGRAD&#039;&#039; button (number 9 in the manual) until the little arrow points at &#039;&#039;DUNKEL&#039;&#039;&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: If you want the device to be done later, e.g. because you want it to utilize solar energy and still be done at 7am in the morning, push the time button (number 12 / 11 in the manual) repeatedly until the time displayed is to your liking. The time displayed is the time the machine takes until the machine is done&lt;br /&gt;
* Wait until the time has passed and the machine is done&lt;br /&gt;
* Take out the bread container. Try not to burn your hands: It&#039;s very hot!&lt;br /&gt;
* Flip the bread container onto a plate, kicking the bread out of it&lt;br /&gt;
* Carefully remove the hook from the bread, utilizing a knife and/or another hook (number 6 in the manual)&lt;br /&gt;
* Let the bread cool down for some time&lt;br /&gt;
* Eat the bread&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Bread&amp;diff=1842</id>
		<title>Bread</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Bread&amp;diff=1842"/>
		<updated>2025-03-06T21:57:35Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Create bread page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We eat a lot of bread in Kanthaus.&lt;br /&gt;
&lt;br /&gt;
== Where to find bread ==&lt;br /&gt;
Unfrozen bread is typically stored in the [[Snack kitchen]], in the box under the bread cutting board. Frozen bread is in one of the [[Freezer|freezers]].&lt;br /&gt;
&lt;br /&gt;
== Obtaining new bread ==&lt;br /&gt;
There are two main options for obtaining new bread: [[Saving food|Saving]] (either dumpster diving or foodsharing) or making it yourself, with the help of the [[Bread machine]].&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Snack_kitchen&amp;diff=1841</id>
		<title>Snack kitchen</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Snack_kitchen&amp;diff=1841"/>
		<updated>2025-03-06T21:47:48Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Link bread article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;🥖 The place to find quick snacks and drinks.&lt;br /&gt;
&lt;br /&gt;
Space code: K20-1-1&lt;br /&gt;
&lt;br /&gt;
== Purposes ==&lt;br /&gt;
* prepare [[bread]], oats, convenience food&lt;br /&gt;
* make tea or coffee&lt;br /&gt;
* [[Dish washing|use the dishwasher]]&lt;br /&gt;
&lt;br /&gt;
== Specials ==&lt;br /&gt;
* the fridge&lt;br /&gt;
&lt;br /&gt;
== 77mm jar norm ==&lt;br /&gt;
[[File:JarNorm.jpeg|thumb]]&lt;br /&gt;
We have standardized on the 77mm jar: the most commonly found wide-mouth jar in these parts. This makes finding jar-lid pairs much easier!&lt;br /&gt;
&lt;br /&gt;
Exceptions are made for larger jars, since the 77mm jars have a maximum volume of ~750 mL. Such jars are stored with matching lids lightly screwed on.&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Snack kitchen tea and coffee labels .svg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
[[Category:Rooms]]&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Server&amp;diff=1449</id>
		<title>Server</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Server&amp;diff=1449"/>
		<updated>2024-12-05T11:42:01Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Add section about Tor Relay&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;⭐️ We have a server running locally that provides a few services to residents as well as guests.&lt;br /&gt;
&lt;br /&gt;
== File sharing services ==&lt;br /&gt;
&lt;br /&gt;
The server provides the possibility to store and exchange data. Some services are publicly available (e.g. connecting with an anonymous user), for others you need a user account with some privileges. All file services are only available in the &amp;lt;code&amp;gt;full&amp;lt;/code&amp;gt; [[Wifi|network]] and served via [[wikipedia:Samba_(software)|Samba]]. Use your computers file manager to browse the available network computers and locate the server as &amp;lt;code&amp;gt;KANTHAUS-SERVER&amp;lt;/code&amp;gt;. If this doesn’t show up in your file manager or the link is broken, you can try entering &amp;lt;code&amp;gt;smb://kanthaus-server/&amp;lt;/code&amp;gt; directly into your file managers address bar. This should work on most Linux environments.&lt;br /&gt;
&lt;br /&gt;
=== Getting a user account ===&lt;br /&gt;
To get a user account, speak to an admin (e.g. Antonin or Tilmann). The admin will add you to the Ansible user configuration and ask you to set a temporary password using your account. You can change the password yourself, e.g. via &amp;lt;code&amp;gt;smbpasswd -r kanthaus-server -U yourusername&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Actually, you have two passwords: &lt;br /&gt;
&lt;br /&gt;
* System user account: Used for local access and SSH access. Change password using &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt; when logged in &lt;br /&gt;
* Samba account: Used for accessing the samba network shares. Change password using command above remotely or using &amp;lt;code&amp;gt;smbpasswd&amp;lt;/code&amp;gt; when logged in.&lt;br /&gt;
&lt;br /&gt;
==== Kanthaus cloud copy ====&lt;br /&gt;
* The share &amp;lt;code&amp;gt;kanthaus-public&amp;lt;/code&amp;gt; offers an anonymously usable read only copy of the public part of the kanthaus cloud.&lt;br /&gt;
* The share &amp;lt;code&amp;gt;cloud.kanthaus.online&amp;lt;/code&amp;gt; offers a read only copy of the whole kanthaus cloud. You need to have a user with the permissions class &amp;lt;code&amp;gt;kanthaus&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The cloud copy is synchronized from the Kanthaus cloud once every minute.&lt;br /&gt;
&lt;br /&gt;
==== Internal cloud ====&lt;br /&gt;
The share &amp;lt;code&amp;gt;internalcloud&amp;lt;/code&amp;gt; stores some data which should only be available from inside Kanthaus (e.g. financial data) and is only available to users with the permissions class &amp;lt;code&amp;gt;internal&amp;lt;/code&amp;gt;. Please make sure to only put security sensitive stuff in here and also make sure to not leak your user credentials or the contents of this folder, when you have access to it.&lt;br /&gt;
&lt;br /&gt;
This folder is part of the daily backup.&lt;br /&gt;
&lt;br /&gt;
==== Home folder ====&lt;br /&gt;
Every user account also has their personal &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt; folder available as the &amp;lt;code&amp;gt;homes&amp;lt;/code&amp;gt; storage. All data you put here is only available to yourself. Inside the home folder, there is a directory called &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt;. This folder lies on an easily expandable, cheap hard-disk storage. It is slower to access but suitable to store lots of data (e.g. backups of your computer).&lt;br /&gt;
&lt;br /&gt;
Your home folder is part of a daily backup. Please put files called &amp;lt;code&amp;gt;.nobackup&amp;lt;/code&amp;gt; into folders that you don’t want to be backed up (e.g. to save storage space). The &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; folder is &#039;&#039;&#039;not&#039;&#039;&#039; part of the backup, but the hard-disks have a raid configuration to tolerate the loss of one hard-disk.&lt;br /&gt;
&lt;br /&gt;
== Shell access ==&lt;br /&gt;
&lt;br /&gt;
When you have a user account, you can also use SSH to connect to the server and use it for computing tasks. To set an initial password, ask an admin. When you already have file sharing access, you can add your SSH public key to the &amp;lt;code&amp;gt;homes/.ssh/authorized_keys&amp;lt;/code&amp;gt; and use that for logging in. Same as above: In your home directory there is a symlinked folder called &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; which is on spinning disks, whereby the rest of your home folder is on limited SSD space.&lt;br /&gt;
&lt;br /&gt;
== SFTP Access ==&lt;br /&gt;
&lt;br /&gt;
You can use software like FileZilla to access your home folder through &amp;lt;code&amp;gt;sftp://kanthaus-server&amp;lt;/code&amp;gt; providing your username. See the Shell Access section above for other details.&lt;br /&gt;
&lt;br /&gt;
=== How to unlock the encrypted &amp;lt;code&amp;gt;kanthaus-server&amp;lt;/code&amp;gt; via network ===&lt;br /&gt;
* be in &amp;lt;code&amp;gt;kh-admin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ssh -p 2222 root@192.168.178.249&amp;lt;/code&amp;gt;&lt;br /&gt;
** your key must be stored on the server in &amp;lt;code&amp;gt;/etc/dropbear-initramfs/authorized_keys&amp;lt;/code&amp;gt; -&amp;amp;gt; &amp;lt;code&amp;gt;update-initramfs -u&amp;lt;/code&amp;gt;&lt;br /&gt;
** ED25519 key fingerprint: &amp;lt;code&amp;gt;SHA256:mvCVYx8D/Fv/qYq+a/H4MoRAcfExAUsAFW3L2NVHnD0&amp;lt;/code&amp;gt;&lt;br /&gt;
* enter password (stored in keepass -&amp;amp;gt; Server)&lt;br /&gt;
&lt;br /&gt;
== System specs ==&lt;br /&gt;
&lt;br /&gt;
* System is designed to save power but still have some computing resources. &lt;br /&gt;
* CPU: Intel Core i5-2500K (4x 3.3 GHz) &lt;br /&gt;
* Ram: 16 GB DDR3L&lt;br /&gt;
* SSD: 1 TB Samsung 860 Evo as root file system &lt;br /&gt;
* HDD: BTRFS pool with 2 disks. Current usable size 3 TB&lt;br /&gt;
&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
Backups are done using Borgmatic. The backup target is the local hard-disk storage, so it does not safe us against fire or theft of the computer. We might think about adding a remote backup as well.&lt;br /&gt;
&lt;br /&gt;
== Tor Relay ==&lt;br /&gt;
We run a [https://metrics.torproject.org/rs.html#details/DB35C03124D5EC03BCFE2754078A48366133EE05 Tor middle/guard relay]. It was set up according to [https://community.torproject.org/relay/setup/guard/debian-ubuntu/ those instructions]. You can check its status with&lt;br /&gt;
 sudo systemctl status tor@default&lt;br /&gt;
It (re)started successfully if the following line (with a different IP) appears in the journal (&amp;lt;code&amp;gt;sudo journalctl -xeu tor@default&amp;lt;/code&amp;gt;):&lt;br /&gt;
 Self-testing indicates your ORPort 84.184.31.103:9001 is reachable from the outside. Excellent. Publishing server descriptor.&lt;br /&gt;
However, you don&#039;t need to worry too much about it, since [https://chat.kanthaus.online/kanthaus/messages/@timber Timber] will get notified within 5 minutes of the Tor relay being down.&lt;br /&gt;
&lt;br /&gt;
Also note that the Tor relay restarts every night something past 5 since our IP address changes around that time. This is expected behavior and nothing to worry about.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re very curious and want to see what happens on the server, you can check out &amp;lt;code&amp;gt;sudo nyx&amp;lt;/code&amp;gt;, though be mindful to [https://community.torproject.org/relay/setup/post-install/ not share this data publicly], since it can endanger the anonymity of our users.&lt;br /&gt;
&lt;br /&gt;
The keys of the relay lie in &amp;lt;code&amp;gt;/var/lib/tor/keys&amp;lt;/code&amp;gt; and are included in &amp;lt;code&amp;gt;/opt/kh-services/configs/borgmatic.yml&amp;lt;/code&amp;gt;, which &#039;&#039;should&#039;&#039; mean that they&#039;re being backed up.&lt;br /&gt;
&lt;br /&gt;
== Other services ==&lt;br /&gt;
&lt;br /&gt;
* Foodsharing Gitlab which CI runner (dockerized)&lt;br /&gt;
* House bus services&lt;br /&gt;
** local Web interface (dockerized)&lt;br /&gt;
** Logging daemon to externally hosted influxdb&lt;br /&gt;
* Virtual machines (kvm/libvirt)&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
	<entry>
		<id>https://wiki.kanthaus.online/index.php?title=Volunteer_induction&amp;diff=1443</id>
		<title>Volunteer induction</title>
		<link rel="alternate" type="text/html" href="https://wiki.kanthaus.online/index.php?title=Volunteer_induction&amp;diff=1443"/>
		<updated>2024-11-27T23:10:46Z</updated>

		<summary type="html">&lt;p&gt;Timber1: Correct mattermost introductory message. Group names are prefixed with a ~ instead of # in mattermost. Some groups I don&amp;#039;t know the name of, the prefix kanthaus- might have been removed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;🔰 This page lists knowledge and accesses we give to new [[Positions and evaluations|Volunteers]]. It is formatted as Markdown to make it easier to copy into a pad and tick boxes as the steps get done.&lt;br /&gt;
&lt;br /&gt;
Evaluation facilitators don’t need to do all this work by themselves, they can share the pad with the group to spread the load.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;### Immediately after evaluation&lt;br /&gt;
_to be done by the evaluation facilitator_&lt;br /&gt;
- [ ] invite to #kh_vol_and_mem and #kanthaus-mails&lt;br /&gt;
- [ ] invite to the Signal group&lt;br /&gt;
- [ ] send them the introductory message (see below)&lt;br /&gt;
- [ ] update the website (at https://git.kanthaus.online/kanthaus/kanthaus.online/src/branch/master/user/data/kanthausians.yaml)&lt;br /&gt;
&lt;br /&gt;
### In the next days&lt;br /&gt;
- [ ] explain the hosting duties&lt;br /&gt;
- [ ] invite to Nextcloud (create their account at https://cloud.kanthaus.online/settings/users and add them to the &amp;amp;quot;Kanthaus&amp;amp;quot; group)&lt;br /&gt;
- [ ] show the cloud calendar and file system (see https://wiki.kanthaus.online/Nextcloud)&lt;br /&gt;
- [ ] show KeePassXC&lt;br /&gt;
- [ ] explain CoMe facilitation and mention git, CoMe script and records&lt;br /&gt;
- [ ] explain the email setup, offer access to hello@ and creation of personal kanthaus address (see https://wiki.kanthaus.online/Email)&lt;br /&gt;
- [ ] show the wiki (at https://wiki.kanthaus.online)&lt;br /&gt;
- [ ] explain the collective agreements changes with ukuvota&lt;br /&gt;
- [ ] share link collection&lt;br /&gt;
- [ ] give a door tag&lt;br /&gt;
&lt;br /&gt;
### Eventually&lt;br /&gt;
- [ ] introduce to git with kanthaus.online to upload CoMe minutes&lt;br /&gt;
- [ ] introduce to git with kanthaus-private to update evaluation record&lt;br /&gt;
&lt;br /&gt;
### By request or obvious interest&lt;br /&gt;
- [ ] show grafana (https://grafana.yunity.org)&lt;br /&gt;
- [ ] show the overview of kanthaus repositories on git (https://git.kanthaus.online)&lt;br /&gt;
- [ ] introduce to editing kanthaus.online&lt;br /&gt;
- [ ] introduce to editing the wiki&lt;br /&gt;
- [ ] introduce to any more complex house task (sysadmin, finances, you name it)&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Link collection ==&lt;br /&gt;
&lt;br /&gt;
* https://kanthaus.online/public&lt;br /&gt;
* https://cloud.kanthaus.online&lt;br /&gt;
* https://handbook.kanthaus.online&lt;br /&gt;
* https://pad.kanthaus.online/groupHosting#&lt;br /&gt;
* https://git.kanthaus.online/&lt;br /&gt;
* https://premiumize.me&lt;br /&gt;
&lt;br /&gt;
== Template for introductory message ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Congratulations on becoming a Volunteer 🙂&lt;br /&gt;
&lt;br /&gt;
(This message is copy-pasted from https://wiki.kanthaus.online/Volunteer_induction )&lt;br /&gt;
&lt;br /&gt;
I have invited you to the private Mattermost channels&lt;br /&gt;
~vol_and_mem (the channel for volunteers and members only) and&lt;br /&gt;
~kanthaus-mails (where all mails to hello@kanthaus.online get forwarded to), but there are other channels you could be invited to if you wanted, mostly automatically fed ones like:&lt;br /&gt;
&lt;br /&gt;
* ~kanthaus-konto-wawü that prints the charitable association&#039;s bank account activity&lt;br /&gt;
* ~kanthaus-konto-hkw that prints the house owner association&#039;s bank account activity&lt;br /&gt;
* ~residence that prints the results of the weekly script that is used for CoMe&lt;br /&gt;
* ~kanthaus-git that prints activity on kanthaus-private and kanthaus.online git repositories&lt;br /&gt;
* ~kanthaus-finances that is mainly (but rarely) used by the finances team&lt;br /&gt;
&lt;br /&gt;
There also is a Signal group that serves as the only encrypted group communication for Kanthaus volunteers and members. I can add you there if you give me your phone number.&amp;lt;/pre&amp;gt;&lt;br /&gt;
Feel free to point them to the pad where the other induction tasks are listed, so that they can prod other Volunteers and Members if they are interested in getting a specific access or knowledge.&lt;/div&gt;</summary>
		<author><name>Timber1</name></author>
	</entry>
</feed>