Feta is a Matrix server distribution for the Raspberry Pi 3 and 4.

It is a an operating system image, based on Raspberry Pi OS Lite and includes the Matrix Synapse server, a self-hosted Element client, Postgres database, and it generates an SSL certificate for your domain using Certbot. The coturn TURN server is also included so voice and video calls work without any additional configuration.

The provided setup script will have your server up and running in a matter of minutes.

All you need to do is configure your DNS settings for your domain, forward some ports through your router, and boot up your Raspberry Pi. Once setup is complete, enjoy your new Matrix server! Synapse, Element, Postgres, coturn, and federation are all preconfigured for you.

Download

When you boot your raspberry pi, log in with username "pi" and password "matrix"

feta-lite.1.0.img - 2.36 GB (hosted on Google Drive)
feta-lite.1.0.img - 2.36 GB (mirror)
torrent download
SHA-256 checksum - 76ef59dc9e0ed9f8d71dbbc6e37c4edafa42ef8bb9c7f0cc3a6b46e7aa4d09f8 feta-lite.1.0.img

source code is available on GitHub

Walkthrough video



Getting started

Download the image and write it to an SD card. The Raspberry Pi Imager tool is recommended for writing the image to an SD card.
In the DNS settings for your domain, create the following records:

xxx.xxx.xxx.xxx = your external ip address

Record Type Host Value
A Record @ xxx.xxx.xxx.xxx
A Record element xxx.xxx.xxx.xxx
A Record matrix xxx.xxx.xxx.xxx
A Record www xxx.xxx.xxx.xxx


Turn on your Raspberry Pi and forward the following ports to it in your router settings:

TCP:
80, 443, 8448

To make voice and video calls work, you'll also need to forward these ports:

BOTH TCP and UDP:
3478, 3479, 5349

UDP:
64000 to 65535

Once the Raspberry Pi has booted, log in with the following credentials:

username: pi
password: matrix


The install script will begin automatically after you log in. Proceed through the install script, and enter your domain name and email address when prompted (your email address is used by certbot for SSL certificate renewal reminders). If everything goes well, you should end up at a command line with a message letting you know that everything was set up successfully. You can now visit your domain in a browser to begin using your new self-hosted Matrix server!

FAQs

- Where does the website for my root domain live? (the one that says "Congrats! Your server is all set up!") I want to change it.

The file for the webpage resides at /var/www/{your domain name}/index.html on your Raspberry Pi. Feel free to modify this file any way you see fit.

- I want to host a website for my root domain on a different server than my Raspberry Pi.

After successful Feta setup, point your "@" and "www" A Records in your domain's DNS settings to a different IP address. (future versions of Feta will make setting up a webpage for your root domain optional)

- Where does the Synapse config file live?

/home/pi/matrix/homeserver.yaml

- Where does the config file live for the self-hosted Element client?

/var/www/element.{your domain name}/element/config.json

Specifications

- Synapse 1.61
- Element 1.10.12
- Postgres 13.8
- coturn 4.5.2



This is cool! I want to help, or I would like to see feature xyz added, or this sucks because _______ and you should do _______ to make it better:

Feel free to send me an email at geoffledak@gmail.com, or head on over to #feta:matrix.org for discussion and updates!

Ideas for future releases

- Make things more configurable during set up (let user choose if they want the element client, root domain webpage, etc...)

- Add support for x86 systems

- Build a web based server admin panel (graphical tool for editing Synapse config, managing users, Postgres database pruning, etc...) [I just did some googling and found Awesome-Technologies synapse-admin, I'll have to look into that..]

- Big grand ideas! Make Feta to Matrix what Ubuntu is to Debian.

* Keep up with Synapse and Element releases, but make setting everything up so easy, even a dummy like me can do it.

* Work in the spirit of open source and accept people's pull requests if they want to contribute extra features. Such as:

* Making
animated gif previews work properly (it's been in discussion for 7+ years)

-- (Animated gif previews work in the Android version of Element but not the web version. Strange.)

* A built in animated gif keyboard for Element has also been in discussion for 7+ years. Maybe this could be added to Feta's customized version of Element:
see this, this, this, this, and this.

Someone actually built a proof of concept for a gif keyboard. It would be nice to work with people like this. Let's make sure the feature is production ready, test it, and get it released.