# Recommendations for SOGS Operators **TL;DR**: [Appoint mods](#moderating-abuse); [keep in touch](#communication-channels); [tag your room right](#community-tags) (`#nsfw` and `#test`); [and above all, follow the rules](README.md#policy). - [Communication channels](#communication-channels) - [Moderating abuse](#moderating-abuse) - [Disabling attachments](#disabling-attachments) - [Limiting Direct Messages](#limiting-direct-messages) - [Filtering abusive language](#filtering-abusive-language) - [Additional moderator tools](#additional-moderator-tools) - [Customization](#customization) - [First steps](#first-steps) - [Community tags](#community-tags) - [Language tags](#language-tags) - [Server-wide icons](#server-wide-icons) - [Diagnosing listing issues](#diagnosing-listing-issues) - [De-listing requests](#de-listing-requests) ## Communication channels If you operate a Session Group Server, it is recommended that: - you [have a presence in the Session Open Group Operators Community](https://sessioncommunities.online/#sogops+118d) and - you [keep in touch with the maintainers of SessionCommunities.Online](README.md#contact-us). ## Moderating abuse Communities listed on our site must take care to [follow our policy](README.md#policy), which includes the [Session Terms of Service](https://getsession.org/terms-of-service). **Abuse is a very real problem on Session. Make sure to appoint sufficient moderators to your Communities**. The following mitigations may also help prevent abuse in your Community. ### Disabling attachments The following command will allow only staff to send attachments in a given Community: ```sh sogs --rooms "MY_ROOM_ID" --remove-perms u ``` Replace `MY_ROOM_ID` with `*` (asterisk) to apply this change to all Communities on your server. **Side effects**: - Link previews and replies to media messages can no longer be sent by regular users. - Access to the command line is necessary to grant the upload permission to individual users: `sogs --rooms MY_ROOM_ID --add-perms u --users USER_SESSION_ID`. ### Limiting Direct Messages The following command-line script will prevent your Community server from propagating message requests when both participants are "untrusted"; that is, when neither participant is a moderator, nor has explicit permissions to upload attachments: > To grant the attachment upload permission to a regular user, see [Disabling Attachments](#disabling-attachments) or [Additional Moderator Tools](#additional-moderator-tools). ### Filtering abusive language You can use the built-in profanity list feature of your SOGS to block messages containing certain words. To edit this profanity list, see the `/var/lib/session-open-group-server/profanity-block-list.txt` file. You may also modify the behavior of the profanity blocker, such as adding a custom reply; see your `sogs.ini` configuration file. Existing lists created by the community may serve as a basis for your profanity list: - Profanity list by slrslr: **Side effects**: - ⚠️ Long profanity lists may slow down restarts of your SOGS, consume all available virtual memory and/or lead to crashes. ([Issue](https://github.com/oxen-io/session-pysogs/issues/159)) ### Additional moderator tools - Compile and use the AppImage for `gravel`'s [fork of Session Desktop](https://codeberg.org/gravel/session-desktop/src/branch/dev-gravel/CONTRIBUTING.md#developer-setup). - `Allow sending attachments` and `Remove attachment exception` options allow moderators to grant or revoke upload permissions for regular users. - `Ban User from Server` and `Unban User from Server` options allow **global** moderators to ban a user from all Communities on a given server. - **Warning**: To receive updates, you will need to compile new versions of the fork. The fork is maintained for personal use and may fall behind on security fixes. ## Customization ### First steps Make your Community look more legitimate by setting a name and description. Don't know how to set up a room with a name and description? Check the [official documentation](https://github.com/oxen-io/session-pysogs/blob/stable/administration.md#creating-a-room). Forgot to set a description? Update it like so: ```sh sogs --rooms MY_ROOM_ID --description "New description goes here #lang:en #privacy" ``` Forgot to set a name? The following command might just save you (just replace the bits in uppercase): ```sh sqlite3 /var/lib/session-open-group-server/sogs.db 'update rooms set name="MY_ROOM_NAME" where token="MY_ROOM_ID";' ``` ### Community tags You may insert tags at the end of your room description like so: ```This is a cool chatroom. #cool #chat #free``` The obvious benefit is searchability. However, tags such `#nsfw` or `#test` also help us automatically hide parts of the Community display: The `#nsfw` tag hides the Community avatar and ensures visitors know your Community is not safe for work, while the `#test` tag marks a Community as "intended for testing" and hides it from our index. The `#unlisted` tag can be used for the same purpose, such as when archiving Communities. ### Language tags Mark your Community with a language flag emoji by adding a tag of the form `#lang:CODE` at the end of your Community description. You can use any two-letter **country code**, or any of these prepared language codes: - `#lang:any` or `#lang:all` for 🌐, - `#lang:en` for 🇬🇧, and - `#lang:zh` for 🇨🇳. ### Server-wide icons You may notice the Host column groups Communities by their host SOGS, and some SOGS are easily recognizable by a unified icon. If you also want your Communities to be linked by a recognizable icon, the requirements are easy: - The icon must be the same as an existing Community avatar. - The icon must be safe-for-work, i.e., no suggestive or violent material. - Your Communities must take care to [follow our policy](README.md#policy). Once you've chosen which of your existing Communities will share an avatar with your whole server, [contact us](README.md#contact-us). ## Diagnosing listing issues If your Community does not appear on our list: - first, confirm it is listed on an upstream source, - verify it can be joined from the app, - check in our page footer that the list has been updated recently, and - ensure your Community [follows our policy](README.md#policy). If your Community still does not appear on our list, [please contact us](README.md#contact-us). Note that poor connectivity may affect our ability to list Communities in regions affected by internet censorship. ## De-listing requests We occasionally accept requests from server operators to de-list whole Community servers. If you feel our listing would be detrimental to your Communities — such as in cases where your Communities reveal sensitive information about your users — you may [contact us](README.md#contact-us) to request to de-list a Community server. Please note that Session Communities are not designed with private communication in mind. De-listing requests only apply for servers we've listed manually (not when [polled from our sources](README.md#which-sources-do-you-crawl)). To de-list individual Communities, use the `#unlisted` tag; see [Community tags](#community-tags).