
Imagine you want to host your own community server in Session messenger: whether it's a chat for friends, discussion chat on specific topic or read-only public channel, you will go online, search «how to setup sogs in Session» and likely follow that one article on OXEN website about PySogs.
PySogs is the official implementation of SOGS in Session, developed by OXEN. It is written in Python (the worst possible choice, and I will explain why in a minute) and used by 100% of SOGS in Session — because there is no alternative.
Assuming you're not scared of Linux, you spin up your virtual server (widely compatible pysogs won't work on macos or windows), getting ready to setup everything quickly and start sharing your community. First thing you'll try to do is install .deb package. Oh-oh! It is only available for Ubuntu 22 jammy, if you try to install it on Ubuntu 20 or Ubuntu 24 you'll get a ton of errors because pysogs (aims to be compatible) does not work with your preferred OS.
You turn off the machine, delete OS, install Ubuntu 22 and continue... You run the first line from documentation and oh shit, you get a ton of bash: sudo: command not found, bash: lsb_release: command not found, -bash: curl: command not found errors, because documentation hadn't mentioned that you have to be experienced sysadmin and preinstall these packages first or use distibutive that comes with basic packages.
Finally you figure out how to add oxen's package to your system package list, install it and end up with some weird error like E: Sub-process /usr/bin/dpkg returned an error code (1).
And even if you managed to install pysogs correctly as unexperienced Session user who just wants to host a SOGS for friends, you will then be greeted with even more errors, but this time coming from pysogs itself:
Error: /var/lib/session-open-group-server/sogs.db or .../key_x25519 do not exist; has the package been configured and successfully started?
At this moment you probably wonder how would you run the community itself? Where are moderation tools? How to make it read-only or ban user? Well, worry no more, because pysogs has amazing documentation on arguments cli — the only tool that you can use to manage your SOGS. One command at a time. Typed character-by-character with your hands. Available with sogs --help (assuming you haven't did anything that prevents pysogs from just outputting you a little help message with the most generic arguments docs) .
The better SOGS
Introducing Bunsogs.
- Just copy executable (which size is at least 3x times smaller than pysogs .deb file) and run it on your preferred OS. Runs anywhere
- Use graphic interface cli to manage server. No need to type commands by hand, just select them with arrows (and there will likely by an actual GUI soon that you can use with cursor inside of terminal!)
- Very fast — written in Bun.sh, definitely faster than python
- If you want to create a read-only room or invite-only room, just choose template when creating it, no need to fuck with one-letter permissions configurations via cli
- Permissions can be changed via that gui cli, users can be searched and banned by prefix
- Use Bunsogs's REST Bot API for your cool bots
Finally. Antispam (also anticsam and other plugins)
Bunsogs has plugins. No more random weirdos spamming your SOGS with flood, porn or illegal content. Develop modular plugins using rich documentation and connect them without changing source code of bunsogs.
Another plugin available out-of-the-box is captcha for your chats. Users won't be able to send messages until they complete configurable captcha:

You can find out more about how antispam and anticsam plugins work on corresponding pages on GitHub.
More problems with SOGS
Recently a cryptography enthusiast li0ard discovered a way to unblind 15-prefixed IDs:
This section of article had to be taken down per Oxen's request as it discloses method of unblinding 15-prefixed IDs and it's too early to migrate to 25-prefixed IDs. Someday I will add this section back.
Unblinding defeats the whole purpose of blinded IDs as they were intended to protect original ID of user from discovery by bots and spam on servers and protect identity among different servers.
While it's not a direct problem with PySogs itself, the 25-prefixed blinded IDs support is still waiting to be merged to PySogs for more than 8 months now and with recent statements about OXEN foundation moving its focus on developing SENT token, it isn't clear when this issue will be resolved.
Making SOGS what it was intended to be
This project was developed single handedly by author of this blog, Viktor Shchelochkov aka hloth.dev. Consider donating to me if you like Session and bunsogs :)
Join my SOGS about Bunsogs!
https://sogs.hloth.dev/bunsogs?public_key=8948f2d9046a40e7dbc0a4fd7c29d8a4fe97df1fa69e64f0ab6fc317afb9c945
I'm also going to release Session Native client in foreseeable future, so stay tuned and join SOGS for it too!
https://sogs.hloth.dev/session-native?public_key=8948f2d9046a40e7dbc0a4fd7c29d8a4fe97df1fa69e64f0ab6fc317afb9c945