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.
		
		
		
		
		
			
		
			
				
	
	
		
			148 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			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).
 |