mirror of
https://github.com/LemmyNet/lemmy-docs.git
synced 2024-11-22 12:21:10 +00:00
Fixing federation docs, running markdown format.
This commit is contained in:
parent
738511f194
commit
8d75333ae4
25 changed files with 251 additions and 217 deletions
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
## About The Project
|
## About The Project
|
||||||
|
|
||||||
Front Page|Post
|
| Front Page | Post |
|
||||||
---|---
|
| ---------------------------------------------- | ---------------------------------------------- |
|
||||||
![main screen](/docs/en/about/main_screen.png)|![chat screen](/docs/en/about/chat_screen.png)
|
| ![main screen](/docs/en/about/main_screen.png) | ![chat screen](/docs/en/about/chat_screen.png) |
|
||||||
|
|
||||||
[Lemmy](https://github.com/LemmyNet/lemmy) is similar to sites like [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), or [Hacker News](https://news.ycombinator.com/): you subscribe to forums you're interested in, post links and discussions, then vote, and comment on them. Behind the scenes, it is very different; anyone can easily run a server, and all these servers are federated (think email), and connected to the same universe, called the [Fediverse](https://en.wikipedia.org/wiki/Fediverse).
|
[Lemmy](https://github.com/LemmyNet/lemmy) is similar to sites like [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), or [Hacker News](https://news.ycombinator.com/): you subscribe to forums you're interested in, post links and discussions, then vote, and comment on them. Behind the scenes, it is very different; anyone can easily run a server, and all these servers are federated (think email), and connected to the same universe, called the [Fediverse](https://en.wikipedia.org/wiki/Fediverse).
|
||||||
|
|
||||||
*The word “fediverse” (federated universe) refers to the network of all Lemmy servers [and other projects](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/), users of which are able to talk to each other seamlessly.*
|
_The word “fediverse” (federated universe) refers to the network of all Lemmy servers [and other projects](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/), users of which are able to talk to each other seamlessly._
|
||||||
|
|
||||||
Like email, whether you sign up on GMail or Outlook, you know you’ll be able to email everyone you need to, as long as you know their address. On Lemmy you're able to subscribe to communities on any other server, and can have discussions with users registered elsewhere.
|
Like email, whether you sign up on GMail or Outlook, you know you’ll be able to email everyone you need to, as long as you know their address. On Lemmy you're able to subscribe to communities on any other server, and can have discussions with users registered elsewhere.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ There are no shareholders, and no targeted advertising: only people sharing the
|
||||||
|
|
||||||
Each lemmy server can set its own moderation policy; appointing site-wide admins, and community moderators to keep out the trolls, and foster a healthy, non-toxic environment where all can feel comfortable contributing.
|
Each lemmy server can set its own moderation policy; appointing site-wide admins, and community moderators to keep out the trolls, and foster a healthy, non-toxic environment where all can feel comfortable contributing.
|
||||||
|
|
||||||
*Note: Federation is still in active development*
|
_Note: Federation is still in active development_
|
||||||
|
|
||||||
### Why's it called Lemmy?
|
### Why's it called Lemmy?
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
- i18n / internationalization support.
|
- i18n / internationalization support.
|
||||||
- RSS / Atom feeds for `All`, `Subscribed`, `Inbox`, `User`, and `Community`.
|
- RSS / Atom feeds for `All`, `Subscribed`, `Inbox`, `User`, and `Community`.
|
||||||
- Cross-posting support.
|
- Cross-posting support.
|
||||||
- A *similar post search* when creating new posts. Great for question / answer communities.
|
- A _similar post search_ when creating new posts. Great for question / answer communities.
|
||||||
- Moderation abilities.
|
- Moderation abilities.
|
||||||
- Public Moderation Logs.
|
- Public Moderation Logs.
|
||||||
- Can sticky posts to the top of communities.
|
- Can sticky posts to the top of communities.
|
||||||
|
|
|
@ -6,11 +6,11 @@ So you want to join Lemmy and get posting. Great! Here's how to dive straight in
|
||||||
|
|
||||||
The first thing you have to do is **choose your server**. This is an extra step compared to sites like Reddit, but isn’t as difficult as it may seem.
|
The first thing you have to do is **choose your server**. This is an extra step compared to sites like Reddit, but isn’t as difficult as it may seem.
|
||||||
|
|
||||||
*Like with email, your identity is hosted by the server you sign up on. So for example, I joined lemmy.ml so to mention me you can type @retiolus@lemmy.ml in your post.*
|
_Like with email, your identity is hosted by the server you sign up on. So for example, I joined lemmy.ml so to mention me you can type @retiolus@lemmy.ml in your post._
|
||||||
|
|
||||||
If what you want to talk about most fits into a clear category (maybe it’s video games or art or queer life or coding or fiction, etc) then it might be worth making your first server one where that will primarily host that sort of content – it’ll be easier to make connections and find like-minded folk. Think of your server as a neighbourhood or a venue, where the general chatter can have a specific focus.
|
If what you want to talk about most fits into a clear category (maybe it’s video games or art or queer life or coding or fiction, etc) then it might be worth making your first server one where that will primarily host that sort of content – it’ll be easier to make connections and find like-minded folk. Think of your server as a neighbourhood or a venue, where the general chatter can have a specific focus.
|
||||||
|
|
||||||
*You have the ability to view all public local posts that have been made by people on your server in the “Local” tab.*
|
_You have the ability to view all public local posts that have been made by people on your server in the “Local” tab._
|
||||||
|
|
||||||
If you aren’t here to stick mainly to one topic, you’ll likely want to pick a server that caters to general interests. Either way, there’s a helpful servers list on [join-lemmy.org](https://join-lemmy.org/instances).
|
If you aren’t here to stick mainly to one topic, you’ll likely want to pick a server that caters to general interests. Either way, there’s a helpful servers list on [join-lemmy.org](https://join-lemmy.org/instances).
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Head to the Login page `(https://your.server/login)` of your server and choose y
|
||||||
|
|
||||||
Next thing to do is upload your profile picture, give the settings page `(https://your.server/settings)` a good once-over (and do come back to it when you’ve been on Lemmy a week or so just to make any tweaks that might help your experience) and get ready to introduce yourself.
|
Next thing to do is upload your profile picture, give the settings page `(https://your.server/settings)` a good once-over (and do come back to it when you’ve been on Lemmy a week or so just to make any tweaks that might help your experience) and get ready to introduce yourself.
|
||||||
|
|
||||||
*Some interesting settings worth checking are: your default feed sorting filter between subscribed, local or all and your default sorting type.*
|
_Some interesting settings worth checking are: your default feed sorting filter between subscribed, local or all and your default sorting type._
|
||||||
|
|
||||||
While you can simply enjoy reading Lemmy, the real fun begins as you dive in and start participating yourself by posting, voting and commenting.
|
While you can simply enjoy reading Lemmy, the real fun begins as you dive in and start participating yourself by posting, voting and commenting.
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ The standard Lemmy interface has a single feed. You can change the content of th
|
||||||
**All**, or the **federated timeline**, is a view of all the public posts your servers knows about from across the whole network (including local ones). The most common reason that something appears in the federated timeline is that someone from your server might follow a community that's on another server.
|
**All**, or the **federated timeline**, is a view of all the public posts your servers knows about from across the whole network (including local ones). The most common reason that something appears in the federated timeline is that someone from your server might follow a community that's on another server.
|
||||||
|
|
||||||
| Type | Description |
|
| Type | Description |
|
||||||
| --- | --- |
|
| ------------- | ------------------------------------------------------------------- |
|
||||||
| Posts | Only displays publications |
|
| Posts | Only displays publications |
|
||||||
| Comments | Displays only comments |
|
| Comments | Displays only comments |
|
||||||
| \-\-\- | \-\-\- |
|
| \-\-\- | \-\-\- |
|
||||||
|
@ -74,22 +74,22 @@ For more detail, check the [Post and Comment Ranking details](https://join-lemmy
|
||||||
|
|
||||||
Lemmy's posts are done using Markdown, there are of course shortcuts for you to use when writing but here is a table to help you if you want to go further.
|
Lemmy's posts are done using Markdown, there are of course shortcuts for you to use when writing but here is a table to help you if you want to go further.
|
||||||
|
|
||||||
Type | Or | … to Get
|
| Type | Or | … to Get |
|
||||||
--- | --- | ---
|
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
|
||||||
\*Italic\* | \_Italic\_ | _Italic_
|
| \*Italic\* | \_Italic\_ | _Italic_ |
|
||||||
\*\*Bold\*\* | \_\_Bold\_\_ | **Bold**
|
| \*\*Bold\*\* | \_\_Bold\_\_ | **Bold** |
|
||||||
\# Heading 1 | Heading 1 <br> ========= | <h4>Heading 1</h4>
|
| \# Heading 1 | Heading 1 <br> ========= | <h4>Heading 1</h4> |
|
||||||
\## Heading 2 | Heading 2 <br>--------- | <h5>Heading 2</h5>
|
| \## Heading 2 | Heading 2 <br>--------- | <h5>Heading 2</h5> |
|
||||||
\[Link\](http://a.com) | \[Link\]\[1\]<br>⋮ <br>\[1\]: http://b.org | [Link](https://commonmark.org/)
|
| \[Link\](http://a.com) | \[Link\]\[1\]<br>⋮ <br>\[1\]: http://b.org | [Link](https://commonmark.org/) |
|
||||||
!\[Image\](http://url/a.png) | !\[Image\]\[1\]<br>⋮ <br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png)
|
| !\[Image\](http://url/a.png) | !\[Image\]\[1\]<br>⋮ <br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) |
|
||||||
\> Blockquote | | <blockquote>Blockquote</blockquote>
|
| \> Blockquote | | <blockquote>Blockquote</blockquote> |
|
||||||
\* List <br>\* List <br>\* List | \- List <br>\- List <br>\- List <br> | * List <br>* List <br>* List <br>
|
| \* List <br>\* List <br>\* List | \- List <br>\- List <br>\- List <br> | _ List <br>_ List <br>\* List <br> |
|
||||||
1\. One <br>2\. Two <br>3\. Three | 1) One<br>2) Two<br>3) Three | 1. One<br>2. Two<br>3. Three
|
| 1\. One <br>2\. Two <br>3\. Three | 1) One<br>2) Two<br>3) Three | 1. One<br>2. Two<br>3. Three |
|
||||||
Horizontal Rule <br>\--- | Horizontal Rule<br>\*\*\* | Horizontal Rule <br><hr>
|
| Horizontal Rule <br>\--- | Horizontal Rule<br>\*\*\* | Horizontal Rule <br><hr> |
|
||||||
\`Inline code\` with backticks | |`Inline code` with backticks
|
| \`Inline code\` with backticks | | `Inline code` with backticks |
|
||||||
\`\`\`<br>\# code block <br>print '3 backticks or'<br>print 'indent 4 spaces' <br>\`\`\` | ····\# code block<br>····print '3 backticks or'<br>····print 'indent 4 spaces' | \# code block <br>print '3 backticks or'<br>print 'indent 4 spaces'
|
| \`\`\`<br>\# code block <br>print '3 backticks or'<br>print 'indent 4 spaces' <br>\`\`\` | ····\# code block<br>····print '3 backticks or'<br>····print 'indent 4 spaces' | \# code block <br>print '3 backticks or'<br>print 'indent 4 spaces' |
|
||||||
::: spoiler hidden or nsfw stuff<br>*a bunch of spoilers here*<br>::: | | <details><summary> hidden or nsfw stuff </summary><p><em>a bunch of spoilers here</em></p></details>
|
| ::: spoiler hidden or nsfw stuff<br>_a bunch of spoilers here_<br>::: | | <details><summary> hidden or nsfw stuff </summary><p><em>a bunch of spoilers here</em></p></details> |
|
||||||
Some ~subscript~ text | | Some <sub>subscript</sub> text
|
| Some ~subscript~ text | | Some <sub>subscript</sub> text |
|
||||||
Some ^superscript^ text | | Some <sup>superscript</sup> text
|
| Some ^superscript^ text | | Some <sup>superscript</sup> text |
|
||||||
|
|
||||||
[CommonMark Tutorial](https://commonmark.org/help/tutorial/)
|
[CommonMark Tutorial](https://commonmark.org/help/tutorial/)
|
||||||
|
|
|
@ -27,6 +27,7 @@ Score = Upvotes - Downvotes
|
||||||
Time = time since submission (in hours)
|
Time = time since submission (in hours)
|
||||||
Gravity = Decay gravity, 1.8 is default
|
Gravity = Decay gravity, 1.8 is default
|
||||||
```
|
```
|
||||||
|
|
||||||
- Lemmy uses the same `Rank` algorithm above, in two sorts: `Active`, and `Hot`.
|
- Lemmy uses the same `Rank` algorithm above, in two sorts: `Active`, and `Hot`.
|
||||||
- `Active` uses the post votes, and latest comment time (limited to two days).
|
- `Active` uses the post votes, and latest comment time (limited to two days).
|
||||||
- `Hot` uses the post votes, and the post published time.
|
- `Hot` uses the post votes, and the post published time.
|
||||||
|
@ -41,6 +42,6 @@ A plot of rank over 24 hours, of scores of 1, 5, 10, 100, 1000, with a scale fac
|
||||||
|
|
||||||
#### Active User counts
|
#### Active User counts
|
||||||
|
|
||||||
Lemmy also shows counts of *active users* for your site, and its communities. These are counted within the last `day`, `week`, `month`, and `half year`, and are cached on starting up lemmy, and every hour.
|
Lemmy also shows counts of _active users_ for your site, and its communities. These are counted within the last `day`, `week`, `month`, and `half year`, and are cached on starting up lemmy, and every hour.
|
||||||
|
|
||||||
An active user is someone who has posted or commented on our instance or community within the last given time frame. For site counts, only local users are counted. For community counts, federated users are included.
|
An active user is someone who has posted or commented on our instance or community within the last given time frame. For site counts, only local users are counted. For community counts, federated users are included.
|
||||||
|
|
|
@ -5,9 +5,11 @@ Information for Lemmy instance admins, and those who want to run a server.
|
||||||
If you have any problems in the installation, you can ask for help in [!lemmy_support](https://lemmy.ml/c/lemmy_support). Do not use Github for support.
|
If you have any problems in the installation, you can ask for help in [!lemmy_support](https://lemmy.ml/c/lemmy_support). Do not use Github for support.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
### Official/Supported methods
|
### Official/Supported methods
|
||||||
|
|
||||||
Lemmy has two primary installation methods:
|
Lemmy has two primary installation methods:
|
||||||
|
|
||||||
- [Manually with Docker](install_docker.md)
|
- [Manually with Docker](install_docker.md)
|
||||||
- [Automated with Ansible](install_ansible.md)
|
- [Automated with Ansible](install_ansible.md)
|
||||||
|
|
||||||
|
@ -16,9 +18,11 @@ We recommend using Ansible, because it simplifies the installation and also make
|
||||||
Lemmy uses roughly 150 MB of RAM in the default Docker installation. CPU usage is negligible.
|
Lemmy uses roughly 150 MB of RAM in the default Docker installation. CPU usage is negligible.
|
||||||
|
|
||||||
### Other installation methods
|
### Other installation methods
|
||||||
|
|
||||||
> ⚠️ **Under your own risk.**
|
> ⚠️ **Under your own risk.**
|
||||||
|
|
||||||
In some cases, it might be necessary to use different installation methods.
|
In some cases, it might be necessary to use different installation methods.
|
||||||
|
|
||||||
- [From Scratch](from_scratch.md)
|
- [From Scratch](from_scratch.md)
|
||||||
- [Yunohost](https://install-app.yunohost.org/?app=lemmy) ([source code](https://github.com/YunoHost-Apps/lemmy_ynh))
|
- [Yunohost](https://install-app.yunohost.org/?app=lemmy) ([source code](https://github.com/YunoHost-Apps/lemmy_ynh))
|
||||||
- [On Amazon Web Services (AWS)](on_aws.md)
|
- [On Amazon Web Services (AWS)](on_aws.md)
|
||||||
|
|
|
@ -6,7 +6,7 @@ Lemmy has three types of federation:
|
||||||
- BlockList: Explicitly list instances to not connect to. Federation is open to all other instances.
|
- BlockList: Explicitly list instances to not connect to. Federation is open to all other instances.
|
||||||
- Open: Federate with all potential instances.
|
- Open: Federate with all potential instances.
|
||||||
|
|
||||||
**Federation is not set up by default.** You can add this [this federation block](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson#L64) to your `lemmy.hjson`, and ask other servers to add you to their allowlist.
|
**Federation is enabled by default.** You can add allowed and blocked instances, by adding a comma-delimited list in your instance admin panel. IE to only federate with these instances, add: `enterprise.lemmy.ml,lemmy.ml` to the allowed instances section.
|
||||||
|
|
||||||
Lemmy uses the ActivityPub protocol (a W3C standard) to enable federation between different servers (often called instances). This is very similar to the way email works. For example, if you use gmail.com, then you can not only send mails to other gmail.com users, but also to yahoo.com, yandex.ru and so on. Email uses the SMTP protocol to achieve this, so you can think of ActivityPub as "SMTP for social media". The amount of different actions possible on social media (post, comment, like, share, etc) means that ActivityPub is much more complicated than SMTP.
|
Lemmy uses the ActivityPub protocol (a W3C standard) to enable federation between different servers (often called instances). This is very similar to the way email works. For example, if you use gmail.com, then you can not only send mails to other gmail.com users, but also to yahoo.com, yandex.ru and so on. Email uses the SMTP protocol to achieve this, so you can think of ActivityPub as "SMTP for social media". The amount of different actions possible on social media (post, comment, like, share, etc) means that ActivityPub is much more complicated than SMTP.
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ To test that your instance federation is working correctly execute `curl -H 'Acc
|
||||||
## Inclusion on join-lemmy.org instance list
|
## Inclusion on join-lemmy.org instance list
|
||||||
|
|
||||||
To be included in the list of Lemmy instances on [join-lemmy.org](https://join-lemmy.org/instances) you must meet the following requirements:
|
To be included in the list of Lemmy instances on [join-lemmy.org](https://join-lemmy.org/instances) you must meet the following requirements:
|
||||||
|
|
||||||
- [x] Federate with at least one instance from the list
|
- [x] Federate with at least one instance from the list
|
||||||
- [x] Have a site description and icon
|
- [x] Have a site description and icon
|
||||||
- [x] Be patient and wait the site to be updated, there's no fixed schedule for that
|
- [x] Be patient and wait the site to be updated, there's no fixed schedule for that
|
||||||
|
@ -36,6 +37,7 @@ In the meantime you can always promote your server on other social networks like
|
||||||
## Keeping up to date
|
## Keeping up to date
|
||||||
|
|
||||||
You can subscribe to the Github RSS feeds to be informed of the latest releases:
|
You can subscribe to the Github RSS feeds to be informed of the latest releases:
|
||||||
|
|
||||||
- [lemmy](https://github.com/LemmyNet/lemmy/releases.atom)
|
- [lemmy](https://github.com/LemmyNet/lemmy/releases.atom)
|
||||||
- [lemmy-ui](https://github.com/LemmyNet/lemmy-ui/releases.atom)
|
- [lemmy-ui](https://github.com/LemmyNet/lemmy-ui/releases.atom)
|
||||||
- [lemmy-js-client](https://github.com/LemmyNet/lemmy-js-client/releases.atom)
|
- [lemmy-js-client](https://github.com/LemmyNet/lemmy-js-client/releases.atom)
|
||||||
|
|
|
@ -24,6 +24,7 @@ chmod 755 /usr/bin/magick
|
||||||
```
|
```
|
||||||
|
|
||||||
Compile and install Lemmy, setup database:
|
Compile and install Lemmy, setup database:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt install pkg-config libssl-dev libpq-dev postgresql
|
apt install pkg-config libssl-dev libpq-dev postgresql
|
||||||
# installs latest release, you can also specify one with --version
|
# installs latest release, you can also specify one with --version
|
||||||
|
@ -39,6 +40,7 @@ adduser lemmy --system --disabled-login --no-create-home --group
|
||||||
```
|
```
|
||||||
|
|
||||||
Minimal Lemmy config, put this in `/etc/lemmy/lemmy.hjson` (see [here](https://github.com/LemmyNet/lemmy/blob/main/config/config.hjson) for more config options). Run `chown lemmy:lemmy /etc/lemmy/ -R` to set the correct owner.
|
Minimal Lemmy config, put this in `/etc/lemmy/lemmy.hjson` (see [here](https://github.com/LemmyNet/lemmy/blob/main/config/config.hjson) for more config options). Run `chown lemmy:lemmy /etc/lemmy/ -R` to set the correct owner.
|
||||||
|
|
||||||
```hjson
|
```hjson
|
||||||
{
|
{
|
||||||
database: {
|
database: {
|
||||||
|
@ -59,6 +61,7 @@ Minimal Lemmy config, put this in `/etc/lemmy/lemmy.hjson` (see [here](https://g
|
||||||
```
|
```
|
||||||
|
|
||||||
Systemd unit file, so that Lemmy automatically starts and stops, logs are handled via journalctl etc. Put this file into /etc/systemd/system/lemmy.service, then run `systemctl enable lemmy` and `systemctl start lemmy`.
|
Systemd unit file, so that Lemmy automatically starts and stops, logs are handled via journalctl etc. Put this file into /etc/systemd/system/lemmy.service, then run `systemctl enable lemmy` and `systemctl start lemmy`.
|
||||||
|
|
||||||
```
|
```
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Lemmy - A link aggregator for the fediverse
|
Description=Lemmy - A link aggregator for the fediverse
|
||||||
|
@ -88,6 +91,7 @@ If you did everything right, the Lemmy logs from `journalctl -u lemmy` should sh
|
||||||
### Install lemmy-ui (web frontend)
|
### Install lemmy-ui (web frontend)
|
||||||
|
|
||||||
Install dependencies (nodejs and yarn in Ubuntu 20.04 repos are too old)
|
Install dependencies (nodejs and yarn in Ubuntu 20.04 repos are too old)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# https://classic.yarnpkg.com/en/docs/install/#debian-stable
|
# https://classic.yarnpkg.com/en/docs/install/#debian-stable
|
||||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||||||
|
@ -98,6 +102,7 @@ sudo apt install nodejs yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
Clone the git repo, checkout the version you want (0.16.7 in this case), and compile it.
|
Clone the git repo, checkout the version you want (0.16.7 in this case), and compile it.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir /var/lib/lemmy-ui
|
mkdir /var/lib/lemmy-ui
|
||||||
cd /var/lib/lemmy-ui
|
cd /var/lib/lemmy-ui
|
||||||
|
@ -112,6 +117,7 @@ exit
|
||||||
```
|
```
|
||||||
|
|
||||||
Add another systemd unit file, this time for lemmy-ui. You need to replace example.com with your actual domain. Put the file in `/etc/systemd/system/lemmy-ui.service`, then run `systemctl enable lemmy-ui` and `systemctl start lemmy-ui`.
|
Add another systemd unit file, this time for lemmy-ui. You need to replace example.com with your actual domain. Put the file in `/etc/systemd/system/lemmy-ui.service`, then run `systemctl enable lemmy-ui` and `systemctl start lemmy-ui`.
|
||||||
|
|
||||||
```
|
```
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Lemmy UI - Web frontend for Lemmy
|
Description=Lemmy UI - Web frontend for Lemmy
|
||||||
|
@ -141,21 +147,25 @@ If everything went right, the command `curl -I localhost:1234` should show `200
|
||||||
### Configure reverse proxy and TLS
|
### Configure reverse proxy and TLS
|
||||||
|
|
||||||
Install dependencies
|
Install dependencies
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt install nginx certbot python3-certbot-nginx
|
apt install nginx certbot python3-certbot-nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
Request Let's Encrypt TLS certificate (just follow the instructions)
|
Request Let's Encrypt TLS certificate (just follow the instructions)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
certbot certonly --nginx
|
certbot certonly --nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
Let's Encrypt certificates should be renewed automatically, so add the line below to your crontab, by running `sudo crontab -e`. Replace example.com with your actual domain.
|
Let's Encrypt certificates should be renewed automatically, so add the line below to your crontab, by running `sudo crontab -e`. Replace example.com with your actual domain.
|
||||||
|
|
||||||
```
|
```
|
||||||
@daily certbot certonly --nginx --cert-name example.com -d example.com --deploy-hook 'nginx -s reload'
|
@daily certbot certonly --nginx --cert-name example.com -d example.com --deploy-hook 'nginx -s reload'
|
||||||
```
|
```
|
||||||
|
|
||||||
Finally, add the nginx config. After downloading, you need to replace some variables in the file.
|
Finally, add the nginx config. After downloading, you need to replace some variables in the file.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/nginx.conf \
|
curl https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/nginx.conf \
|
||||||
--output /etc/nginx/sites-enabled/lemmy.conf
|
--output /etc/nginx/sites-enabled/lemmy.conf
|
||||||
|
|
|
@ -9,20 +9,20 @@ to AWS using their [Cloud Development Kit](https://docs.aws.amazon.com/cdk/lates
|
||||||
|
|
||||||
### Included:
|
### Included:
|
||||||
|
|
||||||
* ECS fargate cluster
|
- ECS fargate cluster
|
||||||
* Lemmy-UI
|
- Lemmy-UI
|
||||||
* Lemmy
|
- Lemmy
|
||||||
* Pictrs
|
- Pictrs
|
||||||
* CloudFront CDN
|
- CloudFront CDN
|
||||||
* EFS storage for image uploads
|
- EFS storage for image uploads
|
||||||
* Aurora Serverless Postgres DB
|
- Aurora Serverless Postgres DB
|
||||||
* Bastion VPC host
|
- Bastion VPC host
|
||||||
* Load balancers for Lemmy
|
- Load balancers for Lemmy
|
||||||
* DNS records for your site
|
- DNS records for your site
|
||||||
|
|
||||||
## Quickstart
|
## Quickstart
|
||||||
|
|
||||||
Clone the [Lemmy-CDK]( https://github.com/jetbridge/lemmy-cdk).
|
Clone the [Lemmy-CDK](https://github.com/jetbridge/lemmy-cdk).
|
||||||
|
|
||||||
Clone [Lemmy](https://github.com/LemmyNet/lemmy) and [Lemmy-UI](https://github.com/LemmyNet/lemmy-ui) to the directory above this.
|
Clone [Lemmy](https://github.com/LemmyNet/lemmy) and [Lemmy-UI](https://github.com/LemmyNet/lemmy-ui) to the directory above this.
|
||||||
|
|
||||||
|
@ -41,13 +41,14 @@ cdk deploy
|
||||||
```
|
```
|
||||||
|
|
||||||
## Cost
|
## Cost
|
||||||
This is *not* the cheapest way to run Lemmy. The Serverless Aurora DB can run you ~$90/mo if it doesn't go to sleep.
|
|
||||||
|
This is _not_ the cheapest way to run Lemmy. The Serverless Aurora DB can run you ~$90/mo if it doesn't go to sleep.
|
||||||
|
|
||||||
## Useful CDK commands
|
## Useful CDK commands
|
||||||
|
|
||||||
* `npm run build` compile typescript to js
|
- `npm run build` compile typescript to js
|
||||||
* `npm run watch` watch for changes and compile
|
- `npm run watch` watch for changes and compile
|
||||||
* `npm run test` perform the jest unit tests
|
- `npm run test` perform the jest unit tests
|
||||||
* `cdk deploy` deploy this stack to your default AWS account/region
|
- `cdk deploy` deploy this stack to your default AWS account/region
|
||||||
* `cdk diff` compare deployed stack with current state
|
- `cdk diff` compare deployed stack with current state
|
||||||
* `cdk synth` emits the synthesized CloudFormation template
|
- `cdk synth` emits the synthesized CloudFormation template
|
||||||
|
|
|
@ -39,6 +39,7 @@ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
### Other instances can't fetch local objects (community, post, etc)
|
### Other instances can't fetch local objects (community, post, etc)
|
||||||
|
|
||||||
Your reverse proxy (eg nginx) needs to forward requests with header `Accept: application/activity+json` to the backend. This is handled by the following lines:
|
Your reverse proxy (eg nginx) needs to forward requests with header `Accept: application/activity+json` to the backend. This is handled by the following lines:
|
||||||
|
|
||||||
```
|
```
|
||||||
set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}";
|
set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}";
|
||||||
if ($http_accept = "application/activity+json") {
|
if ($http_accept = "application/activity+json") {
|
||||||
|
@ -51,12 +52,14 @@ proxy_pass $proxpass;
|
||||||
```
|
```
|
||||||
|
|
||||||
You can test that it works correctly by running the following commands, all of them should return valid JSON:
|
You can test that it works correctly by running the following commands, all of them should return valid JSON:
|
||||||
|
|
||||||
```
|
```
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/u/some-local-user
|
curl -H "Accept: application/activity+json" https://your-instance.com/u/some-local-user
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # the id of a local post
|
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # the id of a local post
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # the id of a local comment
|
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # the id of a local comment
|
||||||
```
|
```
|
||||||
|
|
||||||
### Fetching remote objects works, but posting/commenting in remote communities fails
|
### Fetching remote objects works, but posting/commenting in remote communities fails
|
||||||
|
|
||||||
Check that [federation is allowed on both instances](../federation/administration.md#instance-allowlist-and-blocklist).
|
Check that [federation is allowed on both instances](../federation/administration.md#instance-allowlist-and-blocklist).
|
||||||
|
|
|
@ -45,17 +45,17 @@ Lemmy does rate limiting for many actions based on the client IP. But if you mak
|
||||||
Here is an example snipped for NodeJS:
|
Here is an example snipped for NodeJS:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
function setForwardedHeaders(
|
function setForwardedHeaders(headers: IncomingHttpHeaders): {
|
||||||
headers: IncomingHttpHeaders
|
[key: string]: string,
|
||||||
): { [key: string]: string } {
|
} {
|
||||||
let out = {
|
let out = {
|
||||||
host: headers.host,
|
host: headers.host,
|
||||||
};
|
};
|
||||||
if (headers['x-real-ip']) {
|
if (headers["x-real-ip"]) {
|
||||||
out['x-real-ip'] = headers['x-real-ip'];
|
out["x-real-ip"] = headers["x-real-ip"];
|
||||||
}
|
}
|
||||||
if (headers['x-forwarded-for']) {
|
if (headers["x-forwarded-for"]) {
|
||||||
out['x-forwarded-for'] = headers['x-forwarded-for'];
|
out["x-forwarded-for"] = headers["x-forwarded-for"];
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
|
|
|
@ -6,11 +6,11 @@ This contains extras not in the [API docs](/api).
|
||||||
|
|
||||||
- [Curl Examples](#curl-examples)
|
- [Curl Examples](#curl-examples)
|
||||||
- [HTTP API exclusive features](#http-api-exclusive-features)
|
- [HTTP API exclusive features](#http-api-exclusive-features)
|
||||||
* [RSS/Atom feeds](#rssatom-feeds)
|
- [RSS/Atom feeds](#rssatom-feeds)
|
||||||
* [Images](#images)
|
- [Images](#images)
|
||||||
+ [Create (request)](#create-request)
|
- [Create (request)](#create-request)
|
||||||
+ [Create (response)](#create-response)
|
- [Create (response)](#create-response)
|
||||||
+ [Delete](#delete)
|
- [Delete](#delete)
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ Lemmy forwards image requests to a locally running Pictrs.
|
||||||
|
|
||||||
`GET /pictrs/image/{filename}?format={webp, jpg, ...}&thumbnail={96}`
|
`GET /pictrs/image/{filename}?format={webp, jpg, ...}&thumbnail={96}`
|
||||||
|
|
||||||
*Format and thumbnail are optional.*
|
_Format and thumbnail are optional._
|
||||||
|
|
||||||
#### Create (request)
|
#### Create (request)
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,6 @@ pub fn list_posts() -> GetPostsResponse {
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also look at the following real-world projects as examples:
|
You can also look at the following real-world projects as examples:
|
||||||
|
|
||||||
- [lemmyBB](https://github.com/Nutomic/lemmyBB)
|
- [lemmyBB](https://github.com/Nutomic/lemmyBB)
|
||||||
- [lemmy-stats-crawler](https://yerbamate.ml/LemmyNet/lemmy-stats-crawler)
|
- [lemmy-stats-crawler](https://yerbamate.ml/LemmyNet/lemmy-stats-crawler)
|
||||||
-
|
|
|
@ -12,7 +12,6 @@ Information about contributing to Lemmy, whether it is translating, testing, des
|
||||||
|
|
||||||
Check out [Lemmy's Weblate](https://weblate.yerbamate.ml/projects/lemmy/) for translations. You can also help by [translating this documentation](https://github.com/LemmyNet/lemmy-docs#adding-a-new-language).
|
Check out [Lemmy's Weblate](https://weblate.yerbamate.ml/projects/lemmy/) for translations. You can also help by [translating this documentation](https://github.com/LemmyNet/lemmy-docs#adding-a-new-language).
|
||||||
|
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
### Front end
|
### Front end
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Docker Development
|
# Docker Development
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
### Debian-based distro
|
### Debian-based distro
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -26,9 +27,10 @@ cd docker/dev
|
||||||
|
|
||||||
and go to http://localhost:1236
|
and go to http://localhost:1236
|
||||||
|
|
||||||
*Note: many features (like docs and pictures) will not work without using an nginx profile like that in `ansible/templates/nginx.conf`.
|
\*Note: many features (like docs and pictures) will not work without using an nginx profile like that in `ansible/templates/nginx.conf`.
|
||||||
|
|
||||||
To speed up the Docker compile, add the following to `/etc/docker/daemon.json` and restart Docker.
|
To speed up the Docker compile, add the following to `/etc/docker/daemon.json` and restart Docker.
|
||||||
|
|
||||||
```
|
```
|
||||||
{
|
{
|
||||||
"features": {
|
"features": {
|
||||||
|
|
|
@ -11,19 +11,20 @@ cd docker/federation
|
||||||
|
|
||||||
The federation test sets up 5 instances:
|
The federation test sets up 5 instances:
|
||||||
|
|
||||||
Instance | Username | Location | Notes
|
| Instance | Username | Location | Notes |
|
||||||
--- | --- | --- | ---
|
| ------------- | ------------- | --------------------------------------- | --------------------------------------- |
|
||||||
lemmy-alpha | lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540) | federated with all other instances
|
| lemmy-alpha | lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540) | federated with all other instances |
|
||||||
lemmy-beta | lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550) | federated with all other instances
|
| lemmy-beta | lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550) | federated with all other instances |
|
||||||
lemmy-gamma | lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560) | federated with all other instances
|
| lemmy-gamma | lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560) | federated with all other instances |
|
||||||
lemmy-delta | lemmy_delta | [127.0.0.1:8570](http://127.0.0.1:8570) | only allows federation with lemmy-beta
|
| lemmy-delta | lemmy_delta | [127.0.0.1:8570](http://127.0.0.1:8570) | only allows federation with lemmy-beta |
|
||||||
lemmy-epsilon | lemmy_epsilon | [127.0.0.1:8580](http://127.0.0.1:8580) | uses blocklist, has lemmy-alpha blocked
|
| lemmy-epsilon | lemmy_epsilon | [127.0.0.1:8580](http://127.0.0.1:8580) | uses blocklist, has lemmy-alpha blocked |
|
||||||
|
|
||||||
You can log into each using the instance name, and `lemmy` as the password, IE (`lemmy_alpha`, `lemmy`).
|
You can log into each using the instance name, and `lemmy` as the password, IE (`lemmy_alpha`, `lemmy`).
|
||||||
|
|
||||||
To start federation between instances, visit one of them and search for a user, community or post, like this. Note that
|
To start federation between instances, visit one of them and search for a user, community or post, like this. Note that
|
||||||
the Lemmy backend runs on a different port than the frontend, so you have to increment the port number from
|
the Lemmy backend runs on a different port than the frontend, so you have to increment the port number from
|
||||||
the URL bar by one.
|
the URL bar by one.
|
||||||
|
|
||||||
- `!main@lemmy-alpha:8541`
|
- `!main@lemmy-alpha:8541`
|
||||||
- `http://lemmy-beta:8551/post/3`
|
- `http://lemmy-beta:8551/post/3`
|
||||||
- `@lemmy-gamma@lemmy-gamma:8561`
|
- `@lemmy-gamma@lemmy-gamma:8561`
|
||||||
|
@ -36,7 +37,7 @@ Note that federation is currently in alpha. **Only use it for testing**, not on
|
||||||
|
|
||||||
Follow the normal installation instructions, either with [Ansible](../administration/install_ansible.md) or
|
Follow the normal installation instructions, either with [Ansible](../administration/install_ansible.md) or
|
||||||
[manually](../administration/install_docker.md). Then replace the line `image: dessalines/lemmy:v0.x.x` in
|
[manually](../administration/install_docker.md). Then replace the line `image: dessalines/lemmy:v0.x.x` in
|
||||||
`/lemmy/docker-compose.yml` with `image: dessalines/lemmy:federation`. Add and configure [this federation block](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson#L64) to your `lemmy.hjson`.
|
`/lemmy/docker-compose.yml` with `image: dessalines/lemmy:federation`.
|
||||||
|
|
||||||
Afterwards, and whenever you want to update to the latest version, run these commands on the server:
|
Afterwards, and whenever you want to update to the latest version, run these commands on the server:
|
||||||
|
|
||||||
|
@ -52,7 +53,7 @@ sudo docker-compose up -d
|
||||||
- check_is_apub_valid : Makes sure its in our allowed instances list
|
- check_is_apub_valid : Makes sure its in our allowed instances list
|
||||||
- Lower level checks: To make sure that the user that creates/updates/removes a post is actually on the same instance as that post
|
- Lower level checks: To make sure that the user that creates/updates/removes a post is actually on the same instance as that post
|
||||||
|
|
||||||
For the last point, note that we are *not* checking whether the actor that sends the create activity for a post is
|
For the last point, note that we are _not_ checking whether the actor that sends the create activity for a post is
|
||||||
actually identical to the post's creator, or that the user that removes a post is a mod/admin. These things are checked
|
actually identical to the post's creator, or that the user that removes a post is a mod/admin. These things are checked
|
||||||
by the API code, and its the responsibility of each instance to check user permissions. This does not leave any attack
|
by the API code, and its the responsibility of each instance to check user permissions. This does not leave any attack
|
||||||
vector, as a normal instance user cant do actions that violate the API rules. The only one who could do that is the
|
vector, as a normal instance user cant do actions that violate the API rules. The only one who could do that is the
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
# Local Development
|
# Local Development
|
||||||
|
|
||||||
### Install build requirements
|
### Install build requirements
|
||||||
|
|
||||||
Install Rust using [the recommended option on rust-lang.org](https://www.rust-lang.org/tools/install) (rustup).
|
Install Rust using [the recommended option on rust-lang.org](https://www.rust-lang.org/tools/install) (rustup).
|
||||||
|
|
||||||
#### Debian-based distro
|
#### Debian-based distro
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt install git cargo libssl-dev pkg-config libpq-dev curl
|
sudo apt install git cargo libssl-dev pkg-config libpq-dev curl
|
||||||
# install yarn
|
# install yarn
|
||||||
|
@ -13,6 +15,7 @@ sudo apt update && sudo apt install yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Arch-based distro
|
#### Arch-based distro
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo pacman -S git cargo libssl-dev pkg-config libpq-dev curl
|
sudo pacman -S git cargo libssl-dev pkg-config libpq-dev curl
|
||||||
# install yarn (stable)
|
# install yarn (stable)
|
||||||
|
@ -20,6 +23,7 @@ curl -o- -L https://yarnpkg.com/install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
#### macOS
|
#### macOS
|
||||||
|
|
||||||
Install [Homebrew](https://brew.sh/) if you don't already have it installed.
|
Install [Homebrew](https://brew.sh/) if you don't already have it installed.
|
||||||
|
|
||||||
Finally, install Node and Yarn.
|
Finally, install Node and Yarn.
|
||||||
|
@ -29,6 +33,7 @@ brew install node yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
### Get the back end source code
|
### Get the back end source code
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/LemmyNet/lemmy.git --recursive
|
git clone https://github.com/LemmyNet/lemmy.git --recursive
|
||||||
# or alternatively from gitea
|
# or alternatively from gitea
|
||||||
|
@ -36,18 +41,22 @@ git clone https://github.com/LemmyNet/lemmy.git --recursive
|
||||||
```
|
```
|
||||||
|
|
||||||
### Build the backend (Rust)
|
### Build the backend (Rust)
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo build
|
cargo build
|
||||||
# for development, use `cargo check` instead)
|
# for development, use `cargo check` instead)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Get the front end source code
|
### Get the front end source code
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/LemmyNet/lemmy-ui.git --recursive
|
git clone https://github.com/LemmyNet/lemmy-ui.git --recursive
|
||||||
```
|
```
|
||||||
|
|
||||||
### Setup postgresql
|
### Setup postgresql
|
||||||
|
|
||||||
#### Debian-based disto
|
#### Debian-based disto
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt install postgresql
|
sudo apt install postgresql
|
||||||
sudo systemctl start postgresql
|
sudo systemctl start postgresql
|
||||||
|
@ -59,6 +68,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Arch-based distro
|
#### Arch-based distro
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo pacman -S postgresql
|
sudo pacman -S postgresql
|
||||||
sudo systemctl start postgresql
|
sudo systemctl start postgresql
|
||||||
|
@ -70,6 +80,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
#### macOS
|
#### macOS
|
||||||
|
|
||||||
```
|
```
|
||||||
brew install postgresql
|
brew install postgresql
|
||||||
brew services start postgresql
|
brew services start postgresql
|
||||||
|
@ -82,6 +93,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run a local development instance
|
### Run a local development instance
|
||||||
|
|
||||||
```
|
```
|
||||||
cd lemmy
|
cd lemmy
|
||||||
cargo run
|
cargo run
|
||||||
|
|
|
@ -23,6 +23,7 @@ Install the [Local development dependencies](local_development.md), and add the
|
||||||
```
|
```
|
||||||
|
|
||||||
Then use the following script to run the tests:
|
Then use the following script to run the tests:
|
||||||
|
|
||||||
```
|
```
|
||||||
cd api_tests
|
cd api_tests
|
||||||
./run-federation-test.bash
|
./run-federation-test.bash
|
||||||
|
|
|
@ -10,43 +10,43 @@ Before reading this, have a look at our [Federation Overview](contributing_feder
|
||||||
|
|
||||||
- [Context](#context)
|
- [Context](#context)
|
||||||
- [Actors](#actors)
|
- [Actors](#actors)
|
||||||
* [Community](#community)
|
- [Community](#community)
|
||||||
* [User](#user)
|
- [User](#user)
|
||||||
* [Instance](#instance)
|
- [Instance](#instance)
|
||||||
- [Objects](#objects)
|
- [Objects](#objects)
|
||||||
* [Post](#post)
|
- [Post](#post)
|
||||||
* [Comment](#comment)
|
- [Comment](#comment)
|
||||||
* [Private Message](#private-message)
|
- [Private Message](#private-message)
|
||||||
- [Collections](#collections)
|
- [Collections](#collections)
|
||||||
* [Community Outbox](#community-outbox)
|
- [Community Outbox](#community-outbox)
|
||||||
* [Community Followers](#community-followers)
|
- [Community Followers](#community-followers)
|
||||||
* [Community Moderators](#community-moderators)
|
- [Community Moderators](#community-moderators)
|
||||||
* [User Outbox](#user-outbox)
|
- [User Outbox](#user-outbox)
|
||||||
- [Activities](#activities)
|
- [Activities](#activities)
|
||||||
* [User to Community](#user-to-community)
|
- [User to Community](#user-to-community)
|
||||||
+ [Follow](#follow)
|
- [Follow](#follow)
|
||||||
+ [Unfollow](#unfollow)
|
- [Unfollow](#unfollow)
|
||||||
+ [Report Post or Comment](#report-post-or-comment)
|
- [Report Post or Comment](#report-post-or-comment)
|
||||||
* [Community to User](#community-to-user)
|
- [Community to User](#community-to-user)
|
||||||
+ [Accept Follow](#accept-follow)
|
- [Accept Follow](#accept-follow)
|
||||||
+ [Announce](#announce)
|
- [Announce](#announce)
|
||||||
* [Announcable](#announcable)
|
- [Announcable](#announcable)
|
||||||
+ [Create or Update Post](#create-or-update-post)
|
- [Create or Update Post](#create-or-update-post)
|
||||||
+ [Create or Update Comment](#create-or-update-comment)
|
- [Create or Update Comment](#create-or-update-comment)
|
||||||
+ [Like Post or Comment](#like-post-or-comment)
|
- [Like Post or Comment](#like-post-or-comment)
|
||||||
+ [Dislike Post or Comment](#dislike-post-or-comment)
|
- [Dislike Post or Comment](#dislike-post-or-comment)
|
||||||
+ [Undo Like or Dislike Post or Comment](#undo-like-or-dislike-post-or-comment)
|
- [Undo Like or Dislike Post or Comment](#undo-like-or-dislike-post-or-comment)
|
||||||
+ [Delete Post or Comment](#delete-post-or-comment)
|
- [Delete Post or Comment](#delete-post-or-comment)
|
||||||
+ [Remove Post or Comment](#remove-post-or-comment)
|
- [Remove Post or Comment](#remove-post-or-comment)
|
||||||
+ [Undo Delete or Remove](#undo-delete-or-remove)
|
- [Undo Delete or Remove](#undo-delete-or-remove)
|
||||||
+ [Add Mod](#add-mod)
|
- [Add Mod](#add-mod)
|
||||||
+ [Remove Mod](#remove-mod)
|
- [Remove Mod](#remove-mod)
|
||||||
+ [Block User](#block-user)
|
- [Block User](#block-user)
|
||||||
+ [Undo Block User](#undo-block-user)
|
- [Undo Block User](#undo-block-user)
|
||||||
* [User to User](#user-to-user)
|
- [User to User](#user-to-user)
|
||||||
+ [Create or Update Private message](#create-or-update-private-message)
|
- [Create or Update Private message](#create-or-update-private-message)
|
||||||
+ [Delete Private Message](#delete-private-message)
|
- [Delete Private Message](#delete-private-message)
|
||||||
+ [Undo Delete Private Message](#undo-delete-private-message)
|
- [Undo Delete Private Message](#undo-delete-private-message)
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ Receives activities from user: `Follow`, `Undo/Follow`, `Create`, `Update`, `Lik
|
||||||
```
|
```
|
||||||
|
|
||||||
| Field Name | Description |
|
| Field Name | Description |
|
||||||
|---|---|
|
| ------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||||
| `preferredUsername` | Name of the actor |
|
| `preferredUsername` | Name of the actor |
|
||||||
| `name` | Title of the community |
|
| `name` | Title of the community |
|
||||||
| `sensitive` | True indicates that all posts in the community are nsfw |
|
| `sensitive` | True indicates that all posts in the community are nsfw |
|
||||||
|
@ -104,7 +104,7 @@ Sends and receives activities from/to other users: `Create/Note`, `Update/Note`,
|
||||||
```
|
```
|
||||||
|
|
||||||
| Field Name | Description |
|
| Field Name | Description |
|
||||||
|---|---|
|
| ------------------- | -------------------------------------------------------- |
|
||||||
| `preferredUsername` | Name of the actor |
|
| `preferredUsername` | Name of the actor |
|
||||||
| `name` | The user's displayname |
|
| `name` | The user's displayname |
|
||||||
| `content` | User bio |
|
| `content` | User bio |
|
||||||
|
@ -127,7 +127,7 @@ Represents a Lemmy instance, and is used to federate global data like the instan
|
||||||
```
|
```
|
||||||
|
|
||||||
| Field Name | Description |
|
| Field Name | Description |
|
||||||
|-------------|----------------------------------------------------------|
|
| ----------- | -------------------------------------------------------- |
|
||||||
| `name` | Instance name |
|
| `name` | Instance name |
|
||||||
| `summary` | Short description |
|
| `summary` | Short description |
|
||||||
| `content` | Long description (sidebar) |
|
| `content` | Long description (sidebar) |
|
||||||
|
@ -150,7 +150,7 @@ A page with title, and optional URL and text content. The URL often leads to an
|
||||||
```
|
```
|
||||||
|
|
||||||
| Field Name | Description |
|
| Field Name | Description |
|
||||||
|---|---|
|
| ----------------- | --------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | ID of the user which created this post |
|
| `attributedTo` | ID of the user which created this post |
|
||||||
| `to` | ID of the community where it was posted to |
|
| `to` | ID of the community where it was posted to |
|
||||||
| `name` | Title of the post |
|
| `name` | Title of the post |
|
||||||
|
@ -172,7 +172,7 @@ A reply to a post, or reply to another comment. Contains only text (including re
|
||||||
```
|
```
|
||||||
|
|
||||||
| Field Name | Description |
|
| Field Name | Description |
|
||||||
|---|---|
|
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | ID of the user who created the comment |
|
| `attributedTo` | ID of the user who created the comment |
|
||||||
| `to` | Community where the comment was made |
|
| `to` | Community where the comment was made |
|
||||||
| `content` | The comment text |
|
| `content` | The comment text |
|
||||||
|
@ -189,7 +189,7 @@ A direct message from one user to another. Can not include additional users. Thr
|
||||||
```
|
```
|
||||||
|
|
||||||
| Field Name | Description |
|
| Field Name | Description |
|
||||||
|---|---|
|
| -------------- | ------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | ID of the user who created this private message |
|
| `attributedTo` | ID of the user who created this private message |
|
||||||
| `to` | ID of the recipient |
|
| `to` | ID of the recipient |
|
||||||
| `content` | The text of the private message |
|
| `content` | The text of the private message |
|
||||||
|
@ -246,7 +246,6 @@ Clicking on the unsubscribe button in a community causes an `Undo/Follow` to be
|
||||||
{{#include ../../../include/crates/apub/assets/lemmy/activities/following/undo_follow.json}}
|
{{#include ../../../include/crates/apub/assets/lemmy/activities/following/undo_follow.json}}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
#### Report Post or Comment
|
#### Report Post or Comment
|
||||||
|
|
||||||
Reports a post or comment for rule violation, so that mods/admins review it.
|
Reports a post or comment for rule violation, so that mods/admins review it.
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
# Federation Overview
|
# Federation Overview
|
||||||
|
|
||||||
|
|
||||||
This document is for anyone who wants to know how Lemmy federation works, without being overly technical. It is meant provide a high-level overview of ActivityPub federation in Lemmy. If you are implementing ActivityPub yourself and want to be compatible with Lemmy, read our [ActivityPub API outline](contributing_apub_api_outline.md).
|
This document is for anyone who wants to know how Lemmy federation works, without being overly technical. It is meant provide a high-level overview of ActivityPub federation in Lemmy. If you are implementing ActivityPub yourself and want to be compatible with Lemmy, read our [ActivityPub API outline](contributing_apub_api_outline.md).
|
||||||
|
|
||||||
## Documentation conventions
|
## Documentation conventions
|
||||||
|
|
||||||
To keep things simple, sometimes you will see things formatted like `Create/Note` or `Delete/Event` or `Undo/Follow`. The thing before the slash is the Activity, and the thing after the slash is the Object inside the Activity, in an `object` property. So these are to be read as follows:
|
To keep things simple, sometimes you will see things formatted like `Create/Note` or `Delete/Event` or `Undo/Follow`. The thing before the slash is the Activity, and the thing after the slash is the Object inside the Activity, in an `object` property. So these are to be read as follows:
|
||||||
|
|
||||||
* `Create/Note`: a `Create` activity containing a `Note` in the `object` field
|
- `Create/Note`: a `Create` activity containing a `Note` in the `object` field
|
||||||
* `Delete/Event`: a `Delete` activity containing an `Event` in the `object` field
|
- `Delete/Event`: a `Delete` activity containing an `Event` in the `object` field
|
||||||
* `Undo/Follow`: an `Undo` activity containing a `Follow` in the `object` field
|
- `Undo/Follow`: an `Undo` activity containing a `Follow` in the `object` field
|
||||||
|
|
||||||
In Lemmy we use some specific terms to refer to ActivityPub items. They are essentially our specific implementations of well-known ActivityPub concepts:
|
In Lemmy we use some specific terms to refer to ActivityPub items. They are essentially our specific implementations of well-known ActivityPub concepts:
|
||||||
|
|
||||||
|
@ -20,9 +19,9 @@ In Lemmy we use some specific terms to refer to ActivityPub items. They are esse
|
||||||
|
|
||||||
This document has three main sections:
|
This document has three main sections:
|
||||||
|
|
||||||
* __Federation philosophy__ lays out the general model of how this is intended to federate
|
- **Federation philosophy** lays out the general model of how this is intended to federate
|
||||||
* __User Activities__ describes which actions that a User can take to interact
|
- **User Activities** describes which actions that a User can take to interact
|
||||||
* __Community Activities__ describes what the Community does in response to certain User actions
|
- **Community Activities** describes what the Community does in response to certain User actions
|
||||||
|
|
||||||
## Federation philosophy
|
## Federation philosophy
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ The **community creator** is this first **moderator** of a community since he cr
|
||||||
An **administrator** has full rights on the entire server, and thus also in each community.
|
An **administrator** has full rights on the entire server, and thus also in each community.
|
||||||
|
|
||||||
| Action | Result | Permission level |
|
| Action | Result | Permission level |
|
||||||
| --- | --- | --- |
|
| ---------------- | ------------------------------------------------------- | ---------------- |
|
||||||
| lock | Prevents making new comments under the post | Moderator |
|
| lock | Prevents making new comments under the post | Moderator |
|
||||||
| sticky | Pin the publication to the top of the community listing | Moderator |
|
| sticky | Pin the publication to the top of the community listing | Moderator |
|
||||||
| remove | Delete the post | Moderator |
|
| remove | Delete the post | Moderator |
|
||||||
|
|
Loading…
Reference in a new issue