You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sessioncommunities.online/for-sogops.md

148 lines
7.3 KiB
Markdown

# 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:
> <https://github.com/slrslr/misc/blob/main/session-sogs-prevent-disable-pm-dm-for-regular-users.sh>
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: <https://github.com/slrslr/misc/blob/main/profanity-block-list.txt>
**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).