Fix dead links, add CI check (#170)

* Fix dead links, add CI check

* toolchain
This commit is contained in:
Nutomic 2023-04-21 16:40:14 +02:00 committed by GitHub
parent 2e8280bb82
commit 97f6a8552e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 30 additions and 61 deletions

View file

@ -5,11 +5,17 @@ clone:
recursive: true recursive: true
submodule_update_remote: true submodule_update_remote: true
pipeline: pipeline:
dead_links:
image: becheran/mlc:latest
commands:
- mlc src/en --ignore-links "*localhost*" --ignore-links "*127.0.0.1*" --ignore-links /api
check_formatting: check_formatting:
image: alpine:3 image: alpine:3
commands: commands:
- apk add prettier --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing - apk add prettier --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing
- prettier -c src - prettier -c src
check_documentation_build: check_documentation_build:
image: rust:1.61-slim-buster image: rust:1.61-slim-buster
commands: commands:

3
rust-toolchain.toml Normal file
View file

@ -0,0 +1,3 @@
[toolchain]
channel = "1.61"
targets = []

View file

@ -3,8 +3,8 @@
## 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](main_screen.png) | ![chat screen](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).

View file

@ -1,6 +1,6 @@
# Features # Features
- Open source, [AGPL License](/LICENSE). - Open source, [AGPL License](https://github.com/LemmyNet/lemmy/blob/main/LICENSE).
- Self hostable, easy to deploy. - Self hostable, easy to deploy.
- Comes with [Docker](#docker) and [Ansible](#ansible). - Comes with [Docker](#docker) and [Ansible](#ansible).
- Clean, mobile-friendly interface. - Clean, mobile-friendly interface.

View file

@ -1,14 +1,14 @@
# Administration First Steps # Administration First Steps
After you successfully installed Lemmy either [manually with Docker](administration/install_docker.html) or [automatically with Ansible](administration/install_ansible.html) here are some recommendations for a new administrator of a Lemmy server. After you successfully installed Lemmy either [manually with Docker](install_docker.md) or [automatically with Ansible](install_ansible.md) here are some recommendations for a new administrator of a Lemmy server.
## Admin Settings ## Admin Settings
The first thing to do is to go to your admin panel, which can be found by clicking on the cog at the top right next to the search icon. Here you can define a description for your site, so that people know if it is about one specific topic or if all subjects are welcome. You can also add an icon and a banner that define your server, it can for example be the logo of your organization. The first thing to do is to go to your admin panel, which can be found by clicking on the cog at the top right next to the search icon. Here you can define a description for your site, so that people know if it is about one specific topic or if all subjects are welcome. You can also add an icon and a banner that define your server, it can for example be the logo of your organization.
Take the time to browse through the entire page to discover the different options you have to customize your Lemmy instance, on the same page you can edit your [configuration file](configuration.html), where you can find information about your database, the email used by the server, the federation options or who is the main administrator. Take the time to browse through the entire page to discover the different options you have to customize your Lemmy instance, on the same page you can edit your [configuration file](configuration.md), where you can find information about your database, the email used by the server, the federation options or who is the main administrator.
It is always good to define another administrator than yourself, in case it is necessary to take actions while you take your best nap. Take a look at the [moderation guide](../moderation/moderation.html) for more information on how to do this. It is always good to define another administrator than yourself, in case it is necessary to take actions while you take your best nap. Take a look at the [moderation guide](../moderation/moderation.md) for more information on how to do this.
## Check that everything is working properly ## Check that everything is working properly

View file

@ -9,7 +9,7 @@ cd /lemmy
# download default config files # download default config files
wget https://raw.githubusercontent.com/LemmyNet/lemmy/release/v0.17/docker/prod/docker-compose.yml wget https://raw.githubusercontent.com/LemmyNet/lemmy/release/v0.17/docker/prod/docker-compose.yml
wget https://raw.githubusercontent.com/LemmyNet/lemmy/release/v0.17/docker/lemmy.hjson wget https://raw.githubusercontent.com/LemmyNet/lemmy/release/v0.17/docker/prod/lemmy.hjson
# Set correct permissions for pictrs folder # Set correct permissions for pictrs folder
mkdir -p volumes/pictrs mkdir -p volumes/pictrs

View file

@ -2,7 +2,7 @@
Different problems that can occur on a new instance, and how to solve them. Different problems that can occur on a new instance, and how to solve them.
Many Lemmy features depend on a correct reverse proxy configuration. Make sure yours is equivalent to our [nginx config](https://github.com/LemmyNet/lemmy/blob/main/ansible/templates/nginx.conf). Many Lemmy features depend on a correct reverse proxy configuration. Make sure yours is equivalent to our [nginx config](https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/nginx.conf).
## General ## General
@ -62,7 +62,7 @@ curl -H "Accept: application/activity+json" https://your-instance.com/comment/12
### 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_getting_started.md).
Also ensure that the time is accurately set on your server. Activities are signed with a timestamp, and will be discarded if it is off by more than 10 seconds. Also ensure that the time is accurately set on your server. Activities are signed with a timestamp, and will be discarded if it is off by more than 10 seconds.

View file

@ -2,4 +2,3 @@
- [API docs](/api) - [API docs](/api)
- [HTTP API extras](http_api_extras.md) - [HTTP API extras](http_api_extras.md)
- [Theming Guide](theming.md)

View file

@ -1,6 +1,6 @@
# Creating a Custom Frontend # Creating a Custom Frontend
The backend and frontend are completely decoupled, and run in independent Docker containers. They only communicate over the [Lemmy API](api_reference.md), which makes it quite easy to write alternative frontends. The backend and frontend are completely decoupled, and run in independent Docker containers. They only communicate over the [Lemmy API](client_development.md), which makes it quite easy to write alternative frontends.
This creates a lot of potential for custom frontends, which could change much of the design and user experience of Lemmy. For example, it would be possible to create a frontend in the style of a traditional forum like [phpBB](https://www.phpbb.com/), or a question-and-answer site like [stackoverflow](https://stackoverflow.com/). All without having to think about database queries, authentification or ActivityPub, which you essentially get for free. This creates a lot of potential for custom frontends, which could change much of the design and user experience of Lemmy. For example, it would be possible to create a frontend in the style of a traditional forum like [phpBB](https://www.phpbb.com/), or a question-and-answer site like [stackoverflow](https://stackoverflow.com/). All without having to think about database queries, authentification or ActivityPub, which you essentially get for free.

View file

@ -33,5 +33,5 @@ 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/LemmyNet/lemmyBB)
- [lemmy-stats-crawler](https://yerbamate.ml/LemmyNet/lemmy-stats-crawler) - [lemmy-stats-crawler](https://github.com/LemmyNet/lemmy-stats-crawler)

View file

@ -11,7 +11,7 @@
[**Message the Moderation Team on Mastodon**](https://mastodon.social/@LemmyDev) [**Message the Moderation Team on Mastodon**](https://mastodon.social/@LemmyDev)
[**Email The Moderation Team**](mailto:contact@lemmy.ml) [**Email The Moderation Team**](mailto:contact@join-lemmy.org)
## Moderation ## Moderation
@ -30,6 +30,6 @@ In the Lemmy community we strive to go the extra step to look out for each other
And if someone takes issue with something you said or did, resist the urge to be defensive. Just stop doing what it was they complained about and apologize. Even if you feel you were misinterpreted or unfairly accused, chances are good there was something you couldve communicated better — remember that its your responsibility to make others comfortable. Everyone wants to get along and we are all here first and foremost because we want to talk about cool technology. You will find that people will be eager to assume good intent and forgive as long as you earn their trust. And if someone takes issue with something you said or did, resist the urge to be defensive. Just stop doing what it was they complained about and apologize. Even if you feel you were misinterpreted or unfairly accused, chances are good there was something you couldve communicated better — remember that its your responsibility to make others comfortable. Everyone wants to get along and we are all here first and foremost because we want to talk about cool technology. You will find that people will be eager to assume good intent and forgive as long as you earn their trust.
The enforcement policies listed above apply to all official Lemmy venues; including git repositories under [github.com/LemmyNet](https://github.com/LemmyNet) and [yerbamate.ml/LemmyNet](https://yerbamate.ml/LemmyNet), the [Matrix channel](https://matrix.to/#/!BZVTUuEiNmRcbFeLeI:matrix.org); [lemmy.ml](https://lemmy.ml) and other instances under that domain. For other projects adopting the Lemmy Code of Conduct, please contact the maintainers of those projects for enforcement. If you wish to use this code of conduct for your own project, consider explicitly mentioning your moderation policy or making a copy with your own moderation policy so as to avoid confusion. The enforcement policies listed above apply to all official Lemmy venues; including git repositories under [github.com/LemmyNet](https://github.com/LemmyNet) and [git.join-lemmy.org/LemmyNet](https://git.join-lemmy.org/LemmyNet/), the [Matrix chat](https://matrix.to/#/#lemmy-space:matrix.org); [lemmy.ml](https://lemmy.ml) and other instances under that domain. For other projects adopting the Lemmy Code of Conduct, please contact the maintainers of those projects for enforcement. If you wish to use this code of conduct for your own project, consider explicitly mentioning your moderation policy or making a copy with your own moderation policy so as to avoid confusion.
Adapted from the [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct), which is based on the [Node.js Policy on Trolling](http://blog.izs.me/post/30036893703/policy-on-trolling) as well as the [Contributor Covenant v1.3.0](https://www.contributor-covenant.org/version/1/3/0/). Adapted from the [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct), which is based on the [Node.js Policy on Trolling](http://blog.izs.me/post/30036893703/policy-on-trolling) as well as the [Contributor Covenant v1.3.0](https://www.contributor-covenant.org/version/1/3/0/).

View file

@ -5,12 +5,12 @@ Information about contributing to Lemmy, whether it is translating, testing, des
## Issue tracking / Repositories ## Issue tracking / Repositories
- [GitHub (for issues and pull requests)](https://github.com/LemmyNet/lemmy) - [GitHub (for issues and pull requests)](https://github.com/LemmyNet/lemmy)
- [Gitea (only for pull requests)](https://yerbamate.ml/LemmyNet/lemmy) - [Gitea (only for pull requests)](https://git.join-lemmy.org/LemmyNet/lemmy/)
- [Codeberg](https://codeberg.org/LemmyNet/lemmy) - [Codeberg](https://codeberg.org/LemmyNet/lemmy)
## Translating ## Translating
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.join-lemmy.org/projects/lemmy/) for translations. You can also help by [translating this documentation](https://github.com/LemmyNet/lemmy-docs#adding-a-new-language).
## Architecture ## Architecture

View file

@ -37,6 +37,7 @@
## Examples and Libraries ## Examples and Libraries
- [activitypub-federation-rust library](https://crates.io/crates/activitypub-federation)
- [ActivityPub example server](https://github.com/tOkeshu/activitypub-example) - [ActivityPub example server](https://github.com/tOkeshu/activitypub-example)
- [ActivityStreams crate](https://docs.rs/activitystreams/) - [ActivityStreams crate](https://docs.rs/activitystreams/)
- [HTTP Signatures crate](https://git.asonix.dog/Aardwolf/http-signature-normalization) - [HTTP Signatures crate](https://git.asonix.dog/asonix/http-signature-normalization)

View file

@ -1,40 +0,0 @@
# Federation Administration
Note: ActivityPub federation is still under development. We recommend that you only enable it on test instances for now.
To enable federation, change the setting `federation.enabled` to `true` in `lemmy.hjson`, and restart Lemmy.
Federation does not start automatically, but needs to be triggered manually through the search. To do this you have to enter a reference to a remote object, such as:
- `!main@lemmy.ml` (Community)
- `@nutomic@lemmy.ml` (User)
- `https://lemmy.ml/c/programming` (Community)
- `https://lemmy.ml/u/nutomic` (User)
- `https://lemmy.ml/post/123` (Post)
- `https://lemmy.ml/comment/321` (Comment)
For an overview of how federation in Lemmy works on a technical level, check out our [Federation Overview](contributing_federation_overview.md).
## Federation Modes
Through the combination of federation config options, there are a couple different federation modes, differing in their restrictiveness. For now we don't recommend to use open federation, because moderation tools are lacking and there might be security problems in the federation code. Open federation should be fine for test instances and smaller instances, but bigger instances should prefer to use a more closed federation.
It is important to note that these settings only affect sending and receiving of data between instances. If allow federation with a certain instance, and then remove it from the allowlist, this will not affect previously federated data. These communities, users, posts and comments will still be shown. They will just not be updated anymore. And even if an instance is blocked, it can still fetch and display public data from your instance.
### Using allowlist, strict_allowlist = true
The most strict mode. Lemmy will only federate with instances from the allowlist, and block everything else. This includes all posts, comments, votes and private messages, you will only see them if the author is on an allowed instance. This means that remote communities or threads can be incomplete, as your instance will block any posts or comments whose author is not on an allowed instance.
The blocklist is ignored in this mode.
### Using allowlist, strict_allowlist = false
This mode is a bit more open than the one above. For local communities, the behaviour is identical, only users from allowed instances can post, comment or vote. The difference is with remote communities. The allowlist doesn't apply to them, so you will see all posts, comments and votes in remote communities (unless the author's instance is blocked). Private messages can be sent by any remote user that isn't blocked.
If a blocklist is set, all communication with the blocked instances will be prevented, no matter in which context.
### Using only blocklist
If no allowlist is specified, Lemmy will federate with any instance. This is the most open mode, and potentially the most risky, as someone could create a malicious instance, and immediately send spam or other problematic content to your instance. You can use the blocklist to prevent federation with such instances one by one.
`strict_allowlist` is ignored in this case.

View file

@ -4,7 +4,7 @@ The Lemmy Protocol (or Lemmy Federation Protocol) is a subset of the [ActivityPu
This document is targeted at developers who are familiar with the ActivityPub and ActivityStreams protocols. It gives a detailed outline of the actors, objects and activities used by Lemmy. This document is targeted at developers who are familiar with the ActivityPub and ActivityStreams protocols. It gives a detailed outline of the actors, objects and activities used by Lemmy.
Before reading this, have a look at our [Federation Overview](contributing_federation_overview.md) to get an idea how Lemmy federation works on a high level. Before reading this, have a look at our [Federation Overview](overview.md) to get an idea how Lemmy federation works on a high level.
<!-- toc --> <!-- toc -->

View file

@ -1,6 +1,6 @@
# 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 Protocol](lemmy_protocol.md).
## Documentation conventions ## Documentation conventions