diff --git a/.woodpecker.yml b/.woodpecker.yml index eeeb8d1..2edd594 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -23,17 +23,15 @@ pipeline: commands: - wget -O typos.tar.gz https://github.com/crate-ci/typos/releases/download/v1.14.12/typos-v1.14.12-x86_64-unknown-linux-musl.tar.gz - tar -xzf typos.tar.gz - - ./typos src/en + - ./typos src check_documentation_build: - image: rust:1.61-slim-buster + image: alpine:3 commands: - - cargo install mdbook --git https://github.com/Ruin0x11/mdBook.git --branch localization - --rev 9d8147c --force --debug - - apt-get update - - apt-get install git curl -y - - ./update-includes.sh - - mdbook build . + - wget -O mdbook.tar.gz https://github.com/rust-lang/mdBook/releases/download/v0.4.30/mdbook-v0.4.30-x86_64-unknown-linux-musl.tar.gz + - tar -xzf mdbook.tar.gz + - ls -la mdbook + - ./mdbook build . dead_links: image: becheran/mlc:latest diff --git a/README.md b/README.md index 46b8f0a..7e591a4 100644 --- a/README.md +++ b/README.md @@ -4,37 +4,7 @@ Documentation for the Lemmy project ## Building -You need to have [Cargo](https://doc.rust-lang.org/cargo/) 1.61 installed. - -Our documentation tool [mdbook](https://github.com/rust-lang/mdBook) doesn't support localisation yet, so we are using code that is still work on progress to create our documentation with localisation. Note that this code still has some rough edges. See [github.com/rust-lang/mdBook/pull/1306](https://github.com/rust-lang/mdBook/pull/1306) for more details. - -```bash -cargo install mdbook --git https://github.com/Ruin0x11/mdBook.git \ - --branch localization --rev 9d8147c -./update-includes.sh -# generate static page in `book` subfolder -mdbook build -# serve the book at `http://localhost:3000`, and rebuilds on changes -mdbook serve -``` - -## Adding a new Language - -- Edit `book.toml` to add the metadata for your language -- Copy `src/en/SUMMARY.md` to `src/xx/SUMMARY.md` (where xx is your language's identifier) -- In `src/xx/`, write your translation into files and folders with the same name as in `src/en/` -- Use the instructions above to ensure that it builds without errors - -## Guidelines for adding a new Translation - -- After following the instructions above for adding a new language, open a pull request in the repository. -- We don't expect that you translate the entire documentation as fast as possible, its more important that you consistently work to improve the translation (even if its only a few hours a week or less). -- The goal is not to make a sentence-for-sentence translation of the English docs, but writing something that addresses the needs of users in your language. For example, if docker-compose docs are lacking in a language, that should be explained more extensively in lemmy docs for that language -- This is technical documentation, so try to avoid mentioning things that are unrelated to Lemmy itself, and avoid mentioning specific Lemmy instances. -- Avoid adding files which don't exist in English or other languages, as that would lead to problems when switching between languages. -- We will merge a new language after it has been worked on regularly for at least a month, and at least some pages are finished. -- After merging, we will add a label for the language, to help organising issues and pull requests by language. -- The translator will also get maintainer rights in this repository, to allow managing contributions for their language. +Follow the [mdbook instructions](https://rust-lang.github.io/mdBook/guide/installation.html). ## Formatting diff --git a/book.toml b/book.toml index 7c96bfc..e1fb250 100644 --- a/book.toml +++ b/book.toml @@ -4,19 +4,3 @@ src = "src" [output.html] git-repository-url = "https://github.com/LemmyNet/lemmy-docs" - -[language.en] -name = "English" -title = "Lemmy Documentation" - -[language.es] -name = "Español" -title = "Documentación Lemmy" - -[language.ru] -name = "Русский" -title = "Документация Lemmy" - -[language.id] -name = "Indonesia" -title = "Dokumentasi Lemmy" diff --git a/rust-toolchain.toml b/rust-toolchain.toml deleted file mode 100644 index 83b3d45..0000000 --- a/rust-toolchain.toml +++ /dev/null @@ -1,3 +0,0 @@ -[toolchain] -channel = "1.61" -targets = [] diff --git a/src/en/SUMMARY.md b/src/SUMMARY.md similarity index 100% rename from src/en/SUMMARY.md rename to src/SUMMARY.md diff --git a/src/en/administration/administration.md b/src/administration/administration.md similarity index 100% rename from src/en/administration/administration.md rename to src/administration/administration.md diff --git a/src/en/administration/backup_and_restore.md b/src/administration/backup_and_restore.md similarity index 100% rename from src/en/administration/backup_and_restore.md rename to src/administration/backup_and_restore.md diff --git a/src/en/administration/caddy.md b/src/administration/caddy.md similarity index 100% rename from src/en/administration/caddy.md rename to src/administration/caddy.md diff --git a/src/en/administration/configuration.md b/src/administration/configuration.md similarity index 93% rename from src/en/administration/configuration.md rename to src/administration/configuration.md index 06d512b..10ed8c6 100644 --- a/src/en/administration/configuration.md +++ b/src/administration/configuration.md @@ -14,7 +14,7 @@ cd server ## Full config with default values ```hjson -{{#include ../../../include/config/defaults.hjson}} +{{#include ../../include/config/defaults.hjson}} ``` ## Lemmy-UI configuration diff --git a/src/en/administration/federation_getting_started.md b/src/administration/federation_getting_started.md similarity index 100% rename from src/en/administration/federation_getting_started.md rename to src/administration/federation_getting_started.md diff --git a/src/en/administration/first_steps.md b/src/administration/first_steps.md similarity index 100% rename from src/en/administration/first_steps.md rename to src/administration/first_steps.md diff --git a/src/en/administration/from_scratch.md b/src/administration/from_scratch.md similarity index 100% rename from src/en/administration/from_scratch.md rename to src/administration/from_scratch.md diff --git a/src/en/administration/install_ansible.md b/src/administration/install_ansible.md similarity index 100% rename from src/en/administration/install_ansible.md rename to src/administration/install_ansible.md diff --git a/src/en/administration/install_docker.md b/src/administration/install_docker.md similarity index 100% rename from src/en/administration/install_docker.md rename to src/administration/install_docker.md diff --git a/src/en/administration/on_aws.md b/src/administration/on_aws.md similarity index 100% rename from src/en/administration/on_aws.md rename to src/administration/on_aws.md diff --git a/src/en/administration/theming.md b/src/administration/theming.md similarity index 100% rename from src/en/administration/theming.md rename to src/administration/theming.md diff --git a/src/en/administration/tor_hidden_service.md b/src/administration/tor_hidden_service.md similarity index 100% rename from src/en/administration/tor_hidden_service.md rename to src/administration/tor_hidden_service.md diff --git a/src/en/administration/troubleshooting.md b/src/administration/troubleshooting.md similarity index 100% rename from src/en/administration/troubleshooting.md rename to src/administration/troubleshooting.md diff --git a/src/en/code_of_conduct.md b/src/code_of_conduct.md similarity index 100% rename from src/en/code_of_conduct.md rename to src/code_of_conduct.md diff --git a/src/en/contributors/01-overview.md b/src/contributors/01-overview.md similarity index 100% rename from src/en/contributors/01-overview.md rename to src/contributors/01-overview.md diff --git a/src/en/contributors/02-local-development.md b/src/contributors/02-local-development.md similarity index 100% rename from src/en/contributors/02-local-development.md rename to src/contributors/02-local-development.md diff --git a/src/en/contributors/03-docker-development.md b/src/contributors/03-docker-development.md similarity index 100% rename from src/en/contributors/03-docker-development.md rename to src/contributors/03-docker-development.md diff --git a/src/en/contributors/04-api.md b/src/contributors/04-api.md similarity index 100% rename from src/en/contributors/04-api.md rename to src/contributors/04-api.md diff --git a/src/en/contributors/05-federation.md b/src/contributors/05-federation.md similarity index 82% rename from src/en/contributors/05-federation.md rename to src/contributors/05-federation.md index 658461b..8e2cefc 100644 --- a/src/en/contributors/05-federation.md +++ b/src/contributors/05-federation.md @@ -18,7 +18,7 @@ Below are explanations and examples for all actors, objects and activities from ## Context ```json -{{#include ../../../include/crates/apub/assets/lemmy/context.json}} +{{#include ../../include/crates/apub/assets/lemmy/context.json}} ``` The context is identical for all activities and objects. @@ -30,7 +30,7 @@ The context is identical for all activities and objects. An automated actor. Users can send posts or comments to it, which the community forwards to its followers in the form of `Announce`. ```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/group.json}} +{{#include ../../include/crates/apub/assets/lemmy/objects/group.json}} ``` | Field Name | Description | @@ -55,7 +55,7 @@ An automated actor. Users can send posts or comments to it, which the community A person, interacts primarily with the community where it sends and receives posts/comments. Can also create and moderate communities, and send private messages to other users. Can be followed from other platforms. ```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/person.json}} +{{#include ../../include/crates/apub/assets/lemmy/objects/person.json}} ``` | Field Name | Description | @@ -76,7 +76,7 @@ A person, interacts primarily with the community where it sends and receives pos Represents a Lemmy instance, and is used to federate global data like the instance description or site bans. It can be fetched from the root path. ```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/instance.json}} +{{#include ../../include/crates/apub/assets/lemmy/objects/instance.json}} ``` | Field Name | Description | @@ -99,7 +99,7 @@ Represents a Lemmy instance, and is used to federate global data like the instan A page with title, and optional URL and text content. The attachment URL often leads to an image, in which case a thumbnail is included. Each post belongs to exactly one community. Sent out as `Page`, but for receiving the types `Article`, `Note`, `Video` and `Event` are also accepted. ```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/page.json}} +{{#include ../../include/crates/apub/assets/lemmy/objects/page.json}} ``` | Field Name | Description | @@ -121,7 +121,7 @@ A page with title, and optional URL and text content. The attachment URL often l A reply to a post, or reply to another comment. Contains only text (including references to other users or communities). Lemmy displays comments in a tree structure. ```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/note.json}} +{{#include ../../include/crates/apub/assets/lemmy/objects/note.json}} ``` | Field Name | Description | @@ -138,7 +138,7 @@ A reply to a post, or reply to another comment. Contains only text (including re A direct message from one user to another. Can not include additional users. Threading is not implemented yet, so the `inReplyTo` field is missing. ```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/chat_message.json}} +{{#include ../../include/crates/apub/assets/lemmy/objects/chat_message.json}} ``` | Field Name | Description | @@ -154,7 +154,7 @@ A direct message from one user to another. Can not include additional users. Thr ### Community Outbox ```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/group_outbox.json}} +{{#include ../../include/crates/apub/assets/lemmy/collections/group_outbox.json}} ``` The outbox only contains `Create/Post` activities for now. @@ -162,7 +162,7 @@ The outbox only contains `Create/Post` activities for now. ### Community Followers ```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/group_followers.json}} +{{#include ../../include/crates/apub/assets/lemmy/collections/group_followers.json}} ``` The followers collection is only used to expose the number of followers. Actor IDs are not included, to protect user privacy. @@ -172,7 +172,7 @@ The followers collection is only used to expose the number of followers. Actor I List of moderators who can perform actions like removing posts or banning users. ```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/group_moderators.json}} +{{#include ../../include/crates/apub/assets/lemmy/collections/group_moderators.json}} ``` ### Community Featured Posts @@ -180,7 +180,7 @@ List of moderators who can perform actions like removing posts or banning users. List of posts which are stickied in the community. ```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/group_featured_posts.json}} +{{#include ../../include/crates/apub/assets/lemmy/collections/group_featured_posts.json}} ``` ### User Outbox @@ -188,7 +188,7 @@ List of posts which are stickied in the community. Only contains `totalItems` count, but no actual `items` for privacy reasons. ```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/person_outbox.json}} +{{#include ../../include/crates/apub/assets/lemmy/collections/person_outbox.json}} ``` ## Activities @@ -200,7 +200,7 @@ Only contains `totalItems` count, but no actual `items` for privacy reasons. Each Community page has a "Follow" button. Clicking this triggers a `Follow` activity to be sent from the user to the Community inbox. The Community will automatically respond with an `Accept/Follow` activity to the user inbox. It will also add the user to its list of followers, and deliver any activities about Posts/Comments in the Community to the user. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/following/follow.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/following/follow.json}} ``` #### Unfollow @@ -208,7 +208,7 @@ Each Community page has a "Follow" button. Clicking this triggers a `Follow` act After following a Community, the "Follow" button is replaced by "Unfollow". Clicking this sends an `Undo/Follow` activity to the Community inbox. The Community removes the User from its followers list and doesn't send any activities to it anymore. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/following/undo_follow.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/following/undo_follow.json}} ``` #### Create or Update Post @@ -216,7 +216,7 @@ After following a Community, the "Follow" button is replaced by "Unfollow". Clic When a user creates a new post, it is sent to the respective community as `Create/Page`. Editing a previously created post sends an almost identical activity, except the `type` being `Update`. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/create_or_update/create_page.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/create_or_update/create_page.json}} ``` #### Create or Update Comment @@ -227,7 +227,7 @@ The origin instance also scans the Comment for any User mentions, and sends the those Users as well. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/create_or_update/create_note.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/create_or_update/create_note.json}} ``` #### Like Post or Comment @@ -235,7 +235,7 @@ those Users as well. An upvote for a post or comment. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/voting/like_note.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/voting/like_note.json}} ``` #### Dislike Post or Comment @@ -243,7 +243,7 @@ An upvote for a post or comment. A downvote for a post or comment. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/voting/dislike_page.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/voting/dislike_page.json}} ``` #### Undo Like or Dislike Post or Comment @@ -251,7 +251,7 @@ A downvote for a post or comment. Revert a vote that was previously done by the same user. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/voting/undo_like_note.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/voting/undo_like_note.json}} ``` #### Delete Post or Comment @@ -261,7 +261,7 @@ Mods can remove Posts and Comments from their Communities. Admins can remove any Removals are sent to all followers of the Community, so that they also take effect there. The exception is if an admin removes an item from a Community which is hosted on a different instance. In this case, the removal only takes effect locally. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/delete_page.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/deletion/delete_page.json}} ``` #### Undo Delete @@ -269,7 +269,7 @@ Removals are sent to all followers of the Community, so that they also take effe Post or comment deletions can be reverted by the same user. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/undo_delete_page.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/deletion/undo_delete_page.json}} ``` #### Report Post, comment or private message @@ -277,7 +277,7 @@ Post or comment deletions can be reverted by the same user. Reports content for rule violation, so that mods/admins can review it. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/report_page.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/community/report_page.json}} ``` #### Delete User @@ -285,7 +285,7 @@ Reports content for rule violation, so that mods/admins can review it. Sent when a user deletes his own account. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/delete_user.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/deletion/delete_user.json}} ``` ### Community to User @@ -295,7 +295,7 @@ Sent when a user deletes his own account. Automatically sent by the community in response to a `Follow`. At the same time, the community adds this user to its followers list. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/following/accept.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/following/accept.json}} ``` #### Announce @@ -303,7 +303,7 @@ Automatically sent by the community in response to a `Follow`. At the same time, If the Community receives any Post or Comment related activity (Create, Update, Like, Dislike, Remove, Delete, Undo etc.), it will forward this to its followers. For this, an Announce is created with the Community as actor, and the received activity as object. This is sent to all followers, so they get updated in real time. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/announce_create_page.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/community/announce_create_page.json}} ``` ### Moderation @@ -315,7 +315,7 @@ These actions can only be done by instance admins or community moderators. They Removes a post or comment. The difference to delete is that remove activities have a summary field, which contains the reason for removal, as provided by the mod/admin. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/remove_note.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/deletion/remove_note.json}} ``` #### Block User @@ -323,7 +323,7 @@ Removes a post or comment. The difference to delete is that remove activities ha Blocks a user so he can't participate anymore. The scope is determined by the `target` field: either a community, or a whole instance. The `removeData` field can optionally be set to indicate that all previous posts of the user should be deleted. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/block/block_user.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/block/block_user.json}} ``` #### Lock post @@ -331,7 +331,7 @@ Blocks a user so he can't participate anymore. The scope is determined by the `t Posts can be locked so that no new comments can be created. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/lock_page.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/community/lock_page.json}} ``` #### Undo mod actions @@ -339,11 +339,11 @@ Posts can be locked so that no new comments can be created. All previously listed mod actions can be reverted by wrapping the original activity in `Undo`. Note that Lemmy regenerates the inner activity with a new ID. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/undo_remove_note.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/deletion/undo_remove_note.json}} ``` ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/block/undo_block_user.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/block/undo_block_user.json}} ``` #### Add or remove featured post @@ -351,11 +351,11 @@ All previously listed mod actions can be reverted by wrapping the original activ Posts can be pinned so that they are always shown on top of the community. This is federated with the [Community featured posts](#community-featured-posts) collection. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/add_featured_post.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/community/add_featured_post.json}} ``` ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/remove_featured_post.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/community/remove_featured_post.json}} ``` #### Add or remove mod @@ -363,13 +363,13 @@ Posts can be pinned so that they are always shown on top of the community. This Add a new mod to the community. Has to be sent by an existing community mod, or an admin of the community's instance. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/add_mod.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/community/add_mod.json}} ``` An existing mod can be removed in the same way. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/remove_mod.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/community/remove_mod.json}} ``` ### User to User @@ -379,7 +379,7 @@ An existing mod can be removed in the same way. Users from other platforms can follow Lemmy users and receive all of their posts to the inbox. Note that users who are registered on Lemmy can only follow groups, not other users. ```json -{{#include ../../../include/crates/apub/assets/pleroma/activities/follow.json}} +{{#include ../../include/crates/apub/assets/pleroma/activities/follow.json}} ``` #### Create or Update Private message @@ -387,7 +387,7 @@ Users from other platforms can follow Lemmy users and receive all of their posts User profiles have a "Send Message" button, which opens a dialog permitting to send a private message to this user. It is sent as a `Create/ChatMessage` to the user inbox. Private messages can only be directed at a single User. They can also be edited with `Update/ChatMessage`. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/create_or_update/create_private_message.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/create_or_update/create_private_message.json}} ``` #### Delete Private Message @@ -395,7 +395,7 @@ User profiles have a "Send Message" button, which opens a dialog permitting to s Deletes a previous private message. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/delete_private_message.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/deletion/delete_private_message.json}} ``` #### Undo Delete Private Message @@ -403,5 +403,5 @@ Deletes a previous private message. Restores a previously deleted private message. The `object` is regenerated from scratch, as such the activity ID and other fields are different. ```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/undo_delete_private_message.json}} +{{#include ../../include/crates/apub/assets/lemmy/activities/deletion/undo_delete_private_message.json}} ``` diff --git a/src/en/contributors/06-resources.md b/src/contributors/06-resources.md similarity index 100% rename from src/en/contributors/06-resources.md rename to src/contributors/06-resources.md diff --git a/src/en/contributors/07-ranking-algo.md b/src/contributors/07-ranking-algo.md similarity index 100% rename from src/en/contributors/07-ranking-algo.md rename to src/contributors/07-ranking-algo.md diff --git a/src/en/contributors/rank_algorithm.png b/src/contributors/rank_algorithm.png similarity index 100% rename from src/en/contributors/rank_algorithm.png rename to src/contributors/rank_algorithm.png diff --git a/src/es/SUMMARY.md b/src/es/SUMMARY.md deleted file mode 100644 index 2677b3c..0000000 --- a/src/es/SUMMARY.md +++ /dev/null @@ -1,33 +0,0 @@ -# Summary - -- [Acerca de](about/about.md) - - [Características](about/features.md) - - [Metas](about/goals.md) - - [Clasificación de las publicaciones y los comentarios](about/ranking.md) - - [Guía](about/guide.md) -- [Administración](administration/administration.md) - - [Instalación con Docker](administration/install_docker.md) - - [Instalación con Ansible](administration/install_ansible.md) - - [Instalar desde Cero](administration/from_scratch.md) - - [Instalar en AWS](administration/on_aws.md) - - [Configuración](administration/configuration.md) - - [Introducción a la Federación](administration/federation_getting_started.md) - - [Solución de Problemas](administration/troubleshooting.md) - - [Copia de Seguridad y Restauración](administration/backup_and_restore.md) -- [Federación](federation/federation.md) - - [Visión General de la Federación](federation/overview.md) - - [Recursos](federation/resources.md) - - [Protocolo de Lemmy](federation/lemmy_protocol.md) -- [Desarrollo de clientes](client_development/client_development.md) - - [Guía para Temas](client_development/theming.md) - - [Referencia de la API](client_development/api_reference.md) - - [API del WebSocket](client_development/websocket_api.md) - - [API HTTP](client_development/http_api.md) - - [Crear un Frontend Personalizado](client_development/custom_frontend.md) -- [Contribuir al Proyecto](contributing/contributing.md) - - [Desarrollo con Docker](contributing/docker_development.md) - - [Desarrollo Local](contributing/local_development.md) - - [Pruebas](contributing/tests.md) - - [Desarrollo de la Federación](contributing/federation_development.md) - - [Bifurcaciones y Liberaciones](contributing/release_process.md) -- [Código de Conducta](code_of_conduct.md) diff --git a/src/es/about/about.md b/src/es/about/about.md deleted file mode 100644 index c4381ef..0000000 --- a/src/es/about/about.md +++ /dev/null @@ -1,30 +0,0 @@ -## Acerca del proyecto - -| Página de inicio | Página de publicación | -| ------------------------------------- | ------------------------------------ | -| ![captura principal](main_screen.png) | ![captura del chat](chat_screen.png) | - -[Lemmy](https://github.com/LemmyNet/lemmy) es similar a sitios como [Menéame](https://meneame.net), [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), o [Hacker News](https://news.ycombinator.com/): te subscribes a los foros que te interesan, publicas enlaces y debates, luego votas y comentas en ellos. Entre bastidores, es muy diferente; cualquiera puede gestionar fácilmente un servidor, y todos estos servidores son federados (piensa en el correo electrónico), y conectados al mismo universo, llamado [Fediverso](https://es.wikipedia.org/wiki/Fediverso). - -Para un agregador de enlaces, esto significa que un usuario registrado en un servidor puede suscribirse a los foros de otro servidor, lo que le permite mantener discusiones con usuarios registrados en otros lugares. - -El objetivo general es crear una alternativa a reddit/menéame y otros agregadores de enlaces, fácilmente auto-hospedada, descentralizada, y fuera del control e intromisión corporativa de éstos. - -Cada servidor lemmy puede establecer su propia política de moderación; nombrando a los administradores del sitio y a los moderadores de la comunidad para mantener alejados a los trolls, fomentar un entorno saludable y no tóxico en el que todos puedan sentirse cómodos contribuyendo. - -**La Federación está en constante desarrollo** - -### ¿Por qué se llama Lemmy? - -- Cantante principal de [Motörhead](https://invidio.us/watch?v=pWB5JZRGl0U). -- El [videojuego de la vieja escuela](https://es.wikipedia.org/wiki/Lemmings). -- El [Koopa de Super Mario](https://www.mariowiki.com/Lemmy_Koopa). -- Los [roedores peludos](http://sunchild.fpwc.org/lemming-the-little-giant-of-the-north/). - -### Desarrollado Con - -- [Rust](https://www.rust-lang.org) -- [Actix](https://actix.rs/) -- [Diesel](http://diesel.rs/) -- [Inferno](https://infernojs.org) -- [Typescript](https://www.typescriptlang.org/) diff --git a/src/es/about/chat_screen.png b/src/es/about/chat_screen.png deleted file mode 100644 index 21a452d..0000000 Binary files a/src/es/about/chat_screen.png and /dev/null differ diff --git a/src/es/about/features.md b/src/es/about/features.md deleted file mode 100644 index 0e46326..0000000 --- a/src/es/about/features.md +++ /dev/null @@ -1,37 +0,0 @@ -# Características - -- Código abierto, [Licencia AGPL](/LICENSE). -- Auto-hospedado, fácil de desplegar (deploy). - - Viene con [Docker](#docker) y [Ansible](#ansible). -- Interfaz limpia y fácil de usar. Apta para dispositivos móviles. - - Sólo se requiere como mínimo un nombre de usuario y una contraseñar para inscribirse! - - Soporte de avatar de usuario. - - Hilos de comentarios actualizados en directo. - - Puntuaciones completas de los votos `(+/-)` como en el antiguo reddit. - - Temas, incluidos los claros, los oscuros, y los solarizados. - - Emojis con soporte de autocompletado. Empieza tecleando `:` - - _Ejemplo_ `miau :cat:` => `miau 🐈` - - Etiquetado de Usuarios con `@`, etiquetado de Comunidades con `!`. - - _Ejemplo_ `@miguel@lemmy.ml me invitó a la comunidad !gaming@lemmy.ml` - - Carga de imágenes integrada tanto en las publicaciones como en los comentarios. - - Una publicación puede consistir en un título y cualquier combinación de texto propio, una URL o nada más. - - Notificaciones, sobre las respuestas a los comentarios y cuando te etiquetan. - - Las notificaciones se pueden enviar por correo electrónico. - - Soporte de i18n / internacionalización. - - Fuentes RSS / Atom para Todo `All`, Suscrito `Subscribed`, Bandeja de entrada `inbox`, Usuario `User`, y Comunidad `Community`. -- Soporte para la publicación cruzada (cross-posting). - - **búsqueda de publicaciones similares** al crear una nueva. Ideal para comunidades de preguntas y respuestas. -- Capacidades de moderación. - - Registros públicos de moderación. - - Puedes pegar las publicaciones a la parte superior de las comunidades. - - Tanto los administradores del sitio, como los moderadores de la comunidad, pueden nombrar a otros moderadores. - - Puedes bloquear, eliminar y restaurar publicaciones y comentarios. - - Puedes banear y desbanear usuarios de las comunidades y del sitio. - - Puedes transferir el sitio y las comunidades a otros. -- Puedes borrar completamente tus datos, reemplazando todas las publicaciones y comentarios. -- Soporte para publicaciones y comunidades NSFW. -- Alto rendimiento. - - El servidor está escrito en rust. - - El front end está comprimido (gzipped) en `~80kB`. - - El front end funciona sin javascript (sólo lectura). - - Soporta arm64 / Raspberry Pi. diff --git a/src/es/about/goals.md b/src/es/about/goals.md deleted file mode 100644 index 54be7ac..0000000 --- a/src/es/about/goals.md +++ /dev/null @@ -1,41 +0,0 @@ -# Metas - -_Esta sección contiene ideas y recursos del equipo que desarrolla Lemmy_. **Parecido a un bloc de notas** - -- Piensa en un nombre / nombre clave. -- Debe tener comunidades. -- Debe tener comentarios hilados. -- Debe ser federado: enlazar y seguir comunidades en todas las instancias. -- Debe estar actualizado en vivo: tener un panel derecho para nuevos comentarios y un panel principal para la vista completa de los hilos. - - Usar websockets para publicar (post) / obtener (gets) hacia tu propia instancia. - -# Preguntas - -- ¿Cómo funciona la votación? ¿Debemos volver a la antigua forma de mostrar y contar los votos negativos? ¿O sólo una puntuación? -- Decidir la tecnología que se utilizará - - Backend: Actix, Diesel. - - Frontend: inferno, typescript y bootstrap por ahora. -- ¿Deberia permitir bots? -- ¿Deberían los comentarios/votos ser estáticos, o sentirse como un chat, como [flowchat?](https://flow-chat.com). - - Modelo de dos paneles - El panel derecho para comentarios en vivo, el panel izquierdo para la vista en árbol en vivo - - En el móvil, permite cambiar entre ellos. ¿Por defecto? - -# Recursos / Librerías potenciales - -- [Diesel to Postgres data types](https://kotiri.com/2018/01/31/postgresql-diesel-rust-types.html) -- [helpful diesel examples](http://siciarz.net/24-days-rust-diesel/) -- [Recursive query for adjacency list for nested comments](https://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tree/192462#192462) -- https://github.com/sparksuite/simplemde-markdown-editor -- [Markdown-it](https://github.com/markdown-it/markdown-it) -- [Sticky Sidebar](https://stackoverflow.com/questions/38382043/how-to-use-css-position-sticky-to-keep-a-sidebar-visible-with-bootstrap-4/49111934) -- [RXJS websocket](https://stackoverflow.com/questions/44060315/reconnecting-a-websocket-in-angular-and-rxjs/44067972#44067972) -- [Rust JWT](https://github.com/Keats/jsonwebtoken) -- [Hierarchical tree building javascript](https://stackoverflow.com/a/40732240/1655478) -- [Hot sorting discussion](https://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions) [2](https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9) -- [Classification types.](https://www.reddit.com/r/ModeratorDuck/wiki/subreddit_classification) -- [RES expando - Possibly make this into a switching react component.](https://github.com/honestbleeps/Reddit-Enhancement-Suite/tree/d21f55c21e734f47d8ed03fe0ebce5b16653b0bd/lib/modules/hosts) -- [Temp Icon](https://www.flaticon.com/free-icon/mouse_194242) -- [Rust docker build](https://shaneutt.com/blog/rust-fast-small-docker-image-builds/) -- [Zurb mentions](https://github.com/zurb/tribute) -- [TippyJS](https://github.com/atomiks/tippyjs) -- [SQL function indexes](https://sorentwo.com/2013/12/30/let-postgres-do-the-work.html) diff --git a/src/es/about/guide.md b/src/es/about/guide.md deleted file mode 100644 index 4fb7968..0000000 --- a/src/es/about/guide.md +++ /dev/null @@ -1,66 +0,0 @@ -# Guía de Lemmy - -**¿Eres nuevo aquí?** Esta sección es la indicada para que los nuevos (y no tan nuevos 😙) usuarios puedan sacar provecho de todo lo que Lemmy ofrece. - -## Vídeo Explicativo (en inglés) - - - -## Comandos Útiles - -Empieza tecleando... - -- `@nombre_usuario` para obtener una lista de nombres de usuario. -- `!nombre_comunidad` para obtener una lista de comunidades. -- `:emoji` para obtener una lista de emojis. - -## Clasificación - -_Se aplica tanto a las publicaciones como a los comentarios._ - -| Tipo | Descripción | -| ------------------ | ---------------------------------------------------------------------------------------- | -| Activo | Tendencias ordenadas en base a la puntuación, y la hora del comentario mas reciente. | -| Popular | Tendencias ordenadas en base a la puntuación, y la hora de creación de la publicación. | -| Nuevo | Las publicaciones más nuevas. | -| Más comentados | Las publicaciones con más comentarios. | -| Nuevos comentarios | Las publicaciones con los comentarios más recientes, es decir un ordenamiento tipo foro. | -| Top | Las publicaciones con mayor puntuación en el periodo de dado. | - -Para más detalles, revisa el [Apartado de la Clasificación de las publicaciones y los comentarios](ranking.md). - -## Moderación / Administración - -Todas las acciones de los moderadores y administradores sobre los usuarios se realizan en los comentarios o entradas, haciendo clic en el icono de 3 puntos "Más". - -Esto incluye: - -- Agregar / Eliminar mods y admins. -- Eliminar / Restaurar comentarios. -- Banear / Desbanear usuarios. - -Todas las acciones de los administradores en las comunidades se realizan en la barra lateral de la comunidad. Esto actualmente sólo incluye la eliminación/restauración de comunidades. - -## Guía de Markdown - -Enriquece todas tus publicaciones / comentarios aplicando el formato Markdown para que el texto no se vea tan aburrido. - -| Tipo | O | … para obtener | -| ------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| \*Italica\* | \_Italica\_ | _Italica_ | -| \*\*Negrita\*\* | \_\_Negrita\_\_ | **Negrita** | -| \# Titulo 1 | Titulo 1
========= |

Titulo 1

| -| \## Titulo 2 | Titulo 2
--------- |
Titulo 2
| -| \[enlace\](http://a.com) | \[enlace\]\[1\]

\[1\]: http://b.org | [enlace](https://commonmark.org/) | -| !\[Imagen\](http://url/a.png) | !\[Imagen\]\[1\]

\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) | -| \> Cita en bloque | |
Cita en bloque
| -| \* Lista
\* Lista
\* Lista | \- Lista
\- Lista
\- Lista
| _ Lista
_ Lista
\* Lista
| -| 1\. Uno
2\. Dos
3\. Tres | 1) Uno
2) Dos
3) Tres | 1. Uno
2. Dos
3. Tres | -| Línea Horizontal
\--- | Línea Horizontal
\*\*\* | Línea Horizontal

| -| \`Código en línea\` con acento grave | | `Código en línea` con acento grave | -| \`\`\`
\# Bloque de código
print '3 acentos graves o'
print 'indentar 4 espacios'
\`\`\` | ····\# Bloque de código
····print '3 acentos graves o'
····print 'indentar 4 espacios' | \# Bloque de código
print '3 acentos graves o'
print 'indentar 4 espacios' | -| ::: spoiler o nsfw oculto
_mucho spoiler aquí_
::: | |
spoiler o nsfw oculto

mucho spoiler aquí

| -| Texto de ~subíndice~ | | Texto de subíndice | -| Texto de ^superíndice^ | | Texto de superíndice | - -[Tutorial de CommonMark](https://commonmark.org/help/tutorial/) diff --git a/src/es/about/main_screen.png b/src/es/about/main_screen.png deleted file mode 100644 index 5d1f0c3..0000000 Binary files a/src/es/about/main_screen.png and /dev/null differ diff --git a/src/es/about/rank_algorithm.png b/src/es/about/rank_algorithm.png deleted file mode 100644 index c8200f9..0000000 Binary files a/src/es/about/rank_algorithm.png and /dev/null differ diff --git a/src/es/about/ranking.md b/src/es/about/ranking.md deleted file mode 100644 index 131bc0f..0000000 --- a/src/es/about/ranking.md +++ /dev/null @@ -1,47 +0,0 @@ -# Tendencia / Popular / Mejor algoritmo de clasificación - -## Metas - -- Durante el día, las nuevas publicaciones y comentarios deben estar cerca de la parte superior, para que puedan ser votados. -- Después de un día más o menos, el factor tiempo debería desaparecer. -- Utilizar una escala logarítmica, ya que los votos tienden a convertirse en una bola de nieve, por lo que los primeros 10 votos son tan importantes como los siguientes cien. - -## Implementaciones - -### Reddit - -No tiene en cuenta la duración del hilo, [lo que da a los primeros comentarios una ventaja abrumadora sobre los posteriores,](https://minimaxir.com/2016/11/first-comment/) siendo el efecto aún peor en las comunidades pequeñas. Los nuevos comentarios se acumulan en la parte inferior del hilo, acabando con la discusión y convirtiendo cada hilo en una carrera por comentar antes. Esto reduce la calidad de la conversación y premia los comentarios repetitivos y el spam. - -### Hacker News - -Aunque es muy superior a la implementación de Reddit por su decaimiento de las puntuaciones en el tiempo, [el algoritmo de clasificación de Hacker News](https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d) no utiliza una escala logarítmica para las puntuaciones. - -### Lemmy - -Contrarresta el efecto de bola de nieve de los votos a lo largo del tiempo con una escala logarítmica. Anula la ventaja inherente de los primeros comentarios y garantiza que los votos sigan siendo importantes a largo plazo, sin perjudicar los comentarios populares más antiguos. - -``` -Rank = ScaleFactor * log(Max(1, 3 + Score)) / (Time + 2)^Gravity - -Score = Upvotes - Downvotes -Time = time since submission (in hours) -Gravity = Decay gravity, 1.8 is default -``` - -- Lemmy utiliza el mismo algoritmo `Rank` anterior, en dos tipos: `Active` y `Hot`. - - El algoritmo "activo" utiliza los votos de las publicaciones y el tiempo de los últimos comentarios (limitado a dos días). - - `Hot` utiliza los votos de las publicaciones, y la hora de publicación de los mismos. -- Utiliza Max(1, score) para asegurarse de que todos los comentarios se ven afectados por el decaimiento del tiempo. -- Añade 3 a la puntuación, para que todo lo que tenga menos de 3 downvotes parezca nuevo. De lo contrario, todos los comentarios nuevos se quedarían en cero, cerca del fondo. -- El signo y los abs de la puntuación son necesarios para tratar el registro de las puntuaciones negativas. -- Un factor de escala de 10k obtiene el rango en forma de número entero. - -Un gráfico del rango a lo largo de 24 horas, de puntuaciones de 1, 5, 10, 100, 1000, con un factor de escala de 10k. - -![](rank_algorithm.png) - -#### Conteo de usuarios activos - -Lemmy también muestra el conteo de _usuarios activos_ de tu sitio y sus comunidades. Estos se cuentan en el último día `day`, semana `week`, mes `month` y medio año `half year`, almacenándose en caché al iniciar Lemmy, y cada hora. - -Un usuario activo es alguien que ha publicado o comentado en nuestra instancia o comunidad en el último periodo de tiempo. Para el conteo de sitios, sólo se cuentan los usuarios locales. Para los conteos de la comunidad, se incluyen los usuarios federados. diff --git a/src/es/administration/administration.md b/src/es/administration/administration.md deleted file mode 100644 index e7bef9f..0000000 --- a/src/es/administration/administration.md +++ /dev/null @@ -1,23 +0,0 @@ -# Información Administrativa - -Información para administradores de las instancias de Lemmy, y para aquellos que quieran gestionar un servidor. - -## Instalación - -### Métodos oficiales/soportados - -Lemmy tiene dos métodos principales de instalación: - -- [Manual con Docker](install_docker.md) -- [Automatizado con Ansible](install_ansible.md). - -Recomendamos usar Ansible, porque simplifica la instalación y también facilita la actualización. - -### Otros métodos de instalación - -> ⚠️ **Bajo tu propio riesgo.** - -En algunos casos, puede ser necesario utilizar diferentes métodos de instalación. Pero no los recomendamos y no podemos dar soporte para ellos. - -- [Instalar desde Cero](from_scratch.md) -- [En Amazon Web Services (AWS)](on_aws.md) diff --git a/src/es/administration/backup_and_restore.md b/src/es/administration/backup_and_restore.md deleted file mode 100644 index 4750d34..0000000 --- a/src/es/administration/backup_and_restore.md +++ /dev/null @@ -1,77 +0,0 @@ -# Guía de Copia de Seguridad Y Restauración - -## Docker y Ansible - -Cuando se utiliza docker o ansible, debe haber una carpeta llamada `volumes`, la cual contiene tanto la Base de Datos como todas las Imágenes. Copia esta carpeta a la nueva instancia para restaurar tus datos. - -### Copia de seguridad incremental de la BD - -Para hacer una copia de seguridad incremental de una base de datos en archivo `.sql` puedes ejecutar: - -```bash -docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql -``` - -### Un ejemplo de script de copia de seguridad - -```bash -#!/bin/sh -# DB Backup -ssh MY_USER@MY_IP "docker-compose exec postgres pg_dumpall -c -U lemmy" > ~/BACKUP_LOCATION/INSTANCE_NAME_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql - -# Volumes folder Backup -rsync -avP -zz --rsync-path="sudo rsync" MY_USER@MY_IP:/LEMMY_LOCATION/volumes ~/BACKUP_LOCATION/FOLDERNAME -``` - -### Restauración de la BD - -Si necesitas restaurar la base de datos a partir de un archivo `pg_dumpall`, primero necesitas borrar la base de datos existente - -```bash -# Drop the existing DB -docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" - -# Restore from the .sql backup -cat db_dump.sql | docker exec -i FOLDERNAME_postgres_1 psql -U lemmy # restores the db - -# This also might be necessary when doing a db import with a different password. -docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with password 'bleh'" -``` - -### Cambiar el nombre de dominio - -Si aún no te has federado, puedes cambiar tu nombre de dominio en la base de datos. -**Advertencia: no haga esto después de haber federado o romperás la federación.** - -Entra al `psql` de tu docker: - -`docker-compose exec postgres psql -U lemmy` - -``` --- Post -update post set ap_id = replace (ap_id, 'old_domain', 'new_domain'); -update post set url = replace (url, 'old_domain', 'new_domain'); -update post set body = replace (body, 'old_domain', 'new_domain'); -update post set thumbnail_url = replace (thumbnail_url, 'old_domain', 'new_domain'); - --- Comments -update comment set ap_id = replace (ap_id, 'old_domain', 'new_domain'); -update comment set content = replace (content, 'old_domain', 'new_domain'); - --- User -update user_ set actor_id = replace (actor_id, 'old_domain', 'new_domain'); -update user_ set inbox_url = replace (inbox_url, 'old_domain', 'new_domain'); -update user_ set shared_inbox_url = replace (shared_inbox_url, 'old_domain', 'new_domain'); -update user_ set avatar = replace (avatar, 'old_domain', 'new_domain'); - --- Community -update community set actor_id = replace (actor_id, 'old_domain', 'new_domain'); -update community set followers_url = replace (followers_url, 'old_domain', 'new_domain'); -update community set inbox_url = replace (inbox_url, 'old_domain', 'new_domain'); -update community set shared_inbox_url = replace (shared_inbox_url, 'old_domain', 'new_domain'); - -``` - -## Más recursos - -- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database diff --git a/src/es/administration/configuration.md b/src/es/administration/configuration.md deleted file mode 100644 index d2a0eec..0000000 --- a/src/es/administration/configuration.md +++ /dev/null @@ -1,19 +0,0 @@ -# Configuración - -La configuración está basada en el archivo [defaults.hjson](https://yerbamate.ml/LemmyNet/lemmy/src/branch/main/config/defaults.hjson). Este archivo también contiene la documentación de todas las opciones disponibles. Para anular los valores predeterminados, puedes copiar las opciones que deseas cambiar dentro de tu archivo local `config.hjson`. - -Los archivos `defaults.hjson` y `config.hjson` se encuentran en `config/defaults.hjson` y `config/config.hjson`, respectivamente. Para cambiar estas localizaciones predeterminadas, puedes establecer las siguientes variables de entorno: - -- LEMMY_CONFIG_LOCATION # config.hjson -- LEMMY_CONFIG_DEFAULTS_LOCATION # defaults.hjson - -Adicionalmente, puedes sobrescribir cualquier archivo de configuración con las variables de entorno. Éstas tienen el mismo nombre que las opciones de configuración, llevando el prefijo `LEMMY_`. Por ejemplo, puedes sobrescribir el `database.password` con `LEMMY_DATABASE__POOL_SIZE=10`. - -Una opción adicional `LEMMY_DATABASE_URL` está disponible, la cual puede ser usada con una cadena de conexión PostgreSQL como `postgres://lemmy:password@lemmy_db:5432/lemmy`, pasando todos los detalles de la conexión a la vez. - -Si no se utiliza el contenedor Docker, cree manualmente la base de datos especificada anteriormente ejecutando los siguientes comandos: - -```bash -cd server -./db-init.sh -``` diff --git a/src/es/administration/federation_getting_started.md b/src/es/administration/federation_getting_started.md deleted file mode 100644 index c1c9098..0000000 --- a/src/es/administration/federation_getting_started.md +++ /dev/null @@ -1,37 +0,0 @@ -# Federación - -Lemmy utiliza el protocolo ActivityPub (un estándar del W3C) para permitir la federación entre diferentes servidores (a menudo llamados instancias). Esto es muy parecido al funcionamiento del correo electrónico. Por ejemplo, si utilizas gmail.com, no sólo puedes enviar correos a otros usuarios de gmail.com, sino también a yahoo.com, yandex.ru, etc. El correo electrónico utiliza el protocolo SMTP para lograr esto, así que puedes pensar en ActivityPub como "SMTP para las redes sociales". La cantidad de acciones posibles en las redes sociales (publicar, comentar, gustar, compartir, etc.) hace que ActivityPub sea mucho más complicado que SMTP. - -Al igual que con el correo electrónico, la federación de ActivityPub sólo se produce entre servidores. Así, si estás registrado en `enterprise.lemmy.ml`, sólo te conectas a la API de `enterprise.lemmy.ml`, mientras que el servidor se encarga de enviar y recibir datos de otras instancias (por ejemplo, `voyager.lemmy.ml`). La gran ventaja de este enfoque es que el usuario medio no tiene que hacer nada para utilizar la federación. De hecho, si está utilizando Lemmy, es probable que ya lo estés haciendo. Una forma de confirmarlo es ir a una comunidad o perfil de usuario. Si estás en `enterprise.lemmy.ml` y ves un usuario como `@nutomic@voyager.lemmy.ml`, o una comunidad como `!main@ds9.lemmy.ml`, entonces están federados, lo que significa que utilizan una instancia diferente a la tuya. - -Una forma de aprovechar la federación es abrir una instancia diferente, como `ds9.lemmy.ml`, y navegar por ella. Si ves una comunidad, una publicación o un usuario interesante con el que quieres interactuar, sólo tienes que copiar su URL y pegarla en el campo de búsqueda de tu propia instancia (parte superior de página). Tu instancia se conectará a la otra (suponiendo que la lista de permitidos/bloqueados lo permita), y te mostrará directamente el contenido remoto, para que puedas seguir una comunidad o comentar un publicación. Estos son algunos ejemplos de búsquedas que funcionan: - -- `!main@lemmy.ml` (Comunidad) -- `@nutomic@lemmy.ml` (Usuario) -- `https://lemmy.ml/c/programming` (Comunidad) -- `https://lemmy.ml/u/nutomic` (Usuario) -- `https://lemmy.ml/post/123` (Publicación) -- `https://lemmy.ml/comment/321` (Comentario) - -Puedes ver la lista de instancias vinculadas siguiendo el enlace "Instancias" en la parte inferior de cualquier página de Lemmy. - -## Búsqueda de comunidades - -Si buscas una comunidad por primera vez, inicialmente se obtienen 20 publicaciones. Sólo si al menos un usuario de tu instancia se suscribe a la comunidad remota, ésta enviará actualizaciones a tu instancia. Las actualizaciones incluyen: - -- Nuevas publicaciones / comentarios -- Votos -- Publicación, ediciones y supresiones de comentarios -- Acciones de los modeladores - -Puedes copiar la URL de la comunidad desde la barra de direcciones de tu navegador e insertarla en el campo de búsqueda. Espera unos segundos y la publicación aparecerá a continuación. Por el momento no hay un indicador de carga para la búsqueda, así que espera unos segundos si muestra "sin resultados". - -## Búsqueda de publicaciones - -Pega la URL de una publicación en el campo de búsqueda de tu instancia de Lemmy. Espera unos segundos hasta que aparezca la publicación. Esto también recuperará el perfil de la comunidad y el perfil del creador de la publicación. - -## Búsqueda de comentarios - -Si encuentras un comentario interesante bajo una publicación en otra instancia, puedes encontrar debajo del comentario en el menú de 3 puntos el símbolo del enlace. Copia este enlace. Se parece a `https://lemmy.ml/post/56382/comment/40796`. Elimina la parte `post/XXX` y ponlo en tu barra de búsqueda. Para este ejemplo, busqua `https://lemmy.ml/comment/40796`. Este comentario, todos los comentarios padre, usuarios, la comunidad y la publicación correspondiente se obtienen de la instancia remota, si no se conocen localmente. - -Los comentarios hermanos no se obtienen. Si quieres más comentarios de publicaciones anteriores, tienes que buscar cada uno de ellos como se ha descrito anteriormente. diff --git a/src/es/administration/from_scratch.md b/src/es/administration/from_scratch.md deleted file mode 100644 index 76358f7..0000000 --- a/src/es/administration/from_scratch.md +++ /dev/null @@ -1,391 +0,0 @@ -# Instalar desde Cero - -> ⚠️ **Descargo de responsabilidad:** este método de instalación no está recomendado por los desarrolladores de Lemmy. Si tienes algún problema, debes resolverlo tú mismo o preguntar a los respectivos autores. Si observas algún fallo de Lemmy en una instancia instalada de este modo, por favor, menciónalo en el informe de fallos. - -## Instalando Lemmy desde el código fuente - -Instrucciones para instalar Lemmy de forma Nativa, sin depender de docker. Originalmente fue publicado en [Some resources on setting Lemmy up from source - Lemmy dot C.A.](https://lemmy.ca/post/1066) **La transcripción actual se ha adaptado para mejorar su legibilidad**. - -### Importante - -> Las referencias de los paquetes de software a continuación **son todas basadas en Gentoo** - Hay información en los archivos de docker sobre lo que se requiere en los sistemas tipo debian, y para cualquier otra cosa probablemente podrás ajustar fácilmente como sea necesario. - -Ten en cuenta que la construcción de Lemmy requiere de una gran cantidad de recursos de hardware. Si quieres ejecutar Lemmy en un pequeño VPS con una memoria RAM muy limitada (que parece una forma perfectamente aceptable para ejecutar una instancia de producción), es mejor seguir con la imagen docker, o usar un sistema que tenga más RAM. El uso de RAM es enorme con las builds de Rust. - -Las versiones de etiqueta/lanzamiento incluidas en esta nota provienen de lemmy/docker/prod/docker-compose.yml y estaban actualizadas en el momento en que se creó este documento. **Definitivamente ajustar a las versiones apropiadas como sea necesario**. - -Tuve que cambiar de usar `sudo` a `su` en algunos lugares ya que el usuario estaba haciendo algo raro/incompleto con el env de sudo para pictrs - -## Configuración - -| Dependencias | | -| ------------ | ----------------------------------------- | -| app-admin | sudo | -| dev-vcs | [git](https://git-scm.com/) | -| dev-lang | [rust](https://www.rust-lang.org/) | -| dev-db | [postgresql](https://www.postgresql.org/) | -| www-servers | [nginx](https://nginx.org/en/) | -| sys-apps | [yarn](https://yarnpkg.com/) | -| app-shells | bash-completion | -| | | - -### Poner en marcha el postgresql - -```bash -emerge --config dev-db/postgresql -rc-service postgresql-12 start -useradd -m -s /bin/bash lemmy -cd ~lemmy -sudo -Hu lemmy git clone https://github.com/LemmyNet/lemmy.git -cd lemmy -``` - -### Lista las etiquetas(tags)/lanzamientos(releases) disponibles - -```bash -sudo -Hu lemmy git tag -l -sudo -Hu lemmy git checkout tags/v0.11.0 -``` - -### Build para producción? (Remover --release para dev) - -```bash -sudo -Hu lemmy cargo build --release -cd .. -sudo -Hu lemmy git clone https://github.com/LemmyNet/lemmy-ui.git -cd lemmy-ui -``` - -### Lista las etiquetas(tags)/lanzamientos(releases) disponibles - -```bash -sudo -Hu lemmy git tag -l -sudo -Hu lemmy git checkout tags/v0.8.10 -sudo -Hu lemmy git submodule init -sudo -Hu lemmy git submodule update --remote -``` - -### Construir el frontend - -#### Esto es para desarrollo - -```bash -sudo -Hu lemmy yarn -``` - -#### Esto es para producción - -```bash -sudo -Hu lemmy yarn install --pure-lockfile -sudo -Hu lemmy yarn build:prod -``` - -**Esto es solo para correr un entorno de desarrollo, pero creo que es preferible para producción - usar el script de inicio** - -```bash -sudo -Hu lemmy yarn dev -``` - -Para producción, usaremos el [script de inicio](#initlemmy), pero el comando para producción es: - -```bash -sudo -Hu node dist/js/server.js -``` - -### Configurar la base de datos - -#### Ajustar la contraseña: - -```bash -sudo -u postgres psql -c "create user lemmy with password 'password' superuser;" -U postgres -sudo -u postgres psql -c 'create database lemmy with owner lemmy;' -U postgres -``` - -### Instalar iFramely - -Son requeridos git y nodejs, pero nodejs debe ser instalado como dependencia de yarn. - -#### En caso de que iFramely sea instalado en otro sistema - -```bash -useradd -m -s /bin/bash iframely - -cd ~iframely -sudo -Hu iframely git clone https://github.com/itteco/iframely.git -cd iframely -sudo -Hu iframely git tag -l -sudo -Hu iframely git checkout tags/v1.5.0 -sudo -Hu iframely npm install -``` - -**Opcional** Remplazar puerto 80 por 8061; también remplazar o desabilitar el almacenamiento del cache por ahora (CACHE_ENGINE: 'no-cache') - -```bash -sudo -Hu iframely cp ~lemmy/lemmy/docker/iframely.config.local.js ~lemmy/iframely/config.local.js -``` - -Iniciar el servidor iframely o, usar un [script de inicio](#initiframely) en su lugar, el cual es la mejor opción que correr esto manualmente. - -```bash -sudo -Hu iframely node server -``` - -### Instalar pict-rs - -```bash -useradd -m -s /bin/bash pictrs -cp target/release/pict-rs . -``` - -Añadido **hdri** ya que **magick_rust** falla al compilar si no está. Mencionado en [error[E0425]: cannot find value QuantumRange in module bindings](https://github.com/nlfiedler/magick-rust/issues/40) - -```bash -echo "media-gfx/imagemagick hdri jpeg lzma png webp" >> /etc/portage/package.use -echo "*/* -llvm_targets_NVPTX -llvm_targets_AMDGPU" >> /etc/portage/package.use - -``` - -Instalar paquetes extra requeridos para pict-rs: - -| Paquetes | | -| ----------- | ------------------------------------------------ | -| media-libs | [gexiv2](https://gitlab.gnome.org/GNOME/gexiv2) | -| media-gfx | [imagemagick](https://imagemagick.org/index.php) | -| media-video | [ffmpeg](https://ffmpeg.org/) | -| sys-devel | [clang](https://clang.llvm.org/) | - -Paquetes requeridos para pict-rs (en caso de un sistema separado): - -| Paquetes | | -| -------- | ---------------------------------- | -| dev-lang | [rust](https://www.rust-lang.org/) | - -**Opcional** Hacer un script o ejecutarlo manualmente como usuario. - -```bash -su - pictrs -git clone https://git.asonix.dog/asonix/pict-rs.git -cd pict-rs -git tag -l -git checkout tags/v0.2.5-r0 - -cargo build --release -cp target/release/pict-rs . -cd ~pictrs -mkdir pictrs-data -``` - -**Falta algo en el README de pict-rs - creó y utilaza una carpeta pict-rs in /tmp** - -Si haces algo raro como yo (cambiar el usuario con el que se ejecuta pict-rs) y terminas con problemas de permisos (que los registros no te dicen _Qué_ está teniendo un problema de permisos), este podría ser tu problema. Además, el tiempo dirá si esta carpeta se limpia adecuadamente o no. - -Ejecutar pictrs de acuerdo a la siguiente línea: - -```bash -pict-rs/pict-rs -a 127.0.0.1:9000 -p ~pictrs/pictrs-data/ -``` - -Pero sólo usaremos el script init. - -En este punto, corre todo a través de los [scripts de inicio](#scripts-de-inicio-init-scripts). Configura los scripts de inicio para que se ejecuten en el tiempo de arranque. Presumiblemente has configurado nginx y puedes llegar a tu instancia. - ---- - -## Actualizando - -```bash -su - lemmy -cd lemmy -``` - -Haz BACKUP [config/config.hjson](#configuración-1) en algún lugar. - -```bash -git fetch -git tag -l -git checkout tags/WHATEVER - -cargo build --release - -cd ~/lemmy-ui -``` - -### Lista las etiquetas(tags)/lanzamientos(releases) disponibles - -```bash -git fetch -git tag -l -git checkout tags/WHATEVER -git submodule update --remote -``` - -### Construir el frontend - -#### Esto es para producción - -```bash -yarn install --pure-lockfile # Is this step really needed? -#yarn upgrade --pure-lockfile # ?? Did I get it? -#yarn # Is this step really needed? One of these steps is for sure. (Should be unnecessary) -yarn build:prod -``` - -Reiniciar lemmy-ui - -### Actualizar iFramely - -```bash -su - iframely -cd iframely -git fetch -git tag -l -git checkout tags/v1.6.0 # Or whatever the current appropriate release is -npm install -``` - -Reinicia iframely - -### Actualizar pict-rs - -```bash -su - pictrs -cd pict-rs -git fetch -git tag -l -git checkout tags/v0.2.5-r0 # (or whatever is currently mentioned in the lemmy docker file) - -cargo build --release -cp target/release/pict-rs . -``` - -Reinicia pictrs - ---- - -## Índice - -### configuración - -ejemplo de config/config.hjson - -```json -{ - database: { - user: "lemmy" - password: "whatever" - host: "localhost" - port: 5432 - database: "lemmy" - pool_size: 5 - } - hostname: "lemmy.ca" - bind: "127.0.0.1" - port: 8536 - docs_dir: "/home/lemmy/lemmy/docs/book" - pictrs_url: "http://localhost:9000" - iframely_url: "http://localhost:8061" - federation: { - enabled: true - allowed_instances: "" - blocked_instances: "" - } - email: { - smtp_server: "localhost:25" - smtp_from_address: "lemmy@lemmy.ca" - use_tls: false - } -} -``` - -### Scripts de inicio (init scripts) - -##### init/iframely - -```bash -#!/sbin/openrc-run - -name="Iframely Daemon" - -depend() { - need localmount - need net -} - -start() { - ebegin "Starting Iframely" - start-stop-daemon --start --background --make-pidfile --user iframely --group iframely --pidfile /home/iframely/iframely.pid --chdir /home/iframely/iframely -3 /usr/bin/logger -4 /usr/bin/logger --exec node -- server - eend $? -} - -stop() { - start-stop-daemon --stop --signal TERM --pidfile /home/iframely/iframely.pid - eend $? -} -``` - -##### init/lemmy - -```bash -#!/sbin/openrc-run - -name="Lemmy Backend" - -depend() { - need localmount - need net -} - -start() { - ebegin "Starting Lemmy" - start-stop-daemon --start --background --make-pidfile --user lemmy --group lemmy --pidfile /home/lemmy/lemmy.pid --chdir /home/lemmy/lemmy -3 /usr/bin/logger -4 /usr/bin/logger --exec ~lemmy/lemmy/target/release/lemmy_server - eend $? -} - -stop() { - start-stop-daemon --stop --signal TERM --pidfile /home/lemmy/lemmy.pid - eend $? -} -``` - -##### init/lemmy-ui - -```bash -#!/sbin/openrc-run - -name="Lemmy UI" - -depend() { - need localmount - need net -} - -start() { - ebegin "Starting Lemmy UI" - start-stop-daemon --start --background --make-pidfile --user lemmy --group lemmy --pidfile /home/lemmy/lemmy-ui.pid --chdir /home/lemmy/lemmy-ui -3 /usr/bin/logger -4 /usr/bin/logger --exec node dist/js/server.js --env LEMMY_INTERNAL_HOST=127.0.0.1:8536 --env LEMMY_EXTERNAL_HOST=lemmy.ca --env LEMMY_HTTPS=true - eend $? -} -``` - -##### init/pict-rs - -```bash -#!/sbin/openrc-run - -name="pict-rs Daemon" - -depend() { - need localmount - need net -} - -start() { - ebegin "Starting pictrs" - start-stop-daemon --start --background --make-pidfile --user pictrs --group pictrs --pidfile /home/pictrs/pictrs.pid --chdir /home/pictrs/pict-rs -3 /usr/bin/logger -4 /usr/bin/logger --exec /home/pictrs/pict-rs/pict-rs -- -a 127.0.0.1:9000 -p ~pictrs/pictrs-data - eend $? -} - -stop() { - start-stop-daemon --stop --signal TERM --pidfile /home/pictrs/pictrs.pid - eend $? -} -``` diff --git a/src/es/administration/install_ansible.md b/src/es/administration/install_ansible.md deleted file mode 100644 index 300da90..0000000 --- a/src/es/administration/install_ansible.md +++ /dev/null @@ -1,26 +0,0 @@ -# Instalación con Ansible - -Esto es lo mismo que la [instalación con Docker](install_docker.md), excepto que Ansible lo maneja todo automáticamente. También hace algunas cosas adicionales como la configuración de TLS y el correo electrónico para tu instancia Lemmy. - -En primer lugar, necesitas [instalar Ansible en tu computador local](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). Tambien necesitas instalar el [SDK de Docker para Python](https://pypi.org/project/docker/) usando `pip install docker` ([más información en la documentación de Ansible](https://docs.ansible.com/ansible/latest/collections/community/docker/docker_compose_module.html#id4)). - -A continuación, ejecuta los siguientes comandos en tu computador local: - -```bash -git clone https://github.com/LemmyNet/lemmy.git -cd lemmy/ansible/ -cp inventory.example inventory -nano inventory # ingresa tu servidor, dominio, correo electrónico de contacto -# Si el comando siguiente falla, es posible que tengas que comentar esta linea -# En el archivo ansible.cfg: -# interpreter_python=/usr/bin/python3 -ansible-playbook lemmy.yml --become -``` - -Para actualizar a una nueva versión, simplemente ejecuta lo siguiente en tu repo local de Lemmy: - -```bash -git pull origin main -cd ansible -ansible-playbook lemmy.yml --become -``` diff --git a/src/es/administration/install_docker.md b/src/es/administration/install_docker.md deleted file mode 100644 index e49edd9..0000000 --- a/src/es/administration/install_docker.md +++ /dev/null @@ -1,54 +0,0 @@ -# Instalación con Docker - -Asegúrate de tener instalados tanto docker como docker-compose(>=`1.24.0`). En Ubuntu, simplemente ejecuta `apt install docker-compose docker.io`. Siguiente, - -```bash -# crea una carpeta para los archivos de lemmy. La ubicación no importa, puede ser en cualquier sitio -mkdir /lemmy -cd /lemmy - -# descarga los archivos de la configuración por defecto -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/docker-compose.yml -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/lemmy.hjson - -# Establece los permisos correctos para la carpeta pictrs -mkdir -p volumes/pictrs -sudo chown -R 991:991 volumes/pictrs -``` - -Abre tu `docker-compose.yml`, y asegúrate de que `LEMMY_EXTERNAL_HOST` para `lemmy-ui` esta configurado en el host correcto. - -``` -- LEMMY_INTERNAL_HOST=lemmy:8536 -- LEMMY_EXTERNAL_HOST=your-domain.com -- LEMMY_HTTPS=false -``` - -Si quieres una contraseña de base de datos diferente, también debes cambiarla en el `docker-compose.yml` **antes** de tu primera ejecución. - -Después de esto, echa un vistazo al [archivo de configuración](configuration.md) llamado `lemmy.hjson`, y ajústalo, en particular el nombre de host, y posiblemente la contraseña de la base de datos. Luego ejecuta: - -`docker-compose up -d` - -puedes acceder a la interfaz de usuario de lemmy (lemmy-ui) en `http://localhost:1235` - -Para hacer que Lemmy esté disponible fuera del servidor, necesitas configurar un proxy inverso, como Nginx. [Un ejemplo de configuración de ngix](https://raw.githubusercontent.com/LemmyNet/lemmy/main/ansible/templates/nginx.conf), podría ser establecido con: - -```bash -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/ansible/templates/nginx.conf -# Remplaza los {{ valores }} -# El valor por defecto para lemmy_port es 8536 -# El valor por defecto para lemmy_ui_port es 1235 -sudo mv nginx.conf /etc/nginx/sites-enabled/lemmy.conf -``` - -También necesitarás configurar el TLS, por ejemplo con [Let's Encrypt](https://letsencrypt.org/). Después de esto necesitas reiniciar Nginx para recargar la configuración. - -## Actualizar - -Para actualizar a la versión más reciente, puedes cambiar manualmente la versión en `docker-compose.yml`. De manera alternativa puedes obtener la última versión de nuestro repositorio git: - -```bash -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/prod/docker-compose.yml -docker-compose up -d -``` diff --git a/src/es/administration/on_aws.md b/src/es/administration/on_aws.md deleted file mode 100644 index 689c9d9..0000000 --- a/src/es/administration/on_aws.md +++ /dev/null @@ -1,54 +0,0 @@ -# Instalando en AWS - -> ⚠️ **Descargo de responsabilidad:** este método de instalación no está recomendado por los desarrolladores de Lemmy. Si tienes algún problema, debes resolverlo tú mismo o preguntar a los respectivos autores. Si observas algún fallo de Lemmy en una instancia instalada de este modo, por favor, menciónalo en el informe de fallos. - -## Lemmy AWS CDK - -Contiene las definiciones de infraestructura necesarias para desplegar [Lemmy](https://github.com/LemmyNet/lemmy) en AWS su [Cloud Development Kit](https://docs.aws.amazon.com/cdk/latest/guide/home.html). - -### Incluye: - -- ECS fargate cluster - - Lemmy-UI - - Lemmy - - Pictrs - - IFramely -- CloudFront CDN -- Almacenamiento EFS para subir imágenes. -- Aurora Serverless Postgres DB -- Bastion VPC host -- Balanceadores de carga para Lemmy y IFramely -- Registros DNS para tu sitio. - -## Inicio rápido - -Clona el [Lemmy-CDK](https://github.com/jetbridge/lemmy-cdk). - -Clona [Lemmy](https://github.com/LemmyNet/lemmy) y [Lemmy-UI](https://github.com/LemmyNet/lemmy-ui) en el directorio de arriba. - -```shell -cp example.env.local .env.local -# edit .env.local -``` - -Debes editar .env.local con la configuración de tu sitio. - -```shell -npm install -g aws-cdk -npm install -cdk bootstrap -cdk deploy -``` - -## Coste - -Esta _no_ es la forma más barata de ejecutar Lemmy. La base de datos sin servidor (serverless) Aurora puede costarte ~$90/mes (en dólares) si no duerme. - -## Comandos del CDK útiles - -- `npm run build` compila typescript a js -- `npm run watch` vigila los cambios y compila -- `npm run test` realiza las pruebas unitarias de jest -- `cdk deploy` despliega esta pila en tu cuenta/región de AWS por defecto -- `cdk diff` compara la pila desplegada con el estado actual -- `cdk synth` emite la plantilla de CloudFormation sintetizada diff --git a/src/es/administration/troubleshooting.md b/src/es/administration/troubleshooting.md deleted file mode 100644 index 18c8623..0000000 --- a/src/es/administration/troubleshooting.md +++ /dev/null @@ -1,67 +0,0 @@ -# Solución de Problemas - -Se muestran diferentes problemas que pueden ocurrir en una nueva instancia, y cómo resolverlos. - -Muchas características de Lemmy dependen de una correcta configuración del proxy inverso. Asegúrate de que tu configuración es equivalente a nuestra [configuración de nginx](https://github.com/LemmyNet/lemmy/blob/main/ansible/templates/nginx.conf). - -## Generalidades - -### Registros - -Para los problemas del frontend, revisa la [consola del navegador](https://webmasters.stackexchange.com/a/77337) para ver si hay mensajes de error. - -Para los registros del servidor, ejecuta `docker-compose logs -f lemmy` en tu carpeta de instalación. También puedes hacer `docker-compose logs -f lemmy lemmy-ui pictrs` para obtener los registros de los diferentes servicios. - -Si eso no da suficiente información, intenta cambiar la línea `RUST_LOG=error` en `docker-compose.yml` a `RUST_LOG=info` o `RUST_LOG=verbose`, y luego hacer `docker-compose restart lemmy`. - -### La creación del usuario administrador no funciona - -Asegúrate de que el websocket está funcionando correctamente, revisa la consola del navegador en busca de errores. En nginx, las siguientes cabeceras son importantes para esto: - -``` -proxy_http_version 1.1; -proxy_set_header Upgrade $http_upgrade; -proxy_set_header Connection "upgrade"; -``` - -### Error de limite de velocidad cuando muchos usuarios acceden al sitio - -Revisa que las cabeceras `X-Real-IP` y `X-Forwarded-For` son enviadas a Lemmy por el proxy inverso. De lo contrario, se contarán todas las acciones hacia el limite de velocidad de la IP del proxy inverso. En nginx debería verse así: - -``` -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header Host $host; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -``` - -## Federación - -### Otras instancias no pueden obtener objetos locales (comunidad, publicaciones, etc) - -Tu proxy reverso (ejemplo nginx) necesita reenviar las solicitudes con la cabecera `Accept: application/activity+json` al backend. Esto es manejado por las siguientes líneas: - -``` -set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}"; -if ($http_accept = "application/activity+json") { -set $proxpass "http://0.0.0.0:{{ lemmy_port }}"; -} -if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { -set $proxpass "http://0.0.0.0:{{ lemmy_port }}"; -} -proxy_pass $proxpass; -``` - -Puedes probar que funciona correctamente ejecutando los siguientes comandos, todos ellos deberían devolver JSON válido: - -``` -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/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 -``` - -### La obtención de objetos remotos funciona, pero publicar/comentar en comunidades remotas falla - -Comprueba que la [federación está permitida en ambas instancias](../federation/administration.md#instance-allowlist-and-blocklist). - -Asegúrate también de que la hora está ajustada con precisión en tu servidor. Las actividades están firmadas con una marca de tiempo, y serán descartadas si se desvía más de 10 segundos. diff --git a/src/es/client_development/api_reference.md b/src/es/client_development/api_reference.md deleted file mode 100644 index 71556dc..0000000 --- a/src/es/client_development/api_reference.md +++ /dev/null @@ -1,50 +0,0 @@ -# Referencia de la API - -Lemmy tiene dos APIs entrelazadas: - -- [WebSocket](https://join-lemmy.org/api/index.html) -- [HTTP](http_api.md) - -Esta página describe conceptos que son comúnes para ambas. - - - -- [Uso básico](#uso-básico) -- [Tipos de datos](#tipos-de-datos) - - [Tipos de Lemmy](#tipos-de-lemmy) - - [Tipos de bajo nivel](#tipos-de-bajo-nivel) -- [Límites de tarifa por defecto](#límites-de-tarifa-por-defecto) - - - -## Uso básico - -Las cadenas de solicitud `request` y respuesta `response` están en [formato JSON](https://www.json.org/json-es.html). - -## Tipos de datos - -### Tipos de Lemmy - -- [tablas que tienen las columnas / campos](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/interfaces/source.ts) -- [Aggregates (para cosas como las puntuaciones)](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/interfaces/aggregates.ts) -- [Views (vistas) - The main lemmy return types](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/interfaces/views.ts) -- [Los formularios de solicitud (Request) / respuesta (Responses)](https://github.com/LemmyNet/lemmy-js-client/tree/main/src/interfaces/api) - -### Tipos de bajo nivel - -- `?` designa una opción que puede omitirse en las solicitudes y no estar presenet en las respuestas. Será de tipo **_SomeType_** (AlgúnTipo). -- `[SomeType]` es una lista que contiene objetos del tipo **_SomeType_**. -- Las horas (times) y fechas (dates) son cadenas de marcas de tiempo (timestamp) en formato [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Timestamps serán UTC, tú cliente debe hacer la conversión de UTC a local. - -## Límites de tasa por defecto - -Estos límites pueden ser editados en tú archivo `lemmy.hjson`, copiando la sección relevante de [defaults.hjson](https://github.com/LemmyNet/lemmy/blob/main/config/defaults.hjson). - -- 3 por hora para inscripciones y creación de comunidades. -- 6 por hora para publicación de imágenes. -- 6 por 10 minutos para la creación de publicaciones. -- 180 acciones por minuto para la votación de publicaciones y la creación de comentarios. - -El resto no cuenta con límites de tasa. - -**Véase también:** [Limitación de la tasa para front-ends personalizados](custom_frontend.md#limitación-de-la-tasa). diff --git a/src/es/client_development/client_development.md b/src/es/client_development/client_development.md deleted file mode 100644 index 386fec6..0000000 --- a/src/es/client_development/client_development.md +++ /dev/null @@ -1,8 +0,0 @@ -# Desarrollo de clientes - -Esta sección es para cualquiera que quiera colaborar con la [aplicación web oficial para Lemmy](https://github.com/LemmyNet/lemmy-ui) o quiera desarrollar su propio cliente para el ecosistema Lemmy. - -- [Guía para Temas](client_development/theming.md) -- [Referencia de la API](client_development/api_reference.md) -- [API del WebSocket](https://join-lemmy.org/api/index.html) -- [API HTTP](client_development/http_api.md) diff --git a/src/es/client_development/custom_frontend.md b/src/es/client_development/custom_frontend.md deleted file mode 100644 index e96f535..0000000 --- a/src/es/client_development/custom_frontend.md +++ /dev/null @@ -1,66 +0,0 @@ -# Crear un Frontend Personalizado - -El backend y el frontend están completamente desacoplados y se ejecutan en contenedores Docker independientes. Solo se comunican a través de la [API de Lemmy](api_reference.md), lo que hace que sea bastante fácil escribir interfaces alternativas. - -Esto crea un gran potencial para las interfaces personalizadas, que podrían cambiar gran parte del diseño y la experiencia del usuario de Lemmy. Por ejemplo, sería posible crear un frontend al estilo de un foro tradicional como [phpBB](https://www.phpbb.com/), o un sitio de preguntas y respuestas como [stackoverflow](https://stackoverflow.com/). Todo ello sin tener que pensar en las consultas a la base de datos, en la autentificación o en el ActivityPub, que esencialmente se obtiene de forma gratuita. - -## Desarrollo - -Puedes utilizar cualquier lenguaje para crear un frontend personalizado. La opción más fácil sería hacer un fork de nuestro [frontend oficial](https://github.com/LemmyNet/lemmy-ui), [lemmy-lite](https://github.com/IronOxidizer/lemmy-lite), o el [lemmy-frontend-example](https://github.com/LemmyNet/lemmy-front-end-example). En cualquier caso, el principio es el mismo: enlazar con `LEMMY_EXTERNAL_HOST` (por defecto: `localhost:8536`) y gestionar las peticiones utilizando la API de Lemmy en `LEMMY_INTERNAL_HOST` (por defecto: `lemmy:8536`). Utilice también `LEMMY_HTTPS` para generar enlaces con el protocolo correcto. - -El siguiente paso es construir una imagen Docker desde tu frontend. Si has bifurcado (fork) un proyecto existente, debería incluir un archivo Docker y las instrucciones para construirlo. Si no, intenta buscar para tu lenguaje en [dockerhub](https://hub.docker.com/), las imágenes oficiales suelen tener instrucciones para construir en su readme. Construye una imagen Docker con una etiqueta, luego busca la siguiente sección en `docker/dev/docker-compose.yml`: - -``` - lemmy-ui: - image: dessalines/lemmy-ui:v0.8.10 - ports: - - "1235:1234" - restart: always - environment: - - LEMMY_INTERNAL_HOST=lemmy:8536 - - LEMMY_EXTERNAL_HOST=localhost:8536 - - LEMMY_HTTPS=false - depends_on: - - lemmy -``` - -Todo lo que tienes que hacer es sustituir el valor de `image` por la etiqueta de tu propia imagen Docker (y posiblemente las variables de entorno si necesitas otras diferentes). A continuación, ejecuta `./docker_update.sh`, y después de la compilación, tu frontend estará disponible en `http://localhost:1235`. También puedes hacer el mismo cambio en `docker/federation/docker-compose.yml` y ejecutar `./start-local-instances.bash` para probar la federación con tu frontend. - -## Desplegar con Docker - -Después de construir la imagen Docker, necesitas empujarla (hacer push) a un registro Docker (como [dockerhub](https://hub.docker.com/)). A continuación, actualiza el `docker-compose.yml` en tu servidor, sustituyendo la `image` por `lemmy-ui`, tal y como se ha descrito anteriormente. Ejecuta `docker-compose.yml` y, tras una breve espera, tu instancia utilizará el nuevo frontend. - -Toma en cuenta que si tu instancia se despliega con Ansible, éste anulará (sobreescribirá) `docker-compose.yml` con cada ejecución, volviendo al frontend por defecto. En ese caso debes copiar la carpeta `ansible/` de este proyecto a tu propio repositorio, y ajustar `docker-compose.yml` directamente en el repo. - -También es posible utilizar varios frontends para la misma instancia de Lemmy, ya sea utilizando subdominios o subcarpetas. Para ello, no edites la sección `lemmy-ui` en `docker-compose.yml`, sino duplícala, ajustando el nombre, la imagen y el puerto para que sean distintos para cada uno. Luego edita tu configuración de nginx para pasar las peticiones al frontend apropiado, dependiendo del subdominio o la ruta. - -## Traducciones - -Puedes añadir el repositorio [lemmy-translations](https://github.com/LemmyNet/lemmy-translations) a tu proyecto como un [submódulo git](https://git-scm.com/book/en/v2/Git-Tools-Submodules). De este modo, podrás aprovechar las mismas traducciones que se utilizan en el frontend oficial, y también recibirás las nuevas traducciones aportadas a través de [Weblate](https://weblate.org/es/). - -## Limitación de la tasa - -Lemmy limita la tasa de muchas acciones en función de la IP del cliente. Pero si haces alguna llamada a la API en el lado del servidor (por ejemplo, en el caso de la renderización del lado del servidor, o la pre-renderización de javascript), Lemmy tomará la IP del contenedor Docker. Lo que significa que todas las peticiones provienen de la misma IP, y obtienen la tasa limitada mucho antes. Para evitar este problema, es necesario pasar las cabeceras `X-REAL-IP` y `X-FORWARDED-FOR` a Lemmy (las cabeceras son establecidas por nuestra configuración de nginx). - -Aquí hay un ejemplo recortado para NodeJS: - -```javascript -function setForwardedHeaders(headers: IncomingHttpHeaders): { - [key: string]: string, -} { - let out = { - host: headers.host, - }; - if (headers["x-real-ip"]) { - out["x-real-ip"] = headers["x-real-ip"]; - } - if (headers["x-forwarded-for"]) { - out["x-forwarded-for"] = headers["x-forwarded-for"]; - } - - return out; -} - -let headers = setForwardedHeaders(req.headers); -let client = new LemmyHttp(httpUri, headers); -``` diff --git a/src/es/client_development/http_api.md b/src/es/client_development/http_api.md deleted file mode 100644 index f0c3d2c..0000000 --- a/src/es/client_development/http_api.md +++ /dev/null @@ -1,120 +0,0 @@ -# API HTTP de Lemmy - - - -- [Websocket vs API HTTP](#websocket-vs-api-http) -- [Ejemplos](#ejemplos) - - [TypeScript](#typescript) - - [Curl](#curl) - - [GET](#ejemplo-get) - - [POST](#ejemplo-post) -- [Características exclusivas de la API HTTP](#características-exclusivas-de-la-api-http) - - [RSS/Atom feeds](#rss-atom-feeds) - - [Imagenes](#imagenes) - - [Crear (request)](#crear-request) - - [Crear (response)](#crear-response) - * [Delete](#delete) - - - -## WebSocket vs API HTTP - -La API HTTP de Lemmy es casi parecida a la API del Websocket: - -- **API WebSocket** necesita `let send = { op: userOperation[op], data: form}` como se muestra en [la especificación de la API WebSocket](https://join-lemmy.org/api/index.html) -- **API HTTP** necesita el formulario (datos) en el primer nivel; una operación HTTP (GET, PUT o POST) y endpoint (en `http(s)://host/api/v2/endpoint`). Por ejemplo: - -> `POST {username_or_email: X, password: X}` - -Para más información. Véase el archivo -[http.ts](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/http.ts) . - -[El API del WebSocket](https://join-lemmy.org/api/index.html) debería considerarse como la fuente principal para la API HTPP, ya que también proporciona información sobre cómo formular las llamadas a la API HTTP. - -## Ejemplos - -### TypeScript - -```ts - async editComment(form: EditComment): Promise { - return this.wrapper(HttpType.Put, '/comment', form); - } -``` - -| Tipo | URL | Tipo de cuerpo | Tipo de Retorno | -| ----- | ---------- | -------------- | ----------------- | -| `PUT` | `/comment` | `EditComment` | `CommentResponse` | - -### Curl - -#### Ejemplo GET - -``` -curl "http://localhost:8536/api/v2/community/list?sort=Hot"` -``` - -#### Ejemplo POST - -``` -curl -i -H \ -"Content-Type: application/json" \ --X POST \ --d '{ - "comment_id": 374, - "score": 1, - "auth": eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MiwiaXNzIjoidGVzdC5sZW1teS5tbCJ9.P77RX_kpz1a_geY5eCp29sl_5mAm-k27Cwnk8JcIZJk -}' \ -http://localhost:8536/api/v2/comment/like -``` - -## Características exclusivas de la API HTTP - -Estas características no pueden ser accesadas desde la API del WebSocket: - -- [RSS/Atom feeds](#rss-atom-feeds) -- [Imagenes](#imagenes) - -### RSS/Atom feeds - -- All (Todo) - `/feeds/all.xml?sort=Hot` -- Community (Comunidad) - `/feeds/c/community-name.xml?sort=Hot` -- User (usuario) - `/feeds/u/user-name.xml?sort=Hot` - -### Imagenes - -Leemy reenvía las peticiones de imagenes a un Pictrs que se ejecuta localmenet. - -`GET /pictrs/image/{filename}?format={webp, jpg, ...}&thumbnail={96}` - -_El formato (format) y la miniatura (thumbnail) son opcionales_ - -#### Crear (request) - -El contenido subido debe ser un formulario (multipart/form-data) válido con una matriz de imagenes situada dentro de la clave `images[]`. - -Uploaded content must be valid multipart/form-data with an image array located within the images[] key. - -`POST /pictrs/image` - -#### Crear (response) - -``` -{ - "files": [ - { - "delete_token": "{token}", - "file": "{file}.jpg" - } - ], - "msg": "ok" -} -``` - -#### Delete - -`GET /pictrs/image/delete/{delete_token}/{file}` - -# Nota - -Esta documentación puede tener un retraso con respecto a la actual -[API endpoints](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/http.ts). La API misma debería ser considerada inestable (está sujeta a cambios en cualquier momento). diff --git a/src/es/client_development/theming.md b/src/es/client_development/theming.md deleted file mode 100644 index a7532ce..0000000 --- a/src/es/client_development/theming.md +++ /dev/null @@ -1,19 +0,0 @@ -# Guía para Temas - -Lemmy usa [Bootstrap v4](https://getbootstrap.com/), y algunas clases css customizadas por lo que cualquier tema compatible con bootstrap v4 debería de funcionar. - -## Creación - -- Usa una herramienta, por ejemplo [bootstrap.build](https://bootstrap.build/) para crear tú tema de bootstrap v4. Exporta el archivo `bootstrap.min.css` una vez terminado el tema, y conserva támbién el archivo generado `_variables.scss`. - -## Prueba - -- Para probar el tema, puedes también usar las herramientas del navegador web, o un plugin como _stylus_ para copiar/pegar un tema, y verlo en Lemmy. - -## Subir / Publicar - -1. Haz un _fork_ de [lemmy-ui](https://github.com/LemmyNet/lemmy-ui). -1. Copia el archivo `{nombre-de-mi-tema}.min.css` a la carpeta `src/assets/css/themes`. (Aquí puedes copiar el archivo `_variables.scss` si lo deseas). -1. Abre el archivo `src/shared/utils.ts` y agregas `{nombre-de-mi-tema}` a la lista de temas. -1. Pruebalo localmente -1. Haz _pull request_ con los cambios que hiciste. diff --git a/src/es/client_development/websocket_api.md b/src/es/client_development/websocket_api.md deleted file mode 100644 index 5a36b8c..0000000 --- a/src/es/client_development/websocket_api.md +++ /dev/null @@ -1,3 +0,0 @@ -# API del WebSocket - -[Documentación de la API del WebSocket de Lemmy](https://join-lemmy.org/api/index.html) diff --git a/src/es/code_of_conduct.md b/src/es/code_of_conduct.md deleted file mode 100644 index 56c6037..0000000 --- a/src/es/code_of_conduct.md +++ /dev/null @@ -1,35 +0,0 @@ -# Código de Conducta - -- Nos comprometemos a proporcionar un entorno seguro, positivo y acogedor para todos, independientemente de su nivel de experiencia, identidad y expresión de género, orientación sexual, discapacidad, apariencia personal, tamaño corporal, raza, etnia, edad, religión, nacionalidad, u otra característica similar. -- Evita el uso de apodos abiertamente sexuales u otros alias que puedan dificultar un entorno seguro, positivo y acogedor para todos. -- Sé respetuoso y educado. No es necesario ser grosero o antipático. -- Respeta el hecho de que la gente tiene diferencias de parecer, y de que cada opción de diseño o implementación tiene pros y contras, y costes diversos. Rara vez hay una respuesta correcta. -- Evita las críticas imprecisas en lo posible. Si tienes ideas firmes con las que quieres expermientar, crea un fork y comprueba si funcionan. -- Se te apartará de interaccionar con el resto si insultas, menosprecias o acosas a alguien. Este comportamiento no se admite. Nuestra interpretación del término "acoso" (harassment) está en línea con la definición del [Citizen Code of Conduct](https://github.com/stumpsyn/policies/blob/master/citizen_code_of_conduct.md); si tienes dudas respecto a qué se incluye en este concepto, lee dicha definición. En particular, no toleramos comportamientos que excluyan a grupos marginados socialmente. -- El acoso en privado tampoco es aceptable. Seas quien seas, si crees que has sido o estás siendo acosado o te están haciendo sentir incómodo, contacta con uno de los administradores del canal o cualquiera en el equipo de moderación de Lemmy inmediatamente. Ya seas un contribuidor regular o un recién llegado, queremos hacer de esta comunidad un lugar seguro para ti y te ayudaremos. -- De igual modo, el spam, el troleo, la provocación (flaming y baiting) u otros comportamientos para atraer atención no se permiten. - -[**Contacta con el Equipo de Moderación en Mastodon**](https://mastodon.social/@LemmyDev) - -[**Envía un correo electrónico al Equipo de Moderación**](mailto:contact@lemmy.ml) - -## Moderación - -Estas son las políticas para hacer valer los estándares de conducta de nuestra comunidad. Si crees que un hilo necesita ser moderado, contacta con el equipo de moderación de Lemmy. - -1. Los comentarios que violen los estándares de conducta de Rust, incluyendo comentarios hirientes, opresivos, exclusivos o de odio, no están permitidos. (Las imprecaciones están permitidas, pero nunca contra otro usuario y nunca con contenido de odio). -2. Los comentarios que los moderadores crean inapropiados, estén recogidos en el código de conducta o no, tampoco están permitidos. -3. Los moderadores responderán a dichos comentarios con un aviso en primera instancia. -4. Si el aviso es ignorado, el usuario será expulsado temporalmente del canal de comunicación para que se calme. -5. Si el usuario retorna y continúa causando problemas, se le expulsará permanentemente. -6. Los moderadores pueden elegir según su criterio levantar la expulsión al usuario si se trata de una primera ofensa y este se disculpa de forma genuina ante el afectado. -7. Si crees que un moderador ha expulsado a alguien de forma injustificada, tráta el tema con dicho moderador u otro, en privado. Las discusiones sobre expulsiones dentro del propio canal no están permitidas. -8. Los moderadores están sujetos a un estándar de conducta más exigente que el del resto de miembros de la comunidad. Si un moderador crea una situación inapropiada, debería esperar más severidad que para con el resto. - -En la comunidad Lemmy aspiramos a superarnos en cuanto cómo nos tratamos entre nosotros. No intentes mantenerte intachable solo en lo técnico, trata de dar lo mejor de tí. En particular, evita los temas sensibles u ofensivos, especialmente si no guardan relación: muy a menudo llevan a disputas innecesarias, agravios y pérdida de confianza; aún peor, pueden apartar a gente de la comunidad por completo. - -Si alguien se muestra en desacuerdo con algo que digas o hagas, resiste el reflejo de ponerte a la defensiva. Simplemente para de hacer lo que fuera que provocó la queja y discúlpate. Incluso si crees que ha habido un malentendido o acusado injustamente, es probable que hubiera algo que podrías haber comunicado mejor; recuerda que es tu responsabilidad hacer que los demás se sientan cómodos. Todos queremos llevarnos bien y todos estamos aquí principalmente porque queremos hablar de una tecnología maravillosa. Te darás cuenta de que la gente tiende a asumir buena fé y a perdonar siempre que te ganes su confianza. - -Las políticas de moderación listadas más arriba se aplican en todos los canales oficiales de Lemmy; incluyendo los repositorios git bajo [github.com/LemmyNet](https://github.com/LemmyNet) y [yerbamate.ml/LemmyNet](https://yerbamate.ml/LemmyNet), el [canal en Matrix](https://matrix.to/#/!BZVTUuEiNmRcbFeLeI:matrix.org); [lemmy.ml](https://lemmy.ml) y otras instancias bajo ese dominio. En otros proyectos que adopten el código de conducta de Lemmy, contacta con sus encargados para su aplicación. Si quieres usar este código de conducta en tu propio proyecto, valora si mencionar tu política de moderación explícitamente o hacer una copia con tu propia política de moderación para evitar confusiones. - -Adaptado a partir del [Código de Conducta de Rust](https://www.rust-lang.org/es/policies/code-of-conduct), que se basa en la [Node.js Policy on Trolling](http://blog.izs.me/post/30036893703/policy-on-trolling) así como del [Contributor Covenant v1.3.0](https://www.contributor-covenant.org/version/1/3/0/). diff --git a/src/es/contributing/contributing.md b/src/es/contributing/contributing.md deleted file mode 100644 index f41f86c..0000000 --- a/src/es/contributing/contributing.md +++ /dev/null @@ -1,39 +0,0 @@ -# Contribuir al Proyecto - -Información sobre como contribuir a Lemmy, ya sea traduciendo, probando, diseñando o programando. - -## Seguimiento de problemas (issues) / Repositorios - -- [GitHub (para issues y pull requests)](https://github.com/LemmyNet/lemmy) -- [Gitea (solo para pull requests)](https://yerbamate.ml/LemmyNet/lemmy) -- [Codeberg](https://codeberg.org/LemmyNet/lemmy) - -## Traduciendo - -Mira el [Weblate de Lemmy](https://weblate.yerbamate.ml/projects/lemmy/) para las traducciones. Tú también puedes ayudar [traduciendo esta documentación](https://github.com/LemmyNet/lemmy-docs#adding-a-new-language). - -## Arquitectura - -### Front end - -- El front end está escrito en `typescript`, usando un framework similar a React llamado [inferno](https://infernojs.org/). Todos los elementos de la interfaz de usuario (UI) son componentes `.tsx` reutilizables. -- El repositorio del front end es [lemmy-ui](https://github.com/LemmyNet/lemmy-ui). -- Las rutas están en `src/shared/routes.ts`. -- Los componentes están localizados en `src/shared/components`. - -### Back end - -- El back end está escrito en `rust`, usando `diesel`, y `actix`. -- El código fuente del servidor está divido en secciones _main_ in `src`. Estos incluyen: - - `db` - Las acciones de bajo nivel de la base de datos. - - Las adiciones a la base de datos se realizan mediante migraciones. Ejecuta `diesel migration generate xxxxx` para añadir cosas nuevas. - - `api` - Las iteracciones de alto nivel del usuario (cosas como `CreateComment`) - - `routes` - Los puntos finales (endpoints) del servidor. - - `apub` - Las conversiones activitypub. - - `websocket` - Crea el sevidor del websocket. - -## Linting / Formateo - -- Cada commit del front end y back end se formatea automáticamente y luego se hace un linting usando `husky`, y `lint-staged`. -- Rust con `cargo fmt` y `cargo clippy`. -- Typescript con `prettier` y `eslint`. diff --git a/src/es/contributing/docker_development.md b/src/es/contributing/docker_development.md deleted file mode 100644 index a0cae6c..0000000 --- a/src/es/contributing/docker_development.md +++ /dev/null @@ -1,42 +0,0 @@ -# Desarrollo con Docker - -## Dependencias - -### Distro basada en Debian - -```bash -sudo apt install git docker-compose -sudo systemctl start docker -git clone https://github.com/LemmyNet/lemmy -``` - -### Distro basada en Arch - -```bash -sudo -S git docker-compose -sudo systemctl start docker -git clone https://github.com/LemmyNet/lemmy -``` - -## Ejecución - -```bash -cd docker/dev -./docker_update.sh -``` - -Finalmente abre la siguiente dirección en tu navegador: `http://localhost:1235`. - -**Nota:** muchas características (como docs e imagenes) no funcionarán sin usar un perfil de nginx como en `ansible/templates/nginx.conf`. - -Para acelerar la compilación de Docker, añade el siguiente código a `/etc/docker/daemon.json` y reinicia Docker. - -``` -{ - "features": { - "buildkit": true - } -} -``` - -Si la compilación sigue siendo muy lenta, tendrás que usar un [desarrollo local](local_development.md) en su lugar. diff --git a/src/es/contributing/federation_development.md b/src/es/contributing/federation_development.md deleted file mode 100644 index db01c2d..0000000 --- a/src/es/contributing/federation_development.md +++ /dev/null @@ -1,63 +0,0 @@ -# Desarrollo de la Federación - -## Ejecutando localmente - -Instala las dependencias necesarias como esta descrito en el documento [Desarrollo con Docker](docker_development.md). Enseguida ejecuta lo siguiente: - -```bash -cd docker/federation -./start-local-instances.bash -``` - -Las pruebas de federación establecen 5 instancias: - -| Instancia | Nombre de usuario | Localización | Notas | -| ------------- | ----------------- | --------------------------------------- | ---------------------------------------------------- | -| lemmy-alpha | lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540) | federada con todas las demás instancias | -| lemmy-beta | lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550) | federada con todas las demás instancias | -| lemmy-gamma | lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560) | federada con todas las demás instancias | -| lemmy-delta | lemmy_delta | [127.0.0.1:8570](http://127.0.0.1:8570) | solo permite federación con lemmy-beta | -| lemmy-epsilon | lemmy_epsilon | [127.0.0.1:8580](http://127.0.0.1:8580) | usa la lista de bloqueo, tiene lemmy-alpha bloqueada | - -Puedes registrarte en cada una usando el nombre de la instancia, y `lemmy` como la contraseña, ejemplo: (`lemmy_alpha`, `lemmy`). - -Para iniciar la federación entre instancias, visita una de ellas y busca un -usuario, comunidad o publicación, como en este ejemplo. Nota que el backend de Lemmy se ejecuta en un puerto diferente al del frontend, por lo que tienes que incrementar en uno el número de puerto de la barra de URL. - -- `!main@lemmy-alpha:8541` -- `http://lemmy-beta:8551/post/3` -- `@lemmy-gamma@lemmy-gamma:8561` - -Los contenedores de Firefox son una buena forma de probar su interacción. - -## Ejecutando en un servidor - -Ten en cuenta que la federación está actualmente en fase alfa. **Únicamente utilícela para pruebas**, no en un servidor de producción, y sé cuidadoso, que activar la federación puede romper tu instancia. - -Sigue las instrucciones normales de instalación, ya sea con [Ansible](../administration/install_ansible.md) o -[manualmente con Docker](../administration/install_docker.md). Luego reemplaza la linea `image: dessalines/lemmy:v0.x.x` en -`/lemmy/docker-compose.yml` con `image: dessalines/lemmy:federation`. También añade lo siguiente en `/lemmy/lemmy.hjson`: - -``` - federation: { - enabled: true - tls_enabled: true, - allowed_instances: example.com, - } -``` - -Después, y siempre que quieras actualizar a la última versión, ejecuta estos comandos en el servidor: - -``` -cd /lemmy/ -sudo docker-compose pull -sudo docker-compose up -d -``` - -## Modelo de seguridad - -- Verificación de la firma HTTP: Garantiza que la actividad proviene realmente de la actividad que afirma -- check_is_apub_valid : Asegura que está en nuestra lista de instancias permitidas -- Comprobaciones de nivel inferior: Para asegurarse de que el usuario que crea/actualiza/elimina una publicación está realmente en la misma instancia que esa publicación - -Para el último punto, ten en cuenta que _no_ estamos comprobando si el actor que envía la actividad de creación para una publicación es realmente idéntico al creador de la publicación, o si el usuario que elimina una entrada es un mod/admin. Estas cosas se comprueban por el código de la API, y es responsabilidad de cada instancia comprobar los permisos de los usuarios. Esto no deja ningún vector de ataque, ya que un usuario normal de la instancia no puede realizar acciones que violen las reglas de la API. El único que podría hacerlo es el administrador (y el software desplegado por el administrador). Pero el administrador puede hacer cualquier cosa en la instancia, incluso enviar actividades desde otras cuentas de usuario. Así que en realidad no ganaríamos nada de seguridad comprobando los permisos de los mods o similares. diff --git a/src/es/contributing/local_development.md b/src/es/contributing/local_development.md deleted file mode 100644 index 195c22b..0000000 --- a/src/es/contributing/local_development.md +++ /dev/null @@ -1,114 +0,0 @@ -# Desarrollo Local - -### Instalar requisitos - -Instala Rust utilizando [la opción recomendada en rust-lang.org](https://www.rust-lang.org/tools/install) (rustup). - -#### Distro basada en Debian - -``` -sudo apt install git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak -# install yarn -curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - -echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list -sudo apt update && sudo apt install yarn -``` - -#### Distro basada en Arch - -``` -sudo pacman -S git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak -# install yarn (stable) -curl -o- -L https://yarnpkg.com/install.sh | bash -``` - -#### macOS - -Instala [Homebrew](https://brew.sh/) si aún no lo has instalado. - -Finalmente, instala Node y Yarn. - -``` -brew install node yarn -``` - -### Obtener el código fuente del back end - -``` -git clone https://github.com/LemmyNet/lemmy.git -# or alternatively from gitea -# git clone https://yerbamate.ml/LemmyNet/lemmy.git -``` - -### Compila el backend (Rust) - -``` -cargo build -# para desarrollo, usa `cargo check` en su lugar) -``` - -### Obtener el código fuente del front end - -``` -git clone https://github.com/LemmyNet/lemmy-ui.git --recurse-submodules -``` - -### Configurar postgresql - -#### Distro basada en Debian - -``` -sudo apt install postgresql -sudo systemctl start postgresql - -# Either execute db-init.sh, or manually initialize the postgres database: -sudo -u postgres psql -c "create user lemmy with password 'password' superuser;" -U postgres -sudo -u postgres psql -c 'create database lemmy with owner lemmy;' -U postgres -export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy -``` - -#### Distro basada en Arch - -``` -sudo pacman -S postgresql -sudo systemctl start postgresql - -# Either execute db-init.sh, or manually initialize the postgres database: -sudo -u postgres psql -c "create user lemmy with password 'password' superuser;" -U postgres -sudo -u postgres psql -c 'create database lemmy with owner lemmy;' -U postgres -export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy -``` - -#### macOS - -``` -brew install postgresql -brew services start postgresql -/usr/local/opt/postgres/bin/createuser -s postgres - -# Either execute db-init.sh, or manually initialize the postgres database: -psql -c "create user lemmy with password 'password' superuser;" -U postgres -psql -c 'create database lemmy with owner lemmy;' -U postgres -export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy -``` - -### Ejecutar una instancia de desarrollo local - -``` -cd lemmy -cargo run -``` - -Después abre [localhost:1235](http://localhost:1235) en tu navegador. Para recargar los cambios en el back-end, tendrás que volver ejecutar `cargo run`. Puedes usar `cargo check` como una manera mas rapida de econtrar errores de compilación. - -Para hacer desarrollo front end: - -``` -cd lemmy-ui -yarn -yarn dev -``` - -Enseguida entra a [localhost:1234](http://localhost:1234). Al guardar cambios, el frond end se debe recargar automáticamenete. - -Toma en cuenta que esta configuración no incluye la carga de imagenes ni la previsualización de enlaces (proporcionada por pict-rs y iframely respectivamente). Si quieres probarlos, debes de usar el [desarrollo Docker](docker_development.md). diff --git a/src/es/contributing/release_process.md b/src/es/contributing/release_process.md deleted file mode 100644 index 37b13eb..0000000 --- a/src/es/contributing/release_process.md +++ /dev/null @@ -1,19 +0,0 @@ -# Bifurcaciones y Liberaciones - -## Bifurcaciones - -En general, nuestro manejo de las ramas es el descrito en [Un modelo de bifurcación de líneal principal estable para Git](https://www.bitsnbites.eu/a-stable-mainline-branching-model-for-git/). Una diferencia es que evitamos el rebase `rebase`, y en su lugar fusionamos `merge` la rama base en la rama de trabajo actual. Esto ayuda a evitar empujes `push` forzados y conflictos. - -## Liberaciones - -- Para una versión mayo `major release`: crea una nueva rama `release/v0.x` -- Para una versión menor `minor release`: selecciona los cambios deseados en la rama `release/v0.x` -- Hacer una versión beta `beta` o candidata `release candidate` con `docker/prod/deploy.sh` -- Hacer lo mismo para `lemmy-ui`: `./deploy.sh 0.x.0-rc-x` -- Despliega en las instancias de prueba de la federación - - Mantener una instancia en la última versión estable para probar la compatibilidad de la federación (automatizar esto con ansible) - - `ansible-playbook -i federation playbooks/site.yml --vault-password-file vault_pass -e rc_version=0.x.0-rc.x` -- Prueba que todo funciona como se espera, haz nuevas versiones beta/rc si es necesario -- Despliega en lemmy.ml, para descubrir los problemas restantes -- Si todo ha ido bien, haz la versión oficial `0.x.0` con `docker/prod/deploy.sh` -- Anuncia el lanzamiento en Lemmy, Matrix, Mastodon diff --git a/src/es/contributing/tests.md b/src/es/contributing/tests.md deleted file mode 100644 index bd19d6e..0000000 --- a/src/es/contributing/tests.md +++ /dev/null @@ -1,29 +0,0 @@ -### Pruebas - -#### Rust - -Después de instalar las [dependencias para el desarrollo local](local_development.md), ejecuta el siguiente comando: - -```bash -psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" -./test.sh -``` - -### Federación - -Instala las [dependencias para el desarrollo local](local_development.md), y agrega las siguientes a `/etc/hosts`: - -``` -127.0.0.1 lemmy-alpha -127.0.0.1 lemmy-beta -127.0.0.1 lemmy-gamma -127.0.0.1 lemmy-delta -127.0.0.1 lemmy-epsilon -``` - -Después usa el siguiente script para correr las pruebas: - -``` -cd api_tests -./run-federation-test.bash -``` diff --git a/src/es/federation/administration.md b/src/es/federation/administration.md deleted file mode 100644 index de45fd8..0000000 --- a/src/es/federation/administration.md +++ /dev/null @@ -1,28 +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). - -## Instance allowlist and blocklist - -The federation section of Lemmy's config has two variables `allowed_instances` and `blocked_instances`. These control which other instances Lemmy will federate with. Both settings take a comma separated list of domains, eg `lemmy.ml,example.com`. You can either change those settings via `/admin`, or directly on the server filesystem. - -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. - -By default, both `allowed_instances` and `blocked_instances` values are empty, which means that Lemmy will federate with every compatible instance. We do not recommend this, because the moderation tools are not yet ready to deal with malicious instances. - -What we do recommend is putting a list of trusted instances into `allowed_instances`, and only federating with those. Note that both sides need to add each other to their `allowed_instances` to allow two-way federation. - -Alternatively you can also use blocklist based federation. In this case, add the domains of instances you do _not_ want to federate with. You can only set one of `allowed_instances` and `blocked_instances`, as setting both doesn't make sense. diff --git a/src/es/federation/federation.md b/src/es/federation/federation.md deleted file mode 100644 index 4839157..0000000 --- a/src/es/federation/federation.md +++ /dev/null @@ -1 +0,0 @@ -# Federación diff --git a/src/es/federation/lemmy_protocol.md b/src/es/federation/lemmy_protocol.md deleted file mode 100644 index f855300..0000000 --- a/src/es/federation/lemmy_protocol.md +++ /dev/null @@ -1,782 +0,0 @@ -# Protocolo de la Federación Lemmy - -El protocolo de Lemmy (o Protocolo de la Federación Lemmy) es un subconjunto estricto del [Protocolo ActivityPub](https://www.w3.org/TR/activitypub/). Cualquier desviación del protocolo ActivityPub es un error (bug) en Lemmy o en esta documentación (o ambos). - -Este documento está dirigido a desarrolladores que están familiarizados con los protocolos ActivityPub y ActivityStreams. Ofrece un esquema detallado de los actores, objetos y actividades utilizados por Lemmy. - -Antes de leerlo, echa un vistazo a nuestra [Visión General de la Federación](overview.md) para hacerte una idea de cómo funciona la federación de Lemmy a alto nivel. - -Lemmy todavía no sigue la especificación ActivityPub en todos los aspectos. Por ejemplo, no establecemos un contexto válido indicando nuestros campos de contexto. También ignoramos campos como la bandeja de entrada `inbox`, la bandeja de salida `outbox` o los puntos finales `endpoints` de los actores remotos, y asumimos que todo es Lemmy. Para una visión general de las desviaciones, lea el tema [#698](https://github.com/LemmyNet/lemmy/issues/698). Serán corregidas en un futuro próximo. - -Lemmy también es realmente inflexible cuando se trata de actividades y objetos entrantes. Tienen que ser exactamente idénticos a los ejemplos de abajo. Cosas como tener un array en lugar de un solo valor, o un ID de objeto en lugar del objeto completo resultará en un error. - -En las siguientes tablas, "obligatorio" se refiere a si Lemmy aceptará o no una actividad entrante sin este campo. El propio Lemmy siempre incluirá todos los campos no vacíos. - - - -- [Contexto](#context) -- [Actores](#actors) - - [Comunidad](#community) - - [Bandeja de salida de la Comunidad](#community-outbox) - - [Seguidores de la Comunidad](#community-followers) - - [Moderadores de la Comunidad](#community-moderators) - - [Usuario](#user) - - [Bandeja de salida del Usuario](#user-outbox) -- [Objectos](#objects) - - [Publicación](#post) - - [Comentario](#comment) - - [Mensaje privado](#private-message) -- [Actividades](#activities) - - [Usuario a Comunidad](#user-to-community) - - [Seguir](#follow) - - [Dejar de seguir](#unfollow) - - [Crear o Actualizar Publicación](#create-or-update-post) - - [Crear o Actualizar Comentario](#create-or-update-comment) - - [Me gusta Publicación o Comentario](#like-post-or-comment) - - [No me gusta Publicación o Comentario](#dislike-post-or-comment) - - [Eliminar Publicación o Comentario](#delete-post-or-comment) - - [Remover Publicación o Comentario](#remove-post-or-comment) - - [Deshacer](#undo) - - [Comunidad a Usuario](#community-to-user) - - [Aceptar Seguir](#accept-follow) - - [Anunciar](#announce) - - [Remover o Eliminar Comunidad](#remove-or-delete-community) - - [Restaurar Comunidad Removida o Eliminada](#restore-removed-or-deleted-community) - - [Usuario a Usuario](#user-to-user) - - [Crear o Actualizar Mensaje Privado](#create-or-update-private-message) - - [Eliminar Mensaje Privado](#delete-private-message) - - [Deshacer la Eliminación del Mensaje Privado](#undo-delete-private-message)⏎ - - - -## Contexto - -```json -{ - "@context": [ - "https://www.w3.org/ns/activitystreams", - { - "moderators": "as:moderators", - "sc": "http://schema.org#", - "stickied": "as:stickied", - "sensitive": "as:sensitive", - "pt": "https://join.lemmy.ml#", - "comments_enabled": { - "type": "sc:Boolean", - "id": "pt:commentsEnabled" - } - }, - "https://w3id.org/security/v1" - ] -} -``` - -El contexto es identico para todas las actividades y objetos. - -## Actores - -### Comunidad - -Un actor automatizado. Los usuarios pueden enviarle mensajes o comentarios, que la comunidad reenvía a sus seguidores en forma de Anuncio `Announce`. - -Envía actividades al usuario: Aceptar/Seguir `Accept/Follow`, Anunciar `Announce`. - -Recibe actividades del usuario: Seguir `Follow`, Deshacer/Seguir `Undo/Follow`, Crear `Create`, Actualizar `Update`, Me gusta `Like`, No me gusta `Dislike`, Remover `Remove` (sólo admin/mod), Eliminar `Delete` (sólo creador), Deshacer `Undo` (sólo para acciones propias). - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main", - "type": "Group", - "preferredUsername": "main", - "name": "The Main Community", - "sensitive": false, - "content": "Welcome to the default community!", - "mediaType": "text/html", - "source": { - "content": "Welcome to the default community!", - "mediaType": "text/markdown" - }, - "icon": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/Z8pFFb21cl.png" - }, - "image": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/Wt8zoMcCmE.jpg" - }, - "inbox": "https://enterprise.lemmy.ml/c/main/inbox", - "outbox": "https://enterprise.lemmy.ml/c/main/outbox", - "followers": "https://enterprise.lemmy.ml/c/main/followers", - "moderators": "https://enterprise.lemmy.ml/c/main/moderators", - "endpoints": { - "sharedInbox": "https://enterprise.lemmy.ml/inbox" - }, - "published": "2020-10-06T17:27:43.282386+00:00", - "updated": "2020-10-08T11:57:50.545821+00:00", - "publicKey": { - "id": "https://enterprise.lemmy.ml/c/main#main-key", - "owner": "https://enterprise.lemmy.ml/c/main", - "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9JJ7Ybp/H7iXeLkWFepg\ny4PHyIXY1TO9rK3lIBmAjNnkNywyGXMgUiiVhGyN9yU7Km8aWayQsNHOkPL7wMZK\nnY2Q+CTQv49kprEdcDVPGABi6EbCSOcRFVaUjjvRHf9Olod2QP/9OtX0oIFKN2KN\nPIUjeKK5tw4EWB8N1i5HOuOjuTcl2BXSemCQLAlXerLjT8xCarGi21xHPaQvAuns\nHt8ye7fUZKPRT10kwDMapjQ9Tsd+9HeBvNa4SDjJX1ONskNh2j4bqHHs2WUymLpX\n1cgf2jmaXAsz6jD9u0wfrLPelPJog8RSuvOzDPrtwX6uyQOl5NK00RlBZwj7bMDx\nzwIDAQAB\n-----END PUBLIC KEY-----\n" - } -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `preferredUsername` | si | Nombre del actor | -| `name` | si | Titulo de la comunidad | -| `sensitive` | si | True indica que todas las publicaciones en la comunidad son nsfw | -| `attributedTo` | si | Primero el creador de la comunidad, luego el resto de los moderadores | -| `content` | no | Texto para la barra lateral de lac comunidad, que suele contener una descripción y normas | -| `icon` | no | Icono que aparece junto al nombre de la comunidad | -| `image` | no | Imagen de banner, mostrada en la parte superior de la página de la comunidad | -| `inbox` | no | URL de la bandeja de entrada de ActivityPub | -| `outbox` | no | URL de la bandeja de salida de ActivityPub, sólo contiene las últimas 20 publicaciones sin comentarios, votos u otras actividades | -| `followers` | no | URL de la colección de seguidores, sólo contiene el número de seguidores, sin referencias a seguidores individuales | -| `endpoints` | no | Contiene la URL de la bandeja de entrada compartida | -| `published` | no | Fecha de creación de la comunidad | -| `updated` | no | Fecha de la última modificación de la comunidad | -| `publicKey` | si | La clave pública utilizada para verificar las firmas de este actor | - -#### Bandeja de Salida de la Comunidad - -```json -{ - "@context": ..., - "items": [ - ... - ], - "totalItems": 3, - "id": "https://enterprise.lemmy.ml/c/main/outbox", - "type": "OrderedCollection" -} -``` - -La bandeja de salida sólo contiene las actividades Crear/Publicación `Create/Post` por ahora. - -#### Seguidores de la Comunidad - -```json -{ - "totalItems": 2, - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main/followers", - "type": "Collection" -} -``` - -La colección de seguidores sólo se utiliza para exponer el número de seguidores. Los ID de los actores no se incluyen, para proteger la privacidad de los usuarios. - -#### Moderadores de la Comunidad - -```json -{ - "items": [ - "https://enterprise.lemmy.ml/u/picard", - "https://enterprise.lemmy.ml/u/riker" - ], - "totalItems": 2, - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main/moderators", - "type": "OrderedCollection" -} -``` - -### Usuario - -Una persona, interactúa principalmente con la comunidad en la que envía y recibe publicaciones/comentarios. También puede crear y moderar comunidades, y enviar mensajes privados a otros usuarios. - -Envía actividades a la Comunidad: Seguir `Follow`, Deshacer/Seguir `Undo/Follow`, Crear `Create`, Actualizar `Update`, Me gusta `Like`, No me gusta `Dislike`, Remover `Remove` (sólo admin/mod), Eliminar `Delete` (sólo creador), Deshacer `Undo` (sólo para acciones propias) - -Recibe actividades de la Comunidad: Aceptar/Seguir `Accept/Follow`, Anunciar `Announce`. - -Envía y recibe actividades de/para otros usuarios: Crear/Nota `Create/Note`, Actualizar/Nota `Update/Note`, Eliminar/Nota `Delete/Note`, Deshacer/Eliminar/Nota `Undo/Delete/Note` (todas las relacionadas con mensajes privados). - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/u/picard", - "type": "Person", - "preferredUsername": "picard", - "name": "Jean-Luc Picard", - "content": "The user bio", - "mediaType": "text/html", - "source": { - "content": "The user bio", - "mediaType": "text/markdown" - }, - "icon": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/DS3q0colRA.jpg" - }, - "image": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/XenaYI5hTn.png" - }, - "inbox": "https://enterprise.lemmy.ml/u/picard/inbox", - "endpoints": { - "sharedInbox": "https://enterprise.lemmy.ml/inbox" - }, - "published": "2020-10-06T17:27:43.234391+00:00", - "updated": "2020-10-08T11:27:17.905625+00:00", - "publicKey": { - "id": "https://enterprise.lemmy.ml/u/picard#main-key", - "owner": "https://enterprise.lemmy.ml/u/picard", - "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyH9iH83+idw/T4QpuRSY\n5YgQ/T5pJCNxvQWb6qcCu3gEVigfbreqZKJpOih4YT36wu4GjPfoIkbWJXcfcEzq\nMEQoYbPStuwnklpN2zj3lRIPfGLht9CAlENLWikTUoW5kZLyU6UQtOGdT2b1hDuK\nsUEn67In6qYx6pal8fUbO6X3O2BKzGeofnXgHCu7QNIuH4RPzkWsLhvwqEJYP0zG\nodao2j+qmhKFsI4oNOUCGkdJejO7q+9gdoNxAtNNKilIOwUFBYXeZJb+XGlzo0X+\n70jdJ/xQCPlPlItU4pD/0FwPLtuReoOpMzLi20oDsPXJBvn+/NJaxqDINuywcN5p\n4wIDAQAB\n-----END PUBLIC KEY-----\n" - } -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ------------------- | ----------- | ------------------------------------------------------------------ | -| `preferredUsername` | si | Nombre del actor | -| `name` | no | El nombre para mostrar del usuario | -| `content` | no | La biografía del usuario | -| `icon` | no | El avatar del usuario, que aparece junto al nombre del usuario | -| `image` | no | Banner del usuario, mostrada en la parte superior del perfil | -| `inbox` | no | URL de la bandeja de entrada de ActivityPub | -| `endpoints` | no | Contiene la URL de la bandeja de entrada compartida | -| `published` | no | Fecha de registro del usuario | -| `updated` | no | Fecha de la última actualización del perfil del usuario | -| `publicKey` | si | La clave pública utilizada para verificar las firmas de este actor | - -#### Bandeja de salida del Usuario - -```json -{ - "items": [], - "totalItems": 0, - "@context": ..., - "id": "http://lemmy-alpha:8541/u/lemmy_alpha/outbox", - "type": "OrderedCollection" -} -``` - -La bandeja de salida del usuario no está implementada todavía, y es sólo un marcador de posición para las implementaciones de ActivityPub que lo requieren. - -## Objetos - -### Publicación - -Una página con título, y contenido opcional de URL y texto. La URL suele llevar a una imagen, en cuyo caso se incluye una miniatura. Cada entrada pertenece exactamente a una comunidad. - -```json -{ - "@context": ..., - "id": "https://voyager.lemmy.ml/post/29", - "type": "Page", - "attributedTo": "https://voyager.lemmy.ml/u/picard", - "to": [ - "https://voyager.lemmy.ml/c/main", - "https://www.w3.org/ns/activitystreams#Public" - ], - "name": "Test thumbnail 2", - "content": "blub blub", - "mediaType": "text/html", - "source": { - "content": "blub blub", - "mediaType": "text/markdown" - }, - "url": "https://voyager.lemmy.ml:/pictrs/image/fzGwCsq7BJ.jpg", - "image": { - "type": "Image", - "url": "https://voyager.lemmy.ml/pictrs/image/UejwBqrJM2.jpg" - }, - "commentsEnabled": true, - "sensitive": false, - "stickied": false, - "published": "2020-09-24T17:42:50.396237+00:00", - "updated": "2020-09-24T18:31:14.158618+00:00" -} -``` - -| Nombre del Campo | Obligatorio | Description | -| ----------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------- | -| `attributedTo` | si | ID del usuario que creó esta publicación | -| `to` | si | ID de la comunidad en la que se publicó | -| `name` | si | Título de la publicación | -| `content` | no | Cuerpo de la publicación | -| `url` | no | Un enlace arbitrario para compartir | -| `image` | no | Miniatura para la `url`, sólo aparece si es un enlace de imagen | -| `commentsEnabled` | si | False indica que la publicación está bloqueada, y no se pueden añadir comentarios | -| `sensitive` | si | True marca la publicación como NSFW,difumina la miniatura y la oculta a los usuarios con la configuración NSFW desactivada | -| `stickied` | si | True significa que se muestra en la parte superior de la comunidad | -| `published` | no | Fecha de creación de la publicación | -| `updated` | no | Fecha en la que se editó la publicación (no está presente si nunca se editó) | - -### Comentario - -Una respuesta a una publicación, o una respuesta a otro comentario. Contiene sólo texto (incluyendo referencias a otros usuarios o comunidades). Lemmy muestra los comentarios en una estructura de árbol. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/comment/95", - "type": "Note", - "attributedTo": "https://enterprise.lemmy.ml/u/picard", - "to": "https://www.w3.org/ns/activitystreams#Public", - "content": "mmmk", - "mediaType": "text/html", - "source": { - "content": "mmmk", - "mediaType": "text/markdown" - }, - "inReplyTo": [ - "https://enterprise.lemmy.ml/post/38", - "https://voyager.lemmy.ml/comment/73" - ], - "published": "2020-10-06T17:53:22.174836+00:00", - "updated": "2020-10-06T17:53:22.174836+00:00" -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `attributedTo` | si | ID del usuario que creó el comentario | -| `to` | si | Comunidad donde se hizo el comentario | -| `content` | si | El texto del comentario | -| `inReplyTo` | si | ID de la publicación donde se hizo el comentario, y el comentario padre. Si este es un comentario de nivel superior, `inReplyTo` sólo contiene la publicación | -| `published` | no | Fecha de creación del comentario | -| `updated` | no | Fecha en la que se editó la publicación (no está presente si nunca se editó) | - -### Mensaje Privado - -Un mensaje directo de un usuario a otro. No puede incluir usuarios adicionales. Todavía no se ha implementado el hilo, por lo que falta el campo `inReplyTo`. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/private_message/34", - "type": "Note", - "attributedTo": "https://enterprise.lemmy.ml/u/picard", - "to": "https://voyager.lemmy.ml/u/janeway", - "content": "test", - "source": { - "content": "test", - "mediaType": "text/markdown" - }, - "mediaType": "text/markdown", - "published": "2020-10-08T19:10:46.542820+00:00", - "updated": "2020-10-08T20:13:52.547156+00:00" -} -``` - - - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ---------------------------------------------------------------------------- | -| `attributedTo` | | ID del usuario que creo este mensaje | -| `to` | | ID del destinatario | -| `content` | si | El texto del mensaje privado | -| `published` | no | Fecha de creación del mensaje | -| `updated` | no | Fecha en la que se editó la publicación (no está presente si nunca se editó) | - -## Actividades - -### Usuario a Comunidad - -#### Seguir - -Cuando el usuario hace clic en "Suscribirse" en una comunidad, se envía un `Follow`. La comunidad responde automáticamente con un `Accept/Follow`. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/follow/2e4784b7-4edf-4fa1-a352-674d5d5f8891", - "type": "Follow", - "actor": "https://enterprise.lemmy.ml/u/picard", - "to": "https://ds9.lemmy.ml/c/main", - "object": "https://ds9.lemmy.ml/c/main" -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | --------------------------------------------------------- | -| `actor` | si | El usuario que envía la solicitud de seguimiento `Follow` | -| `object` | si | La comunidad a seguir | - -#### Dejar de Seguir - -Al pulsar el botón de "dar de baja" en una comunidad se envía un `Undo/Follow`. La comunidad retira al usuario de su lista de seguidores tras recibirlo. - -```json -{ - "@context": ..., - "id": "http://lemmy-alpha:8541/activities/undo/2c624a77-a003-4ed7-91cb-d502eb01b8e8", - "type": "Undo", - "actor": "http://lemmy-alpha:8541/u/lemmy_alpha", - "to": "http://lemmy-beta:8551/c/main", - "object": { - "@context": ..., - "id": "http://lemmy-alpha:8541/activities/follow/f0d732e7-b1e7-4857-a5e0-9dc83c3f7ee8", - "type": "Follow", - "actor": "http://lemmy-alpha:8541/u/lemmy_alpha", - "object": "http://lemmy-beta:8551/c/main" - } -} -``` - -#### Crear o Actualizar Publicación - -Cuando un usuario crea una nueva publicación, ésta se envía a la comunidad correspondiente. La edición de una publicación previamente creada envía una actividad casi idéntica, excepto que el tipo `type` es Actualizar `Update`. Todavía no admitimos las menciones en las publicaciones. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/create/6e11174f-501a-4531-ac03-818739bfd07d", - "type": "Create", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": ... -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | -------------------------------------- | -| `type` | si | Crear `Create` o Actualizar `Update` | -| `cc` | si | Comunidad donde se hizo la publicación | -| `object` | si | La publicación que se crea | - -#### Crear o Actulizar Comentario - -Una respuesta a una publicación, o a otro comentario. Puede contener menciones a otros usuarios. La edición de una publicación previamente creada envía una actividad casi idéntica, excepto que el tipo `type` es Actualizar `Update`. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/create/6f52d685-489d-4989-a988-4faedaed1a70", - "type": "Create", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "tag": [{ - "type": "Mention", - "name": "@sisko@ds9.lemmy.ml", - "href": "https://ds9.lemmy.ml/u/sisko" - }], - "cc": [ - "https://ds9.lemmy.ml/c/main/", - "https://ds9.lemmy.ml/u/sisko" - ], - "object": ... -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tag` | no | Lista de los usuarios que se mencionan en el comentario (como `@usuario@ejemplo.com`) | -| `cc` | si | Comunidad en la que se hace la publicación, el usuario al que se responde (creador de la publicación/comentario principal), así como los usuarios mencionados | -| `object` | si | El comentario que se crea | - -#### Me gusta Publicación o Comentario - -Un voto positivo para una publicación o un comentario - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/like/8f3f48dd-587d-4624-af3d-59605b7abad3", - "type": "Like", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/p/123" -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------------------------------------- | -| `cc` | si | ID de la comunidad en la que se encuentra la publicación/comentario | -| `object` | si | La publicación o comentario que se ha votado | - -#### No me gusta Publicación o Comentario - -Un voto negativo para una publicación o un comentario - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/dislike/fd2b8e1d-719d-4269-bf6b-2cadeebba849", - "type": "Dislike", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/p/123" -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------------------------------------- | -| `cc` | si | ID de la comunidad en la que se encuentra la publicación/comentario | -| `object` | si | La publicación o comentario que se ha votado | - -#### Eliminar Publicación o Comentario - -Elimina una publicación o comentario creado anteriormente. Esto sólo lo puede hacer el creador original de esa publicación/comentario. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/delete/f1b5d57c-80f8-4e03-a615-688d552e946c", - "type": "Delete", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://enterprise.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/post/32" -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------------------------------------- | -| `cc` | si | ID de la comunidad en la que se encuentra la publicación/comentario | -| `object` | si | La publicación o comentario que se está eliminando | - -#### Remover Publicación o Comentario - -Remover una publicación o un comentario. Esto sólo puede hacerlo un mod de la comunidad, o un administrador en la instancia donde se aloja la comunidad. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/remove/aab93b8e-3688-4ea3-8212-d00d29519218", - "type": "Remove", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/comment/32" -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------------------------------------- | -| `cc` | si | ID de la comunidad en la que se encuentra la publicación/comentario | -| `object` | si | La publicación o comentario que se está removiendo | - -#### Deshacer - -Revierte una actividad anterior, sólo puede hacerlo el actor `actor` del objeto `object`. En caso de un `Like` o `Dislike`, se vuelve a cambiar el conteo de votos. En el caso de un `Delete`o `Remove`, se restablece la publicación/comentario. El objeto se regenera desde cero, por lo que el ID de la actividad y otros campos son diferentes. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/undo/70ca5fb2-e280-4fd0-a593-334b7f8a5916", - "type": "Undo", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": ... -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------------------------------------------------------------------ | -| `object` | si | Cualquier actividad `Like`, `Dislike`, `Delete` o `Remove` tal como se ha descrito anteriormente | - -#### Agregar Moderador - -Añade un nuevo mod (registrado en `ds9.lemmy.ml`) a la comunidad `!main@enterprise.lemmy.ml`. Tiene que ser enviado por un mod de la comunidad existente. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/add/531471b1-3601-4053-b834-d26718da2a06", - "type": "Add", - "cc": [ - "https://enterprise.lemmy.ml/c/main" - ], - "to": "https://www.w3.org/ns/activitystreams#Public", - "object": "https://ds9.lemmy.ml/u/sisko", - "actor": "https://enterprise.lemmy.ml/u/picard", - "target": "https://enterprise.lemmy.ml/c/main/moderators" -} -``` - -#### Remover Moderador - -Remueve un mod existente de la comunidad. Tiene que ser enviado por un mod de la comunidad existente. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/remove/63b9a5b2-d3f8-4371-a7eb-711c7928b3c0", - "type": "Remove", - "object": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "actor": "https://enterprise.lemmy.ml/u/picard", - "cc": [ - "https://enterprise.lemmy.ml/c/main" - ], - "target": "https://enterprise.lemmy.ml/c/main/moderators" -} -``` - -### Comunidad a Usuario - -#### Aceptar Seguir - -Enviado automáticamente por la comunidad en respuesta a un `Follow`. Al mismo tiempo, la comunidad añade a este usuario a su lista de seguidores. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/accept/5314bf7c-dab8-4b01-baf2-9be11a6a812e", - "type": "Accept", - "actor": "https://ds9.lemmy.ml/c/main", - "to": "https://enterprise.lemmy.ml/u/picard", - "object": { - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/follow/2e4784b7-4edf-4fa1-a352-674d5d5f8891", - "type": "Follow", - "object": "https://ds9.lemmy.ml/c/main", - "actor": "https://enterprise.lemmy.ml/u/picard" - } -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ----------------------------------------------- | -| `actor` | si | La misma comunidad que en la actividad `Follow` | -| `to` | no | ID del usuario que envió el `Follow` | -| `object` | si | La actividad de `Follow` enviada anteriormente | - -#### Anuncio - -Cuando la comunidad recibe una actividad publicación o comentario, lo envuelve en un anuncio `Announce` y lo envía a todos los seguidores. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/announce/b98382e8-6cb1-469e-aa1f-65c5d2c31cc4", - "type": "Announce", - "actor": "https://ds9.lemmy.ml/c/main", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/followers" - ], - "object": ... -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `object` | si | Cualquier actividad `Create`, `Update`, `Like`, `Dislike`, `Delete`, `Remove` o `Undo` tal como se ha descrito en la sección [Usuario a Comunidad](#user-to-community) | - -#### Remover o Eliminar Comunidad - -Un administrador de instancia puede remover la comunidad, o un mod puede eliminarla. - -```json -{ - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/remove/e4ca7688-af9d-48b7-864f-765e7f9f3591", - "type": "Remove", - "actor": "http://ds9.lemmy.ml/c/some_community", - "cc": [ - "http://ds9.lemmy.ml/c/some_community/followers" - ], - "to": "https://www.w3.org/ns/activitystreams#Public", - "object": "http://ds9.lemmy.ml/c/some_community" -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------ | -| `type` | si | Remover `Remove` o Eliminar `Delete` | - -#### Restaurar Comunidad Removida o Eliminada - -Revierte la remoción o eliminación - -```json -{ - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/like/0703668c-8b09-4a85-aa7a-f93621936901", - "type": "Undo", - "actor": "http://ds9.lemmy.ml/c/some_community", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "http://ds9.lemmy.ml/c/testcom/followers" - ], - "object": { - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/remove/1062b5e0-07e8-44fc-868c-854209935bdd", - "type": "Remove", - "actor": "http://ds9.lemmy.ml/c/some_community", - "object": "http://ds9.lemmy.ml/c/testcom", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "http://ds9.lemmy.ml/c/testcom/followers" - ] - } -} - -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | ------------------------------------ | -| `object.type` | si | Remover `Remove` o Eliminar `Delete` | - -### Usuario a Usuario - -#### Crear o Actualizar Mensaje Privado - -Crea un nuevo mensaje privado entre dos usuarios. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/create/202daf0a-1489-45df-8d2e-c8a3173fed36", - "type": "Create", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": ... -} -``` - -| Nombre del Campo | Obligatorio | Descripción | -| ---------------- | ----------- | -------------------------------------- | -| `type` | si | Crear `Create` o Actualizar `Update` | -| `object` | si | Un [Mensaje Privado](#private-message) | - -#### Eliminar Mensaje Privado - -Elimina un mensaje privado previo - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/delete/2de5a5f3-bf26-4949-a7f5-bf52edfca909", - "type": "Delete", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": "https://ds9.lemmy.ml/private_message/341" -} -``` - -#### Deshacer la Eliminación del Mensaje Privado - -Restaura un mensaje privado previamente eliminado. El objeto `object` se regenera desde cero, por lo que el ID de actividad y otros campos son diferentes. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/undo/b24bc56d-5db1-41dd-be06-3f1db8757842", - "type": "Undo", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": ... -} -``` diff --git a/src/es/federation/overview.md b/src/es/federation/overview.md deleted file mode 100644 index bbb23a4..0000000 --- a/src/es/federation/overview.md +++ /dev/null @@ -1,123 +0,0 @@ -# Visión General de la Federación - -Este documento es para cualquiera que quiera saber como funciona la federación en Lemmy, sin ser demasiado técnico. Se pretende proporcionar una visión general de alto nivel de la federación ActivityPub en Lemmy. Si estás implementando ActivityPub por ti mismo y quieres ser compatible con Lemmy, lee nuestro -[esquema de la API de ActivityPub](contributing_apub_api_outline.md). - -## Convenciones de la documentación - -Para mantener las cosas simples, a veces verás cosas formateadas como Crear/Nota `Create/Note` o Eliminar/Evento `Delete/Event` o Deshacer/Seguir `Undo/Follow`. La cosa antes de la barra es la Actividad, y la cosa después de la barra es el Objeto dentro de la Actividad, una propiedad del objeto `objet`. Así que estos deben ser leídos como sigue: - -- `Create/Note`: una actividad `Create` que contiene una `Note` en el campo del `object` -- `Delete/Event`: una actividad `Delete` que contiene un `Event` en el campo del `object` -- `Undo/Follow`: una actividad `Undo` que contiene un `Follow` en el campo del `object` - -En Lemmy utilizamos algunos términos específicos para referirnos a los elementos de ActivityPub. Son esencialmente nuestras implementaciones específicas de conceptos conocidos de ActivityPub: - -- Comunidad (community): Grupo `Group` -- Usuario (user): Persona `Person` -- Publicación (post): Página `Page` -- Comentario (comment): Nota `Note` - -Este documento tiene tres secciones principales: - -- **Filosofía de la federación:** expone el modelo general de cómo se debe federar. -- **Actividades del usuario:** describen las acciones que un usuario puede realizar para interactuar. -- **Actividades de la comunidad:** describen lo que hace la comunidad en respuesta a determinadas acciones de los usuarios. - -## Filosofía de la federación - -El actor principal de Lemmy es la Comunidad. Cada comunidad reside en una única instancia, y consiste en una lista de Publicaciones y una lista de seguidores. La interacción principal es la de un usuario que envía una actividad relacionada con una Publicación o un Comentario a la bandeja de entrada de la Comunidad, que la anuncia a todos sus seguidores. - -Cada Comunidad tiene un Usuario creador específico, que es responsable de establecer las reglas, nombrar moderadores y eliminar el contenido que viola las reglas. - -Además de la moderación a nivel de comunidad, cada instancia tiene un conjunto de Usuarios administradores, que tienen el poder de realizar eliminaciones y baneos en todo el sitio. - -Los Usuarios siguen a las comunidades que les interesan para recibir Publicaciones y Comentarios. También votan las Publicaciones y los Comentarios, además de crear otros nuevos. Los Comentarios se organizan en una estructura de árbol y suelen ordenarse por número de votos. Los mensajes directos entre Usuarios también son compatibles. - -Los Usuarios no pueden seguirse unos a otros, y las Comunidades tampoco pueden seguir nada. - -Nuestra implementación de la federación ya está completa, pero hasta ahora no nos hemos centrado en absoluto en el cumplimiento de la especificación ActivityPub. Como tal, Lemmy probablemente no es compatible con las implementaciones que esperan enviar y recibir actividades válidas. Esto es algo que planeamos arreglar en un futuro próximo. Consulta el tema [#698](https://github.com/LemmyNet/lemmy/issues/698) para ver un resumen de nuestras desviaciones. - -## Actividades del usuario - -### Seguir a una Comunidad - -Cada página de la Comunidad tiene un botón "Seguir". Al hacer clic en él, el usuario envía una actividad de Seguir `Follow` a la bandeja de entrada de la Comunidad. La Comunidad responderá automáticamente con una actividad de Aceptar/Seguir `Accept/Follow` a la bandeja de entrada del usuario. También añadirá al usuario a su lista de seguidores y le enviará cualquier actividad sobre las publicaciones/comentarios de la comunidad. - -### Dejar de seguir una Comunidad - -Después de seguir una Comunidad, el botón "Seguir" se sustituye por "Dejar de seguir". Al hacer clic en él, se envía una actividad de Deshacer/Seguir `Undo/Follow` a la bandeja de entrada de la Comunidad. La Comunidad elimina al usuario de su lista de seguidores y ya no le envía ninguna actividad. - -### Crear una Publicación - -Cuando un usuario crea una nueva publicación en una Comunidad determinada, se envía como Crear/Página `Create/Page` a la bandeja de entrada de la Comunidad. - -### Crear un Comentario - -Cuando se crea un nuevo Comentario para una Publicación, tanto el ID de la Publicación como el ID del Comentario principal (si existe) se escriben en el campo `in_reply_to`. Esto permite asignarlo a la Publicación correcta y construir el árbol de Comentarios. A continuación, se envía a la bandeja de entrada de la Comunidad como Crear/Note `Create/Note`. - -La instancia de origen también escanea el Comentario en busca de cualquier mención de Usuario, y envía el Crear/Nota`Create/Note` a esos Usuarios también. - -### Editar una Publicación - -Cambia el contenido de una Publicación existente. Sólo puede hacerlo el usuario que lo crea. - -### Editar un Comentario - -Cambia el contenido de un Comentario existente. Sólo puede hacerlo el usuario que lo crea. - -### Me Gusta y No Me Gusta - -Los usuarios pueden poner Me gustar o No me gusta de cualquier Publicación o Comentario. Estos se envían como Me gusta / Página `like/Page`, No me gusta / Nota `Dislike/Note`, etc. a la bandeja de entrada de la Comunidad. - -### Eliminaciones - -El creador de una Publicación, Comentario o Comunidad puede eliminarla. Entonces se envía a los seguidores de la Comunidad. El elemento queda entonces oculto para todos los usuarios. - -### Remociones - -Los mods pueden remover Publicaciones y Comentarios de sus Comunidades. Los administradores pueden remover cualquier Publicación o Comentario en todo el sitio. Las Comunidades también pueden ser removidas por los administradores. El elemento se oculta para todos los usuarios. - -Las remociones se envían a todos los seguidores de la Comunidad, por lo que también tienen efecto allí. La excepción es si un administrador elimina un elemento de una Comunidad que está alojada en una instancia diferente. En este caso, la eliminación sólo tiene efecto a nivel local. - -### Revertir una acción anterior - -**No eliminamos nada de nuestra base de datos, sólo lo ocultamos a los usuarios**. Las Comunidades/Publicaciones/Comentarios removidos o eliminados tienen un botón de "restauración". Este botón genera una actividad de Deshacer `Undo` que establece la actividad original de eliminar/remover como objeto, como Deshacer/Remover/Publicación `Undo/Remove/Post` o Deshacer/Eliminar/Comunidad `Undo/Delete/Community`. - -Al hacer clic en el botón de "Voto positivo" (upvote) de una publicación/comentario ya votado (o en el botón de "Voto negativo" (downvote) de una publicación/comentario ya votado) también se genera un Deshacer `Undo`. En este caso Deshacer/Me gusta/Publicación `Undo/Like/Post` o Deshacer/No me gusta/Comentario `Undo/Dislike/Comment`. - -### Crear un mensaje privado - -Los perfiles de los usuarios tienen un botón "Enviar mensaje", que abre un diálogo que permite enviar un mensaje privado a este usuario. Se envía como un Crear/Nota `Create/Note` a la bandeja de entrada del usuario. Los mensajes privados sólo pueden dirigirse a un único usuario. - -### Editar mensaje privado - -Actualizar/Nota `Update/Note` cambia el texto de un mensaje enviado previamente. - -### Eliminar mensaje privado - -Eliminar/Nota `Delete/Note` borra un mensaje privado. - -### Restaurar mensaje privado - -Deshacer/Eliminar/Nota `Undo/Delete/Note` Revierte la eliminación de un mensaje privado. - -## Actividades de la Comunidad - -La Comunidad es esencialmente un bot, que sólo hará algo en reacción a las acciones de los Usuarios. El usuario que creó la Comunidad por primera vez se convierte en el primer moderador, y puede añadir moderadores adicionales. En general, cada vez que la Comunidad recibe una actividad válida en su bandeja de entrada, esa actividad se reenvía a todos sus seguidores. - -### Aceptar seguir - -Si la Comunidad recibe una actividad de Seguir `Follow`, responde automáticamente con Aceptar/Seguir `Accept/Follow`. También añade al Usuario a su lista de seguidores. - -### Dejar de seguir - -Al recibir un Deshacer/Seguir `Undo/Follow`, la Comunidad elimina al Usuario de su lista de seguidores. - -### Anunciar - -Si la Comunidad recibe cualquier actividad relacionada con una publicación o comentario (Crear, Actualizar, Me gusta, No me gusta, Eliminar, Borrar, Deshacer), lo anunciará a sus seguidores. Para ello, se crea un Anuncio con la Comunidad como actor, y la actividad recibida como objeto. De este modo, las instancias seguidoras se mantienen actualizadas sobre cualquier acción en las Comunidades que siguen. - -### Eliminar Comunidad - -Si el creador o un administrador elimina la Comunidad, envía un Anuncio de Eliminar/Grupo `Delete/Group` a todos sus seguidores. diff --git a/src/es/federation/resources.md b/src/es/federation/resources.md deleted file mode 100644 index de75451..0000000 --- a/src/es/federation/resources.md +++ /dev/null @@ -1,22 +0,0 @@ -# Recursos de ActivityPub - -## Documentos Oficiales - -- [ActivityPub standard](https://www.w3.org/TR/activitypub/) -- [Activitypub vocabulary](https://www.w3.org/TR/activitystreams-vocabulary/) - -## Explicaciones - -- [ActivityPub - one protocol to rule them all?](https://schub.io/blog/2018/02/01/activitypub-one-protocol-to-rule-them-all.html) -- [A highly opinionated guide to learning about ActivityPub](https://tinysubversions.com/notes/reading-activitypub/) -- [Activitypub implementers guide](https://socialhub.activitypub.rocks/t/draft-guide-for-new-activitypub-implementers/479) -- [Mastodon Blog: How to implement a basic ActivityPub server](https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/) -- [Mastodon Blog: Implementing an ActivityPub inbox](https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/) -- [Data storage questions](https://socialhub.activitypub.rocks/t/data-storage-questions/579) -- [Activitypub as it has been understood](https://flak.tedunangst.com/post/ActivityPub-as-it-has-been-understood) - -## Ejemplos y Bibliotecas - -- [ActivityPub example server](https://github.com/tOkeshu/activitypub-example) -- [ActivityStreams crate](https://docs.rs/activitystreams/) -- [HTTP Signatures crate](https://git.asonix.dog/Aardwolf/http-signature-normalization) diff --git a/src/fr/SUMMARY.md b/src/fr/SUMMARY.md deleted file mode 100644 index 655a41d..0000000 --- a/src/fr/SUMMARY.md +++ /dev/null @@ -1,31 +0,0 @@ -# Summary - -- [About](about/about.md) - - [Features](about/features.md) - - [Goals](about/goals.md) - - [Post and Comment Ranking](about/ranking.md) - - [Guide](about/guide.md) -- [Administration](administration/administration.md) - - [Install with Docker](administration/install_docker.md) - - [Install with Ansible](administration/install_ansible.md) - - [Other Installation Methods](administration/other_installation_methods.md) - - [Configuration](administration/configuration.md) - - [Getting started with Federation](administration/federation_getting_started.md) - - [Troubleshooting](administration/troubleshooting.md) - - [Backup and Restore](administration/backup_and_restore.md) -- [Federation](federation/federation.md) - - [Federation Overview](federation/overview.md) - - [Resources](federation/resources.md) - - [Lemmy Protocol](federation/lemmy_protocol.md) -- [Client Development](client_development/client_development.md) - - [Theming Guide](client_development/theming.md) - - [API reference](client_development/api_reference.md) - - [WebSocket API](client_development/websocket_api.md) - - [HTTP API](client_development/http_api.md) - - [Creating a Custom Frontend](client_development/custom_frontend.md) -- [Contributing](contributing/contributing.md) - - [Docker Development](contributing/docker_development.md) - - [Local Development](contributing/local_development.md) - - [Tests](contributing/tests.md) - - [Federation Development](contributing/federation_development.md) -- [Code of Conduct](code_of_conduct.md) diff --git a/src/fr/about/about.md b/src/fr/about/about.md deleted file mode 100644 index 205bfb2..0000000 --- a/src/fr/about/about.md +++ /dev/null @@ -1,30 +0,0 @@ -## À propos du pojet - -| Première page | Publication | -| ------------------------------- | ------------------------------- | -| ![main screen](main_screen.png) | ![chat screen](chat_screen.png) | - -[Lemmy](https://github.com/LemmyNet/lemmy) est similaire à des sites comme [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me) ou [Hacker News](https://news.ycombinator.com/) : vous vous abonnez aux forums qui vous intéressent, vous publiez des liens et des discussions, puis vous votez et commentez. Dans les coulisses, c'est très différent : n'importe qui peut facilement gérer un serveur, et tous ces serveurs sont fédérés (pensez au courrier électronique) et connectés au même univers, appelé le [Fediverse] (https://en.wikipedia.org/wiki/Fediverse). - -Pour un agrégateur de liens, cela signifie qu'un utilisateur enregistré sur un serveur peut s'abonner à des forums sur n'importe quel autre serveur, et peut avoir des discussions avec des utilisateurs enregistrés ailleurs. - -L'objectif global est de créer une alternative facilement auto-hébergeable et décentralisée à Reddit et à d'autres agrégateurs de liens, en dehors du contrôle et de l'ingérence des entreprises. - -Chaque serveur lemmy peut définir sa propre politique de modération, en nommant des administrateurs pour l'ensemble du site et des modérateurs de communauté afin d'écarter les trolls et de favoriser un environnement sain et non toxique où chacun peut se sentir à l'aise pour contribuer. - -_Note: La Fédération est toujours en développement actif_ - -### Pourquoi "Lemmy" ? - -- Lead singer from [Motörhead](https://invidio.us/watch?v=pWB5JZRGl0U). -- The old school [video game](). -- The [Koopa from Super Mario](https://www.mariowiki.com/Lemmy_Koopa). -- The [furry rodents](http://sunchild.fpwc.org/lemming-the-little-giant-of-the-north/). - -### Construit avec - -- [Rust](https://www.rust-lang.org) -- [Actix](https://actix.rs/) -- [Diesel](http://diesel.rs/) -- [Inferno](https://infernojs.org) -- [Typescript](https://www.typescriptlang.org/) diff --git a/src/fr/about/chat_screen.png b/src/fr/about/chat_screen.png deleted file mode 100644 index 21a452d..0000000 Binary files a/src/fr/about/chat_screen.png and /dev/null differ diff --git a/src/fr/about/features.md b/src/fr/about/features.md deleted file mode 100644 index 4f8a64e..0000000 --- a/src/fr/about/features.md +++ /dev/null @@ -1,35 +0,0 @@ -# Features - -- Open source, [AGPL License](/LICENSE). -- Auto-hébergeable, facil à déployer. - - Fourni avec [Docker](#docker) et [Ansible](#ansible). -- Interface propre et conviviale pour les téléphones portables. - - Il suffit d'un nom d'utilisateur et d'un mot de passe pour s'inscrire ! - - Prise en charge des avatars des utilisateurs. - - Mise à jour en temps réel des fils de commentaires. - - Scores de vote `(+/-)` comme l'ancien reddit. - - Thèmes, y compris clair, sombre, et solarisé. - - Emojis avec support de l'autocomplétion. Commencez en tapant `:` - - Metion des utilisateurs avec `@`, mention de la communauté avec `!`. - - Téléchargement d'images intégré dans les messages et les commentaires. - - Un message peut être composé d'un titre et de toute combinaison de texte, d'une URL ou de rien d'autre. - - Notifications, sur les réponses aux commentaires et lorsque vous êtes metionné. - - Les notifications peuvent être envoyé par courriel - - i18n / Prise en charge d l'internationalisation. - - RSS / Flux Atom pour "Tous", "Abonnés", "Boîte de réception", "Utilisateur" et "Communauté". -- Prise en charge du publipostage croisé. - - Une _recherche de messages similaires_ lors de la création de nouveaux messages. Idéal pour les communautés de questions/réponses. -- Capacités de modération. - - Logs de modération publics. - - Peut épingler des messages en haut des communautés. - - Administrateurs du site et les modérateurs de communauté, qui peuvent nommer d'autres modérateurs. - - Peut verrouiller, supprimer et restaurer les messages et les commentaires. - - Peut bannir et débannir des utilisateurs des communautés et du site. - - Peut transférer le site et les communautés à d'autres. -- Peut effacer complètement vos données, en remplaçant tous les messages et commentaires. -- Prise en charge pour les messages NSFW et les communautés. -- Haute performance. - - Le serveur est écrit en rust. - - L'interface est `~80kB` gzippée. - - Front-end fonctionne sans javascript (lecture seule). - - Prise en charge d' arm64 / Raspberry Pi. diff --git a/src/fr/about/goals.md b/src/fr/about/goals.md deleted file mode 100644 index 06926b6..0000000 --- a/src/fr/about/goals.md +++ /dev/null @@ -1,41 +0,0 @@ -# Objectifs - -_Cette section contient des idées et des ressources de l'équipe qui développe Lemmy_. Similaire à un bloc-notes - -- Trouver un nom / nom de code. -- Doit avoir des communautés. -- Doit avoir des commentaires en fil de discussion. -- Doit être fédéré : aimer et suivre les communautés à travers les instances. -- Doit être actualisé en temps réel : avoir un panneau de droite pour les nouveaux commentaires, et un panneau principal pour la vue complète du fil de discussion. - - Utiliser des websockets pour envoyer et recevoir des messages dans votre propre instance. - -# Questions - -- Comment fonctionne le vote ? Devrions-nous revenir à l'ancienne méthode qui consistait à compter les votes positifs et négatifs ? Ou juste un score ? -- Décider de la technologie à utiliser - - Backend : Actix, Diesel. - - Front-end : inferno, typescript et bootstrap pour le moment. -- Doit-on autoriser les robots ? -- Les commentaires / votes doivent-ils être statiques, ou ressembler à un chat, comme [flowchat ?] (https://flow-chat.com). - - Modèle à deux volets - le volet de droite contient les commentaires en direct, le volet de gauche est l'arborescence en direct. - - Sur mobile, permettre de passer de l'un à l'autre. Par défaut ? - -# Ressources / Bibliothèques potentielles - -- [Diesel to Postgres data types](https://kotiri.com/2018/01/31/postgresql-diesel-rust-types.html) -- [helpful diesel examples](http://siciarz.net/24-days-rust-diesel/) -- [Recursive query for adjacency list for nested comments](https://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tree/192462#192462) -- https://github.com/sparksuite/simplemde-markdown-editor -- [Markdown-it](https://github.com/markdown-it/markdown-it) -- [Sticky Sidebar](https://stackoverflow.com/questions/38382043/how-to-use-css-position-sticky-to-keep-a-sidebar-visible-with-bootstrap-4/49111934) -- [RXJS websocket](https://stackoverflow.com/questions/44060315/reconnecting-a-websocket-in-angular-and-rxjs/44067972#44067972) -- [Rust JWT](https://github.com/Keats/jsonwebtoken) -- [Hierarchical tree building javascript](https://stackoverflow.com/a/40732240/1655478) -- [Hot sorting discussion](https://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions) [2](https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9) -- [Classification types.](https://www.reddit.com/r/ModeratorDuck/wiki/subreddit_classification) -- [RES expando - Possibly make this into a switching react component.](https://github.com/honestbleeps/Reddit-Enhancement-Suite/tree/d21f55c21e734f47d8ed03fe0ebce5b16653b0bd/lib/modules/hosts) -- [Temp Icon](https://www.flaticon.com/free-icon/mouse_194242) -- [Rust docker build](https://shaneutt.com/blog/rust-fast-small-docker-image-builds/) -- [Zurb mentions](https://github.com/zurb/tribute) -- [TippyJS](https://github.com/atomiks/tippyjs) -- [SQL function indexes](https://sorentwo.com/2013/12/30/let-postgres-do-the-work.html) diff --git a/src/fr/about/guide.md b/src/fr/about/guide.md deleted file mode 100644 index e9a9a7f..0000000 --- a/src/fr/about/guide.md +++ /dev/null @@ -1,56 +0,0 @@ -# Guide de Lemmy - -Commencez à taper... - -- `@nom_utilisateur` pour obtenir une liste de noms d'utilisateurs. -- `!a_communauté` pour obtenir une liste de communautés. -- `:emoji` pour obtenir une liste d'emojis. - -## Triage - -_Applique aux messages et aux commentaires_. - -| Type | Description | -| --------------------- | -------------------------------------------------------------------------------- | -| Actif | Tendance triée en fonction du score et de l'heure du commentaire le plus récent. | -| Hot | Tendance de tri basée sur le score et l'heure de création du message. | -| Nouveau | Les éléments les plus récents. | -| Plus de commentaires | Les messages avec le plus de commentaires. | -| Nouveaux commentaires | Les messages avec les commentaires les plus récents, IE un tri de style forum. | -| Top | Les éléments les mieux notés dans la période donnée. | - -Pour plus de détails, consultez le [Classement des messages et des commentaires] (ranking.md). - -## Modération / Administration - -Toutes les actions de modération et d'administration sur les utilisateurs sont effectuées sur les commentaires ou les messages, en cliquant sur l'icône à 3 points "Plus". - -Cela inclut : - -- Ajouter / Supprimer des modérateurs ou des administrateurs. -- Supprimer / Restaurer des commentaires. -- Bannir / Débannir des utilisateurs. - -Toutes les actions d'administration sur les communautés sont effectuées sur la barre latérale de la communauté. Actuellement, cela ne comprend que la suppression et la restauration des communautés. - -## Markdown Guide - -| Tapez | ou | ... pour obtenir | -| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| \*Italique\* | \_Italique\_ | _Italique_ | -| \*\*Gras\*\* | \_\_Gras\_\_ | **Gras** | -| \# Rubrique 1 | Rubrique 1
========= |

Rubrique 1

| -| \## Rubrique 2 | Rubrique 2
--------- |
Rubrique 2
| -| \[lien\](http://a.com) | \[lien\]\[1\]

\[1\]: http://b.org | [lien](https://commonmark.org/) | -| !\[Image\](http://url/a.png) | !\[Image\]\[1\]

\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) | -| \> Citation en bloc | |
Citation en bloc
| -| \* Liste
\* Liste
\* Liste | \- Liste
\- Liste
\- Liste
| _ Liste
_ Liste
\* Liste
| -| 1\. Un
2\. Deux
3\. Trois | 1) Un
2) Deux
3) Trois | 1. Une
2. Deux
3. Trois | -| Règle horizontale
\--- | Règle horizontale
\*\*\* | Règle horizontale

| -| \`Code Inline\` avec des backticks | | `Code Inline` avec des backticks | -| \`\`\`
\# bloc de code
print '3 backticks ou'
print 'retrait de 4 espaces'
\`\`\` | ····\# bloc de code
····print '3 backticks ou'
····print 'retrait de 4 espaces' | \# bloc de code
print '3 backticks ou'
print 'retrait de 4 espaces' | -| ::: spoiler caché ou trucs nsfw
_un tas de spoilers ici_
::: | |
spoiler caché ou trucs nsfw

un tas de spoilers ici

| -| Certains texte \~indice\~ | | Certains texte indice | -| Quelques texte ^indice^ | | Quelques texte indice | - -[Tutoriel CommonMark](https://commonmark.org/help/tutorial/) diff --git a/src/fr/about/main_screen.png b/src/fr/about/main_screen.png deleted file mode 100644 index 5d1f0c3..0000000 Binary files a/src/fr/about/main_screen.png and /dev/null differ diff --git a/src/fr/about/rank_algorithm.png b/src/fr/about/rank_algorithm.png deleted file mode 100644 index c8200f9..0000000 Binary files a/src/fr/about/rank_algorithm.png and /dev/null differ diff --git a/src/fr/about/ranking.md b/src/fr/about/ranking.md deleted file mode 100644 index 0eab287..0000000 --- a/src/fr/about/ranking.md +++ /dev/null @@ -1,47 +0,0 @@ -# Tendances / Chaud / Meilleur algorithme de tri (algorithme de tri) - -## Objectifs - -- Au cours de la journée, les nouveaux messages et les commentaires devraient se trouver en tête de liste, afin de pouvoir être soumis au vote. -- Après un jour ou deux, le facteur temps devrait disparaître. -- Utilisez une échelle logarithmique, car les votes ont tendance à faire boule de neige, et donc les 10 premiers votes sont tout aussi importants que les 100 suivants. - -## Implémentations - -### Reddit - -Ne tient pas compte de la durée de vie du fil de discussion, [ce qui donne aux premiers commentaires un avantage écrasant sur les derniers](https://minimaxir.com/2016/11/first-comment/), l'effet étant encore pire dans les petites communautés. Les nouveaux commentaires sont regroupés au bas du fil de discussion, ce qui a pour effet de tuer la discussion et de faire de chaque fil de discussion une course au commentaire précoce. Cela diminue la qualité de la conversation et récompense les commentaires répétitifs et les spams. - -### Hacker News - -Bien qu'il soit de loin supérieur à l'implémentation de Reddit en ce qui concerne la décroissance des scores dans le temps, l'algorithme de classement de [Hacker News](https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d) n'utilise pas d'échelle logarithmique pour les scores. - -### Lemmy - -Contrebalance l'effet boule de neige des votes au fil du temps avec une échelle logarithmique. Annule l'avantage inhérent aux premiers commentaires tout en garantissant que les votes comptent toujours sur le long terme, sans nuire aux commentaires populaires plus anciens. - -``` -Rank = ScaleFactor * log(Max(1, 3 + Score)) / (Time + 2)^Gravity - -Score = Upvotes - Downvotes -Time = time since submission (in hours) -Gravity = Decay gravity, 1.8 is default -``` - -- Lemmy utilise le même algorithme de `Rank` ci-dessus, en deux sortes : `Active`, et `Hot`. - - Actif" utilise les votes du message, et le temps du dernier commentaire (limité à deux jours). - - `Hot` utilise les votes du message, et l'heure de publication du message. -- Utilisez Max(1, score) pour vous assurer que tous les commentaires sont affectés par la dégradation du temps. -- Ajoutez 3 au score, pour que tout ce qui a moins de 3 downvotes semble nouveau. Sinon, tous les nouveaux commentaires resteraient à zéro, près du fond. -- Le signe et l'abs du score sont nécessaires pour traiter le log des scores négatifs. -- Un facteur d'échelle de 10k permet d'obtenir le rang sous forme de nombre entier. - -Un graphique du rang sur 24 heures, des scores de 1, 5, 10, 100, 1000, avec un facteur d'échelle de 10k. - -![](rank_algorithm.png) - -#### Comptage des utilisateurs actifs - -Lemmy affiche également le nombre d'utilisateurs actifs de votre site et de ses communautés. Ceux-ci sont comptés au cours du dernier jour, de la dernière semaine, du dernier mois et des six derniers mois, et sont mis en cache au démarrage de Lemmy, ainsi que toutes les heures. - -Un utilisateur actif est quelqu'un qui a posté ou commenté sur notre instance ou notre communauté au cours de la dernière période donnée. Pour le décompte des sites, seuls les utilisateurs locaux sont comptés. Pour les comptes de la communauté, les utilisateurs fédérés sont inclus. diff --git a/src/fr/administration/administration.md b/src/fr/administration/administration.md deleted file mode 100644 index ee14d73..0000000 --- a/src/fr/administration/administration.md +++ /dev/null @@ -1,11 +0,0 @@ -# Infos d'administration - -Informations pour les administrateurs d'une instance Lemmy, et ceux qui veulent faire fonctionner un serveur. - -## Installation - -Lemmy a deux méthodes d'installation principales, [manuellement avec Docker](install_docker.md), et [automatiquement avec Ansible](install_ansible.md). Nous recommandons d'utiliser Ansible, car il simplifie l'installation et facilite les mises à jour. - -## Autres méthodes d'installation - -Dans certains cas, il peut être nécessaire d'utiliser [différentes méthodes d'installation](other_installation_methods.md). Mais nous ne le recommandons pas et ne pouvons pas fournir de support pour ces méthodes. diff --git a/src/fr/administration/backup_and_restore.md b/src/fr/administration/backup_and_restore.md deleted file mode 100644 index 472eaf7..0000000 --- a/src/fr/administration/backup_and_restore.md +++ /dev/null @@ -1,76 +0,0 @@ -# Guide de sauvegarde et de restauration - -## Docker et Ansible - -Lorsque vous utilisez docker ou ansible, il devrait y avoir un dossier `volumes`, qui contient à la fois la base de données, et toutes les images. Copiez ce dossier dans la nouvelle instance pour restaurer vos données. - -### Sauvegarde incrémentale de la base de données - -Pour sauvegarder de manière incrémentielle la base de données dans un fichier `.sql`, vous pouvez exécuter : - -```bash -docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql -``` - -### Un exemple de script de sauvegarde - -```bash -#!/bin/sh -# DB Backup -ssh MY_USER@MY_IP "docker-compose exec postgres pg_dumpall -c -U lemmy" > ~/BACKUP_LOCATION/INSTANCE_NAME_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql - -# Dossier Volumes Sauvegarde -rsync -avP -zz --rsync-path="sudo rsync" MY_USER@MY_IP:/LEMMY_LOCATION/volumes ~/BACKUP_LOCATION/FOLDERNAME -``` - -### Restauration de la BD - -Si vous avez besoin de restaurer à partir d'un fichier `pg_dumpall`, vous devez d'abord vider votre base de données existante. - -```bash -# Abandon de la BD existante -docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" - -# Restauration à partir de la sauvegarde .sql -cat db_dump.sql | docker exec -i FOLDERNAME_postgres_1 psql -U lemmy # restores the db - -# Cela peut également être nécessaire lors de l'importation d'une base de données avec un mot de passe différent. -docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with password 'bleh'" -``` - -### Changer votre nom de domaine - -Si vous ne vous êtes pas encore fédéré, vous pouvez changer votre nom de domaine dans la base de données. **Attention : ne faites pas cela après vous être fédéré, ou cela brisera la fédération.** - -Entrez dans `psql` pour votre docker : - -`docker-compose exec postgres psql -U lemmy` - -``` --- Post -update post set ap_id = replace (ap_id, 'ancien_domaine', 'nouveau_domaine'); -update post set url = replace (url, 'ancien_domaine', 'nouveau_domaine'); -update post set body = replace (body, 'ancien_domaine', 'nouveau_domaine'); -update post set thumbnail_url = replace (thumbnail_url, 'ancien_domaine', 'nouveau_domaine'); - --- Comments -update comment set ap_id = replace (ap_id, 'ancien_domaine', 'nouveau_domaine'); -update comment set content = replace (content, 'ancien_domaine', 'nouveau_domaine'); - --- User -update user_ set actor_id = replace (actor_id, 'ancien_domaine', 'nouveau_domaine'); -update user_ set inbox_url = replace (inbox_url, 'ancien_domaine', 'nouveau_domaine'); -update user_ set shared_inbox_url = replace (shared_inbox_url, 'ancien_domaine', 'nouveau_domaine'); -update user_ set avatar = replace (avatar, 'ancien_domaine', 'nouveau_domaine'); - --- Community -update community set actor_id = replace (actor_id, 'ancien_domaine', 'nouveau_domaine'); -update community set followers_url = replace (followers_url, 'ancien_domaine', 'nouveau_domaine'); -update community set inbox_url = replace (inbox_url, 'ancien_domaine', 'nouveau_domaine'); -update community set shared_inbox_url = replace (shared_inbox_url, 'ancien_domaine', 'nouveau_domaine'); - -``` - -## Plus de ressources - -- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database diff --git a/src/fr/administration/configuration.md b/src/fr/administration/configuration.md deleted file mode 100644 index 22e36bf..0000000 --- a/src/fr/administration/configuration.md +++ /dev/null @@ -1,14 +0,0 @@ -# Configuration - -La configuration est basée sur le fichier [config.hjson](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson). Ce fichier contient également la documentation de toutes les options disponibles. Les instructions d'installation vous indiquent comment remplacer les valeurs par défaut. - -Le fichier `config.hjson` est situé à `config/config.hjson`. Pour changer l'emplacement par défaut, vous pouvez définir la variable d'environnement `LEMMY_CONFIG_LOCATION`. - -Une variable d'environnement supplémentaire `LEMMY_DATABASE_URL` est disponible, qui peut être utilisée avec une chaîne de connexion PostgreSQL comme `postgres://lemmy:password@lemmy_db:5432/lemmy`, en passant tous les détails de connexion en une fois. - -Si le conteneur Docker n'est pas utilisé, créez manuellement la base de données spécifiée ci-dessus en exécutant les commandes suivantes : - -```bash -cd server -./db-init.sh -``` diff --git a/src/fr/administration/federation_getting_started.md b/src/fr/administration/federation_getting_started.md deleted file mode 100644 index dfd51fa..0000000 --- a/src/fr/administration/federation_getting_started.md +++ /dev/null @@ -1,37 +0,0 @@ -# Fédération - -Lemmy utilise le protocole ActivityPub (un standard du W3C) pour permettre la fédération entre différents serveurs (souvent appelés instances). Ceci est très similaire à la façon dont le courrier électronique fonctionne. Par exemple, si vous utilisez gmail.com, vous pouvez non seulement envoyer des e-mails à d'autres utilisateurs de gmail.com, mais aussi à yahoo.com, yandex.ru, etc. Le courrier électronique utilise le protocole SMTP pour y parvenir. Vous pouvez donc considérer ActivityPub comme un "SMTP pour les médias sociaux". La quantité d'actions différentes possibles sur les médias sociaux (poster, commenter, aimer, partager, etc.) signifie que ActivityPub est beaucoup plus compliqué que SMTP. - -Comme pour le courrier électronique, la fédération ActivityPub se fait uniquement entre serveurs. Ainsi, si vous êtes enregistré sur `enterprise.lemmy.ml`, vous ne vous connectez qu'à l'API de `enterprise.lemmy.ml`, tandis que le serveur se charge d'envoyer et de recevoir des données d'autres instances (par exemple `voyager.lemmy.ml`). Le grand avantage de cette approche est que l'utilisateur moyen n'a rien à faire pour utiliser la fédération. En fait, si vous utilisez Lemmy, vous l'utilisez probablement déjà. Une façon de le confirmer est d'aller dans une communauté ou un profil d'utilisateur. Si vous êtes sur `enterprise.lemmy.ml` et que vous voyez un utilisateur comme `@nutomic@voyager.lemmy.ml`, ou une communauté comme `!main@ds9.lemmy.ml`, alors ceux-ci sont fédérés, ce qui signifie qu'ils utilisent une instance différente de la vôtre. - -Une façon de profiter de la fédération est d'ouvrir une instance différente, comme `ds9.lemmy.ml`, et de la parcourir. Si vous voyez une communauté, un message ou un utilisateur intéressant avec lequel vous voulez interagir, copiez simplement son URL et collez-la dans la recherche de votre propre instance. Votre instance se connectera à l'autre (en supposant que la liste d'autorisation/de blocage le permette), et vous affichera directement le contenu distant, afin que vous puissiez suivre une communauté ou commenter un message. Voici quelques exemples de recherches qui fonctionnent : - -- `!main@lemmy.ml` (Communauté) -- `@nutomic@lemmy.ml` (Utilisateur) -- `https://lemmy.ml/c/programming` (Communauté) -- `https://lemmy.ml/u/nutomic` (Utilisateur) -- `https://lemmy.ml/post/123` (Publication) -- `https://lemmy.ml/comment/321` (Commentaire) - -Vous pouvez voir la liste des instances liées en suivant le lien "Instances" au bas de n'importe quelle page de Lemmy. - -## Recherche de communautés - -Si vous recherchez une communauté pour la première fois, 20 messages sont récupérés initialement. Ce n'est que si au moins un utilisateur de votre instance s'inscrit à la communauté distante que celle-ci enverra des mises à jour à votre instance. Les mises à jour incluent : - -- Nouveaux messages, commentaires -- Votes -- Modifications et suppressions de messages et de commentaires -- Actions des modérateurs - -Vous pouvez copier l'URL de la communauté depuis la barre d'adresse de votre navigateur et l'insérer dans votre champ de recherche. Attendez quelques secondes, le message apparaîtra ci-dessous. Pour l'instant, il n'y a pas d'indicateur de chargement pour la recherche, donc attendez quelques secondes si elle n'affiche "aucun résultat". - -## Récupération des messages - -Collez l'URL d'un message dans le champ de recherche de votre instance Lemmy. Attendez quelques secondes jusqu'à ce que le message apparaisse. Cette opération permet également de récupérer le profil de la communauté et celui de l'auteur du message. - -## Récupération des commentaires - -Si vous trouvez un commentaire intéressant sous un post sur une autre instance, vous pouvez trouver le symbole d'un lien sous le commentaire dans le menu à 3 points. Copiez ce lien. Il ressemble à `https://lemmy.ml/post/56382/comment/40796`. Enlevez la partie `post/XXX` et mettez-le dans votre barre de recherche. Pour cet exemple, recherchez `https://lemmy.ml/comment/40796`. Ce commentaire, tous les commentaires parents, les utilisateurs, la communauté et le message correspondant sont récupérés depuis l'instance distante, s'ils ne sont pas connus localement. - -Les commentaires parents ne sont pas récupérés ! Si vous voulez plus de commentaires sur des articles plus anciens, vous devez rechercher chacun d'entre eux comme décrit ci-dessus. diff --git a/src/fr/administration/install_ansible.md b/src/fr/administration/install_ansible.md deleted file mode 100644 index 5d668c9..0000000 --- a/src/fr/administration/install_ansible.md +++ /dev/null @@ -1,26 +0,0 @@ -# Installation Ansible - -Ceci est la même chose que l'[installation Docker](install_docker.md), sauf qu'Ansible s'occupe de tout automatiquement. Il fait aussi des choses supplémentaires comme la configuration de TLS et de l'email pour votre instance Lemmy. - -Tout d'abord, vous devez [installer Ansible sur votre ordinateur local](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). Vous devez également installer le [Docker SDK pour Python](https://pypi.org/project/docker/) en utilisant `pip install docker` ([plus d'informations dans la documentation Ansible](https://docs.ansible.com/ansible/latest/collections/community/docker/docker_compose_module.html#id4)). - -Exécutez ensuite les commandes suivantes sur votre ordinateur local : - -```bash -git clone https://github.com/LemmyNet/lemmy.git -cd lemmy/ansible/ -cp inventory.example inventory -nano inventory # entrez votre serveur, domaine, email de contact -# Si la commande ci-dessous échoue, vous devrez peut-être décommenter cette ligne -# Dans le fichier ansible.cfg : -# interpreter_python=/usr/bin/python3 -ansible-playbook lemmy.yml --become -``` - -Pour mettre à jour une nouvelle version, il suffit d'exécuter la commande suivante dans votre dépôt Lemmy local : - -```bash -git pull origin main -cd ansible -ansible-playbook lemmy.yml --become -``` diff --git a/src/fr/administration/install_docker.md b/src/fr/administration/install_docker.md deleted file mode 100644 index 7780c2a..0000000 --- a/src/fr/administration/install_docker.md +++ /dev/null @@ -1,54 +0,0 @@ -# Installation de Docker - -Assurez-vous que vous avez à la fois docker et docker-compose(>=`1.24.0`) installés. Sur Ubuntu, exécutez simplement `apt install docker-compose docker.io`. Suivant, - -```bash -# créez un dossier pour les fichiers lemmy. l'emplacement n'a pas d'importance, vous pouvez le mettre où vous voulez -mkdir /lemmy -cd /lemmy - -# télécharger les fichiers de configuration par défaut -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/docker-compose.yml -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/lemmy.hjson - -# Définir les permissions correctes pour le dossier pictrs -mkdir -p volumes/pictrs -sudo chown -R 991:991 volumes/pictrs -``` - -Ouvrez votre `docker-compose.yml`, et assurez-vous que `LEMMY_EXTERNAL_HOST` pour `lemmy-ui` est réglé sur votre hôte correct. - -``` -- LEMMY_INTERNAL_HOST=lemmy:8536 -- LEMMY_EXTERNAL_HOST=votre-domaine.com -- LEMMY_HTTPS=false -``` - -Si vous souhaitez un mot de passe différent pour la base de données, vous devez également le changer dans le fichier `docker-compose.yml` **avant** votre première exécution. - -Après cela, jetez un oeil au [fichier de configuration](configuration.md) nommé `lemmy.hjson`, et ajustez-le, en particulier le nom d'hôte, et éventuellement le mot de passe de la base de données. Puis lancez : - -`docker-compose up -d` - -Vous pouvez accéder au lemmy-ui à l'adresse `http://localhost:1235`. - -Pour rendre Lemmy disponible en dehors du serveur, vous devez configurer un proxy inverse, comme Nginx. Un exemple de configuration de Nginx (https://raw.githubusercontent.com/LemmyNet/lemmy/main/ansible/templates/nginx.conf), peut être configuré avec : - -```bash -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/ansible/templates/nginx.conf -# Remplacer les {{ variables}} -# Le lemmy_port par défaut est 8536 -# Le lemmy_ui_port par défaut est 1235 -sudo mv nginx.conf /etc/nginx/sites-enabled/lemmy.conf -``` - -Vous devrez également configurer TLS, par exemple avec [Let's Encrypt](https://letsencrypt.org/). Après cela, vous devez redémarrer Nginx pour recharger la configuration. - -## Mise à jour - -Pour mettre à jour la dernière version, vous pouvez changer manuellement la version dans `docker-compose.yml`. Alternativement, récupérez la dernière version depuis notre dépôt git : - -```bash -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/prod/docker-compose.yml -docker-compose up -d -``` diff --git a/src/fr/administration/other_installation_methods.md b/src/fr/administration/other_installation_methods.md deleted file mode 100644 index 4d3f102..0000000 --- a/src/fr/administration/other_installation_methods.md +++ /dev/null @@ -1,15 +0,0 @@ -# Autres méthodes d'installation - -Disclaimer : ces méthodes d'installation ne sont pas recommandées par les développeurs de Lemmy. Si vous rencontrez des problèmes, vous devez les résoudre vous-même ou demander aux auteurs respectifs. Si vous remarquez des bugs de Lemmy sur une instance installée de cette manière, veuillez le mentionner dans le rapport de bug. - -## Installation de Lemmy sans Docker - -Instructions pour installer Lemmy nativement, sans s'appuyer sur Docker. - -[https://lemmy.ca/post/1066](https://lemmy.ca/post/1066) - -## Installation sur Amazon Web Services (AWS) - -Ce document contient les définitions de l'infrastructure nécessaire pour déployer Lemmy sur [AWS](https://aws.amazon.com/) à l'aide de leur [Cloud Development Kit](https://docs.aws.amazon.com/cdk/latest/guide/home.html). - -[https://github.com/jetbridge/lemmy-cdk](https://github.com/jetbridge/lemmy-cdk) diff --git a/src/fr/administration/troubleshooting.md b/src/fr/administration/troubleshooting.md deleted file mode 100644 index ec5f2c5..0000000 --- a/src/fr/administration/troubleshooting.md +++ /dev/null @@ -1,67 +0,0 @@ -# Dépannage - -Différents problèmes qui peuvent survenir sur une nouvelle instance, et comment les résoudre. - -De nombreuses fonctionnalités de Lemmy dépendent d'une configuration correcte du reverse proxy. Assurez-vous que la vôtre est équivalente à notre [configuration nginx](https://github.com/LemmyNet/lemmy/blob/main/ansible/templates/nginx.conf). - -## Général - -### Logs - -Pour les problèmes frontaux, vérifiez la [console du navigateur](https://webmasters.stackexchange.com/a/77337) pour tout message d'erreur. - -Pour les logs du serveur, exécutez `docker-compose logs -f lemmy` dans votre dossier d'installation. Vous pouvez aussi faire `docker-compose logs -f lemmy lemmy-ui pictrs` pour obtenir les logs de différents services. - -Si cela ne donne pas assez d'informations, essayez de changer la ligne `RUST_LOG=error` dans `docker-compose.yml` en `RUST_LOG=info` ou `RUST_LOG=verbose`, puis faites `docker-compose restart lemmy`. - -### La création de l'utilisateur admin ne fonctionne pas - -Assurez-vous que le websocket fonctionne correctement, en vérifiant les erreurs dans la console du navigateur. Dans nginx, les en-têtes suivants sont importants pour cela : - -``` -proxy_http_version 1.1; -proxy_set_header Upgrade $http_upgrade; -proxy_set_header Connection "upgrade"; -``` - -### Erreur de limite de débit lorsque de nombreux utilisateurs accèdent au site - -Vérifiez que les en-têtes `X-Real-IP` et `X-Forwarded-For` sont envoyés à Lemmy par le reverse proxy. Sinon, il comptabilisera toutes les actions dans la limite de débit de l'IP du reverse proxy. Dans nginx, cela devrait ressembler à ceci : - -``` -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header Host $host; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -``` - -## Fédération - -### Les autres instances ne peuvent pas récupérer les objets locaux (communauté, post, etc) - -Votre reverse proxy (par exemple nginx) doit transmettre les requêtes avec l'en-tête `Accept : application/activity+json` au backend. Ceci est géré par les lignes suivantes : - -``` -set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}"; -if ($http_accept = "application/activity+json") { -set $proxpass "http://0.0.0.0:{{ lemmy_port }}"; -} -if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { -set $proxpass "http://0.0.0.0:{{ lemmy_port }}"; -} -proxy_pass $proxpass; -``` - -Vous pouvez vérifier qu'il fonctionne correctement en exécutant les commandes suivantes, qui devraient toutes renvoyer un JSON valide : - -``` -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/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 -``` - -### La récupération d'objets distants fonctionne, mais la publication/le commentaire dans les communautés distantes échoue. - -Vérifiez que [la fédération est autorisée sur les deux instances](../federation/administration.md#instance-allowlist-and-blocklist). - -Assurez-vous également que l'heure est correctement réglée sur votre serveur. Les activités sont signées avec un horodatage et seront rejetées si l'écart est supérieur à 10 secondes. diff --git a/src/fr/client_development/websocket_api.md b/src/fr/client_development/websocket_api.md deleted file mode 100644 index 430299e..0000000 --- a/src/fr/client_development/websocket_api.md +++ /dev/null @@ -1,3 +0,0 @@ -# WebSocket API - -[Lemmy WebSocket API 2.0 documentation](https://join-lemmy.org/api/index.html) diff --git a/src/fr/code_of_conduct.md b/src/fr/code_of_conduct.md deleted file mode 100644 index fe475e8..0000000 --- a/src/fr/code_of_conduct.md +++ /dev/null @@ -1,35 +0,0 @@ -# Code of Conduct - -- Nous nous engageons à mettre à disposition un environnement amical, sain et accueillant pour tous, sans distinction de niveau d'expérience, d'identité et d'expression de genre, d'orientation sexuelle, de handicap, d'apparence corporelle, de corpulence, de race, d'ethnie, d'âge, de religion, de nationalité ou de toute autre caractéristique similaire. -- Nous vous remercions d’éviter d'utiliser une identité ayant une quelconque connotation sexuelle ou autres pseudonymes qui pourraient écarter d'un environnement amical, sain et accueillant pour tous. -- Nous vous remercions aussi d’être gentil et courtois. Il n'y a pas besoin d'être méchant ou malpoli. -- Respectez le fait que les personnes ont des opinions différentes et que chaque choix de concept ou d'implémentation comporte de nombreux compromis et différents coûts. Il y a rarement une bonne réponse pour tout le monde. -- Veillez à éviter la critique non structurée dès que possible. Si vous avez de solides idées avec lesquelles expérimenter, faites un fork et voyez comment cela fonctionne. -- Nous vous exclurons des interactions si vous insultez, rabaissez ou harcelez quelqu'un. Ceci n'est pas un comportement toléré. Nous interprétons le terme harcèlement comme incluant la définition du [Citizen Code of Conduct](https://github.com/stumpsyn/policies/blob/master/citizen_code_of_conduct.md); si le concept de harcèlement ne vous paraît pas parfaitement clair, s'il vous plaît lisez cette définition. En particulier nous ne tolérons pas les comportements qui excluent les gens dans des groupes sociaux marginalisés. -- Le harcèlement privé est lui aussi inacceptable. Peu importe qui vous êtes, si vous avez le sentiment que vous avez été harcelé ou mis en situation inconfortable par un membre de la communauté, contactez immédiatement un des opérateurs du canal de discussion ou n'importe qui de L'équipe de modération de Lemmy . Que vous soyez un contributeur régulier ou un nouveau, nous tenons à faire de la communauté un endroit sain, et nous sommes là pour vous aider. -- De même, les comportements comme le spam, le troll, l'injure, la provocation ou tout autre mécanisme de détournement d'attention ne sont pas les bienvenus. - -[**Écrire à l'équipe de modération sur Mastodon**](https://mastodon.social/@LemmyDev) - -[**Contacter l'équipe de modération par courriel**](mailto:contact@lemmy.ml) - -## Moderation - -Ici se trouvent les politiques de maintien de nos standards de conduite communautaire. Si vous pensez qu’un fil nécessite une modération, contactez l'équipe de modération Lemmy. - -1. Les remarques qui enfreignent les standards de conduite de Lemmy, incluant les remarques haineuses, blessantes, oppressives ou excluantes ne sont pas autorisées. (Jurer est autorisé, mais jamais envers une autre personne, et jamais de façon haineuse.) -2. Les remarques que la modération considère inappropriées, qu’elles soient listées dans le code de conduite ou pas, ne sont pas non plus autorisées. -3. La modération répondra d’abord à ce genre de remarques par un avertissement. -4. Si l’avertissement est ignoré, la personne sera « exclue », c.-à-d. éjectée du canal de communication pour se calmer. -5. Si la personne revient et continue à causer des problèmes, elle sera bannie, c.-à-d. définitivement exclue. -6. Les modérateurs peuvent choisir à leur discrétion de débannir une personne si c’était sa première infraction et qu’elle offre une véritable excuse à la personne offensée. -7. Si un·e modérateur/trice bannit quelqu’un·e et vous pensez que c’est injustifié, adressez-vous à ce·tte modérateur/trice ou un·e autre, en privé. Les plaintes sur le canal à propos des bannissements ne sont pas autorisées. -8. La modération est tenue à un plus haut standard que le reste des membres de la communauté. Si un·e modérateur/trice cause une situation inappropriée, moins de marge lui sera donnée que les autres. - -Dans la communauté Lemmy, nous nous efforçons de nous occuper les uns des autres. N’essayez pas simplement d’être techniquement irréprochable, essayez de faire au mieux. En particulier, évitez de jouer avec des sujet offensants ou sensibles, en particulier si c’est hors-sujet; cela mène trop souvent à des disputes inutiles, des sentiments heurtés et une confiance endommagée; pire, cela peut faire totalement partir des gens de la communauté. - -Et si une personne relève quelque chose que vous avez dit ou fait, ne soyez pas sur la défensive. Arrêtez simplement de faire ce qui vous a été reproché et excusez-vous. Même si vous pensez avoir été mal interprété ou accusé injustement, il y a probablement quelque chose que vous pourriez avoir mieux communiqué — rappelez-vous que c’est votre responsabilité de mettre à l’aise les autres Rustacé·e·s. Tout le monde veut bien s’entendre et nous sommes ici en premier lieu car nous voulons parler de technologie cool. Vous verrez que les gens accepteront votre bonne foi et vous pardonneront si vous faites en sorte de gagner leur confiance. - -Les règles d’application listées ci-dessus s’appliquent à tous les lieux officiels de Lemmy; incluant les dépôts git [github.com/LemmyNet](https://github.com/LemmyNet) et [yerbamate.ml/LemmyNet](https://yerbamate.ml/LemmyNet), la [chaîne Matrix](https://matrix.to/#/!BZVTUuEiNmRcbFeLeI:matrix.org); [lemmy.ml](https://lemmy.ml) et autres instances sous le même nom de domaine. Pour les autres projets adoptant le code de conduite Lemmy, contactez la maintenance de ces projets pour son application. Si vous souhaitez utiliser ce code de conduite pour votre propre projet, envisagez de mentionner explicitement votre politique de modération ou faites une copie avec votre propre politique de modération pour éviter toute confusion. - -Adapté du [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct), qui est lui-même basé du [Node.js Policy on Trolling](http://blog.izs.me/post/30036893703/policy-on-trolling) ainsi que [Contributor Covenant v1.3.0](https://www.contributor-covenant.org/version/1/3/0/). diff --git a/src/fr/federation/administration.md b/src/fr/federation/administration.md deleted file mode 100644 index 4578505..0000000 --- a/src/fr/federation/administration.md +++ /dev/null @@ -1,28 +0,0 @@ -# Administration de la fédération - -Note : La fédération ActivityPub est encore en cours de développement. Nous vous recommandons de ne l'activer que sur les instances de test pour le moment. - -Pour activer la fédération, changez le paramètre `federation.enabled` en `true` dans `lemmy.hjson`, et redémarrez Lemmy. - -La fédération ne démarre pas automatiquement, mais doit être déclenchée manuellement par la recherche. Pour ce faire, vous devez entrer une référence à un objet distant, tel que : - -- `!main@lemmy.ml` (Communauté) -- `@nutomic@lemmy.ml` (Utilisateur) -- `https://lemmy.ml/c/programming` (Communauté) -- `https://lemmy.ml/u/nutomic` (Utilisateur) -- `https://lemmy.ml/post/123` (Publication) -- `https://lemmy.ml/comment/321` (Commentaire) - -Pour un aperçu du fonctionnement technique de la fédération dans Lemmy, consultez notre [Aperçu de la fédération](contributing_federation_overview.md). - -## Allowlist et blocklist de l'instance - -La section fédération de la configuration de Lemmy a deux variables `allowed_instances` et `blocked_instances`. Celles-ci contrôlent avec quelles autres instances Lemmy va se fédérer. Les deux paramètres prennent une liste de domaines séparés par des virgules, par exemple `lemmy.ml,exemple.com`. Vous pouvez modifier ces paramètres soit via `/admin`, soit directement sur le système de fichiers du serveur. - -Il est important de noter que ces paramètres n'affectent que l'envoi et la réception de données entre les instances. Si vous autorisez la fédération avec une certaine instance, puis la supprimez de la liste d'autorisation, cela n'affectera pas les données fédérées précédemment. Ces communautés, utilisateurs, messages et commentaires seront toujours affichés. Ils ne seront simplement plus mis à jour. Et même si une instance est bloquée, elle peut toujours récupérer et afficher les données publiques de votre instance. - -Par défaut, les valeurs `allowed_instances` et `blocked_instances` sont vides, ce qui signifie que Lemmy se fédérera avec toute instance compatible. Nous ne recommandons pas cela, car les outils de modération ne sont pas encore prêts à traiter les instances malveillantes. - -Ce que nous recommandons est de mettre une liste d'instances de confiance dans `allowed_instances`, et de ne se fédérer qu'avec celles-ci. Notez que les deux parties doivent s'ajouter mutuellement à leurs `allowed_instances` pour permettre une fédération bidirectionnelle. - -Alternativement, vous pouvez aussi utiliser une fédération basée sur une liste de blocage. Dans ce cas, ajoutez les domaines des instances avec lesquelles vous ne voulez _pas_ vous fédérer. Vous ne pouvez définir que l'un des deux, `allowed_instances` et `blocked_instances`, car définir les deux n'a pas de sens. diff --git a/src/fr/federation/lemmy_protocol.md b/src/fr/federation/lemmy_protocol.md deleted file mode 100644 index 0dfb321..0000000 --- a/src/fr/federation/lemmy_protocol.md +++ /dev/null @@ -1,782 +0,0 @@ -# Protocole de la Fédération Lemmy - -Le protocole Lemmy (ou protocole de la fédération Lemmy) est un sous-ensemble strict du [protocole ActivityPub](https://www.w3.org/TR/activitypub/). Toute déviation du protocole ActivityPub est un bug dans Lemmy ou dans cette documentation (ou les deux). - -Ce document s'adresse aux développeurs qui sont familiers avec les protocoles ActivityPub et ActivityStreams. Il donne un aperçu détaillé des acteurs, objets et activités utilisés par Lemmy. - -Avant de lire ce document, jetez un coup d'œil à notre [Aperçu de la fédération](contributing_federation_overview.md) pour avoir une idée du fonctionnement de la fédération Lemmy à un haut niveau. - -Lemmy ne suit pas encore la spécification ActivityPub à tous égards. Par exemple, nous ne définissons pas un contexte valide en indiquant nos champs de contexte. Nous ignorons également les champs comme `inbox`, `outbox` ou `endpoints` pour les acteurs distants, et supposons que tout est Lemmy. Pour un aperçu des déviations, lisez [#698](https://github.com/LemmyNet/lemmy/issues/698). Elles seront corrigées dans un futur proche. - -Lemmy est également très peu flexible en ce qui concerne les activités et les objets entrants. Ils doivent être exactement identiques aux exemples ci-dessous. Des choses comme avoir un tableau au lieu d'une valeur unique, ou un ID d'objet au lieu de l'objet complet entraîneront une erreur. - -Dans les tableaux suivants, le terme "obligatoire" indique si Lemmy accepte ou non une activité entrante sans ce champ. Lemmy lui-même inclura toujours tous les champs non vides. - - - -- [Contexte](#contexte) -- [Acteurs](#acteurs) - - [Communauté](#communauté) - - [Boîte de sortie communautaire](#boîte-de-sortie-communautaire) - - [Suiveurs de la communauté](#suiveurs-de-la-communauté) - - [Modérateurs de la communauté](#modérateurs-de-la-communauté) - - [Utilisateur](#utilisateur) - - [Boîte de sortie de l'utilisateur](#boîte-de-sortie-de-lutilisateur) -- [Objets](#objets) - - [Publication](#publication) - - [Commentaire](#commentaire) - - [Message privé](#message-privé) -- [Activités](#activités) - - [De l'utilisateur à la communauté](#utilisateur-à-la-communauté) - - [Suivre](#suivre) - - [Ne pas suivre](#ne-pas-suivre) - - [Créer ou mettre à jour un poste](#créer-ou-mettre-à-jour-un-message) - - [Créer ou mettre à jour un commentaire](#créer-ou-mettre-à-jour-un-commentaire) - - [Aimer le message ou le commentaire](#jaime-un-message-ou-un-commentaire) - - [Ne pas aimer le message ou le commentaire](#naime-pas-le-message-ou-le-commentaire) - - [Supprimer un message ou un commentaire](#supprimer-un-message-ou-un-commentaire) - - [Retirer un message ou le commentaire](#retirer-un-message-ou-le-commentaire) - - [Défaire](#defaire) - - [Ajouter un modérateur](#ajouter-un-mod) - - [Supprimer un modérateur](#supprimer-un-mod) - - [De la communauté à l'utilisateur](#communauté-à-lutilisateur) - - [Accepter Suivre](#accepter-un-suivi) - - [Annoncer](#annoncer) - - [Retirer ou supprimer une communauté](#retirer-ou-supprimer-une-communauté) - - [Restaurer une communauté retiré ou effacée](#rétablir-la-communauté-supprimée-ou-retirée) - - [D'utilisateur à utilisateur](#utilisateur-à-utilisateur) - - [Créer ou mettre à jour un message privé](#créer-ou-mettre-à-jour-un-message-privé) - - [Supprimer un message privé](#supprimer-un-message-privé) - - [Défaire Supprimer un message privé](#annuler-la-suppression-dun-message-privé)⏎ - - - -## Contexte - -```json -{ - "@context": [ - "https://www.w3.org/ns/activitystreams", - { - "moderators": "as:moderators", - "sc": "http://schema.org#", - "stickied": "as:stickied", - "sensitive": "as:sensitive", - "pt": "https://join.lemmy.ml#", - "comments_enabled": { - "type": "sc:Boolean", - "id": "pt:commentsEnabled" - } - }, - "https://w3id.org/security/v1" - ] -} -``` - -Le contexte est identique pour toutes les activités et tous les objets. - -## Acteurs - -### Communauté - -Un acteur automatisé. Les utilisateurs peuvent lui envoyer des messages ou des commentaires, que la communauté transmet à ses adeptes sous la forme d'un `Announce`. - -Envoie des activités à l'utilisateur : `Accept/Follow`, `Announce`. - -Reçoit des activités de l'utilisateur : `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (seulement admin/mod), `Delete` (seul créateur), `Undo` (uniquement pour ses propres actions). - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main", - "type": "Group", - "preferredUsername": "main", - "name": "The Main Community", - "sensitive": false, - "content": "Welcome to the default community!", - "mediaType": "text/html", - "source": { - "content": "Welcome to the default community!", - "mediaType": "text/markdown" - }, - "icon": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/Z8pFFb21cl.png" - }, - "image": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/Wt8zoMcCmE.jpg" - }, - "inbox": "https://enterprise.lemmy.ml/c/main/inbox", - "outbox": "https://enterprise.lemmy.ml/c/main/outbox", - "followers": "https://enterprise.lemmy.ml/c/main/followers", - "moderators": "https://enterprise.lemmy.ml/c/main/moderators", - "endpoints": { - "sharedInbox": "https://enterprise.lemmy.ml/inbox" - }, - "published": "2020-10-06T17:27:43.282386+00:00", - "updated": "2020-10-08T11:57:50.545821+00:00", - "publicKey": { - "id": "https://enterprise.lemmy.ml/c/main#main-key", - "owner": "https://enterprise.lemmy.ml/c/main", - "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9JJ7Ybp/H7iXeLkWFepg\ny4PHyIXY1TO9rK3lIBmAjNnkNywyGXMgUiiVhGyN9yU7Km8aWayQsNHOkPL7wMZK\nnY2Q+CTQv49kprEdcDVPGABi6EbCSOcRFVaUjjvRHf9Olod2QP/9OtX0oIFKN2KN\nPIUjeKK5tw4EWB8N1i5HOuOjuTcl2BXSemCQLAlXerLjT8xCarGi21xHPaQvAuns\nHt8ye7fUZKPRT10kwDMapjQ9Tsd+9HeBvNa4SDjJX1ONskNh2j4bqHHs2WUymLpX\n1cgf2jmaXAsz6jD9u0wfrLPelPJog8RSuvOzDPrtwX6uyQOl5NK00RlBZwj7bMDx\nzwIDAQAB\n-----END PUBLIC KEY-----\n" - } -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `preferredUsername` | oui | Nom de l'acteur | -| `name` | oui | Titre de la communauté | -| `sensitive` | oui | True indique que tous les messages dans la communauté sont nsfw | -| `attributedTo` | oui | D'abord le créateur de la communauté, puis tous les autres modérateurs. | -| `content` | non | Texte pour la barre latérale de la communauté, contenant généralement une description et des règles. | -| `icon` | non | Icône, affichée à côté du nom de la communauté | -| `image` | non | Image de bannière, affichée en haut de la page de la communauté | -| `inbox` | non | URL de la boîte de réception ActivityPub | -| `outbox` | non | ActivityPub URL de la boîte de sortie, contient uniquement les 20 derniers messages, sans commentaires, votes ou autres activités. | -| `followers` | non | URL de la collection de suiveurs, contenant uniquement le nombre de suiveurs, sans référence à des suiveurs individuels. | -| `endpoints` | non | Contient l'URL de la boîte de réception partagée | -| `published` | non | Date à laquelle la communauté a été créée pour la première fois | -| `updated` | non | Date à laquelle la communauté a été modifiée pour la dernière fois | -| `publicKey` | oui | La clé publique utilisée pour vérifier les signatures de cet acteur. | - -#### Boîte de sortie communautaire - -```json -{ - "@context": ..., - "items": [ - ... - ], - "totalItems": 3, - "id": "https://enterprise.lemmy.ml/c/main/outbox", - "type": "OrderedCollection" -} -``` - -La boîte d'envoi ne contient pour l'instant que les activités Créer/Poster `Create/Post`. - -#### Suiveurs de la communauté - -```json -{ - "totalItems": 2, - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main/followers", - "type": "Collection" -} -``` - -La collection de followers est uniquement utilisée pour exposer le nombre de followers. Les identifiants des acteurs ne sont pas inclus, afin de protéger la vie privée des utilisateurs. - -#### Modérateurs de la communauté - -```json -{ - "items": [ - "https://enterprise.lemmy.ml/u/picard", - "https://enterprise.lemmy.ml/u/riker" - ], - "totalItems": 2, - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main/moderators", - "type": "OrderedCollection" -} -``` - -### Utilisateur - -Une personne, interagit principalement avec la communauté où elle envoie et reçoit des messages/commentaires. Peut également créer et modérer des communautés, et envoyer des messages privés à d'autres utilisateurs. - -Envoie des activités à la communauté : Suivre `Follow`, Annuler/Suivre `Undo/Follow`, Créer `Create`, Mettre à jour `Update`, Aimer `Like`, Ne pas aimer `Dislike`, Retirer `Remove` (seulement admin/mod), Supprimer `Delete` (seulement créateur), Défaire `Undo` (seulement pour ses propres actions). - -Reçoit des activités de la communauté : Accepter/Suivre `Accept/Follow`, Annoncer `Announce`. - -Envoie et reçoit des activités de/vers d'autres utilisateurs : Créer/Note `Create/Note`, Mettre à jour/Note `Update/Note`, Supprimer/Note `Delete/Note`, Défaire/Supprimer/Note `Undo/Delete/Note` (toutes celles relatives aux messages privés) - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/u/picard", - "type": "Person", - "preferredUsername": "picard", - "name": "Jean-Luc Picard", - "content": "The user bio", - "mediaType": "text/html", - "source": { - "content": "The user bio", - "mediaType": "text/markdown" - }, - "icon": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/DS3q0colRA.jpg" - }, - "image": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/XenaYI5hTn.png" - }, - "inbox": "https://enterprise.lemmy.ml/u/picard/inbox", - "endpoints": { - "sharedInbox": "https://enterprise.lemmy.ml/inbox" - }, - "published": "2020-10-06T17:27:43.234391+00:00", - "updated": "2020-10-08T11:27:17.905625+00:00", - "publicKey": { - "id": "https://enterprise.lemmy.ml/u/picard#main-key", - "owner": "https://enterprise.lemmy.ml/u/picard", - "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyH9iH83+idw/T4QpuRSY\n5YgQ/T5pJCNxvQWb6qcCu3gEVigfbreqZKJpOih4YT36wu4GjPfoIkbWJXcfcEzq\nMEQoYbPStuwnklpN2zj3lRIPfGLht9CAlENLWikTUoW5kZLyU6UQtOGdT2b1hDuK\nsUEn67In6qYx6pal8fUbO6X3O2BKzGeofnXgHCu7QNIuH4RPzkWsLhvwqEJYP0zG\nodao2j+qmhKFsI4oNOUCGkdJejO7q+9gdoNxAtNNKilIOwUFBYXeZJb+XGlzo0X+\n70jdJ/xQCPlPlItU4pD/0FwPLtuReoOpMzLi20oDsPXJBvn+/NJaxqDINuywcN5p\n4wIDAQAB\n-----END PUBLIC KEY-----\n" - } -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------------- | ----------- | ------------------------------------------------------------------------ | -| `preferredUsername` | oui | Nom de l'acteur | -| `name` | non | Nom d'affichage de l'utilisateur | -| `content` | non | Biographie de l'utilisateur | -| `icon` | non | L'avatar de l'utilisateur, affiché à côté de son nom d'utilisateur | -| `image` | non | La bannière de l'utilisateur, affichée en haut du profil | -| `inbox` | non | URL de la boîte de réception d'ActivityPub | -| `endpoints` | non | Contient l'URL de la boîte de réception partagée | -| `published` | non | La date de l'inscription de l'utilisateur. | -| `updated` | non | Date à laquelle le profil de l'utilisateur a été modifié en dernier lieu | -| `publicKey` | oui | La clé publique utilisée pour vérifier les signatures de cet acteur | - -#### Boîte de sortie de l'utilisateur - -```json -{ - "items": [], - "totalItems": 0, - "@context": ..., - "id": "http://lemmy-alpha:8541/u/lemmy_alpha/outbox", - "type": "OrderedCollection" -} -``` - -La boîte de réception de l'utilisateur n'a pas encore été implémentée et n'est qu'un substitut pour les implémentations de ActivityPub qui en ont besoin. - -## Objets - -### Publication - -Une page avec un titre, une URL facultative et un contenu textuel. L'URL mène souvent à une image, auquel cas une vignette est incluse. Chaque message appartient à une seule communauté. - -```json -{ - "@context": ..., - "id": "https://voyager.lemmy.ml/post/29", - "type": "Page", - "attributedTo": "https://voyager.lemmy.ml/u/picard", - "to": [ - "https://voyager.lemmy.ml/c/main", - "https://www.w3.org/ns/activitystreams#Public" - ], - "name": "Test thumbnail 2", - "content": "blub blub", - "mediaType": "text/html", - "source": { - "content": "blub blub", - "mediaType": "text/markdown" - }, - "url": "https://voyager.lemmy.ml:/pictrs/image/fzGwCsq7BJ.jpg", - "image": { - "type": "Image", - "url": "https://voyager.lemmy.ml/pictrs/image/UejwBqrJM2.jpg" - }, - "commentsEnabled": true, - "sensitive": false, - "stickied": false, - "published": "2020-09-24T17:42:50.396237+00:00", - "updated": "2020-09-24T18:31:14.158618+00:00" -} -``` - -| Nom du champ | Obligatoire | Description | -| ----------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------- | -| `attributedTo` | oui | ID de l'utilisateur qui a créé ce message | -| `to` | oui | ID de la communauté où il a été posté | -| `name` | oui | Titre du message | -| `content` | non | Corps du message | -| `url` | non | Un lien arbitraire à partager | -| `image` | non | Miniature pour `url`, seulement présent si c'est un lien d'image | -| `commentsEnabled` | oui | False indique que le message est verrouillé, et qu'aucun commentaire ne peut être ajouté | -| `sensitive` | oui | True marque le message comme NSFW, brouille la vignette et la cache aux utilisateurs dont le paramètre NSFW est désactivé | -| `stickied` | oui | Le message est affiché en haut de la page de la communauté. | -| `published` | non | La date et l'heure de création de l'article. | -| `updated` | non | La date à laquelle le message a été édité (non présent s'il n'a jamais été édité). | - -### Commentaire - -Une réponse à un message, ou une réponse à un autre commentaire. Ne contient que du texte (y compris des références à d'autres utilisateurs ou communautés). Lemmy affiche les commentaires sous forme d'arborescence. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/comment/95", - "type": "Note", - "attributedTo": "https://enterprise.lemmy.ml/u/picard", - "to": "https://www.w3.org/ns/activitystreams#Public", - "content": "mmmk", - "mediaType": "text/html", - "source": { - "content": "mmmk", - "mediaType": "text/markdown" - }, - "inReplyTo": [ - "https://enterprise.lemmy.ml/post/38", - "https://voyager.lemmy.ml/comment/73" - ], - "published": "2020-10-06T17:53:22.174836+00:00", - "updated": "2020-10-06T17:53:22.174836+00:00" -} -``` - -| Nom du champ | Obligatoire | Description | -| -------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `attributedTo` | oui | ID de l'utilisateur qui a créé le commentaire | -| `to` | oui | Communauté où le commentaire a été fait | -| `content` | oui | Le texte du commentaire | -| `inReplyTo` | oui | IDs du message où ce commentaire a été fait, et du commentaire parent. S'il s'agit d'un commentaire de haut niveau, `inReplyTo` ne contient que l'article. | -| `published` | non | La date de création du commentaire. | -| `updated` | non | Date à laquelle le commentaire a été modifié (non présent s'il n'a jamais été modifié) | - -### Message privé - -Un message direct d'un utilisateur à un autre. Il ne peut pas inclure d'autres utilisateurs. Le threading n'est pas encore implémenté, donc le champ `inReplyTo` est manquant. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/private_message/34", - "type": "Note", - "attributedTo": "https://enterprise.lemmy.ml/u/picard", - "to": "https://voyager.lemmy.ml/u/janeway", - "content": "test", - "source": { - "content": "test", - "mediaType": "text/markdown" - }, - "mediaType": "text/markdown", - "published": "2020-10-08T19:10:46.542820+00:00", - "updated": "2020-10-08T20:13:52.547156+00:00" -} -``` - -| Nom du champ | Obligatoire | Description | -| -------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------- | -| `attributedTo` | ID de l'utilisateur qui a créé ce message privé | -| `to` | ID du destinataire | -| `content` | oui | Le texte du message privé | -| `published` | non | Date à laquelle le message a été créé | -| `updated` | non | Date à laquelle le message a été modifié (non présent s'il n'a jamais été modifié) | - -## Activités - -### Utilisateur à la communauté - -#### Suivre - -Lorsque l'utilisateur clique sur "Subscribe" dans une communauté, un `Follow` est envoyé. La communauté répond automatiquement par un `Accept/Follow`. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/follow/2e4784b7-4edf-4fa1-a352-674d5d5f8891", - "type": "Follow", - "actor": "https://enterprise.lemmy.ml/u/picard", - "to": "https://ds9.lemmy.ml/c/main", - "object": "https://ds9.lemmy.ml/c/main" -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | --------------------------------------------- | -| `actor` | oui | L'utilisateur qui envoie la demande de suivi. | -| `object` | oui | La communauté à suivre | - -#### Ne pas suivre - -Cliquer sur le bouton de désabonnement d'une communauté provoque l'envoi d'un `Undo/Follow`. La communauté supprime l'utilisateur de sa liste de followers après l'avoir reçu. - -```json -{ - "@context": ..., - "id": "http://lemmy-alpha:8541/activities/undo/2c624a77-a003-4ed7-91cb-d502eb01b8e8", - "type": "Undo", - "actor": "http://lemmy-alpha:8541/u/lemmy_alpha", - "to": "http://lemmy-beta:8551/c/main", - "object": { - "@context": ..., - "id": "http://lemmy-alpha:8541/activities/follow/f0d732e7-b1e7-4857-a5e0-9dc83c3f7ee8", - "type": "Follow", - "actor": "http://lemmy-alpha:8541/u/lemmy_alpha", - "object": "http://lemmy-beta:8551/c/main" - } -} -``` - -#### Créer ou mettre à jour un message - -Lorsqu'un utilisateur crée un nouveau message, celui-ci est envoyé à la communauté concernée. La modification d'un message précédemment créé envoie une activité presque identique, sauf que le type `type` est Mise à jour `Update`. Nous ne supportons pas encore les mentions dans les messages. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/create/6e11174f-501a-4531-ac03-818739bfd07d", - "type": "Create", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": ... -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | --------------------------------- | --- | -| `type` | oui | soit `Create`, soit `Update` | ... | -| `cc` | oui | Communauté où le message est créé | -| `object` | oui | Le message en cours de création | - -#### Créer ou mettre à jour un commentaire - -Une réponse à un article ou à un autre commentaire. Peut contenir des mentions d'autres utilisateurs. La modification d'un message précédemment créé envoie une activité presque identique, sauf que le type `type` est Mise à jour `Update`. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/create/6f52d685-489d-4989-a988-4faedaed1a70", - "type": "Create", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "tag": [{ - "type": "Mention", - "name": "@sisko@ds9.lemmy.ml", - "href": "https://ds9.lemmy.ml/u/sisko" - }], - "cc": [ - "https://ds9.lemmy.ml/c/main/", - "https://ds9.lemmy.ml/u/sisko" - ], - "object": ... -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | ---------------------------------------------------------------------------------------- | -| `tag` | non | Liste des utilisateurs mentionnés dans le commentaire (comme `@utilisateur@exemple.com`) | -| `cc` | oui | La liste des utilisateurs mentionnés dans le commentaire (par exemple, `@`). | -| `object` | oui | Le commentaire en cours de création | - -#### J'aime un message ou un commentaire - -Un vote positif pour un message ou un commentaire. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/like/8f3f48dd-587d-4624-af3d-59605b7abad3", - "type": "Like", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/p/123" -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | ---------------------------------------------------------- | -| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. | -| `object` | oui | Le message ou le commentaire en cours de validation | - -#### N'aime pas le message ou le commentaire - -Un vote négatif pour un message ou un commentaire. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/dislike/fd2b8e1d-719d-4269-bf6b-2cadeebba849", - "type": "Dislike", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/p/123" -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | ---------------------------------------------------------- | -| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. | -| `object` | oui | Le message ou le commentaire en cours de validation | - -#### Supprimer un message ou un commentaire - -Supprime un message ou un commentaire précédemment créé. Ceci ne peut être fait que par le créateur original de ce message ou commentaire. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/delete/f1b5d57c-80f8-4e03-a615-688d552e946c", - "type": "Delete", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://enterprise.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/post/32" -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | ---------------------------------------------------------- | -| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. | -| `object` | oui | ID du message ou du commentaire à supprimer | - -#### Supprimer un message ou un commentaire - -Supprime un message ou un commentaire. Cela ne peut être fait que par un mod de la communauté, ou par un administrateur sur l'instance où la communauté est hébergée. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/remove/aab93b8e-3688-4ea3-8212-d00d29519218", - "type": "Remove", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/comment/32" -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | ---------------------------------------------------------- | -| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. | -| `object` | oui | ID du message ou du commentaire à supprimer | - -#### Défaire - -Défait une activité précédente, ne peut être fait que par l'acteur `actor` de l'objet`object`. Dans le cas d'un "J'aime" `Like` ou "Je n'aime pas" `Dislike`, le nombre de votes est modifié. Dans le cas d'un Supprimer `Delete` ou Retirer `Remove`, le message/commentaire est restauré. L'objet est régénéré à partir de zéro, l'ID de l'activité et les autres champs sont donc différents. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/undo/70ca5fb2-e280-4fd0-a593-334b7f8a5916", - "type": "Undo", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": ... -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | ----------------------------------------------------------------------------- | -| `object` | oui | Toute activité `Like`, `Dislike`, `Delete` ou `Remove` comme décrit ci-dessus | - -#### Ajouter un mod - -Ajoute un nouveau mod (enregistré sur `ds9.lemmy.ml`) à la communauté `!main@enterprise.lemmy.ml`. Doit être envoyé par un mod existant de la communauté. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/add/531471b1-3601-4053-b834-d26718da2a06", - "type": "Add", - "cc": [ - "https://enterprise.lemmy.ml/c/main" - ], - "to": "https://www.w3.org/ns/activitystreams#Public", - "object": "https://ds9.lemmy.ml/u/sisko", - "actor": "https://enterprise.lemmy.ml/u/picard", - "target": "https://enterprise.lemmy.ml/c/main/moderators" -} -``` - -#### Supprimer un mod - -Supprime un mod existant de la communauté. Doit être envoyé par un mod existant de la communauté. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/remove/63b9a5b2-d3f8-4371-a7eb-711c7928b3c0", - "type": "Remove", - "object": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "actor": "https://enterprise.lemmy.ml/u/picard", - "cc": [ - "https://enterprise.lemmy.ml/c/main" - ], - "target": "https://enterprise.lemmy.ml/c/main/moderators" -} -``` - -### Communauté à l'utilisateur - -#### Accepter un suivi - -Envoyé automatiquement par la communauté en réponse à un `Follow`. En même temps, la communauté ajoute cet utilisateur à sa liste de followers. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/accept/5314bf7c-dab8-4b01-baf2-9be11a6a812e", - "type": "Accept", - "actor": "https://ds9.lemmy.ml/c/main", - "to": "https://enterprise.lemmy.ml/u/picard", - "object": { - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/follow/2e4784b7-4edf-4fa1-a352-674d5d5f8891", - "type": "Follow", - "object": "https://ds9.lemmy.ml/c/main", - "actor": "https://enterprise.lemmy.ml/u/picard" - } -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | --------------------------------------------------- | -| `actor` | oui | La même communauté que celle de l'activité `Follow` | -| `to` | non | L'ID de l'utilisateur qui a envoyé le `Follow` | -| `object` | oui | L'activité `Follow` précédemment envoyée | - -#### Annoncer - -Lorsque la communauté reçoit une activité de post ou de commentaire, elle l'intègre dans une `Announce` et l'envoie à tous les followers. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/announce/b98382e8-6cb1-469e-aa1f-65c5d2c31cc4", - "type": "Announce", - "actor": "https://ds9.lemmy.ml/c/main", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/followers" - ], - "object": ... -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `object` | oui | Toute activité de type `Create`, `Update`, `Like`, `Dislike`, `Delete` `Remove` ou `Undo` décrite dans la section [User to Community](#user-to-community) | - -#### Retirer ou supprimer une communauté - -Un administrateur d'instance peut supprimer la communauté, ou un mod peut la supprimer. - -```json -{ - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/remove/e4ca7688-af9d-48b7-864f-765e7f9f3591", - "type": "Remove", - "actor": "http://ds9.lemmy.ml/c/some_community", - "cc": [ - "http://ds9.lemmy.ml/c/some_community/followers" - ], - "to": "https://www.w3.org/ns/activitystreams#Public", - "object": "http://ds9.lemmy.ml/c/some_community" -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | --------------------------- | -| `type` | oui | Soit `Remove` soit `Delete` | - -#### Rétablir la communauté supprimée ou retirée - -Rétablit le retrait ou la suppression. - -```json -{ - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/like/0703668c-8b09-4a85-aa7a-f93621936901", - "type": "Undo", - "actor": "http://ds9.lemmy.ml/c/some_community", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "http://ds9.lemmy.ml/c/testcom/followers" - ], - "object": { - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/remove/1062b5e0-07e8-44fc-868c-854209935bdd", - "type": "Remove", - "actor": "http://ds9.lemmy.ml/c/some_community", - "object": "http://ds9.lemmy.ml/c/testcom", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "http://ds9.lemmy.ml/c/testcom/followers" - ] - } -} - -``` - -| Nom du champ | Obligatoire | Description | -| ------------- | ----------- | ------------------------- | -| `object.type` | oui | Soit `Remove` ou `Delete` | - -### Utilisateur à Utilisateur - -#### Créer ou mettre à jour un message privé - -Crée un nouveau message privé entre deux utilisateurs. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/create/202daf0a-1489-45df-8d2e-c8a3173fed36", - "type": "Create", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": ... -} -``` - -| Nom du champ | Obligatoire | Description | -| ------------ | ----------- | ------------------------------------- | --- | -| `type` | oui | Soit `Create`, soit `Update` | ... | -| `object` | oui | A [Private Message](#private-message) | - -#### Supprimer un message privé - -Supprime un message privé précédent. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/delete/2de5a5f3-bf26-4949-a7f5-bf52edfca909", - "type": "Delete", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": "https://ds9.lemmy.ml/private_message/341" -} -``` - -#### Annuler la suppression d'un message privé - -Restaure un message privé précédemment supprimé. L'objet est régénéré à partir de zéro, l'ID d'activité et les autres champs sont donc différents. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/undo/b24bc56d-5db1-41dd-be06-3f1db8757842", - "type": "Undo", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": ... -} -``` diff --git a/src/fr/federation/overview.md b/src/fr/federation/overview.md deleted file mode 100644 index 3f32c97..0000000 --- a/src/fr/federation/overview.md +++ /dev/null @@ -1,123 +0,0 @@ -# Aperçu de la fédération - -Ce document est destiné à tous ceux qui veulent savoir comment fonctionne la fédération Lemmy, sans être trop technique. Il est destiné à fournir un aperçu de haut niveau de la fédération ActivityPub dans Lemmy. Si vous implémentez ActivityPub vous-même et souhaitez être compatible avec Lemmy, lisez notre [ActivityPub API outline](contributing_apub_api_outline.md). - -## Conventions de documentation - -Pour garder les choses simples, vous verrez parfois des choses formatées comme `Create/Note`, `Delete/Event` ou `Undo/Follow`. La chose avant le slash est l'activité, et la chose après le slash est l'objet à l'intérieur de l'activité, dans une propriété `object`. Il faut donc les lire comme suit : - -- `Create/Note` : une activité `Create` contenant une `Note` dans le champ `object`. -- `Delete/Event` : une activité `Delete` contenant un `Event` dans le champ `object`. -- `Undo/Follow` : une activité `Undo` contenant un `Follow` dans le champ `object`. - -Dans Lemmy, nous utilisons certains termes spécifiques pour désigner les éléments ActivityPub. Il s'agit essentiellement de nos implémentations spécifiques de concepts ActivityPub bien connus : - -- Communauté (community) : `Group` -- Utilisateur (user) : `Person` -- Poste (post) : `Page` -- Commentaire (comment) : `Note` - -Ce document comporte trois sections principales : - -- **Philosophie de la fédération** expose le modèle général de la manière dont le projet est censé se fédérer. -- **Les activités des utilisateurs** décrivent les actions qu'un utilisateur peut entreprendre pour interagir. -- **Activités de la communauté** décrit ce que la communauté fait en réponse à certaines actions de l'utilisateur. - -## Philosophie de la Fédération - -L'acteur principal de Lemmy est la communauté. Chaque communauté réside sur une seule instance, et se compose d'une liste de messages et d'une liste de followers. L'interaction principale est celle d'un utilisateur qui envoie une activité liée à un message ou à un commentaire à la boîte de réception de la communauté, qui l'annonce ensuite à tous ses suiveurs. - -Chaque communauté a un utilisateur créateur spécifique, qui est responsable de la définition des règles, de la nomination des modérateurs et de la suppression du contenu qui viole les règles. - -Outre la modération au niveau de la communauté, chaque instance dispose d'un ensemble d'utilisateurs administrateurs, qui ont le pouvoir de supprimer et d'interdire des contenus sur l'ensemble du site. - -Les utilisateurs suivent les communautés qui les intéressent, afin de recevoir des messages et des commentaires. Ils votent également sur les messages et les commentaires, et en créent de nouveaux. Les commentaires sont organisés en une structure arborescente et généralement triés par nombre de votes. Les messages directs entre utilisateurs sont également pris en charge. - -Les utilisateurs ne peuvent pas se suivre les uns les autres, et les communautés ne peuvent pas non plus suivre quoi que ce soit. - -Notre mise en œuvre de la fédération est déjà complète, mais jusqu'à présent nous ne nous sommes pas du tout concentrés sur la conformité à la spécification ActivityPub. En tant que tel, Lemmy n'est probablement pas compatible avec les implémentations qui s'attendent à envoyer et recevoir des activités valides. C'est un point que nous prévoyons de corriger dans un avenir proche. Consultez [#698](https://github.com/LemmyNet/lemmy/issues/698) pour un aperçu de nos déviations. - -## Activités des utilisateurs - -### Suivre une communauté - -Chaque page de communauté a un bouton "Suivre". Cliquer sur ce bouton déclenche l'envoi d'une activité "Suivre" `Follow` de l'utilisateur vers la boîte de réception de la communauté. La communauté répondra automatiquement par une activité "Accepter/Suivre" `Accept/Follow` dans la boîte de réception de l'utilisateur. Elle ajoutera également l'utilisateur à sa liste de suiveurs et lui transmettra toutes les activités relatives aux messages et commentaires de la communauté. - -### Annuler le suivi d'une communauté - -Après avoir suivi une communauté, le bouton "Follow" est remplacé par "Unfollow". En cliquant sur ce bouton, vous envoyez une activité Annuler/Suivre `Undo/Follow` dans la boîte de réception de la communauté. La communauté supprime l'utilisateur de sa liste de followers et ne lui envoie plus d'activités. - -### Créer un message - -Quand un utilisateur crée un nouveau message dans une communauté donnée, il est envoyé comme Créer/Page `Create/Page` à la boîte de réception de la communauté. - -### Créer un commentaire - -Quand un nouveau commentaire est créé pour un message, l'ID du message et l'ID du commentaire parent (s'il existe) -sont écrits dans le champ `in_reply_to`. Cela permet de l'assigner au bon article, et de construire -l'arbre des commentaires. Il est ensuite envoyé dans la boîte de réception de la Communauté sous le nom de Créer/Noter `Create/Note`. - -L'instance d'origine recherche également dans le commentaire toute mention d'utilisateur et envoie le `Create/Note` à ces utilisateurs. -à ces utilisateurs. - -### Modifier un message - -Modifie le contenu d'un message existant. Ne peut être fait que par l'utilisateur qui l'a créé. - -### Modifier un commentaire - -Modifie le contenu d'un commentaire existant. Ne peut être fait que par l'utilisateur qui l'a créé. - -### J'aime et je n'aime pas - -Les utilisateurs peuvent aimer ou ne pas aimer un message ou un commentaire. Ces commentaires sont envoyés sous forme de "J'aime/Page" `like/Page`, "Je n'aime pas/Note" `Dislike/Note`, etc. dans la boîte de réception de la communauté. - -### Suppression - -Le créateur d'un message, d'un commentaire ou d'une communauté peut le supprimer. La suppression est alors envoyée aux suiveurs de la communauté. L'élément est alors caché de tous les utilisateurs. - -Les mods peuvent supprimer les messages et les commentaires de leurs communautés. Les administrateurs peuvent supprimer tout message ou commentaire sur l'ensemble du site. Les communautés peuvent également être supprimées par les administrateurs. L'élément est alors caché à tous les utilisateurs. - -Les suppressions sont envoyées à tous les adeptes de la communauté, de sorte qu'elles y prennent également effet. L'exception est le cas où un administrateur supprime un élément d'une communauté qui est hébergée sur une instance différente. Dans ce cas, la suppression ne prend effet que localement. - -### Revenir sur une action précédente - -Nous ne supprimons rien de notre base de données, nous le cachons simplement aux utilisateurs. Les Communautés/Paroles/Commentaires supprimés ou retirés ont un bouton "restaurer". Ce bouton génère une activité `Undo` qui définit l'activité originale de suppression/suppression comme objet, comme `Undo/Remove/Post` ou `Undo/Delete/Community`. - -Cliquer sur le bouton "+" d'un message ou d'un commentaire déjà noté (ou sur le bouton "-" d'un message ou d'un commentaire déjà noté) génère également un `Undo`. Dans ce cas, il s'agit d'un `Undo/Like/Post` ou d'un `Undo/Dislike/Comment`. - -### Créer un message privé - -Les profils d'utilisateurs ont un bouton "Envoyer un message", qui ouvre une boîte de dialogue permettant d'envoyer un message privé à cet utilisateur. Le message est envoyé sous la forme d'une `Create/Note` dans la boîte de réception de l'utilisateur. Les messages privés ne peuvent être adressés qu'à un seul utilisateur. - -v## Modifier un message privé - -`Update/Note` modifie le texte d'un message précédemment envoyé. - -### Supprimer un message privé - -`Delete/Note` supprime un message privé. - -### Restaurer un message privé - -`Undo/Delete/Note` rétablit la suppression d'un message privé. - -## Activités de la Communauté - -La communauté est essentiellement un robot, qui n'agit qu'en réaction aux actions des utilisateurs. L'utilisateur qui a créé la communauté devient le premier modérateur, et peut ajouter d'autres modérateurs. En général, lorsque la communauté reçoit une activité valide dans sa boîte de réception, cette activité est transmise à tous ses suiveurs. - -### Accepter le suivi - -Si la communauté reçoit une activité "Follow", elle répond automatiquement par "Accept/Follow". Elle ajoute également l'utilisateur à sa liste de suiveurs. - -### Unfollow - -À la réception d'un `Undo/Follow`, la communauté supprime l'utilisateur de sa liste de followers. - -#### Annoncer - -Si la communauté reçoit une activité liée à un message ou à un commentaire (créer, mettre à jour, aimer, détester, retirer, supprimer, annuler), elle l'annoncera à ses membres. Pour cela, une Annonce est créée avec la Communauté comme acteur, et l'activité reçue comme objet. Les instances qui suivent restent ainsi informées de toutes les actions des communautés qu'elles suivent. - -### Supprimer une communauté - -Si le créateur ou un administrateur supprime la communauté, il envoie un `Delete/Group` à tous ses suiveurs. diff --git a/src/fr/federation/resources.md b/src/fr/federation/resources.md deleted file mode 100644 index c5f6e68..0000000 --- a/src/fr/federation/resources.md +++ /dev/null @@ -1,22 +0,0 @@ -# Ressources de l'ActivityPub - -## Documents officiels - -- [Norme ActivityPub](https://www.w3.org/TR/activitypub/) -- [Vocabulaire de l'ActivityPub](https://www.w3.org/TR/activitystreams-vocabulary/) - -## Explications - -- [ActivityPub - one protocol to rule them all?](https://schub.io/blog/2018/02/01/activitypub-one-protocol-to-rule-them-all.html) -- [A highly opinionated guide to learning about ActivityPub](https://tinysubversions.com/notes/reading-activitypub/) -- [Activitypub implementers guide](https://socialhub.activitypub.rocks/t/draft-guide-for-new-activitypub-implementers/479) -- [Mastodon Blog: How to implement a basic ActivityPub server](https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/) -- [Mastodon Blog: Implementing an ActivityPub inbox](https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/) -- [Data storage questions](https://socialhub.activitypub.rocks/t/data-storage-questions/579) -- [Activitypub as it has been understood](https://flak.tedunangst.com/post/ActivityPub-as-it-has-been-understood) - -## Exemples et bibliothèques - -- [ActivityPub example server](https://github.com/tOkeshu/activitypub-example) -- [ActivityStreams crate](https://docs.rs/activitystreams/) -- [HTTP Signatures crate](https://git.asonix.dog/Aardwolf/http-signature-normalization) diff --git a/src/id/SUMMARY.md b/src/id/SUMMARY.md deleted file mode 100644 index 86a688b..0000000 --- a/src/id/SUMMARY.md +++ /dev/null @@ -1,31 +0,0 @@ -# Ringkasan - -- [Tentang](about/about.md) - - [Fitur](about/features.md) - - [Peringkat Pos dan Komentar](about/ranking.md) - - [Panduan](about/guide.md) -- [Administrasi](administration/administration.md) - - [Pasang Menggunakan Docker](administration/install_docker.md) - - [Pasang Menggunakan Ansible](administration/install_ansible.md) - - [Pasang dari Awal](administration/from_scratch.md) - - [Pasang di AWS](administration/on_aws.md) - - [Langkah Pertama](administration/first_steps.md) - - [Konfigurasi](administration/configuration.md) - - [Memulai dengan Federasi](administration/federation_getting_started.md) - - [Penyelesaian Masalah](administration/troubleshooting.md) - - [Pencadangan dan Pemulihan](administration/backup_and_restore.md) -- [Federasi](federation/federation.md) - - [Tinjauan Federasi](federation/overview.md) - - [Protokol Lemmy](federation/lemmy_protocol.md) -- [Pengembangan Klien](client_development/client_development.md) - - [Ekstra API HTTP](client_development/http_api_extras.md) - - [Panduan Membuat Tema](client_development/theming.md) - - [Membuat Antarmuka Kustom](client_development/custom_frontend.md) -- [Kontribusi](contributing/contributing.md) - - [Pengembangan Docker](contributing/docker_development.md) - - [Pengembangan Lokal](contributing/local_development.md) - - [Pengujian](contributing/tests.md) - - [Pengembangan Federasi](contributing/federation_development.md) - - [Proses Rilis](contributing/release_process.md) - - [Sumber/Pustaka](contributing/resources.md) -- [Kode Etik](code_of_conduct.md) diff --git a/src/id/about/about.md b/src/id/about/about.md deleted file mode 100644 index 24bc460..0000000 --- a/src/id/about/about.md +++ /dev/null @@ -1,34 +0,0 @@ -## Tentang Proyek Ini - -| Halaman Depan | Pos | -| ------------------------------- | ------------------------------------ | -| ![layar utama](main_screen.png) | ![layar percakapan](chat_screen.png) | - -[Lemmy](https://github.com/LemmyNet/lemmy) serupa seperti situs seperti [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), atau [Hacker News](https://news.ycombinator.com/): Anda berlangganan ke forum yang Anda tertarik kepada mereka, pos tautan dan diskusi, kemudian pilih, dan komentar di sana. Di belakang layar, itu sangat berbeda; semua orang bisa dengan mudah menjalankan sebuah peladen dan semua peladen tersebut terfederasi (seperti surel) dan terhubung ke semesta yang sama, yaitu [Fediverse](https://en.wikipedia.org/wiki/Fediverse). - -_Kata “fediverse” (federated universe) merujuk kepada jaringan dari semua peladen Lemmy [dan proyek lainnya](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/), yang dimana pengguna bisa berbicara satu sama lain dengan seamlessly._ - -Seperti surel, entah Anda mendaftar di Gmail atau Outlook, Anda tahu Anda akan bisa mengirim surel ke semua yang Anda butuhkan, asalkan Anda tahu alamat mereka. Di Lemmy, Anda bisa berlangganan ke komunitas di peladen mana pun lainnya dan bisa mengikuti diskusi dengan pengguna terdaftar dimana pun. - -Tujuan utama proyek ini adalah untuk membuat alternatif dari Reddit dan pengumpul tautan lainnya yang mudah dihos sendiri dan desentralisasi, tanpa satu pun perusahaan yang menjalankan pertunjukan. - -Tidak ada pemegang modal dan tidak ada iklan tertarget: hanya orang yang membagikan hal yang mereka ingin bagikan dengan yang lainnya. - -Setiap peladen Lemmy bisa menentukan kebijakan moderasinya sendiri-sendiri; mengangkat admin tingkat situs, moderator komunitas untuk waspada terhadap _troll_, dan memupuk lingkungan yang sehat di mana semua bisa dengan nyaman berkontribusi. - -_Catatan: Federasi masih dalam pengembangan aktif_ - -### Kenapa dinamai Lemmy? - -- Penyanyi utama [Motörhead](https://invidio.us/watch?v=pWB5JZRGl0U). -- [Permainan video klasik](). -- [Koopa dari Super Mario](https://www.mariowiki.com/Lemmy_Koopa). -- [Hewan pengerat berbulu](http://sunchild.fpwc.org/lemming-the-little-giant-of-the-north/). - -### Dibangun menggunakan - -- [Rust](https://www.rust-lang.org) -- [Actix](https://actix.rs/) -- [Diesel](http://diesel.rs/) -- [Inferno](https://infernojs.org) -- [Typescript](https://www.typescriptlang.org/) diff --git a/src/id/about/chat_screen.png b/src/id/about/chat_screen.png deleted file mode 100644 index 21a452d..0000000 Binary files a/src/id/about/chat_screen.png and /dev/null differ diff --git a/src/id/about/features.md b/src/id/about/features.md deleted file mode 100644 index e2ac6b4..0000000 --- a/src/id/about/features.md +++ /dev/null @@ -1,35 +0,0 @@ -# Fitur - -- Sumber terbuka, [Lisensi AGPL](/LICENSE). -- Bisa disetel sendiri, mudah untuk dipasang. - - Dibundel dengan [Docker](../administration/install_docker.md) dan [Ansible](../administration/install_ansible.md). -- Tampilan yang bersih dan ramah ponsel. - - Yang dibutuhkan untuk mendaftar adalah nama pengguna dan kata sandi! - - Dukungan avatar pengguna. - - Utas komentar dengan pembaruan langsung. - - Skor pilihan penuh `(+/-)` seperti Reddit yang lama. - - Banyak tema, termasuk terang, gelap, dan solarized. - - Emoji dengan dukungan ketik otomatis. Mulai mengetik `:` - - Tandai pengguna menggunakan `@`, tandai komunitas menggunakan `!`. - - Pengunggahan gambar terintegrasi baik di pos atau komentar. - - Sebuah pos bisa terdiri dari sebuah judul dan kombinasi dari teks subjek, URL, atau tidak ada teks sama sekali. - - Notifikasi di balasan komentar dan ketika Anda ditandai. - - Notifikasi bisa dikirim lewat surel. - - i18n/dukungan penginternasionalan - - Umpan RSS/Atom untuk `Semua`, `Berlangganan`, `Kotak Masuk`, `Pengguna`, dan `Komunitas`. -- Dukungan pos-lintas. - - Sebuah _pencarian pos serupa_ ketika membuat pos baru. Bagus untuk komunitas tanya/jawab. -- Kemampuan moderasi. - - Log Moderasi Publik. - - Bisa melengketkan pos ke bagian atas komunitas. - - Baik admin situs dan moderator komunitas dapat menunjuk moderator lain. - - Bisa mengunci, menghapus, dan memulihkan pos dan komentar. - - Bisa melarang dan batal melarang pengguna dari komunitas dan situs. - - Bisa memindah situs dan komunitas ke yang lain. -- Bisa menghapus seluruhnya data Anda, menggantikan seluruh pos dan komentar. -- Dukungan pos/komunitas NSFW -- Performa tinggi. - - Peladen ditulis dengan Rust. - - Antarmuka `~80kB` gzipped. - - Antarmuka bekerja tanpa JavaScript (hanya-baca) - - Mendukung arm64/Raspberry Pi. diff --git a/src/id/about/guide.md b/src/id/about/guide.md deleted file mode 100644 index 1c7486f..0000000 --- a/src/id/about/guide.md +++ /dev/null @@ -1,95 +0,0 @@ -# Panduan Mulai Cepat Lemmy - -Jadi Anda ingin bergabung dengan Lemmy dan mulai mengepos. Bagus! Begini cara untuk meluncur masuk. - -## Di mana saya mendaftar? - -Hal pertama yang Anda harus lakukan adalah **memilih peladen Anda**. Ini merupakan langkah tambahan dibandingkan dengan situs seperti Reddit, tapi tidak sesulit yang dikira. - -_Seperti surel, identitas Anda dihos oleh peladen yang dimana Anda mendaftar. Jadi sebagai contoh, saya gabung ke lemmy.ml, jadi untuk menyebutkan saya, Anda bisa mengetikkan @retiolus@lemmy.ml di pos Anda._ - -Jika apa yang ingin Anda bicarakan sesuai dengan kategori yang jelas (mungkin itu permainan video atau seni atau kehidupan aneh atau pengkodean atau fiksi, dll.) maka mungkin ada baiknya membuat peladen pertama Anda di mana yang terutama akan menampung konten semacam itu – akan lebih mudah untuk membuat koneksi dan menemukan orang-orang yang berpikiran sama. Pikirkan peladen Anda sebagai lingkungan atau tempat, di mana obrolan umum tersebut dapat memiliki fokus khusus. - -_Anda memiliki kemampuan untuk melihat semua pos lokal publik yang dibuat oleh orang di peladen Anda di bilah "Lokal"._ - -Jika Anda tidak di sini untuk menempel ke satu topik, Anda mungkin ingin memilih peladen yang melayani percakapan umum. Apa pun itu, ada daftar peladen yang berguna di [join-lemmy.org](https://join-lemmy.org/instances). - -**Jangan panik!** Anda bisa berbicara kepada orang di peladen lainnya, tidak peduli apa yang Anda pilih. Ingat, ini seperti surel dan, contohnya, Anda masih bisa mengirim surel kepada ibu Anda di akun Yahoo kuno dari Gmail Anda. - -## Ketahui peladen Anda - -Luangkan waktu sejenak sebelum mendaftar untuk memeriksa peraturan dari peladen pilihan Anda dan pastikan mereka sesuai dengan bagaimana Anda ingin mengepos. - -Peladen biasanya mendefinisikan peraturan mereka dengan cara yang simpel di bilah sisi kanan dari situs. Dari atas ke bawah, Anda akan biasanya menemukan daftar "Komunitas Sedang Tren" diikuti oleh "Berlangganan ke komunitas," deskripsi singkat peladen, peraturan, beberapa statistik, dan nama pengguna dari admin. - -Admin merupakan orang yang sangat ramah yang bisanya menjalankan peladen dari dompet mereka sendiri, jadi merupakan hal yang bagus untuk mengenal mereka. Banyak dari mereka yang menerima donasi untuk menutupi biaya operasional dan jika Anda bisa berkontribusi maka hal itu selalu dihargai. - -## Sepertinya saya menemukan rumah baru saya! - -Pergi ke halaman Masuk `(https://your.server/login)` dari peladen Anda dan pilih nama pengguna dan kata sandi di formulir pendaftaran. Anda tidak perlu sebuah surel untuk mendaftar, tapi itu merupakan satu-satunya cara untuk mengatur ulang kata sandi Anda jika Anda kehilangannya. - -Hal selanjutnya untuk dilakukan adalah mengunggah gambar profil Anda, berikan halaman pengaturan `(https://your.server/settings)` sebuah utak-atik (dan kembali melakukannya ketika Anda sudah di Lemmy selama beberapa pekan atau hanya untuk utak-atik yang mungkin membantu pengalaman Anda) dan bersiaplah untuk mengenalkan diri Anda. - -_Beberapa pengaturan yang menarik untuk diperiksa adalah: jenis filter umpan baku antara berlangganan, lokal, atau semua dan jenis pengurutan baku Anda_ - -Meskipun Anda bisa hanya santai membaca Lemmy, keseruan yang asli dimulai ketika Anda meluncur dan mulai berpartisipasi dengan mengepos, mengeluarkan pilihan, dan berkomentar - -Untuk membagikan sebuah pos, klik tombol "Buat Pos" di sisi atas dari layar. Anda akan dibawa ke sebuah formulir di mana Anda bisa memasukkan URL dari tautan atau mengunggah gambar Anda dan memasukkan judul dan badan pos. Anda juga akan diharuskan untuk memasukkan sebuah komunitas di mana Anda ingin pos Anda muncul. Sebelum melakukan itu, merupakan ide yang bagus untuk menuju ke halaman komunitas tersebut dan membaca panduan mengepos yang ada di sebelah kanan layar. Ini akan memastikan bahwa Anda patuh terhadap etos tertentu dari sebuah komunitas. Contohnya, di komunitas [`!privacy@lemmy.ml`](https://lemmy.ml/c/privacy), Anda tidak boleh untuk mempromosikan perangkat lunak tidak bebas. - -Ketika semua bagian sudah diisi, klik "Buat" dan pos Anda akan muncul. - -Ketika menulis sebuah pos atau komentar baru, mulai mengetik... - -- `@a_user_name` untuk mendapatkan daftar nama pengguna. -- `!a_community` untuk mendapatkan daftar komunitas. -- `:emoji` untuk mendapatkan daftar emoji. - -## Pengenalan cepat tampilan web - -![interface.png](interface.png) - -Tampilan standar Lemmy memiliki satu umpan. Anda bisa mengubah konten dari umpan tersebut menggunakan filter: - -**Berlangganan** termasuk pos dari peladen Anda dan peladen lainnya, yang terpenting adalah komunitas yang Anda ikuti. - -**Lokal** adalah umpan dari semua pos di komunitas di peladen Anda. Di banyak peladen, terutama yang kecil-kecil dan terfokus ke topik tertentu, di sinilah sihir terjadi. Anda bisa membalas ke orang dari sana dan di sana merupakan tempat yang bagus untuk bertemu dengan orang yang berbagi minat yang sama denganmu. - -**Semua** atau **lini masa terfederasi** adalah untuk melihat semua pos publik yang peladen Anda ketahui dari seluruh jaringan (termasuk yang lokal). Alasan yang paling umum ketika sesuatu tampil di lini masa terfederasi adalah ada seseorang dari peladen Anda mengikuti komunitas yang ada di peladen lainnya. - -| Jenis | Deskripsi | -| ---------------------- | -------------------------------------------------------------------- | -| Pos | Hanya tampilkan publikasi (pos) | -| Komentar | Hanya tampilkan komentar | -| \-\-\- | \-\-\- | -| Aktif | Urut yang tren berdasarkan skor dan waktu komentar yang paling baru. | -| Hangat | Urut yang tren berdasarkan skor dan waktu pembuatan pos. | -| Baru | Yang terbaru. | -| Paling Banyak Komentar | Pos dengan komentar paling banyak. | -| Komentar Terbaru | Pos dengan komentar yang paling baru, alias urut gaya-forum. | -| Teratas | Skor terbesar di jangka waktu tertentu. | - -Untuk detail lebih lanjut, periksa [detail Ranking Pos dan Komentar](ranking.md). - -## Menggunakan Markdown - -Pos Lemmy ditulis menggunakan Markdown, tentu saja ada pintasan untuk Anda gunakan ketika menulis, di bawah ini merupakan tabel untuk membantu Anda jika Anda ingin tahu lebih lanjut. - -| Ketik | Atau | … untuk mendapatkan | -| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- | -| \*Miring\* | \_Miring\_ | _Miring_ | -| \*\*Tebal\*\* | \_\_Tebal\_\_ | **Tebal** | -| \# Tajuk 1 | Tajuk 1
========= |

Tajuk 1

| -| \## Tajuk 2 | Tajuk 2
--------- |
Tajuk 2
| -| \[Tautan\](http://a.com) | \[Tautan\]\[1\]

\[1\]: http://b.org | [Tautan](https://commonmark.org/) | -| !\[Gambar\](http://url/a.png) | !\[Gambar\]\[1\]

\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) | -| \> Kutipan | |
Kutipan
| -| \* Daftar
\* Daftar
\* Daftar | \- Daftar
\- Daftar
\- Daftar
| _ Daftar
_ Daftar
\* Daftar
| -| 1\. Satu
2\. Dua
3\. Tiga | 1) Satu
2) Dua
3) Tiga | 1. Satu
2. Dua
3. Tiga | -| Garis Horizontal
\--- | Garis Horizontal
\*\*\* | Garis Horizontal

| -| \`Kode di pos\` dengan petik terbalik | | `Kode di pos` dengan petik terbalik | -| \`\`\`
\# blok kode
print '3 petik terbalik or'
print 'indentasi 4 spasi'
\`\`\` | ····\# blok kode
····print '3 petik terbalik or'
····print 'indentasi 4 spasi' | \# blok kode
print '3 petik terbalik or'
print 'indentasi 4 spasi' | -| ::: spoiler sembunyi atau sesuatu porno
_sesuatu untuk disembunyikan_
::: | |
sembunyi atau sesuatu porno

sesuatu untuk disembunyikan

| -| Teks ~bawah~ garis | | Teks bawah garis | -| Teks ^atas^ garis | | Teks atas garis | - -[Tutorial CommonMark](https://commonmark.org/help/tutorial/) diff --git a/src/id/about/interface.png b/src/id/about/interface.png deleted file mode 100644 index 41c6a9b..0000000 Binary files a/src/id/about/interface.png and /dev/null differ diff --git a/src/id/about/main_screen.png b/src/id/about/main_screen.png deleted file mode 100644 index 5d1f0c3..0000000 Binary files a/src/id/about/main_screen.png and /dev/null differ diff --git a/src/id/about/rank_algorithm.png b/src/id/about/rank_algorithm.png deleted file mode 100644 index c8200f9..0000000 Binary files a/src/id/about/rank_algorithm.png and /dev/null differ diff --git a/src/id/about/ranking.md b/src/id/about/ranking.md deleted file mode 100644 index bb22bef..0000000 --- a/src/id/about/ranking.md +++ /dev/null @@ -1,47 +0,0 @@ -# Algoritma Pengurutan Tren/Hangat/Terbaik - -## Tujuan - -- Saat hari pertama, pos dan komentar baru harus berada di atas, sehingga mereka bisa dipilih atas/bawah. -- Setelah sekitar satu hari, faktor waktu akan hilang. -- Gunakan skala log, karena suara cenderung menggelinding, dan 10 suara pertama sama pentingnya dengan seratus berikutnya. - -## Implementasi - -### Reddit - -Tidak memperhitungkan masa hidup utas, [memberikan komentar awal keuntungan besar terhadap yang setelahnya](https://minimaxir.com/2016/11/first-comment/), berefek lebih buruk di komunitas kecil. Jajak komentar baru berada di bawah utas, secara efektif membunuh diskusi dan membuat setiap utas balapan untuk komentar lebih dulu. Ini menurunkan kualitas pembicaraan dan menghargai komentar yang repetitif dan spam. - -### Hacker News - -Meskipun jauh lebih unggul daripada implementasi Reddit karena pembusukan skornya dari waktu ke waktu, [algoritma peringkat Hacker News](https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d) tidak menggunakan skala logaritmik untuk skor. - -### Lemmy - -Menyeimbangkan efek bola salju suara dari waktu ke waktu dengan skala logaritmik. Meniadakan keuntungan yang melekat dari komentar awal sambil tetap memastikan bahwa suara tetap penting dalam jangka panjang, tidak menghapus komentar populer yang lama. - -``` -Rank = ScaleFactor * log(Max(1, 3 + Score)) / (Time + 2)^Gravity - -Score = Upvotes - Downvotes -Time = time since submission (in hours) -Gravity = Decay gravity, 1.8 is default -``` - -- Lemmy menggunakan algoritma `Rank` yang sama di atas, dengan dua cara: `Active` dan `Hot` - - `Active` menggunakan suara pos, dan waktu komentar terakhir (dibatasi hingga dua hari). - - `Hot` menggunakan suara pos, dan waktu pos diterbitkan. -- Menggunakan Max(1, score) untuk memastikan semua komentar terpengaruh pembusukan waktu. -- Tambahkan 3 ke skor, sehingga semua yang memiliki kurang dari 3 pilih bawah akan tampak baru. Atau tidak, semua komentar baru akan tetap nol, dekat di bawah. -- Tanda dan abs skor diperlukan untuk menangani log skor negatif. -- Faktor skala 10 ribu menggenapkan peringkat dalam bentuk bilangan bulat. - -Plot peringkat lebih dari 24 jam, dengan skor 1, 5, 10, 100, 1000, dengan faktor skala 10 ribu. - -![](rank_algorithm.png) - -#### Penghitungan Pengguna Aktif - -Lemmy juga menampilkan jumlah _pengguna aktif_ untuk situs Anda, dan komunitasnya. Ini dihitung dalam `hari`, `pekan`, `bulan`, dan `setengah tahun` terakhir, dan ditembolokkan dalam pemulaian Lemmy, dan setiap jam. - -Pengguna aktif merupakan seseorang yang mempos atau berkomentar di peladen atau komunitas dalam jangka waktu terakhir yang ditentukan. Untuk penghitungan situs, hanya pengguna lokal yang dihitung. Untuk penghitungan komunitas, pengguna terfederasi juga dihitung. diff --git a/src/id/administration/administration.md b/src/id/administration/administration.md deleted file mode 100644 index c2a02ba..0000000 --- a/src/id/administration/administration.md +++ /dev/null @@ -1,23 +0,0 @@ -# Informasi Administrasi - -Informasi untuk admin peladen Lemmy dan mereka yang ingin menjalankan sebuah peladen. - -## Pasang - -### Metode Resmi/Didukung - -Lemmy memiliki dua metode pemasangan utama: - -- [Manual dengan Docker](install_docker.md) -- [Otomatis dengan Ansible](install_ansible.md) - -Kami merekomendasikan menggunakan Ansible, karena menyederhanakan instalasi dan juga membuat pembaruan lebih mudah. - -### Metode pemasangan lainnya - -> ⚠️ **Hati-hati! Risiko Anda sendiri** - -Dalam beberapa kasus, mungkin perlu menggunakan metode pemasangan yang berbeda. Tetapi kami tidak merekomendasikan ini, dan tidak dapat memberikan dukungan untuk mereka. - -- [Dari Awal](from_scratch.md) -- [Di Amazon Web Services (AWS)](on_aws.md) diff --git a/src/id/administration/backup_and_restore.md b/src/id/administration/backup_and_restore.md deleted file mode 100644 index 46c144f..0000000 --- a/src/id/administration/backup_and_restore.md +++ /dev/null @@ -1,76 +0,0 @@ -# Petunjuk Pencadangan dan Pemulihan - -## Docker dan Ansible - -Ketika menggunakan Docker atau Ansible, seharusnya ada folder `volumes` yang mengandung baik basis data dan seluruh gambar. Salin folder ini ke peladen baru untuk memulihkan data Anda - -### Pencadangan basis data bertahap - -Untuk pencadangan DB bertahap ke berkas `.sql`, Anda bisa menjalankan: - -```bash -docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql -``` - -### Contoh skrip pencadangan - -```bash -#!/bin/sh -# Pencadangan DB -ssh MY_USER@MY_IP "docker-compose exec postgres pg_dumpall -c -U lemmy" > ~/BACKUP_LOCATION/INSTANCE_NAME_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql - -# Pencadangan folder volumes -rsync -avP -zz --rsync-path="sudo rsync" MY_USER@MY_IP:/LEMMY_LOCATION/volumes ~/BACKUP_LOCATION/FOLDERNAME -``` - -### Memulihkan DB - -Jika Anda perlu untuk memulihkan dari berkas `pg_dumpall`, pertama-tama Anda perlu membersihkan basis data telah ada Anda. - -```bash -# Drop the existing DB -docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" - -# Restore from the .sql backup -cat db_dump.sql | docker exec -i FOLDERNAME_postgres_1 psql -U lemmy # restores the db - -# This also might be necessary when doing a db import with a different password. -docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with password 'bleh'" -``` - -### Mengubah nama domain Anda - -Jika Anda belum terfederasi, Anda bisa mengubah nama domain Anda di DB. **Peringatan: jangan lakukan ini setelah Anda terfederasi atau itu akan merusak federasi.** - -Pergi ke `psql` dari Docker Anda: - -`docker-compose exec postgres psql -U lemmy` - -``` --- Post -update post set ap_id = replace (ap_id, 'old_domain', 'new_domain'); -update post set url = replace (url, 'old_domain', 'new_domain'); -update post set body = replace (body, 'old_domain', 'new_domain'); -update post set thumbnail_url = replace (thumbnail_url, 'old_domain', 'new_domain'); - --- Comments -update comment set ap_id = replace (ap_id, 'old_domain', 'new_domain'); -update comment set content = replace (content, 'old_domain', 'new_domain'); - --- User -update user_ set actor_id = replace (actor_id, 'old_domain', 'new_domain'); -update user_ set inbox_url = replace (inbox_url, 'old_domain', 'new_domain'); -update user_ set shared_inbox_url = replace (shared_inbox_url, 'old_domain', 'new_domain'); -update user_ set avatar = replace (avatar, 'old_domain', 'new_domain'); - --- Community -update community set actor_id = replace (actor_id, 'old_domain', 'new_domain'); -update community set followers_url = replace (followers_url, 'old_domain', 'new_domain'); -update community set inbox_url = replace (inbox_url, 'old_domain', 'new_domain'); -update community set shared_inbox_url = replace (shared_inbox_url, 'old_domain', 'new_domain'); - -``` - -## Lihat juga - -- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database diff --git a/src/id/administration/configuration.md b/src/id/administration/configuration.md deleted file mode 100644 index 61e8655..0000000 --- a/src/id/administration/configuration.md +++ /dev/null @@ -1,20 +0,0 @@ -# Konfigurasi - -Konfigurasi didasarkan pada berkas config.hjson, yang di mana ditempatkan secara baku di `config/config.hjson`. Untuk mengubah lokasi baku, Anda bisa mengatur variabel lingkungan `LEMMY_CONFIG_LOCATION`. - -Variabel lingkungan tambahan `LEMMY_DATABASE_URL` juga tersedia, yang bisa digunakan dengan string koneksi PostgreSQL seperti `postgres://lemmy:password@lemmy_db:5432/lemmy`, meneruskan semua detail koneksi sekaligus. - -Jika kontainer Docker tidak digunakan, buat basis data yang disebutkan di atas secara manual dengan menjalankan perintah berikut: - -```bash -cd server -./db-init.sh -``` - -**Federasi tidak diatur secara baku.** Anda bisa menambahkan [blok federasi ini](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson#L64) ke `lemmy.hjson` Anda dan minta peladen lain untuk menambahkan Anda ke daftar yang diperbolehkan mereka. - -## Semua konfigurasi dengan nilai baku - -```hjson -{{#include ../../../include/config/defaults.hjson}} -``` diff --git a/src/id/administration/federation_getting_started.md b/src/id/administration/federation_getting_started.md deleted file mode 100644 index 8e25eb2..0000000 --- a/src/id/administration/federation_getting_started.md +++ /dev/null @@ -1,45 +0,0 @@ -# Federasi - -Lemmy memiliki tiga jenis federasi: - -- Daftar yang diperbolehkan: Secara jelas mendaftar peladen untuk terhubung. -- Daftar yang diblokir: Secara jelas mendaftar peladen untuk tidak terhubung. Federasi masih bisa untuk semua peladen lainnya. -- Terbuka: Terfederasi dengan semua peladen yang mungkin. - -**Federasi tidak diatur secara baku.** Anda bisa menambahkan [blok federasi ini](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson#L64) ke `lemmy.hjson` Anda dan minta peladen lain untuk menambahkan Anda ke daftar yang diperbolehkan mereka. - -Lemmy menggunakan protokol ActivityPub (standar W3C) untuk mengaktifkan federasi antar peladen berbeda. Ini sangat sama dengan bagaimana surel bekerja. Contohnya, jika Anda menggunakan gmail.com, maka Anda bisa tidak hanya mengirim surel ke pengguna gmail.com lain, tapi juga ke pengguna yahoo.com, yandex.ru, dll. Surel menggunakan protokol SMTP untuk mencapai hal tersebut, jadi Anda bisa menganggap ActivityPub adalah "SMTP untuk media sosial". Jumlah tindakan berbeda yang mungkin dilakukan di media sosial (pos, komentar, suka, bagikan, dll) berarti bahwa ActivityPub jauh lebih rumit daripada SMTP. - -Sama seperti surel, federasi ActivityPub hanya terjadi antar peladen. Jadi jika Anda terdaftar pada `enterprise.lemmy.ml`, Anda hanya terhubung ke API dari `enterprise.lemmy.ml`, sementara peladen mengurus pengiriman dan penerimaan data dari peladen lainnya (mis. `voyager.lemmy.ml`). Keuntungan besar dari pendekatan ini adalah pengguna biasa tidak harus melakukan apa pun untuk menggunakan federasi. Bahkan jika Anda menggunakan Lemmy, kemungkinan besar Anda sudah menggunakannya. Salah satu cara untuk mengonfirmasinya adalah dengan membuka komunitas atau profil pengguna. Jika Anda berada di `enterprise.lemmy.ml` dan Anda melihat pengguna seperti `@nutomic@voyager.lemmy.ml`, atau komunitas seperti `!main@ds9.lemmy.ml`, maka itu berarti Anda sudah terfederasi, artinya mereka menggunakan peladen yang berbeda dari Anda. - -Salah satu cara Anda bisa mengambil keuntungan dari federasi adalah dengan membuka peladen lain, seperti `ds9.lemmy.ml` dan jelajahi itu. Jika Anda melihat sebuah komunitas, pos, atau pengguna yang menarik yang Anda ingin berinteraksi dengan mereka, tinggal salin URL-nya dan tempel itu di pencarian dari peladen Anda sendiri. Peladen Anda akan terhubung ke yang disebutkan (menganggap daftar yang diperbolehkan/diblokir memperbolehkannya), dan secara langsung menampilkan konten jarak jauh untuk Anda, sehingga Anda bisa mengikuti sebuah komunitas atau berkomentar di sebuah pos. Berikut adalah beberapa contoh dari pencarian yang bekerja: - -- `!main@lemmy.ml` (Komunitas) -- `@nutomic@lemmy.ml` (Pengguna) -- `https://lemmy.ml/c/programming` (Komunitas) -- `https://lemmy.ml/u/nutomic` (Pengguna) -- `https://lemmy.ml/post/123` (Pos) -- `https://lemmy.ml/comment/321` (Komentar) - -Anda bisa melihat daftar dari peladen yang terhubung dengan mengikuti pada tautan "Peladen" pada bagian bawah dari setiap halaman Lemmy. - -## Mengambil komunitas - -Jika Anda mencari sebuah komunitas untuk pertama kali, awal-awal 20 pos akan diambil. Hanya jika paling tidak satu pengguna dari peladen Anda berlangganan ke komunitas jarak jauh yang akan membuat komunitas tersebut mengirim pembaruan ke peladen Anda. Pembaruan termasuk: - -- Pos dan komentar baru -- Pilihan (Pilih Atas/Bawah) -- Penyuntingan dan penghapusan pos dan komentar -- Tindakan moderator - -Anda bisa menyalin URL dari komunitas di bilah alamat peramban Anda dan memasukkannya ke bilah pencarian Anda. Tunggu beberapa saat dan pos akan muncul. Saat ini tidak ada penunjuk sedang memuat untuk pencarian, jadi tunggu beberapa saat jika muncul "no results". - -## Mengambil pos - -Tempel URL dari pos ke bilah pencarian peladen Lemmy Anda. Tunggu beberapa saat sampai posnya muncul. Ini juga akan mengambil profil komunitas dan profil dari pembuat pos. - -## Mengambil komentar - -Jika Anda menemukan sebuah komentar yang menarik di bawah pos di peladen lain, Anda bisa mencari di bawah komentar di menu 3 tombol sebuah ikon tautan. Salin tautan tersebut. Bentuknya seperti `https://lemmy.ml/post/56382/comment/40796`. Hapus bagian `post/XXX` dan taruh di bilah pencarian Anda. Untuk contoh tadi, bentuknya seperti `https://lemmy.ml/comment/40796`. Komentar tersebut, semua komentar induk, pengguna dan komunitas, dan semua pos yang berhubungan diambil dari peladen jarak jauh, jika mereka belum dikenali secara lokal. - -Komentar saudara tidak diambil! Jika Anda ingin lebih banyak komentar dari pos lama, Anda harus mencari mereka satu per satu seperti yang dijelaskan di atas. diff --git a/src/id/administration/first_steps.md b/src/id/administration/first_steps.md deleted file mode 100644 index 9a7737d..0000000 --- a/src/id/administration/first_steps.md +++ /dev/null @@ -1,46 +0,0 @@ -# Langkah Pertama Administrasi - -Setelah Anda berhasil memasang Lemmy entah [secara manual dengan Docker](install_docker.md) atau [secara otomatis dengan Ansible](install_ansible.md), berikut adalah beberapa rekomendasi untuk administrator baru peladen Lemmy. - -## Pengaturan Admin - -Hal pertama yang dilakukan adalah pergi ke panel admin Anda, yang mana bisa ditemukan dengan mengklik gir di kanan atas di sebelah ikon pencarian. Di sini Anda bisa menentukan deskripsi situs Anda, sehingga orang-orang tahu jika situs Anda tentang topik tertentu atau semua topik diterima. Anda juga bisa menambahkan ikon dan spanduk yang mendefinisikan peladen Anda, contohnya logo organisasi Anda. - -Luangkan waktu untuk menjelajah seluruh halaman untuk menemukan opsi berbeda untuk menyesuaikan peladen Lemmy Anda, di halaman yang sama Anda bisa menyunting [berkas konfigurasi](configuration.md) Anda, di mana Anda bisa mencari informasi tentang basis data Anda, surel yang digunakan oleh peladen, opsi federasi, atau siapa administrator utama. - -Merupakan ide bagus untuk menunjuk administrator lain selain diri Anda sendiri, di mana jika harus melakukan suatu tindakan saat Anda terlelap. Lihatlah ke [petunjuk moderasi](../moderation/moderation.md) untuk informasi lebih lanjut tentang hal ini. - -## Periksa bahwa semua sudah bekerja dengan benar - -### Surel - -Cara termudah untuk memeriksa bahwa surel sudah bekerja adalah meminta pembaruan kata sandi. Anda perlu untuk mengatur surel di pengaturan Anda jika Anda belum melakukannya. - -Setelah itu, tinggal keluar, pergi ke halaman `Masuk`, masukkan surel Anda di kotak `Surel atau Nama Pengguna` dan klik `lupa kata sandi`. Jika semuanya diatur dengan benar, Anda akan menerima sebuah surel untuk memperbarui kata sandi Anda. Anda bisa mengabaikan surel tersebut. - -### Federasi - -Federasi dimatikan secara baku dan perlu dinyalakan antara lewat panel admin daring atau langsung lewat berkas `config.json`. - -Untuk mencoba bahwa federasi peladen Anda bekerja dengan benar, jalankan `curl -H 'Accept: application/activity+json' https://your-instance.com/u/your-username`, itu seharusnya mengembalikan data json, bukan berkas .html. Jika itu tidak jelas untuk Anda, itu seharusnya sama dengan hasil dari `curl -H 'Accept: application/activity+json' https://lemmy.ml/u/nutomic`. - -## Penyertaan pada daftar peladen di join-lemmy.org - -Untuk dimasukkan pada daftar peladen Lemmy di [join-lemmy.org](https://join-lemmy.org/instances), Anda harus memenuhi persyaratan berikut: - -- [x] Terfederasi dengan paling tidak satu peladen dari daftar -- [x] Mempunyai deskripsi dan ikon situs -- [x] Bersabar dan menunggu situs untuk diperbarui, tidak ada jadwal pasti untuk itu - -Sementara menunggu, Anda selalu bisa mempromosikan peladen Anda di jejaring sosial lain seperti Mastodon menggunakan tagar `#Lemmy`. - -## Selalu terkini - -Anda bisa berlangganan ke umpan RSS GitHub untuk diinformasikan tentang rilis terbaru: - -- [lemmy](https://github.com/LemmyNet/lemmy/releases.atom) -- [lemmy-ui](https://github.com/LemmyNet/lemmy-ui/releases.atom) -- [lemmy-js-client](https://github.com/LemmyNet/lemmy-js-client/releases.atom) -- [joinlemmy-site](https://github.com/LemmyNet/joinlemmy-site/releases.atom) - -Ada juga [Matrix](https://matrix.to/#/!OwmdVYiZSXrXbtCNLw:matrix.org) untuk administrator peladen yang Anda bisa gabung. Anda akan bertemu orang-orang yang bersahabat yang akan membantu (atau paling tidak mencoba) jika Anda bertemu suatu masalah. diff --git a/src/id/administration/from_scratch.md b/src/id/administration/from_scratch.md deleted file mode 100644 index 594593f..0000000 --- a/src/id/administration/from_scratch.md +++ /dev/null @@ -1,251 +0,0 @@ -# Dari Awal - -> ⚠️ **Peringatan:** metode pemasangan ini tidak direkomendasikan oleh pengembang Lemmy. Jika Anda ada masalah, Anda harus menyelesaikannya sendiri atau tanya pembuat terkait. Jika Anda melihat ada galat di peladen yang dipasang menggunakan metode ini, harap sebutkan di laporan galat. - -Instruksi ini ditulis untuk Ubuntu 20.04. - -## Pemasangan - -### Bagian-Belakang Lemmy - -Karena dibuat dari sumber, jadi mungkin akan memakan waktu yang lama, terutama pada perangkat yang lambat. Contohnya, Lemmy v0.12.2 membutuhkan 17 menit untuk dibangun pada VPS inti ganda. Jika Anda lebih suka binari sudah siap, gunakan Docker. - -Susun dan pasang Lemmy, siapkan basis data: - -```bash -apt install pkg-config libssl-dev libpq-dev cargo postgresql -# pasang rilis terbaru, anda juga bisa menspesifikkannya dengan --version -# argumen --locked menggunakan versi dependensi yang sama dengan yang dispesifikkan di -# `cargo.lock` saat waktu perilisan. menjalankannya tanpa bendera akan menggunakan versi -# rilis minor dari dependensi tersebut, yang tidak selalu terjamin akan tersusun. -cargo install lemmy_server --target-dir /usr/bin/ --locked -# ganti db-passwd dengan kata sandi yang dibuat acak -sudo -iu postgres psql -c "CREATE USER lemmy WITH PASSWORD 'db-passwd';" -sudo -iu postgres psql -c "CREATE DATABASE lemmy WITH OWNER lemmy;" -adduser lemmy --system --disabled-login --no-create-home --group -``` - -Konfigurasi minimal Lemmy, taruh ini di `/etc/lemmy/lemmy.hjson` (lihat di [sini](https://github.com/LemmyNet/lemmy/blob/main/config/config.hjson) untuk pilihan konfigurasi lebih banyak). Jalankan `chown lemmy:lemmy /etc/lemmy/ -R` untuk mengatur pemilik yang benar. - -```hjson -{ - database: { - # taruh db-passwd anda dari atas - password: "db-passwd" - } - # ganti dengan domain anda - hostname: example.com - bind: "127.0.0.1" - # taruh kata acak di sini (diperlukan untuk enkripsi token masuk) - jwt_secret: "changeme" -} -``` - -Berkas unit systemd, sehingga Lemmy bisa secara otomatis dimulai dan diberhentikan, log dikelola lewat journalctl dll. Taruh berkas ini ke /etc/systemd/system/lemmy.service, kemudian jalankan `systemctl enable lemmy` dan `systemctl start lemmy`. - -``` -[Unit] -Description=Lemmy - A link aggregator for the fediverse -After=network.target - -[Service] -User=lemmy -ExecStart=/usr/bin/lemmy_server -Environment=LEMMY_CONFIG_LOCATION=/etc/lemmy/lemmy.hjson -Restart=on-failure - -# penguatan -ProtectSystem=yes -PrivateTmp=true -MemoryDenyWriteExecute=true -NoNewPrivileges=true - -[Install] -WantedBy=multi-user.target -``` - -Jika Anda melakukan semuanya dengan benar, log Lemmy dari `journalctl -u lemmy` akan menampilkan "Starting http server at 127.0.0.1:8536". Anda juga bisa menjalankan `curl localhost:8536/api/v3/site` yang seharusnya mengembalikan respons yang berhasil , seperti `{"site_view":null,"admins":[],"banned":[],"online":0,"version":"unknown version","my_user":null,"federated_instances":null}`. - -### Pasang lemmy-ui (antarmuka web) - -Pasang dependensi (nodejs dan yarn di repositori Ubuntu 20.04 terlalu tua) - -```bash -# https://classic.yarnpkg.com/en/docs/install/#debian-stable -curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - -echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list -# https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions -curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash - -sudo apt install nodejs yarn -``` - -Klon repositori git, checkout versi yang Anda inginkan (dalam contoh ini adalah 0.12.2) dan susun itu. - -```bash -mkdir /var/lib/lemmy-ui -cd /var/lib/lemmy-ui -chown lemmy:lemmy . -# jangan susun sebagai admin -sudo -u lemmy bash -git clone https://github.com/LemmyNet/lemmy-ui.git --recursive . -git checkout 0.12.2 # ganti dengan versi yang ingin anda pasang -yarn install --pure-lockfile -yarn build:prod -exit -``` - -Tambahkan berkas unit systemd yang lain, kali ini untuk lemmy-ui. Anda perlu mengganti example.com dengan domain Anda. Taruh berkas di `/etc/systemd/system/lemmy-ui.service`, kemudian jalankan `systemctl enable lemmy-ui` dan `systemctl start lemmy-ui`. - -``` -[Unit] -Description=Lemmy UI - Web frontend for Lemmy -After=lemmy.service -Before=nginx.service - -[Service] -User=lemmy -WorkingDirectory=/var/lib/lemmy-ui -ExecStart=/usr/bin/node dist/js/server.js -Environment=LEMMY_INTERNAL_HOST=localhost:8536 -Environment=LEMMY_EXTERNAL_HOST=example.com -Environment=LEMMY_HTTPS=true -Restart=on-failure - -# Hardening -ProtectSystem=full -PrivateTmp=true -NoNewPrivileges=true - -[Install] -WantedBy=multi-user.target -``` - -Jika semuanya benar, perintah `curl -I localhost:1234` seharusnya menampilkan `200 OK` di bagian atas. - -### Mengonfigurasi proksi-balik dan TLS - -Pasang dependensi - -```bash -apt install nginx certbot python3-certbot-nginx -``` - -Minta sertifikat TLS Let's Encrypt (ikuti saja instruksinya) - -```bash -certbot certonly --nginx -``` - -Sertifikat Let's Encrypt akan diperbarui secara otomatis, jadi tambahkan baris di bawah ini ke crontab Anda, dengan menjalankan `sudo crontab -e`. Ganti example.com dengan domain Anda. - -``` -@daily certbot certonly --nginx --cert-name example.com -d example.com --deploy-hook 'nginx -s reload' -``` - -Akhirnya, tambahkan konfigurasi nginx. Setelah mengunduh, Anda perlu mengubah beberapa variabel di berkas. - -```bash -curl https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/nginx.conf \ - --output /etc/nginx/sites-enabled/lemmy.conf -# taruh domain anda alih-alih example.com -sed -i -e 's/{{domain}}/example.com/g' /etc/nginx/sites-enabled/lemmy.conf -sed -i -e 's/{{lemmy_port}}/8536/g' /etc/nginx/sites-enabled/lemmy.conf -sed -i -e 's/{{lemmy_ui_port}}/1234/g' /etc/nginx/sites-enabled/lemmy.conf -nginx -s reload -``` - -Sekarang buka domain Lemmy Anda di peramban, dan itu seharusnya menampilkan sebuah layar konfigurasi. Gunakan untuk membuat pengguna admin pertama dan komunitas baku. - -### Pict-rs (untuk hos gambar, opsional) - -Pict-rs memerlukan Rust versi yang lebih baru dari yang tersedia di repositori Ubuntu 20.04. Jadi Anda perlu memasang [Rustup](https://rustup.rs/) yang akan memasang toolchain untuk Anda. - -```bash -apt install ffmpeg exiftool libgexiv2-dev --no-install-recommends -adduser pictrs --system --disabled-login --no-create-home --group -mkdir /var/lib/pictrs-source -cd /var/lib/pictrs -git clone https://git.asonix.dog/asonix/pict-rs.git . -# periksa docker-compose.yml untuk versi pict-rs yang digunakan oleh lemmy -# https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/docker-compose.yml#L40 -git checkout v0.2.6-r2 -# atau tinggal tambahkan folder bin ke $PATH anda -$HOME/.cargo/bin/cargo build --release -cp target/release/pict-rs /usr/bin/ -# buat folder untuk menyimpan data gambar -mkdir /var/lib/pictrs -chown pictrs:pictrs /var/lib/pictrs -``` - -Pict-rs memerlukan perintah `magick` yang ada di ImageMagick versi 7, tapi Ubuntu 20.04 hanya ada ImageMagick 6. Jadi Anda harus memasangnya secara manual, seperti lewat [situs web resmi](https://imagemagick.org/script/download.php#linux). - -``` -wget https://download.imagemagick.org/ImageMagick/download/binaries/magick -# bandingkan hash dengan "message digest" di halaman resmi yang ditautkan di atas -sha256sum magick -mv magick /usr/bin/ -chmod 755 /usr/bin/magick -``` - -Seperti sebelumnya, letakkan konfigurasi di bawah ini ke `/etc/systemd/system/pictrs.service`, kemudian jalankan `systemctl enable pictrs` dan `systemctl start pictrs`. - -``` -[Unit] -Description=pict-rs - A simple image host -After=network.target - -[Service] -User=pictrs -ExecStart=/usr/bin/pict-rs -Environment=PICTRS_PATH=/var/lib/pictrs -Environment=PICTRS_ADDR=127.0.0.1:8080 -Restart=on-failure - -[Install] -WantedBy=multi-user.target -``` - -Jika berjalan dengan benar, `curl 127.0.0.1:8080` seharusnya tidak menampilkan apa-apa (terutama tidak ada galat). - -Sekarang tambahkan baris `pictrs_url: "http://127.0.0.1:8080"` ke `/etc/lemmy/lemmy.hjson` sehingga Lemmy mengetahui bagaimana menjangkau Pict-rs. Kemudian mulai ulang Lemmy dengan `systemctl restart lemmy` dan pengunggahan gambar seharusnya bisa bekerja. - -## Meningkatkan/Memperbarui - -### Lemmy - -```bash -# pasang rilis terbaru, anda juga bisa menspesifikkannya dengan --version -cargo install lemmy_server --target-dir /usr/bin/ -systemctl restart lemmy -``` - -### Lemmy UI - -```bash -cd /var/lib/lemmy-ui -sudo -u lemmy -git checkout main -git pull --tags -git checkout 0.12.2 # ganti dengan versi yang ingin anda pasang -git submodule update -yarn install --pure-lockfile -yarn build:prod -exit -systemctl restart lemmy-ui -``` - -### Pict-rs - -```bash -rustup update -cd /var/lib/pictrs-source -git checkout main -git pull --tags -# periksa docker-compose.yml untuk versi pict-rs yang digunakan oleh lemmy -# https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/docker-compose.yml#L40 -git checkout v0.2.6-r2 -# atau tinggal tambahkan folder bin ke $PATH anda -$HOME/.cargo/bin/cargo build --release -cp target/release/pict-rs /usr/bin/ -systemctl restart pictrs -``` diff --git a/src/id/administration/install_ansible.md b/src/id/administration/install_ansible.md deleted file mode 100644 index 1b7997b..0000000 --- a/src/id/administration/install_ansible.md +++ /dev/null @@ -1,3 +0,0 @@ -# Pemasangan Menggunakan Ansible - -Ikuti instruksi di repositori [Lemmy-Ansible](https://github.com/LemmyNet/lemmy-ansible). diff --git a/src/id/administration/install_docker.md b/src/id/administration/install_docker.md deleted file mode 100644 index c3ea32e..0000000 --- a/src/id/administration/install_docker.md +++ /dev/null @@ -1,54 +0,0 @@ -# Pemasangan Menggunakan Docker - -Pastikan Anda sudah punya docker dan docker-compose(>=`1.24.0`) terpasang. Di Ubuntu, tinggal jalankan `apt install docker-compose docker.io`. Kemudian, - -```bash -# buat sebuah folder untuk berkas lemmy. lokasinya tidak penting, bisa ditaruh dimana saja -mkdir /lemmy -cd /lemmy - -# unduh berkas konfigurasi baku -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/docker-compose.yml -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/lemmy.hjson - -# atur izin yang benar untuk folder pictrs -mkdir -p volumes/pictrs -sudo chown -R 991:991 volumes/pictrs -``` - -Buka `docker-compose.yml` Anda dan pastikan `LEMMY_EXTERNAL_HOST` untuk `lemmy-ui` diatur ke hos yang benar Anda. - -``` -- LEMMY_INTERNAL_HOST=lemmy:8536 -- LEMMY_EXTERNAL_HOST=your-domain.com -- LEMMY_HTTPS=false -``` - -Jika Anda ingin kata sandi basis data yang berbeda, Anda harus menggantinya juga di `docker-compose.yml` **sebelum** pemulaian pertama Anda. - -Setelah ini, coba lihat ke [berkas konfigurasi](configuration.md) bernama `lemmy.hjson` dan coba sesuaikan, khususnya nama hos dan mungkin kata sandi basis data. Kemudian jalankan: - -`docker-compose up -d` - -Anda bisa mengakses lemmy-ui di `http://localhost:1235` - -Untuk membuat Lemmy tersedia di luar peladen, Anda perlu mengatur proksi balik, seperti Nginx. [Contoh konfigurasi nginx](https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/nginx.conf), dapat disiapkan dengan: - -```bash -wget https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/nginx.conf -# ganti dengan {{ vars }} -# lemmy_port baku adalah 8536 -# lemmy_ui_port baku adalah 1235 -sudo mv nginx.conf /etc/nginx/sites-enabled/lemmy.conf -``` - -Anda juga harus menyiapkan TLS, seperti [Let's Encrypt](https://letsencrypt.org/). Setelah ini, Anda harus memulai ulang Nginx untuk memuat ulang konfigurasi. - -## Memperbarui - -Untuk memperbarui ke versi terbaru, Anda bisa secara manual mengganti versi di `docker-compose.yml`. Atau, ambil versi terbaru dari repositori git kami: - -```bash -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/prod/docker-compose.yml -docker-compose up -d -``` diff --git a/src/id/administration/on_aws.md b/src/id/administration/on_aws.md deleted file mode 100644 index b785cc8..0000000 --- a/src/id/administration/on_aws.md +++ /dev/null @@ -1,53 +0,0 @@ -# Pemasangan di AWS - -> ⚠️ **Peringatan:** metode pemasangan ini tidak direkomendasikan oleh pengembang Lemmy. Jika Anda ada masalah, Anda harus menyelesaikannya sendiri atau tanya pembuat terkait. Jika Anda melihat ada galat di peladen yang dipasang menggunakan metode ini, harap sebutkan di laporan galat. - -## CDK Lemmy AWS - -Ini mengadung definisi infrastruktur yang diperlukan untuk memasang [Lemmy](https://github.com/LemmyNet/lemmy) ke AWS menggunakan [Kit Pengembangan Awan](https://docs.aws.amazon.com/cdk/latest/guide/home.html) mereka. - -### Termasuk: - -- Kluster fargate ECS - - Lemmy-UI - - Lemmy - - Pictrs -- CDN CloudFront -- Penyimpanan EFS untuk pengunggahan gambar -- Basis Data Postgres Aurora Tanpa Peladen -- Hos VPC Bastion -- Penyeimbang beban untuk Lemmy -- Rekaman DNS untuk situs Anda - -## Mulai cepat - -Klon [Lemmy-CDK](https://github.com/jetbridge/lemmy-cdk). - -Klon [Lemmy](https://github.com/LemmyNet/lemmy) dan [Lemmy-UI](https://github.com/LemmyNet/lemmy-ui) ke direktori di atas ini. - -```shell -cp example.env.local .env.local -# sunting .env.local -``` - -Anda harus menyunting .env.local dengan pengaturan situs Anda. - -```shell -npm install -g aws-cdk -npm install -cdk bootstrap -cdk deploy -``` - -## Harga - -Ini _bukan_ cara termurah untuk menjalankan Lemmy. Basis Data Aurora Tanpa Peladen bisa membebani Anda ~$90/bulan jika tidak pergi tidur. - -## Perintah CDK yang Berguna - -- `npm run build` susun typescript ke js -- `npm run watch` lacak perubahan dan susun -- `npm run test` laksanakan uji unit jest -- `cdk deploy` jalankan tumpukan (stack) ini ke akun/wilayah AWS baku Anda -- `cdk diff` bandingkan tumpukan yang jalan dengan kondisi saat ini -- `cdk synth` memancarkan templat CloudFormation yang disintesis diff --git a/src/id/administration/troubleshooting.md b/src/id/administration/troubleshooting.md deleted file mode 100644 index 5fe2f08..0000000 --- a/src/id/administration/troubleshooting.md +++ /dev/null @@ -1,67 +0,0 @@ -# Penyelesaian Masalah - -Berbagai masalah yang bisa terjadi di peladen baru dan bagaimana untuk menyelesaikan mereka. - -Banyak fitur Lemmy bergantung pada konfigurasi proksi-balik yang benar. Pastikan yang Anda sama dengan [konfigurasi nginx](https://github.com/LemmyNet/lemmy/blob/main/ansible/templates/nginx.conf) kami. - -## Umum - -### Log - -Untuk masalah antarmuka, periksa [konsol peramban](https://webmasters.stackexchange.com/a/77337) untuk pesan galat apa pun. - -Untuk log peladen, jalankan `docker-compose logs -f lemmy` di folder pemasangan Anda. Anda juga bisa menjalankan `docker-compose logs -f lemmy lemmy-ui pictrs` untuk mendapatkan log dari layanan yang berbeda. - -Jika itu tidak memberikan informasi yang cukup, coba ubah baris `RUST_LOG=error` di `docker-compose.yml` ke `RUST_LOG=info` atau `RUST_LOG=verbose`, kemudian jalankan `docker-compose restart lemmy`. - -### Membuat pengguna admin tidak bekerja - -Pastikan bahwa websocket bekerja dengan benar, dengan memeriksa konsol peramban untuk galat. Di nginx, tajuk berikut penting untuk ini: - -``` -proxy_http_version 1.1; -proxy_set_header Upgrade $http_upgrade; -proxy_set_header Connection "upgrade"; -``` - -### Membatasi galat ketika banyak pengguna mengakses situs - -Periksa bahwa tajuk `X-Real-IP` dan `X-Forwarded-For` dikirim ke Lemmy oleh proksi-balik. Kalau tidak, itu akan menghitung semua tindakan terhadap batas dari proksi-balik IP. Di nginx, itu seharusnya tertampil sebagai: - -``` -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header Host $host; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -``` - -## Federasi - -### Peladen lain tidak bisa mengambil konten lokal (komunitas, pos, dll.) - -Proksi-balik Anda (mis. nginx) perlu meneruskan permintaan dengan tajuk `Accept: application/activity+json` ke bagian-belakang. Itu ditangani oleh baris berikut: - -``` -set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}"; -if ($http_accept = "application/activity+json") { -set $proxpass "http://0.0.0.0:{{ lemmy_port }}"; -} -if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { -set $proxpass "http://0.0.0.0:{{ lemmy_port }}"; -} -proxy_pass $proxpass; -``` - -Anda bisa memeriksa bahwa itu bekerja dengan benar dengan menjalankan perintah berikut, semuanya seharusnya mengembalikan JSON yang valid: - -``` -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/post/123 # id dari sebuah pos lokal -curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # id dari sebuah komentar lokal -``` - -### Mengambil konten jarak jauh bekerja, tapi mengepos/berkomentar di komunitas jarak jauh gagal - -Periksa bahwa [federasi dibolehkan pada kedua belah peladen](../federation/administration.md#instance-allowlist-and-blocklist). - -Juga pastikan bahwa waktu di peladen Anda sudah akurat. Aktifitas ditandai dengan waktu dan akan dihapus jika meleset lebih dari 10 detik. diff --git a/src/id/client_development/client_development.md b/src/id/client_development/client_development.md deleted file mode 100644 index e8db912..0000000 --- a/src/id/client_development/client_development.md +++ /dev/null @@ -1,5 +0,0 @@ -# Pengembangan Klien - -- [Dokumen API](/api) -- [Ekstra API HTTP](http_api_extras.md) -- [Panduan Membuat Tema](theming.md) diff --git a/src/id/client_development/custom_frontend.md b/src/id/client_development/custom_frontend.md deleted file mode 100644 index 7693d74..0000000 --- a/src/id/client_development/custom_frontend.md +++ /dev/null @@ -1,66 +0,0 @@ -# Membuat Antarmuka Kustom - -Bagian belakang dan antarmuka terpisah dan berjalan di kontainer Docker mandiri. Mereka hanya berkomunikasi lewat [API Lemmy](api_reference.md), yang membuat mudah untuk menulis antarmuka alternatif. - -Ini membuka banyak potensi untuk antarmuka kustom, yang bisa mengubah banyak desain dan pengalaman pengguna Lemmy. Contoh, mungkin bisa untuk membuat sebuah antarmuka dalam gaya forum tradisional seperti [phpBB](https://www.phpbb.com/) atau gaya tanya-jawab seperti [stackoverflow](https://stackoverflow.com/), dll. Semuanya tanpa harus memikirkan tentang kueri basis data, autentikasi, atau ActivityPub, yang semua bisa Anda dapatkan secara gratis. - -## Pengembangan - -Anda bisa menggunakan bahasa apa pun untuk membuat antarmuka kustom. Pilihan termudah adalah dengan _fork_ [antarmuka resmi](https://github.com/LemmyNet/lemmy-ui), [lemmy-lite](https://github.com/IronOxidizer/lemmy-lite), atau [lemmy-frontend-example](https://github.com/LemmyNet/lemmy-front-end-example). Apa pun itu, prinsipnya sama: _bind_ ke `LEMMY_EXTERNAL_HOST` (baku: `localhost:8536`) dan mengelola permintaan menggunakan API Lemmy di `LEMMY_INTERNAL_HOST` (baku: `lemmy:8536`). Gunakan juga `LEMMY_HTTPS` untuk membuat tautan dengan protokol yang benar. - -Langkah selanjutnya adalah membangun _image_ Docker dari antarmuka Anda. Jika Anda _fork_ proyek yang sudah ada sebelumnya, seharusnya ada `Dockerfile` di sana dan instruksi untuk membangunnya. Kalau tidak, coba cari dalam bahasa Anda di [dockerhub](https://hub.docker.com/), _image_ resmi biasanya mempunyai instruksi membangun di README mereka. Buat sebuah _image_ Docker dengan tanda, kemudian cari bagian berikut di `docker/dev/docker-compose.yml`: - -``` - lemmy-ui: - image: dessalines/lemmy-ui:v0.8.10 - ports: - - "1235:1234" - restart: always - environment: - - LEMMY_INTERNAL_HOST=lemmy:8536 - - LEMMY_EXTERNAL_HOST=localhost:8536 - - LEMMY_HTTPS=false - depends_on: - - lemmy -``` - -Yang hanya harus Anda lakukan adalah mengganti nilai untuk `image` dengan tanda dari _image_ Docker Anda (dan kalau bisa variabel lingkungannya, jika Anda membutuhkan yang berbeda). Kemudian jalankan `./docker_update.sh`, dan setelah penyusunan, antarmuka Anda akan tersedia di `http://localhost:1235`. Anda juga bisa membuat perubahan yang sama ke `docker/federation/docker-compose.yml` dan jalankan `./start-local-instances.bash` untuk menguji federasi dengan antarmuka Anda. - -## Pasang dengan Docker - -Setelah membangun _image_ Docker, Anda perlu memasukkannya ke sebuah registri Docker (seperti [dockerhub](https://hub.docker.com/)). Kemudian perbarui `docker-compose.yml` di peladen Anda, mengganti `image` untuk `lemmy-ui`, seperti yang dijelaskan di atas. Jalankan `docker-compose.yml`, kemudian setelah beberapa saat peladen Anda akan menggunakan antarmuka yang baru. - -Perlu dicatat, jika peladen Anda dipasang menggunakan Ansible, ini akan menimpa `docker-compose.yml` di setiap pemulaian, mengembalikannya ke antarmuka baku. Jika begitu, Anda harus menyalin folder `ansible/` dari proyek ini ke repositori Anda, dan atur `docker-compose.yml` langsung di repo. - -Mungkin juga untuk menggunakan berbagai antarmuka untuk satu peladen yang sama, antara menggunakan subdomain atau subfolder. Untuk itu, jangan sunting bagian `lemmy-ui` di `docker-compose.yml`, tapi gandakan itu, atur nama, _image_, dan porta sehingga satu sama lain berbeda. Kemudian sunting konfigurasi nginx untuk meneruskan permintaan ke antarmuka yang sesuai, tergantung subdomain atau jalurnya. - -## Terjemahan - -Anda bisa menambahkan repositori [lemmy-translations](https://github.com/LemmyNet/lemmy-translations) ke proyek Anda sebagai [git submodule](https://git-scm.com/book/id/v2/Git-Tools-Submodules). Dengan begitu, Anda bisa memanfaatkan terjemahan yang sama dengan yang digunakan di antarmuka resmi dan juga akan bisa menerima terjemahan baru yang dikontribusikan lewat Weblate. - -## Pembatasan - -Lemmy melakukan pembatasan untuk banyak tindakan berdasarkan IP klien. Tetapi, jika Anda melakukan panggilan API di sisi peladen (cth. seperti _rendering_ sisi peladen, atau pra-_rendering_ javascript), Lemmy akan mengambil IP dari kontainer Docker. Artinya semua permintaan datang dari IP yang sama, dan akan dibatasi lebih cepat. Untuk menghindari permasalahan ini, Anda perlu meneruskan tajuk `X-REAL-IP` dan `X-FORWARDED-FOR` ke Lemmy (tajuk diatur oleh konfigurasi nginx kami). - -Berikut adalah contoh potongan untuk NodeJS: - -```javascript -function setForwardedHeaders(headers: IncomingHttpHeaders): { - [key: string]: string, -} { - let out = { - host: headers.host, - }; - if (headers["x-real-ip"]) { - out["x-real-ip"] = headers["x-real-ip"]; - } - if (headers["x-forwarded-for"]) { - out["x-forwarded-for"] = headers["x-forwarded-for"]; - } - - return out; -} - -let headers = setForwardedHeaders(req.headers); -let client = new LemmyHttp(httpUri, headers); -``` diff --git a/src/id/client_development/http_api_extras.md b/src/id/client_development/http_api_extras.md deleted file mode 100644 index 3363136..0000000 --- a/src/id/client_development/http_api_extras.md +++ /dev/null @@ -1,82 +0,0 @@ -# Ekstra API HTTP Lemmy - -Dokumen ini mengandung ekstra yang tidak ada di [dokumentasi API](/api). - - - -- [Contoh Curl](#contoh-curl) -- [Fitur khusus API HTTP](#fitur-khusus-api-http) - - [Umpan RSS/Atom](#umpan-rssatom) - - [Gambar](#gambar) - - [Buat (permintaan)](#buat-permintaan) - - [Buat (respons)](#buat-respons) - - [Hapus](#hapus) - - - -## Contoh Curl - -**Contoh GET** - -``` -curl "http://localhost:8536/api/v2/community/list?sort=Hot"` -``` - -**Contoh POST** - -``` -curl -i -H \ -"Content-Type: application/json" \ --X POST \ --d '{ - "comment_id": 374, - "score": 1, - "auth": eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MiwiaXNzIjoidGVzdC5sZW1teS5tbCJ9.P77RX_kpz1a_geY5eCp29sl_5mAm-k27Cwnk8JcIZJk -}' \ -http://localhost:8536/api/v2/comment/like -``` - -## Fitur Khusus API HTTP - -Fitur berikut tidak bisa diakses dari API WebSocket: - -- [Umpan RSS/Atom](#umpan-rssatom) -- [Gambar](#gambar) - -### Umpan RSS/Atom - -- Semua - `/feeds/all.xml?sort=Hot` -- Komunitas - `/feeds/c/community-name.xml?sort=Hot` -- Pengguna - `/feeds/u/user-name.xml?sort=Hot` - -### Gambar - -Lemmy meneruskan permintaan gambar ke Pictrs yang berjalan di lokal. - -`GET /pictrs/image/{filename}?format={webp, jpg, ...}&thumbnail={96}` - -_Format dan keluku opsional._ - -#### Buat (Permintaan) - -Konten yang diunggah harus merupakan data format/multi-bagian dengan _array_ gambar yang terletak di dalam kunci images[]. - -`POST /pictrs/image` - -#### Buat (respons) - -``` -{ - "files": [ - { - "delete_token": "{token}", - "file": "{file}.jpg" - } - ], - "msg": "ok" -} -``` - -#### Hapus - -`GET /pictrs/image/delete/{delete_token}/{file}` diff --git a/src/id/client_development/theming.md b/src/id/client_development/theming.md deleted file mode 100644 index 87ef09e..0000000 --- a/src/id/client_development/theming.md +++ /dev/null @@ -1,19 +0,0 @@ -# Panduan Membuat Tema - -Lemmy menggunakan [Bootstrap v4](https://getbootstrap.com/) dan sangat sedikit kelas CSS kostum, jadi tema yang kompatibel dengan Bootstrap v4 seharusnya bekerja dengan baik. - -## Membuat - -- Gunakan alat seperti [bootstrap.build](https://bootstrap.build/) untuk membuat tema Bootstrap v4. Ketika sudah, ekspor `bootstrap.min.css` dan simpan juga `_variables.scss`. - -## Menguji - -- Untuk menguji tema, Anda bisa antara menggunakan alat web peramban Anda atau plugin seperti Stylus untuk menyalin tempel tema ketika menjelajah Lemmy. - -## Menambahkan - -1. _Fork_ [lemmy-ui](https://github.com/LemmyNet/lemmy-ui). -1. Salin `{my-theme-name}.min.css` ke `src/assets/css/themes`. (Anda juga bisa menyalin `_variables.scss` ). -1. Pergi ke `src/shared/utils.ts` dan tambahkan `{my-theme-name}` ke daftar tema. -1. Uji lokal -1. Lakukan permintaan dorong (pull request) dengan perubahan tersebut. diff --git a/src/id/code_of_conduct.md b/src/id/code_of_conduct.md deleted file mode 100644 index b8b551d..0000000 --- a/src/id/code_of_conduct.md +++ /dev/null @@ -1,35 +0,0 @@ -# Kode Etik - -- Kami berkomitmen untuk menyediakan lingkungan yang ramah dan aman bagi semua orang, tanpa memandang tingkat pengalaman, identitas dan ekspresi gender, orientasi seksual, kecacatan, penampilan pribadi, ukuran tubuh, ras, etnis, usia, agama, kebangsaan, atau lainnya yang serupa. -- Hindari menggunakan alias seksual atau nama panggilan lain yang dapat mengganggu lingkungan yang ramah dan aman bagi semua orang. -- Harap bersikap baik dan sopan. Tidak perlu jahat atau kasar. -- Hormati bahwa setiap orang memiliki pendapat yang berbeda dan bahwa setiap pilihan desain atau implementasi membawa timbal baliknya masing-masing. Jarang ada jawaban yang benar. -- Pertahankan kritik yang tidak terstruktur seminimal mungkin. Jika Anda memiliki ide kuat yang ingin Anda coba, buat turunan (fork) dan lihat cara kerjanya. -- Kami akan mengecualikan Anda dari interaksi jika Anda menghina, merendahkan, atau melecehkan siapa pun. Itu bukan perilaku yang disambut baik. Kami menafsirkan istilah "pelecehan" seperti yang berada di definisi [Citizen Code of Conduct](https://github.com/stumpsyn/policies/blob/master/citizen_code_of_conduct.md); jika Anda memiliki ketidakjelasan tentang apa yang mungkin termasuk dalam konsep itu, silakan baca definisi tersebut. Secara khusus, kami tidak menoleransi perilaku yang mengecualikan orang-orang yang termasuk kelompok yang terpinggirkan secara sosial. -- Pelecehan pribadi juga tidak dapat diterima. Tidak peduli siapa Anda, jika Anda merasa telah atau sedang dilecehkan atau dibuat tidak nyaman oleh anggota komunitas, harap hubungi salah satu ops saluran atau tim moderasi Lemmy segera. Baik Anda kontributor tetap atau pendatang baru, kami peduli untuk menjadikan komunitas ini tempat yang aman bagi Anda dan kami mendukung Anda. -- Demikian juga segala perilaku spam, _troll_, memicu, memancing, atau mencuri perhatian lainnya tidak diperbolehkan. - -[**Kirim Pesan ke Tim Moderasi di Mastodon**](https://mastodon.social/@LemmyDev) - -[**Kirim Surel ke Tim Moderasi**](mailto:contact@lemmy.ml) - -## Moderasi - -Ini merupakan kebijakan untuk menegakkan kode etik komunitas. Jika Anda rasa sebuah utas memerlukan moderasi, mohon hubungi tim moderasi Lemmy. - -1. Konten yang melanggar kode etik Lemmy, termasuk konten yang penuh kebencian, menyakitkan, menindas, atau eksklusifitas, tidak diperbolehkan (Mengutuk diperbolehkan, tetapi tidak menargetkan pengguna lain dan tidak dengan cara yang penuh kebencian). -2. Konten yang dianggap tidak pantas oleh moderator, baik yang tercantum dalam kode etik atau tidak, juga tidak diperbolehkan. -3. Moderator pertama-tama akan menanggapi konten tersebut dengan peringatan, pada saat yang sama konten yang menyinggung kemungkinan akan dihapus bila memungkinkan. -4. Jika peringatan tersebut tidak diindahkan, pengguna akan “ditendang”, yaitu dikeluarkan dari saluran komunikasi untuk menenangkan diri. -5. Jika pengguna kembali dan terus membuat masalah, mereka akan dilarang, yaitu dikecualikan tanpa batas waktu. -6. Moderator dapat memilih atas pilihan mereka untuk membatalkan larangan pengguna jika itu adalah pelanggaran pertama dan mereka menawarkan pihak yang tersinggung permintaan maaf yang tulus. -7. Jika seorang moderator melarang seseorang dan menurut Anda itu tidak dibenarkan, silakan bicarakan dengan moderator itu, atau dengan moderator lain, secara pribadi. Keluhan tentang larangan dalam saluran tidak diperbolehkan. -8. Moderator memiliki standar yang lebih tinggi daripada anggota komunitas lainnya. Jika seorang moderator membuat situasi yang tidak pantas, mereka seharusnya mengharapkan lebih sedikit kelonggaran daripada yang lain. - -Di komunitas Lemmy, kami berusaha untuk mengambil langkah ekstra untuk saling menjaga satu sama lain. Jangan hanya bertujuan untuk secara teknis tidak dapat ditembus, cobalah untuk menjadi diri Anda yang terbaik. Secara khusus, hindari berhubungan dengan masalah yang menyinggung atau sensitif, terutama jika itu di luar topik; ini terlalu sering menyebabkan pertengkaran yang tidak perlu, perasaan terluka, dan kepercayaan yang rusak; lebih buruk, itu dapat membuat orang menjauh dari komunitas sepenuhnya. - -Dan jika seseorang mempermasalahkan sesuatu yang Anda katakan atau lakukan, tahan keinginan untuk bersikap defensif. Berhentilah melakukan apa yang mereka keluhkan dan minta maaf. Bahkan jika Anda merasa telah disalahtafsirkan atau dituduh secara tidak adil, kemungkinan besar ada sesuatu yang dapat Anda komunikasikan dengan lebih baik — ingatlah bahwa adalah tanggung jawab Anda untuk membuat orang lain nyaman. Semua orang ingin bersahabat dan kami semua di sini pertama dan terutama karena kami ingin berbicara tentang teknologi yang keren. Anda akan menemukan bahwa orang akan bersemangat untuk mengambil niat baik dan memaafkan selama Anda mendapatkan kepercayaan mereka. - -Kebijakan penegakan yang tercantum di atas berlaku untuk semua tempat resmi Lemmy; termasuk repositori git di bawah [github.com/LemmyNet](https://github.com/LemmyNet) dan [yerbamate.ml/LemmyNet](https://yerbamate.ml/LemmyNet), [saluran Matrix](https://matrix.to/#/!BZVTUuEiNmRcbFeLeI:matrix.org), [lemmy.ml](https://lemmy.ml), dan peladen lain di bawah domain itu. Untuk proyek lain yang mengadopsi Kode Etik Lemmy, silakan hubungi pengelola proyek tersebut untuk penegakan. Jika Anda ingin menggunakan kode etik ini untuk proyek Anda sendiri, pertimbangkan untuk menyebutkan secara eksplisit kebijakan moderasi Anda atau membuat salinan dengan kebijakan moderasi Anda sendiri untuk menghindari kebingungan. - -Diadaptasi dari [Kode Etik Rust](https://www.rust-lang.org/policies/code-of-conduct), yang dimana berdasarkan pada [Kebijakan terhadap Troll Node.js](http://blog.izs.me/post/30036893703/policy-on-trolling) dan juga [Contributor Covenant v1.3.0](https://www.contributor-covenant.org/version/1/3/0/). diff --git a/src/id/contributing/contributing.md b/src/id/contributing/contributing.md deleted file mode 100644 index 3ec165d..0000000 --- a/src/id/contributing/contributing.md +++ /dev/null @@ -1,39 +0,0 @@ -# Berkontribusi - -Informasi tentang berkontribusi ke Lemmy, entah itu penerjemahan, menguji, pendesainan, atau pemrograman. - -## Pelacak Isu/Repositori - -- [GitHub (untuk isu dan permintaan dorong (pull request))](https://github.com/LemmyNet/lemmy) -- [Gitea (hanya untuk permintaan dorong)](https://yerbamate.ml/LemmyNet/lemmy) -- [Codeberg](https://codeberg.org/LemmyNet/lemmy) - -## Penerjemahan - -Periksa [Weblate Lemmy](https://weblate.yerbamate.ml/projects/lemmy/) untuk penerjemahan. Anda bisa juga membantu dengan [menerjemahkan dokumentasi ini](https://github.com/LemmyNet/lemmy-docs#adding-a-new-language). - -## Arsitektur - -### Antarmuka - -- Antarmuka ditulis dengan `Typescript`, menggunakan kerangka mirip-React yang dikenal sebagai [Inferno](https://infernojs.org/). Semua elemen antarmuka merupakan komponen `.tsx` yang dapat digunakan ulang. -- Repositori antarmuka adalah [lemmy-ui](https://github.com/LemmyNet/lemmy-ui). -- Rutenya adalah `src/shared/routes.ts`. -- Komponen berada di `src/shared/components`. - -### Bagian-Belakang - -- Bagian-belakang dengan `Rust`, menggunakan `Diesel` dan `Actix`. -- Kode peladen dibagi ke bagian utama di `src`. Mereka termasuk: - - `db` - Aksi basis data tingkat rendah. - - Penambahan basis data dilakukan menggunakan migrasi Diesel. Jalankan `diesel migration generate xxxxx` untuk menambahkan sesuatu yang baru. - - `api` - Interaksi pengguna tingkat tinggi (hal seperti `CreateComment`) - - `routes` - Endpoint peladen. - - `apub` - Konversi activitypub. - - `websocket` - Membuat peladen websocket. - -## Linting/Pemformatan - -- Setiap pengodean antarmuka dan bagian-belakang secara otomatis diformat kemudian dilinting menggunakan `husky` dan `lint-staged`. -- Rust dengan `cargo fmt` dan `cargo clippy`. -- Typescript dengan `prettier` dan `eslint`. diff --git a/src/id/contributing/docker_development.md b/src/id/contributing/docker_development.md deleted file mode 100644 index db88591..0000000 --- a/src/id/contributing/docker_development.md +++ /dev/null @@ -1,42 +0,0 @@ -# Pengembangan Docker - -## Dependensi - -### Distro berbasis Debian - -```bash -sudo apt install git docker-compose -sudo systemctl start docker -git clone https://github.com/LemmyNet/lemmy -``` - -### Distro berbasis Arch - -```bash -sudo pacman -S git docker-compose -sudo systemctl start docker -git clone https://github.com/LemmyNet/lemmy -``` - -## Jalankan - -```bash -cd docker/dev -./docker_update.sh -``` - -dan pergi ke http://localhost:1236 - -\*Catatan: banyak fitur (seperti dokumen dan gambar) tidak akan berfungsi tanpa menggunakan profil nginx seperti itu di `ansible/templates/nginx.conf`. - -Untuk mempercepat pengompilasian Docker, tambahkan yang di bawah ini ke `/etc/docker/daemon.json` dan mulai ulang Docker. - -``` -{ - "features": { - "buildkit": true - } -} -``` - -Jika penyusunan masih lambat, sebaiknya Anda gunakan [penyusunan lokal](local_development.md). diff --git a/src/id/contributing/federation_development.md b/src/id/contributing/federation_development.md deleted file mode 100644 index 9228a4d..0000000 --- a/src/id/contributing/federation_development.md +++ /dev/null @@ -1,52 +0,0 @@ -# Pengembangan Federasi - -## Menjalankan secara lokal - -Pasang dependensi yang dijelaskan di [pengembangan Docker](docker_development.md). Kemudian, jalankan berikut - -```bash -cd docker/federation -./start-local-instances.bash -``` - -Pengujian federasi membangun lima peladen: - -| Peladen | Nama Pengguna | Lokasi | Catatan | -| ------------- | ------------- | --------------------------------------- | ----------------------------------------------- | -| lemmy-alpha | lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540) | terfederasi dengan seluruh peladen lainnya | -| lemmy-beta | lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550) | terfederasi dengan seluruh peladen lainnya | -| lemmy-gamma | lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560) | terfederasi dengan seluruh peladen lainnya | -| lemmy-delta | lemmy_delta | [127.0.0.1:8570](http://127.0.0.1:8570) | hanya memperbolehkan federasi dengan lemmy-beta | -| lemmy-epsilon | lemmy_epsilon | [127.0.0.1:8580](http://127.0.0.1:8580) | menggunakan daftar-hitam, memblokir lemmy-alpha | - -Anda bisa masuk ke setiap itu dengan nama peladen dan `lemmy` sebagai kata sandinya, misal (`lemmy_alpha`, `lemmy`). - -Untuk memulai federasi antar peladen, kunjungi salah satu dari itu dan cari satu pengguna, komunitas, atau pos, seperti ini. Mohon dicatat bahwa bagian-belakang Lemmy berjalan di porta yang berbeda dari antarmuka, jadi Anda harus menambahkan angka porta di bilah URL dengan satu. - -- `!main@lemmy-alpha:8541` -- `http://lemmy-beta:8551/post/3` -- `@lemmy-gamma@lemmy-gamma:8561` - -Kontainer Firefox merupakan cara terbaik untuk menguji interaksi mereka. - -## Jalankan di sebuah peladen - -**Gunakan hanya untuk pengujian**, tidak di peladen aktif, dan ketahuilah bahwa mengaktifkan federasi dapat merusak peladen Anda. - -Ikuti instruksi pemasangan normal, entah menggunakan [Ansible](../administration/install_ansible.md) atau [secara manual](../administration/install_docker.md). Kemudian, ganti baris `image: dessalines/lemmy:v0.x.x` di `/lemmy/docker-compose.yml` dengan `image: dessalines/lemmy:federation`. Tambah dan konfigurasi [blok federasi ini](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson#L64) ke `lemmy.hjson` Anda. - -Setelah itu, dan kapan pun yang Anda inginkan untuk memperbarui ke versi terbaru, jalankan perintah ini di peladen: - -``` -cd /lemmy/ -sudo docker-compose pull -sudo docker-compose up -d -``` - -## Model Keamanan - -- Verifikasi tanda digital HTTP : Ini menjamin bahwa aktifitas memang datang dari aktifitas yang diklaim -- check_is_apub_valid : Memastikan bahwa itu ada di daftar peladen yang diperbolehkan -- Pemeriksaan tingkat rendah : Untuk memastikan bahwa pengguna bisa membuat/memperbarui/menghapus pos di peladen yang sama dengan pos tersebut - -Untuk poin terakhir, harap dicatat bahwa kita _tidak_ memeriksa apakah aktor yang mengirimkan aktifitas membuat sebuah pos sebenarnya sama dengan pembuat pos, atau pengguna yang menghapus pos merupakan moderator/admin. Hal tersebut diperiksa oleh kode API, dan merupakan tanggung jawab setiap peladen untuk memeriksa izin pengguna. Ini tidak meninggalkan vektor serangan apa pun, karena sebagai pengguna peladen normal tidak bisa melakukan aksi yang melanggar peraturan API. Satu-satunya yang bisa melakukannya adalah admin (dan perangkat lunak yang digunakan oleh admin). Tapi admin bisa melakukan apa pun di peladen, termasuk mengirim aktifitas dari akun pengguna lainnya. Jadi kita tidak akan mendapatkan keamanan apa pun dengan memeriksa izin mod dan serupa. diff --git a/src/id/contributing/local_development.md b/src/id/contributing/local_development.md deleted file mode 100644 index 27efd72..0000000 --- a/src/id/contributing/local_development.md +++ /dev/null @@ -1,114 +0,0 @@ -# Pengembangan Lokal - -### Pasang persyaratan penyusunan - -Pasang Rust menggunakan [opsi yang direkomendasikan di rust-lang.org](https://www.rust-lang.org/tools/install) (rustup). - -#### Distro berbasis Debian - -``` -sudo apt install git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak -# pasang yarn -curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - -echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list -sudo apt update && sudo apt install yarn -``` - -#### Distro berbasis Arch - -``` -sudo pacman -S git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak -# pasang yarn (stabil) -curl -o- -L https://yarnpkg.com/install.sh | bash -``` - -#### macOS - -Pasang [Homebrew](https://brew.sh/) jika Anda belum memasangnya. - -Terakhir, pasang Node dan Yarn. - -``` -brew install node yarn -``` - -### Dapatkan kode sumber bagian-belakang - -``` -git clone https://github.com/LemmyNet/lemmy.git -# atau alternatif dari gitea -# git clone https://yerbamate.ml/LemmyNet/lemmy.git -``` - -### Susun bagian-belakang (Rust) - -``` -cargo build -# untuk pengembangan, gunakan `cargo check` -``` - -### Dapatkan kode sumber antarmuka - -``` -git clone https://github.com/LemmyNet/lemmy-ui.git --recurse-submodules -``` - -### Siapkan PostgreSQL - -#### Distro berbasis Debian - -``` -sudo apt install postgresql -sudo systemctl start postgresql - -# jalankan db-init.sh, atau inisialisasi basis data postgres secara manual: -sudo -u postgres psql -c "create user lemmy with password 'password' superuser;" -U postgres -sudo -u postgres psql -c 'create database lemmy with owner lemmy;' -U postgres -export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy -``` - -#### Distro berbasis Arch - -``` -sudo pacman -S postgresql -sudo systemctl start postgresql - -# jalankan db-init.sh, atau inisialisasi basis data postgres secara manual: -sudo -u postgres psql -c "create user lemmy with password 'password' superuser;" -U postgres -sudo -u postgres psql -c 'create database lemmy with owner lemmy;' -U postgres -export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy -``` - -#### macOS - -``` -brew install postgresql -brew services start postgresql -/usr/local/opt/postgres/bin/createuser -s postgres - -# jalankan db-init.sh, atau inisialisasi basis data postgres secara manual: -psql -c "create user lemmy with password 'password' superuser;" -U postgres -psql -c 'create database lemmy with owner lemmy;' -U postgres -export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy -``` - -### Jalankan sebuah peladen pengembangan lokal - -``` -cd lemmy -cargo run -``` - -Kemudian buka [localhost:1235](http://localhost:1235) di peramban Anda. Untuk memuat ulang perubahan bagian-belakang, Anda akan harus menjalankan ulang `cargo run`. Anda bisa menggunakan `cargo check` sebagai jalan cepat untuk menemukan galat penyusunan. - -Untuk melakukan pengembangan antarmuka: - -``` -cd lemmy-ui -yarn -yarn dev -``` - -dan pergi ke [localhost:1234](http://localhost:1234). Simpanan antarmuka seharusnya menyusun ulang proyek tersebut. - -Mohon dicatat bahwa penyiapan ini tidak termasuk pengunggahan gambar. Jika Anda ingin menguji itu, Anda harus menggunakan [pengembangan Docker](docker_development.md). diff --git a/src/id/contributing/release_process.md b/src/id/contributing/release_process.md deleted file mode 100644 index 3b45dce..0000000 --- a/src/id/contributing/release_process.md +++ /dev/null @@ -1,19 +0,0 @@ -# Pencabangan dan Rilis - -## Cabang - -Secara umum, pengelolaan kami terhadap cabang seperti yang dijelaskan pada [A stable mainline branching model for Git (Model Pencabangan Jalur Utama yang Stabil untuk Git)](https://www.bitsnbites.eu/a-stable-mainline-branching-model-for-git/). Satu perbedaan adalah kami menghidari rebase dan gantinya gabung (merge) cabang dasar ke cabang aktif saat itu. Ini membantu menghindari dorong-paksa (force push) dan konflik. - -## Rilis - -- Untuk rilis besar: buat sebuah cabang baru `release/v0.x` -- Untuk rilis kecil: cherry-pick perubahan yang dinginkan ke cabang `release/v0.x` -- Buat sebuah beta atau versi kandidat rilis menggunakan `docker/prod/deploy.sh` -- Lakukan yang sama untuk `lemmy-ui`: `./deploy.sh 0.x.0-rc-x` -- Terapkan ke peladen uji federasi - - Menjaga satu peladen pada versi stabil terbaru untuk menguji kompatibilitas federasi (otomatisasi ini dengan Ansible) - - `ansible-playbook -i federation playbooks/site.yml --vault-password-file vault_pass -e rc_version=0.x.0-rc.x` -- Uji coba bahwa seluruhnya bekerja sesuai yang diharapkan, buat rilis beta/rc baru jika dibutuhkan -- Terapkan ke lemmy.ml, untuk menemukan masalah yang tersisa -- Jika itu berjalan baik, buat rilis `0.x.0` yang resmi dengan `docker/prod/deploy.sh` -- Mengumumkan rilis di Lemmy, Matrix, Mastodon diff --git a/src/id/contributing/resources.md b/src/id/contributing/resources.md deleted file mode 100644 index fbec868..0000000 --- a/src/id/contributing/resources.md +++ /dev/null @@ -1,42 +0,0 @@ -# Sumber/Pustaka - -- [Diesel to Postgres data types](https://kotiri.com/2018/01/31/postgresql-diesel-rust-types.html) -- [helpful diesel examples](http://siciarz.net/24-days-rust-diesel/) -- [Recursive query for adjacency list for nested comments](https://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tree/192462#192462) -- [SimpleMDE](https://github.com/sparksuite/simplemde-markdown-editor) -- [Markdown-it](https://github.com/markdown-it/markdown-it) -- [Sticky Sidebar](https://stackoverflow.com/questions/38382043/how-to-use-css-position-sticky-to-keep-a-sidebar-visible-with-bootstrap-4/49111934) -- [RXJS websocket](https://stackoverflow.com/questions/44060315/reconnecting-a-websocket-in-angular-and-rxjs/44067972#44067972) -- [Rust JWT](https://github.com/Keats/jsonwebtoken) -- [Hierarchical tree building javascript](https://stackoverflow.com/a/40732240/1655478) -- [Hot sorting discussion](https://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions) [2](https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9) -- [Classification types.](https://www.reddit.com/r/ModeratorDuck/wiki/subreddit_classification) -- [RES expando - Possibly make this into a switching react component.](https://github.com/honestbleeps/Reddit-Enhancement-Suite/tree/d21f55c21e734f47d8ed03fe0ebce5b16653b0bd/lib/modules/hosts) -- [Temp Icon](https://www.flaticon.com/free-icon/mouse_194242) -- [Rust docker build](https://shaneutt.com/blog/rust-fast-small-docker-image-builds/) -- [Zurb mentions](https://github.com/zurb/tribute) -- [TippyJS](https://github.com/atomiks/tippyjs) -- [SQL function indexes](https://sorentwo.com/2013/12/30/let-postgres-do-the-work.html) - -# Sumber ActivityPub - -## Dokumen Resmi - -- [ActivityPub standard](https://www.w3.org/TR/activitypub/) -- [Activitypub vocabulary](https://www.w3.org/TR/activitystreams-vocabulary/) - -## Penjelasan - -- [ActivityPub - one protocol to rule them all?](https://schub.io/blog/2018/02/01/activitypub-one-protocol-to-rule-them-all.html) -- [A highly opinionated guide to learning about ActivityPub](https://tinysubversions.com/notes/reading-activitypub/) -- [Activitypub implementers guide](https://socialhub.activitypub.rocks/t/draft-guide-for-new-activitypub-implementers/479) -- [Mastodon Blog: How to implement a basic ActivityPub server](https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/) -- [Mastodon Blog: Implementing an ActivityPub inbox](https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/) -- [Data storage questions](https://socialhub.activitypub.rocks/t/data-storage-questions/579) -- [Activitypub as it has been understood](https://flak.tedunangst.com/post/ActivityPub-as-it-has-been-understood) - -## Contoh dan Pustaka - -- [ActivityPub example server](https://github.com/tOkeshu/activitypub-example) -- [ActivityStreams crate](https://docs.rs/activitystreams/) -- [HTTP Signatures crate](https://git.asonix.dog/Aardwolf/http-signature-normalization) diff --git a/src/id/contributing/tests.md b/src/id/contributing/tests.md deleted file mode 100644 index d4f2780..0000000 --- a/src/id/contributing/tests.md +++ /dev/null @@ -1,29 +0,0 @@ -# Pengujian - -#### Rust - -Setelah memasang [dependensi pengembangan lokal](local_development.md), jalankan perintah berikut: - -```bash -psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" -./test.sh -``` - -### Federasi - -Pasang [dependensi pengembangan lokal](local_development.md) dan tambahkan baris berikut ke `/etc/hosts`: - -``` -127.0.0.1 lemmy-alpha -127.0.0.1 lemmy-beta -127.0.0.1 lemmy-gamma -127.0.0.1 lemmy-delta -127.0.0.1 lemmy-epsilon -``` - -Kemudian gunakan skrip berikut untuk menjalankan pengujian: - -``` -cd api_tests -./run-federation-test.bash -``` diff --git a/src/id/federation/administration.md b/src/id/federation/administration.md deleted file mode 100644 index 99b26bb..0000000 --- a/src/id/federation/administration.md +++ /dev/null @@ -1,40 +0,0 @@ -# Administrasi Federasi - -Catatan: federasi ActivityPub sedang dalam pengembangan. Untuk saat ini, direkomendasikan hanya diaktifkan di peladen uji dulu. - -Untuk mengaktifkan federasi, ubah pengaturan `federation.enabled` ke `true` di `lemmy.hjson`, dan mulai ulang Lemmy. - -Federasi tidak dimulai secara otomatis, tapi harus dipicu secara manual melalui pencarian. Untuk itu, Anda harus memasukkan referensi ke objek jarak jauh, seperti: - -- `!main@lemmy.ml` (Komunitas) -- `@nutomic@lemmy.ml` (Pengguna) -- `https://lemmy.ml/c/programming` (Komunitas) -- `https://lemmy.ml/u/nutomic` (Pengguna) -- `https://lemmy.ml/post/123` (Pos) -- `https://lemmy.ml/comment/321` (Komentar) - -Untuk tinjauan bagaimana federasi di Lemmy bekerja dalam tingkat teknis, periksa [Tinjauan Federasi](overview.md) kami. - -## Mode Federasi - -Melalui kombinasi pilihan konfigurasi federasi, ada beberapa mode federasi yang berbeda, tergantung kepada pembatasannya. Untuk sekarang, kami tidak merekomendasikan untuk menggunakan federasi terbuka, karena alat moderasi masih lacak dan mungkin masih ada masalah keamanan di kode federasi. Federasi terbuka seharusnya baik-baik saja untuk peladen uji atau kecil, tapi peladen besar disarankan untuk menggunakan federasi yang lebih tertutup. - -Perlu dicatat bahwa pengaturan tersebut hanya mempengaruhi pengiriman dan penerimaan data antar peladen. Jika federasi dibolehkan dengan suatu peladen, kemudian dihapus dari daftar yang dibolehkan, ini tidak mempengaruhi data yang sudah difederasi sebelumnya. Komunitas, pengguna, pos, dan komentar tersebut masih terlihat, hanya tidak diperbarui saja. Dan bahkan jika suatu peladen diblokir, ia masih bisa mengambil dan menampilkan data publik dari peladen Anda. - -### Menggunakan daftar yang dibolehkan, strict_allowlist = true - -Mode paling ketat. Lemmy hanya akan terfederasi dengan peladen dari daftar yang dibolehkan, dan memblokir yang lainnya. Ini termasuk semua pos, komentar, pilihan (pilih atas atau bawah), dan pesan pribadi, Anda hanya akan bisa melihat mereka jika pembuatnya ada di peladen yang dibolehkan. Ini berarti komunitas atau utas jarak jauh bisa tidak lengkap, karena peladen Anda memblokir semua pos dan komentar yang pembuatnya tidak di peladen yang dibolehkan. - -Daftar yang diblokir diabaikan. - -### Menggunakan daftar yang dibolehkan, strict_allowlist = false - -Mode ini lebih terbuka dari pada yang sebelumnya. Untuk komunitas lokal, perilakunya identik, hanya pengguna dari peladen yang dibolehkan yang bisa pos, komentar, atau memilih. Perbedaannya adalah dengan komunitas jarak jauh. Daftar yang dibolehkan tidak berlaku untuk mereka, jadi Anda akan melihat semua pos, komentar, dan pilihan di komunitas jarak jauh (kecuali peladen yang buat diblokir). Pesan pribadi bisa dikirim oleh pengguna jarak jauh yang tidak diblokir. - -Jika daftar yang diblokir diatur, semua komunikasi dengan peladen yang diblokir akan dicegah, apa pun itu. - -### Hanya menggunakan daftar yang diblokir - -Jika tidak ada daftar yang dibolehkan yang ditunjukkan, Lemmy akan terfederasi dengan peladen apa pun. Ini adalah mode federasi paling terbuka, dan paling riskan, karena bisa saja seseorang membuat peladen yang berbahaya dan langsung mengirim _spam_ dan konten problematis lainnya ke peladen Anda. Anda bisa menggunakan daftar yang diblokir untuk mencegah terfederasi dengan peladen seperti itu. - -`strict_allowlist` diabaikan. diff --git a/src/id/federation/federation.md b/src/id/federation/federation.md deleted file mode 100644 index 44f3302..0000000 --- a/src/id/federation/federation.md +++ /dev/null @@ -1 +0,0 @@ -# Federasi diff --git a/src/id/federation/lemmy_protocol.md b/src/id/federation/lemmy_protocol.md deleted file mode 100644 index 67c2ce1..0000000 --- a/src/id/federation/lemmy_protocol.md +++ /dev/null @@ -1,377 +0,0 @@ -# Protokol Federasi Lemmy - -Protokol Lemmy (atau Protokol Federasi Lemmy) merupakan bagian dari Protokol ActivityPub, dengan beberapa tambahan. - -Dokumen ini ditujukan untuk pengembang yang familiar dengan protokol ActivityPub dan ActivityStreams. Dokumen ini memberikan gambaran rinci tentang aktor, objek, dan aktivitas yang digunakan oleh Lemmy. - -Sebelum membaca bagian ini, coba lihat pada [Tinjauan Federasi](overview.md) kami untuk mendapatkan gambaran bagaimana federasi Lemmy bekerja pada tingkat tinggi. - - - -- [Context](#context) -- [Actors](#actors) - - [Community](#community) - - [User](#user) -- [Objects](#objects) - - [Post](#post) - - [Comment](#comment) - - [Private Message](#private-message) -- [Collections](#collections) - - [Community Outbox](#community-outbox) - - [Community Followers](#community-followers) - - [Community Moderators](#community-moderators) - - [User Outbox](#user-outbox) -- [Activities](#activities) - - [User to Community](#user-to-community) - - [Follow](#follow) - - [Unfollow](#unfollow) - - [Report Post or Comment](#report-post-or-comment) - - [Community to User](#community-to-user) - - [Accept Follow](#accept-follow) - - [Announce](#announce) - - [Announcable](#announcable) - - [Create or Update Post](#create-or-update-post) - - [Create or Update Comment](#create-or-update-comment) - - [Like Post or Comment](#like-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) - - [Delete Post or Comment](#delete-post-or-comment) - - [Remove Post or Comment](#remove-post-or-comment) - - [Undo Delete or Remove](#undo-delete-or-remove) - - [Add Mod](#add-mod) - - [Remove Mod](#remove-mod) - - [Block User](#block-user) - - [Undo Block User](#undo-block-user) - - [User to User](#user-to-user) - - [Create or Update Private message](#create-or-update-private-message) - - [Delete Private Message](#delete-private-message) - - [Undo Delete Private Message](#undo-delete-private-message) - - - -## Konteks - -```json -{{#include ../../../include/crates/apub/assets/lemmy/context.json}} -``` - -Konteks identik untuk semua aktivitas dan objek. - -## Aktor - -### Komunitas - -Aktor terotomatisasi. Pengguna bisa mengirim pos atau komentar ke ini, yang mana komunitas meneruskannya ke pengikutnya dalam bentuk `Announce`. - -Mengirim aktivitas ke pengguna: `Accept/Follow`, `Announce`. - -Menerima aktivitas dari pengguna: `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (hanya admin/moderator), `Delete` (hanya pembuat), Undo (hanya untuk tindakan sendiri) - -```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/group.json}} -``` - -| Nama Bidang | Deskripsi | -| ------------------- | ------------------------------------------------------------------------------------------------------------------------- | -| `preferredUsername` | Nama aktor | -| `name` | Judul komunitas | -| `sensitive` | True menunjukkan bahwa semua pos di komunitas adalah NSFW | -| `attributedTo` | Pertama, pembuat komunitas, kemudian moderator lainnya | -| `content` | Teks untuk bilah samping komunitas, biasanya memuat deskripsi dan peraturan | -| `icon` | Ikon, ditampilkan di sebelah nama komunitas | -| `image` | Gambar spanduk, ditampilkan di bagian atas halaman komunitas | -| `inbox` | URL kotak masuk ActivityPub | -| `outbox` | URL kotak keluar ActivityPub, hanya mengandung 20 pos terakhir, tidak ada komentar, pilihan suara, atau aktivitas lainnya | -| `followers` | URL koleksi pengikut, hanya mengandung jumlah pengikut, tidak ada penunjuk terhadap pengikut individual | -| `endpoints` | URL kotak masuk bersama | -| `published` | Tanggal waktu komunitas dibuat | -| `updated` | Tanggal waktu komunitas terakhir diubah | -| `publicKey` | Kunci publik yang digunakan untuk memverifikasi tanda tangan dari aktor ini | - -### Pengguna - -Orang, yang berinteraksi secara umum dengan komunitas, di mana ia mengirim dan menerima pos dan/atau komentar. Bisa juga membuat dan memoderasi komunitas dan mengirim pesan pribadi ke pengguna lain. - -Mengirim aktivitas ke komunitas: `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (hanya admin/moderator), `Delete` (hanya pembuat), `Undo` (hanya untuk tindakan sendiri). - -Menerima aktivitas dari komunitas: `Accept/Follow`, `Announce` - -Menerima dan mengirim aktivitas dari/ke pengguna lain: `Create/Note`, `Update/Note`, `Delete/Note`, `Undo/Delete/Note` (semua itu terkait dengan pesan pribadi) - -```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/person.json}} -``` - -| Nama Bidang | Deskripsi | -| ------------------- | --------------------------------------------------------------------------- | -| `preferredUsername` | Nama aktor | -| `name` | Nama tampilan pengguna | -| `content` | Bio pengguna | -| `icon` | Avatar pengguna, ditampilkan di sebelah nama pengguna | -| `image` | Spanduk pengguna, ditampilkan di bagian atas profil pengguna | -| `inbox` | URL kotak masuk ActivityPub | -| `endpoints` | URL kotak masuk bersama | -| `published` | Tanggal waktu pengguna mendaftar | -| `updated` | Tanggal waktu profil pengguna terakhir diubah | -| `publicKey` | Kunci publik yang digunakan untuk memverifikasi tanda tangan dari aktor ini | - -Kotak masuk pengguna sebenarnya belum diimplementasikan dan hanya sebagai papan nama untuk implementasi ActivityPub yang membutuhkannya. - -## Objek - -### Pos - -Halaman dengan judul, dan opsional ada URL dan konten teks. URL biasanya merujuk ke gambar, yang mana kelukunya disertakan. Setiap pos dimiliki oleh hanya satu komunitas. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/page.json}} -``` - -| Nama Bidang | Deskripsi | -| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -| `attributedTo` | ID dari pengguna yang membuat pos tersebut | -| `to` | ID dari komunitas di mana pos tersebut dipos | -| `name` | Judul pos | -| `content` | Badan/Konten pos | -| `url` | Tautan apa pun untuk dibagian | -| `image` | Keluku untuk `url`, hanya ada jika tautannya adalah tautan gambar | -| `commentsEnabled` | False menunjukkan bahwa pos tersebut dikunci dan tidak ada komentar lagi yang bisa ditambahkan | -| `sensitive` | True menandai pos tersebut sebagai NSFW, mengaburkan kelukunya, dan menyembunyikannya dari pengguna dari pengguna yang pengaturan NSFW-nya dimatikan | -| `stickied` | True menunjukkan bahwa pos tersebut ditampilkan di bagian atas komunitas | -| `published` | Tanggal waktu pos dibuat | -| `updated` | Tanggal waktu pos disunting (tidak ada jika tidak pernah disunting) | - -### Komentar - -Balasan kepada pos, atau balasan ke komentar lain. Hanya mengandung teks (termasuk referensi ke pengguna atau komunitas lain). Lemmy menampilkan komentar dalam struktur pohon. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/note.json}} -``` - -| Nama Bidang | Deskripsi | -| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -| `attributedTo` | ID dari pengguna yang membuat pos | -| `to` | Komunitas di mana komentar tersebut dibuat | -| `content` | Teks komentar | -| `inReplyTo` | ID pos di mana komentar tersebut dibuat, dan komentar induk (jika ada). Jika komentar ini adalah komentar induk, bidang ini hanya berisi ID pos saja | -| `published` | Tanggal waktu komentar dibuat | -| `updated` | Tanggal waktu komentar disunting (tidak ada jika tidak pernah disunting) | - -### Pesan Pribadi - -Pesan langsung dari satu pengguna ke pengguna lain. Tidak bisa ada pengguna ketiga yang bergabung. Pengutasan belum diimplementasikan, jadi bidang `inReplyTo` tidak ada. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/objects/chat_message.json}} -``` - -| Nama Bidang | Deskripsi | -| -------------- | --------------------------------------------------------------------- | -| `attributedTo` | ID pengguna yang membuat pesan pribadi | -| `to` | ID penerima | -| `content` | Teks pesan pribadi | -| `published` | Tanggal waktu pesan dibuat | -| `updated` | Tanggal waktu pesan disunting (tidak ada jika tidak pernah disunting) | - -## Koleksi - -### Kotak Keluar Komunitas - -```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/group_outbox.json}} -``` - -Saat ini, kotak keluar hanya mengandung aktivitas `Create/Post`. - -### Pengikut Komunitas - -```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/group_followers.json}} -``` - -Koleksi/Statistik pengikut hanya digunakan untuk menampilkan jumlah pengikut komunitas. ID aktor tidak diikutkan untuk melindungi privasi pengguna. - -### Moderator Komunitas - -```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/group_moderators.json}} -``` - -### Kotak Keluar Pengguna - -```json -{{#include ../../../include/crates/apub/assets/lemmy/collections/person_outbox.json}} -``` - -## Aktivitas - -### Pengguna ke Komunitas - -#### Ikuti - -Ketika pengguna mengklik "Langgan" di komunitas, aktivitas `Follow` dikirim. Secara otomatis komunitas membalas dengan `Accept/Follow`. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/following/follow.json}} -``` - -#### Batal Ikuti - -Ketika pengguna mengklik "Berhenti Berlangganan" di komunitas, aktivitas `Undo/Follow` dikirim. Setelah menerima aktivitas tersebut, komunitas menghapus pengguna tersebut dari daftar pengikutnya. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/following/undo_follow.json}} -``` - -#### Lapor Pos atau Komentar - -Melaporkan pos atau komentar sebagai pelanggaran peraturan, supaya admin/moderator bisa meninjaunya. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/report_page.json}} -``` - -### Komunitas ke Pengguna - -#### Menerima Ikuti - -Secara otomatis dikirim oleh komunitas sebagai balasan untuk aktivitas `Follow`. Saat yang bersamaan, komunitas menambahkan pengguna tersebut ke daftar pengikutnya. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/following/accept.json}} -``` - -#### Mengumumkan - -Ketika komunitas menerima aktivitas pos atau komentar, itu kemudian dibungkus menjadi aktivitas `Announce` dan mengirimkannya ke seluruh pengikutnya. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/announce_create_page.json}} -``` - -### Bisa Diumumkan - -Semua aktivitas di bawah ini dikirim dari pengguna ke komunitas. Komunitas kemudian membungkusnya sebagai aktivitas `Announce` dan mengirimkannya ke pengikutnya. - -#### Buat atau Perbarui Pos - -Ketika pengguna membuat pos baru, itu dikirim ke komunitas terkait. Menyunting pos yang sudah dibuat sebelumnya akan mengirim aktivitas yang hampir identik, perbedaannya adalah `type` menjadi `Update`. Penyebutan di pos belum didukung. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/create_or_update/create_page.json}} -``` - -#### Buat atau Perbarui Komentar - -Balasan kepada pos, atau komentar lain. Bisa mengandung penyebutan pengguna lain. Menyunting komentar yang sudah dibuat sebelumnya akan mengirim aktivitas yang hampir identik, perbedaannya adalah `type` menjadi `Update`. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/create_or_update/create_note.json}} -``` - -#### Sukai Pos atau Komentar - -Pilih naik untuk pos atau komentar. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/voting/like_note.json}} -``` - -#### Tidak Sukai Pos atau Komentar - -Pilih turun untuk pos atau komentar. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/voting/dislike_page.json}} -``` - -#### Urung Sukai atau Tidak Sukai Pos atau Komentar - -Hapus suara (pilih atas atau pilih turun) yang dilakukan oleh pengguna yang sama. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/voting/undo_like_note.json}} -``` - -#### Hapus Pos atau Komentar - -Hapus pos atau komentar. Ini hanya bisa dilakukan oleh pembuat pos atau komentar tersebut. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/delete_page.json}} -``` - -#### Bersihkan Pos atau Komentar - -Bersihkan pos atau komentar. Ini hanya bisa dilakukan oleh moderator komunitas atau admin dari peladen di mana komunitas tersebut berada. Perbedaan dari penghapusan adalah aktivitas pembersihan mempunyai bidang ringkasan, yang mengandung alasan pembersihan, yang diberikan oleh moderator atau admin. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/remove_note.json}} -``` - -#### Urung Penghapusan atau Pembersihan - -Urung tindakan oleh aktivitas di bidang objek. Dalam contoh di bawah, komentar yang dibersihkan dipulihkan. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/undo_remove_note.json}} -``` - -#### Tambah Moderator - -Tambah moderator baru ke sebuah komunitas. Harus dikirim dari moderator komunitas tersebut, atau admin dari peladen di mana komunitas tersebut berada. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/add_mod.json}} -``` - -#### Keluarkan Moderator - -Keluarkan moderator yang saat itu dari sebuah komunitas. Harus dikirim dari moderator komunitas tersebut, atau admin dari peladen di mana komunitas tersebut berada. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/community/remove_mod.json}} -``` - -#### Larang Pengguna - -Larang pengguna dari sebuah komunitas, sehingga ia tidak bisa berpartisipasi di komunitas tersebut. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/block/block_user.json}} -``` - -#### Urung Larang Pengguna - -Urung pelarangan pengguna. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/block/block_user.json}} -``` - -### Pengguna ke Pengguna - -#### Buat atau Perbarui Pesan Pribadi - -Buat pesan pribadi antar dua pengguna. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/create_or_update/create_private_message.json}} -``` - -#### Hapus Pesan Pribadi - -Hapus pesan pribadi. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/delete_private_message.json}} -``` - -#### Urung Hapus Pesan Pribadi - -Pulihkan pesan pribadi yang dihapus. `object` kembali dihasilkan dari awal, karena itu ID aktivitas dan bidang lainnya berbeda dengan yang sebelumnya. - -```json -{{#include ../../../include/crates/apub/assets/lemmy/activities/deletion/undo_delete_private_message.json}} -``` diff --git a/src/id/federation/overview.md b/src/id/federation/overview.md deleted file mode 100644 index 8142cc4..0000000 --- a/src/id/federation/overview.md +++ /dev/null @@ -1,122 +0,0 @@ -# Tinjauan Federasi - -Dokumen ini untuk siapa saja yang ingin mengetahui bagaimana federasi Lemmy bekerja, tanpa terlalu teknis. Ini dimaksudkan untuk memberikan tinjauan umum tingkat tinggi terhadap federasi ActivityPub di Lemmy. Jika Anda mengimplementasikan ActivityPub sendiri dan ingin kompatibel dengan Lemmy, baca [Garis Besar API ActivityPub](contributing_apub_api_outline.md) kami. - -## Konvensi dokumentasi - -Untuk mempermudah, kadang kala Anda akan melihat sesuatu diformat seperti `Create/Note` atau `Delete/Event` atau `Undo/Follow`. Hal sebelum garis miring adalah Aktivitas dan setelahnya adalah Objek di dalam Aktivitas, di properti `object`. Jadi itu dibaca sebagai berikut: - -- `Create/Note`: sebuah aktivitas `Create` yang mengandung `Note` di bidang `object` -- `Delete/Event`: sebuah aktivitas `Delete` yang mengandung `Event` di bidang `object` -- `Undo/Follow`: sebuah aktivitas `Undo` yang mengandung `Follow` di bidang `object` - -Di Lemmy, kami menggunakan beberapa hal spesifik yang merujuk kepada item ActivityPub. Mereka sejatinya adalah implementasi kami terhadap konsep ActivityPub: - -- Komunitas: `Group` -- Pengguna: `Person` -- Pos: `Page` -- Komentar: `Note` - -Dokumentasi ini memiliki tiga bagian utama: - -- **Filosofi Federasi** menjabarkan gambaran umum bagaimana ini ditujukan untuk federasi -- **Aktivitas Pengguna** menjelaskan tindakan apa yang Pengguna bisa lakukan untuk berinteraksi -- **Aktivitas Komunitas** menjelaskan apa yang Komunitas lakukan sebagai respons terhadap tindakan beberapa Pengguna - -## Filosofi Federasi - -Aktor utama di Lemmy adalah Komunitas. Setiap komunitas berada di suatu peladen tunggal dan terdiri dari daftar Pos dan daftar pengikut. Interaksi utama adalah Pengguna mengirim Pos atau Komentar terkait aktivitas ke kotak masuk Komunitas, yang kemudian mengumumkannya ke seluruh pengikutnya. - -Setiap Komunitas memiliki Pengguna pembuat tertentu, yang bertanggung jawab untuk mengatur peraturan, mengangkat moderator, dan menghapus konten yang melanggar peraturan. - -Selain moderasi di tingkat komunitas, setiap peladen memiliki seperangkat Pengguna administrator, yang mempunyai kekuasaan untuk melakukan penghapusan dan pelarangan tingkat situs. - -Pengguna mengikuti Komunitas yang mereka tertarik kepada mereka untuk menerima Pos dan Komentar. Mereka juga memilih pada Pos dan Komentar, dan juga membuat yang baru. Komentar dikelola dalam struktur pohon dan biasanya diurut berdasarkan jumlah pilihan. Pesan langsung antar Pengguna juga didukung. - -Pengguna tidak bisa mengikuti satu sama lain dan Komunitas juga tidak bisa mengikuti apa pun. - -Implementasi federasi kami sudah komplit fitur, tapi kami sampai saat ini belum fokus untuk mengikuti spesifikasi ActivityPub. Karena itu, Lemmy kemungkinan besar tidak akan kompatibel dengan implementasi yang mengharapkan untuk mengirim dan menerima aktivitas yang valid. Ini adalah sesuatu yang kami akan perbaiki di masa mendatang. Periksa [#698](https://github.com/LemmyNet/lemmy/issues/698) untuk gambaran penyimpangan kami. - -## Aktivitas Pengguna - -### Mengikuti sebuah Komunitas - -Setiap halaman Komunitas memiliki tombol "Ikuti". Mengkliknya akan memicu sebuah aktivitas `Follow` untuk dikirim dari pengguna ke kotak masuk Komunitas. Komunitas akan secara otomatis merespons dengan aktivitas `Accept/Follow` ke kotak masuk pengguna. Itu juga akan menambahkan pengguna tersebut ke daftar pengikutnya dan mengirimkan setiap aktivitas terkait Pos/Komentar di Komunitas ke pengguna. - -### Batal Mengikuti Komunitas - -Setelah mengikuti sebuah Komunitas, tombol "Ikuti" berubah menjadi "Batal Ikuti". Mengklik ini akan mengirim aktivitas `Undo/Follow` ke kotak masuk Komunitas. Komunitas tersebut menghapus Pengguna dari daftar pengikutnya dan tidak akan mengirim aktivitas apa pun lagi ke ia. - -### Membuat Pos - -Ketika pengguna membuat Pos di Komunitas tertentu, itu akan dikirim sebagai `Create/Page` ke kotak masuk Komunitas tersebut. - -### Membuat Komentar - -Ketika sebuah Komentar baru dibuat untuk sebuah Pos, baik ID Pos dan ID Komentar induk (jika ada) ditulis ke bidang `in_reply_to`. Ini memungkinkan untuk menetapkannya ke Pos yang benar dan membangun pohon Komentar. Kemudian itu dikirim ke kotak masuk Komunitas sebagai `Create/Note` - -Peladen asal juga memindai Komentar untuk sebutan Pengguna apa pun dan mengirim aktivitas `Create/Note` ke Pengguna tersebut. - -### Menyunting Pos - -Mengubah konten dari Pos yang sudah ada. Hanya bisa dilakukan oleh Pengguna yang membuat. - -### Menyunting Komentar - -Mengubah konten dari Komentar yang sudah ada. Hanya bisa dilakukan oleh Pengguna yang membuat. - -### Suka dan Tidak Suka - -Pengguna bisa suka dan tidak sukai Pos atau Komentar apa pun. Itu dikirim sebagai `Like/Page`, `Dislike/Note`, dll. ke kotak masuk Komunitas. - -### Penghapusan - -Pembuat dari Pos, Komentar, atau Komunitas bisa menghapus yang dibuatnya. Itu kemudian dikirim ke pengikut Komunitas. Kemudian itu disembunyikan dari seluruh pengguna. - -### Pembersihan - -Moderator bisa membersihkan Pos dan Komentar dari Komunitas mereka. Administrator bisa membersihkan Pos dan Komentar apa pun dari seluruh peladen ia sendiri. Komunitas juga bisa dibersihkan oleh administrator. Kemudian, itu disembunyikan dari seluruh pengguna. - -Pembersihan dikirim ke seluruh pengikut dari sebuah Komunitass, supaya mereka akan terkena efeknya di sana. Pengecualian dari ini adalah jika administrator membersihkan sesuatu dari Komunitas yang dihos di peladen yang berbeda. Jika begitu, pembersihan hanya berefek secara lokal. - -### Mengurungkan Tindakan Sebelumnya - -Tidak ada yang dihapus dari basis data, hanya menyembunyikannya dari pengguna. Komunitas/Pos/Komentar yang telah dihapus atau dibersihkan memiliki tombol "pulihkan". Tombol ini menghasilkan aktivitas `Undo` yang menetapkan aktivitas penghapusan/pembersihan sebelumnya sebagai objek, seperti `Undo/Remove/Post` atau `Undo/Delete/Community`. - -Mengklik tombol pilih naik dari pos/komentar yang sudah dipilih naikkan (atau pilih turun dari pos/komentar yang sudah dipilih turunkan) akan juga menghasilkan `Undo`. Dalam contoh tersebut akan menghasilkan `Undo/Like/Post` atau `Undo/Dislike/Comment`. - -### Buat Pesan Pribadi - -Di profil pengguna ada tombol "Kirim Pesan", yang akan membuka dialog perizinan untuk mengirimkan pesan pribadi ke pengguna ini. Ini dikirim sebagai `Create/Note` ke kotak masuk pengguna tersebut. Pesan pribadi hanya bisa ditujukan kepada satu pengguna tunggal. - -### Sunting Pesan Pribadi - -`Update/Note` mengubah teks dari pesan yang telah dikirim sebelumnya. - -### Hapus Pesan Pribadi - -`Delete/Note` menghapus pesan pribadi. - -### Memulihkan Pesan Pribadi - -`Undo/Delete/Note` mengurungkan penghapusan pesan pribadi. - -## Aktivitas Komunitas - -Komunitas itu secara dasarnya adalah bot, yang hanya akan melakukan sesuatu sebagai balasan untuk tindakan dari pengguna. Pengguna yang pertama kali membuat komunitas akan menjadi moderator pertama dan bisa menambahkan moderator tambahan. Secara umum, kapan pun komunitas menerima aktivitas yang valid di kotak masuknya, aktivitas tersebut akan diteruskan ke seluruh pengikutnya. - -### Menerima Ikuti - -Jika komunitas menerima aktivitas `Follow`, maka komunitas akan secara otomatis membalas dengan `Accept/Follow`. Komunitas juga menambahkan pengguna tersebut ke daftar pengikutnya. - -### Batal Ikuti - -Ketika menerima `Undo/Follow`, Komunitas menghapus Pengguna tersebut dari daftar pengikutnya. - -### Mengumumkan - -Jika Komunitas menerima aktivitas terkait Pos atau Komentar (Buat, Perbarui, Suka, Tidak Suka, Hapus, Bersihkan, Urung), Komunitas akan mengumumkannya ke pengikutnya. Untuk ini, Mengumumkan dibuat dengan Komunitas sebagai aktor dan aktivitas yang diterima sebagai objek. Karena itu, peladen tersebut dapat terus pembaruan terkait aktivitas di Komunitas yang diikutinya. - -### Menghapus Komunitas - -Jika pembuat atau administrator menghapus sebuah Komunitas, itu mengirim `Delete/Group` ke seluruh pengikutnya. diff --git a/src/id/moderation/moderation.md b/src/id/moderation/moderation.md deleted file mode 100644 index 2dcabb9..0000000 --- a/src/id/moderation/moderation.md +++ /dev/null @@ -1,23 +0,0 @@ -# Aksi moderasi - -Di Lemmy, **moderator** adalah seseorang yang mengelola dan punya hak terhadap sebuah komunitas. - -**Pembuat komunitas** merupakan **moderator** pertama sebuah komunitas karena mereka membuatnya. - -Seorang **administrator** memiliki hak penuh terhadap seluruh apa yang ada di peladen, dan demikian juga terhadap seluruh komunitas. - -| Aksi | Hasil | Tingkat izin | -| -------------------- | ----------------------------------------------- | ------------ | -| kunci | Cegah membuat komentar baru di bawah sebuah pos | Moderator | -| tempel | Semat publikasi ke atas daftar komunitas | Moderator | -| hapus | Hapus pos | Moderator | -| larang | Larang pengguna dari komunitas | Moderator | -| angkat menjadi mod | Berikan pengguna status moderator | Moderator | -| angkat menjadi admin | Berikan pengguna status admin | Admin | -| larang dari situs | Larang pengguna dari peladen | Admin | - -Untuk melakukan aksi moderasi pada seorang pengguna, Anda memerlukan pos dari pengguna tersebut dan klik 3 titik di kanan bawah dari judul. - -Untuk mengurungkan aksi yang sebelumnya dilakukan pada seorang pengguna, proses yang sama harus diikuti. Seperti contoh, jika sebuah pos dikunci, klik pada ikon kunci lagi untuk membuka kuncinya. - -![more_button.png](more_button.png) diff --git a/src/id/moderation/more_button.png b/src/id/moderation/more_button.png deleted file mode 100644 index ffefeff..0000000 Binary files a/src/id/moderation/more_button.png and /dev/null differ diff --git a/src/en/introduction.md b/src/introduction.md similarity index 100% rename from src/en/introduction.md rename to src/introduction.md diff --git a/src/ru/SUMMARY.md b/src/ru/SUMMARY.md deleted file mode 100644 index 09c17d6..0000000 --- a/src/ru/SUMMARY.md +++ /dev/null @@ -1,31 +0,0 @@ -# Краткое изложение - -- [О нас](about/about.md) -- [Возможности](about/features.md) -- [Цели](about/goals.md) -- [Посты и оценка комментариев](about/ranking.md) -- [Путеводитель](about/guide.md) -- [Администрирование](administration/administration.md) - - [Установить с помощью Docker](administration/install_docker.md) - - [Установить с помощью Ansible](administration/install_ansible.md) - - [Другие способы установки](administration/other_installation_methods.md) - - [Конфигурация](administration/configuration.md) - - [Начало работы с Федерацией](administration/federation_getting_started.md) - - [Устранение неполадок](administration/troubleshooting.md) - - [Резервное копирование и восстановление](administration/backup_and_restore.md) -- [Федерация](federation/federation.md) - - [Обзор Федерации](federation/overview.md) - - [Источники](federation/resources.md) - - [Lemmy протокол](federation/lemmy_protocol.md) -- [Разработка Клиентов](client_development/client_development.md) - - [Руководство по темам](client_development/theming.md) - - [Справочник по API](client_development/api_reference.md) - - [WebSocket API](client_development/websocket_api.md) - - [HTTP API](client_development/http_api.md) - - [Создание пользовательского интерфейса](client_development/custom_frontend.md) -- [Вклад](contributing/contributing.md) - - [Docker разработка](contributing/docker_development.md) - - [Локальное развитие](contributing/local_development.md) - - [Тестирование](contributing/tests.md) - - [Federation Development](contributing/federation_development.md) -- [Правила поведения](code_of_conduct.md) diff --git a/src/ru/about/about.md b/src/ru/about/about.md deleted file mode 100644 index f121b0f..0000000 --- a/src/ru/about/about.md +++ /dev/null @@ -1,30 +0,0 @@ -## О проекте - -| Главная страница | Пост | -| ------------------------------- | ------------------------------- | -| ![main screen](main_screen.png) | ![chat screen](chat_screen.png) | - -[Lemmy](https://github.com/LemmyNet/lemmy) это аналог таких сайтов как [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), или [Hacker News](https://news.ycombinator.com/): вы подписываетесь на форумы, которые вас интересуют , размещаете ссылки и дискутируете, затем голосуете и комментируете их. Однако за кулисами всё совсем по-другому; любой может легко запустить сервер, и все эти серверы объединены (например электронная почта) и подключены к одной вселенной, именуемой [Федиверс](https://ru.wikipedia.org/wiki/Fediverse). - -Для агрегатора ссылок это означает, что пользователь, зарегистрированный на одном сервере, может подписаться на форумы на любом другом сервере и может вести обсуждения с пользователями, зарегистрированными в другом месте. - -Основная цель - создать легко размещаемую, децентрализованную альтернативу Reddit и другим агрегаторам ссылок, вне их корпоративного контроля и вмешательства. - -Каждый сервер Lemmy может устанавливать свою собственную политику модерации; назначать администраторов всего сайта и модераторов сообщества для защиты от троллей и создания здоровой, нетоксичной среды, в которой каждый может чувствовать себя комфортно. - -_Примечание: API-интерфейсы WebSocket и HTTP в настоящее время нестабильны_ - -### Почему назвали Lemmy (рус.Лемми)?? - -- Ведущий певец из [Motörhead](https://invidio.us/watch?v=pWB5JZRGl0U). -- Старая школа [video game](). -- Это [Koopa from Super Mario](https://www.mariowiki.com/Lemmy_Koopa). -- Это [furry rodents](http://sunchild.fpwc.org/lemming-the-little-giant-of-the-north/). - -### Содержит - -- [Rust](https://www.rust-lang.org) -- [Actix](https://actix.rs/) -- [Diesel](http://diesel.rs/) -- [Inferno](https://infernojs.org) -- [Typescript](https://www.typescriptlang.org/) diff --git a/src/ru/about/features.md b/src/ru/about/features.md deleted file mode 100644 index 433d031..0000000 --- a/src/ru/about/features.md +++ /dev/null @@ -1,35 +0,0 @@ -# Возможности - -- Открытое программное обеспечение, [Лицензия AGPL](/LICENSE). -- Возможность самостоятельного размещения, простота развёртывания. - - Работает на [Docker](#docker) и [Ansible](#ansible). -- Понятый и удобный интерфейс для мобильных устройств. - - Для регистрации требуется минимум: имя пользователя и пароль! - - Поддержка аватара пользователя. - - Обновление цепочек комментариев в реальном времени. - - Полный подсчёт голосов `(+/-)` как в старом reddit. - - Темы, включая светлые, темные и солнечные.. - - Эмодзи с поддержкой автозаполнения. Напечатайте `:` - - Упоминание пользователя тегом `@`, Упоминание сообщества тегом `!`. - - Интегрированная загрузка изображений как в сообщениях, так и в комментариях. - - Сообщение может состоять из заголовка и любой комбинации собственного текста, URL-адреса или чего-либо еще. - - Уведомления, ответы на комментарии и когда вас отметили. - - Уведомления могут быть отправлены на электронную почту. - - i18n / поддержка интернационализации. - - RSS / Atom ленты для `Все`, `Подписок`, `Входящих`, `Пользователь`, and `Сообщества`. -- Поддержка кросс-постинга. - - _Поиск похожих постов_ при создании новых. Отлично подходит для вопросов / ответов сообществ. -- Возможности модерации. - - Журналы (Логи) Публичной Модерации. - - Можно прикреплять посты в топ сообщества. - - Оба и администраторы сайта и модераторы сообщества, могут назначать других модераторов. - - Можно блокировать, удалять и восстанавливать сообщения и комментарии. - - Можно банить и разблокировать пользователей в сообществе и на сайте. - - Можно передавать сайт и сообщества другим. -- Можно полностью стереть ваши данные, удалив все посты и комментарии. -- NSFW (аббр. Небезопасный/неподходящий для работы) пост / поддерживается сообществом. -- Высокая производительность. - - Сервер написан на rust. - - Фронтэнд (клиентская сторона пользовательского интерфейса) всего `~80kB` архив gzipp. - - Фронтэнд (клиентская сторона пользовательского интерфейса) не использует javascript (только-чтение). - - Поддерживается архитектура arm64 / устройства Raspberry Pi. diff --git a/src/ru/about/goals.md b/src/ru/about/goals.md deleted file mode 100644 index e15a31c..0000000 --- a/src/ru/about/goals.md +++ /dev/null @@ -1,39 +0,0 @@ -# Цели - -- Придумать имя / кодовое назание. -- Иметь сообщества. -- Должны иметь цепочки комментариев. -- Должна быть федерируемой: ссылаться и следовать за сообществами из/на других инстансах. -- Постоянно обновляться: иметь панель для новых комментариев справа и основную панель для полного просмотра с развёртыванием. - - Использовать веб-сокеты для публикации / создавать собственный инстанс. - -# Вопросы - -- Как должно работать голосование? Должны ли мы вернуться к старому способу отображения подсчёта голосов вверх или вниз? Или просто счёт? -- Определитесь с технологией, которая будет использоваться - - Бэкэнд: Actix, Diesel. - - Фронтэнд: inferno, typescript или bootstrap как сейчас. -- Должен ли быть разрешены боты? -- Должны быть комментарии / статистика голосований, или в духе чата, например как в [flowchat?](https://flow-chat.com). - - Двухпанельная модель - Правая панель для комментариев в реальном времени, левая часть для просмотра актуальной древовидной структуры. - - Просмотр с мобильных устройств, разрешить переключаться между ними. По умолчанию? - -# Источники / Потенциальные библиотеки - -- [Diesel в Postgres типов даты (анг.язык)](https://kotiri.com/2018/01/31/postgresql-diesel-rust-types.html) -- [Примеры в diesel (анг.язык)](http://siciarz.net/24-days-rust-diesel/) -- [Рекурсивный запрос списка смежности для вложенных комментариев (анг.язык)](https://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tree/192462#192462) -- https://github.com/sparksuite/simplemde-markdown-editor -- [Markdown-it (анг.язык)](https://github.com/markdown-it/markdown-it) -- [Sticky Sidebar (анг.язык)](https://stackoverflow.com/questions/38382043/how-to-use-css-position-sticky-to-keep-a-sidebar-visible-with-bootstrap-4/49111934) -- [RXJS вебсокет(анг.язык)](https://stackoverflow.com/questions/44060315/reconnecting-a-websocket-in-angular-and-rxjs/44067972#44067972) -- [Rust JWT (анг.язык)](https://github.com/Keats/jsonwebtoken) -- [Hierarchical tree building javascript (анг.язык)](https://stackoverflow.com/a/40732240/1655478) -- [Hot sorting discussion (анг.язык)](https://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions) [2](https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9) -- [Classification types. (анг.язык)](https://www.reddit.com/r/ModeratorDuck/wiki/subreddit_classification) -- [RES expando - Possibly make this into a switching react component. (анг.язык)](https://github.com/honestbleeps/Reddit-Enhancement-Suite/tree/d21f55c21e734f47d8ed03fe0ebce5b16653b0bd/lib/modules/hosts) -- [Temp Icon (анг.язык)](https://www.flaticon.com/free-icon/mouse_194242) -- [Rust docker build (анг.язык)](https://shaneutt.com/blog/rust-fast-small-docker-image-builds/) -- [Zurb mentions (анг.язык)](https://github.com/zurb/tribute) -- [TippyJS (анг.язык)](https://github.com/atomiks/tippyjs) -- [SQL function indexes (анг.язык)](https://sorentwo.com/2013/12/30/let-postgres-do-the-work.html) diff --git a/src/ru/about/guide.md b/src/ru/about/guide.md deleted file mode 100644 index 76282c2..0000000 --- a/src/ru/about/guide.md +++ /dev/null @@ -1,56 +0,0 @@ -# Путеводитель по Lemmy - -Начните печатать... - -- `@a_user_name` для получения списка пользователей. -- `!a_community` для получения списка сообществ. -- `:emoji` для получения списка эмодзи. - -## Сортировка - -_Применяется как к сообщениям, так и к комментариям_ - -| Тип | Описание | -| ----------------------- | ----------------------------------------------------------------------------- | -| Активность | Сортировка на основе оценки подсчёта баллов со времени последнего комментария | -| Популярные | Сортировка на основе оценки подсчёта баллов с даты создания поста. | -| Новые | Новинки. | -| Наиболее Комментируемые | Посты с наибольшим количеством комментариев. | -| Новые Комментарии | Посты снаибольшим колличеством комментариев, Т.е. сортировка в стиле форума. | -| Лучшие | С наивысшим количеством баллов заданный период времени. | - -Детали можно посмотреть по ссылке [Посты и оценка комментариев в деталях](ranking.md). - -## Модерация / Администрирование - -Все действия модераторов и администраторов над комментариями и постами пользователей осуществляются посредством нажатия на `More` 3-точечную иконку. - -Сюда входят: - -- Добавление / Удаление модераторов и админов. -- Удаление / Восстановление комментариев. -- Банить / Разбанивать пользователей. - -Все действия администратора в сообществах выполняются на боковой панели сообщества. На текущий момент возможно только Удаление / Восстановление сообществ. - -## Путеводитель по Markdown - -| Наберите | Или | … Получите | -| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| \*Курсив\* | \_Курсив\_ | _Курсив_ | -| \*\*Жирный\*\* | \_\_Жирный\_\_ | **Жирный шрифт** | -| \# Заголовок 1 | Заголовок 1
========= |

Заголовок 1

| -| \## Заголовок 2 | Заголовок 2
--------- |
Заголовок 2
| -| \[Ссылка\](http://a.com) | \[Ссылка\]\[1\]

\[1\]: http://b.org | [Ссылка](https://commonmark.org/) | -| !\[Изображение\](http://url/a.png) | !\[Изображение\]\[1\]

\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) | -| \> Цитата | |
Цитата
| -| \* Списки
\* Списки
\* Списки | \- Списки
\- Списки
\- Списки
| _ Списки
_ Списки
\* Списки
| -| 1\. Один
2\. Два
3\. Три | 1) Один
2) Два
3) Три | 1. Один
2. Два
3. Три | -| Подчёркивания
\--- | Подчёркивания
\*\*\* | Подчёркивания

| -| \`Инлайн код\` с обратными кавычками | | `Инлайн код` с обратными кавычками | -| \`\`\`
\# блок кода
print '3 кавычки или'
отбить 'отступ 4 пробела'
\`\`\` | ····\# блок кода
····отбить '3 кавычки или'
····отбить 'отступ 4 пробела' | \# блок кода
print '3 кавычки или'
отбить 'отступ 4 пробела' | -| ::: спрятать спойлер или материал nsfw
_внести сюда_
::: | |
спрятанный или nsfw материал

внести сюда

| -| ~подстрочный~ текст | | Some подстрочный текст | -| ^надстрочный^ текст | | Some надстрочный текст | - -[CommonMark Tutorial](https://commonmark.org/help/tutorial/) diff --git a/src/ru/about/ranking.md b/src/ru/about/ranking.md deleted file mode 100644 index ce64d80..0000000 --- a/src/ru/about/ranking.md +++ /dev/null @@ -1,47 +0,0 @@ -# Тренды / Лучшее / Лучший алгоритм Сортировки - -## Цели - -- В течение дня новые сообщения и комментарии должны быть вверху, чтобы за них можно было проголосовать. -- Примерно через день или более того фактор времени должен исчезнуть. -- Использовать логарифмическую шкалу, так как голоса имеют тенденцию к снежному кому, и поэтому первые 10 голосов так же важны, как и следующие сотни. - -## Реализации - -### Reddit - -Не учитывает время жизни потока, [давая ранним комментариям подавляющее преимущество перед более поздними,](https://minimaxir.com/2016/11/first-comment/) с еще большим эффектом в небольших сообществах. Новый пул комментариев в нижней части цепочки эффективно прекращает обсуждение и превращает каждую ветку в гонку за раннее комментирование. Это снижает качество разговора и поощряет повторяющиеся и спам-комментарии. - -### Hacker News - -Хотя намного превосходит реализацию Reddit по снижению оценок с течением времени, [Алгоритм ранжирования Hacker News](https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d) всё же не использует логарифмическую шкалу для оценок. - -### Lemmy - -Уравновешивает эффект снежного кома голосов с течением времени с помощью логарифмической шкалы. Сводит на нет неотъемлемое преимущество ранних комментариев, но при этом гарантирует, что голоса по-прежнему имеют значение в долгосрочной перспективе, не разрушая старые популярные комментарии. - -``` -Rank = ScaleFactor * log(Max(1, 3 + Score)) / (Time + 2)^Gravity - -Score = Upvotes - Downvotes -Time = time since submission (in hours) -Gravity = Decay gravity, 1.8 is default -``` - -- В Lemmy такой же алгоритм `Классификатор` как наверху, разделяя на два: `Активный`, и `Лучший`. - - `Активный` использует голосование за публикацию и время последнего комментария (ограничено двумя днями). - - `Лучший` использует голоса за публикацию и время опубликования. -- Используйте Макс (1, балл), чтобы убедиться, что на все комментарии влияет замедление времени. -- Прибавьте 3 балла, чтобы все, у кого меньше 3 голосов против, выглядили новыми. В противном случае все новые комментарии останутся нулевыми, внизу. -- Знаки и абв оценки необходимы для работы с журналом отрицательных оценок. -- Масштабный коэффициент 10k получает ранг в целочисленной форме. - -График ранга за 24 часа, баллов 1, 5, 10, 100, 1000 с масштабным коэффициентом 10k. - -![](rank_algorithm.png) - -#### Подсчёты Активных Пользователей - -Lemmy также показывает количество _ активных пользователей _ для вашего сайта и его сообществ. Они подсчитываются в течение последнего дня, недели, месяца и полугодия и кэшируются при запуске lemmy и каждый час. - -Активный пользователь - это тот, кто опубликовал или прокомментировал на вашем инстансе или сообществе в течение последнего заданного периода времени. При подсчете сайтов учитываются только локальные пользователи. В подсчет сообщества включены федеративные пользователи. diff --git a/src/ru/administration/administration.md b/src/ru/administration/administration.md deleted file mode 100644 index 080abde..0000000 --- a/src/ru/administration/administration.md +++ /dev/null @@ -1,11 +0,0 @@ -# Информация для администраторов - -Информация для администраторов интсанса Lemmy и тех кто хочет запустить собственный сервер. - -## Установка - -У Lemmy есть два основных метода установки: [вручную с помощью Docker](install_docker.md) и [автоматизированная с помощью Ansible](install_ansible.md). Мы рекомендуем использовать Ansible, потому что он упрощает установку, а также упрощает обновление. - -## Другие методы установки - -В некоторых случаях может потребоваться использовать [различные методы установки](other_installation_methods.md). Но мы этого не рекомендуем и не сможем оказать поддержку для них. diff --git a/src/ru/administration/backup_and_restore.md b/src/ru/administration/backup_and_restore.md deleted file mode 100644 index b9d487d..0000000 --- a/src/ru/administration/backup_and_restore.md +++ /dev/null @@ -1,76 +0,0 @@ -# Резервное копирование и восстановление - -## Docker и Ansible - -При использовании docker или ansible, должен быть создан каталог `volumes` , содержащий обе базы данных, и все изображения. Скопируйте этот каталог в новый инстанс для восстановления ваших данных. - -### Инкрементное резервное копирование базы данных - -Для инкрементного резервного копирование БД в `.sql` файл, вы можете запустить: - -```bash -docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql -``` - -### Пример сценария резервного копирования - -```bash -#!/bin/sh -# DB Backup -ssh MY_USER@MY_IP "docker-compose exec postgres pg_dumpall -c -U lemmy" > ~/BACKUP_LOCATION/INSTANCE_NAME_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql - -# Volumes folder Backup -rsync -avP -zz --rsync-path="sudo rsync" MY_USER@MY_IP:/LEMMY_LOCATION/volumes ~/BACKUP_LOCATION/FOLDERNAME -``` - -### Восстановление БД - -Если вам необходимо восстановить из `pg_dumpall` файла, для начала необходимо очистить уже существующую БД - -```bash -# Сбросьте существующую БД -docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" - -# Восстановите БД из резервного .sql -cat db_dump.sql | docker exec -i FOLDERNAME_postgres_1 psql -U lemmy # restores the db - -# Возможно при импортировании БД, вам понадобится установить новый пароль, отличающийся от предыдущего. -docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with password 'bleh'" -``` - -### Изменение вашего доменного имени - -Если вы еще не федерируетесь, вы можете изменить свое доменное имя в БД. **Внимание: не делайте этого после начала федерирования, иначе сломаете процесс федерации.** - -Зайдите в `psql` вашего docker : - -`docker-compose exec postgres psql -U lemmy` - -``` --- Post -update post set ap_id = replace (ap_id, 'old_domain', 'new_domain'); -update post set url = replace (url, 'old_domain', 'new_domain'); -update post set body = replace (body, 'old_domain', 'new_domain'); -update post set thumbnail_url = replace (thumbnail_url, 'old_domain', 'new_domain'); - --- Comments -update comment set ap_id = replace (ap_id, 'old_domain', 'new_domain'); -update comment set content = replace (content, 'old_domain', 'new_domain'); - --- User -update user_ set actor_id = replace (actor_id, 'old_domain', 'new_domain'); -update user_ set inbox_url = replace (inbox_url, 'old_domain', 'new_domain'); -update user_ set shared_inbox_url = replace (shared_inbox_url, 'old_domain', 'new_domain'); -update user_ set avatar = replace (avatar, 'old_domain', 'new_domain'); - --- Community -update community set actor_id = replace (actor_id, 'old_domain', 'new_domain'); -update community set followers_url = replace (followers_url, 'old_domain', 'new_domain'); -update community set inbox_url = replace (inbox_url, 'old_domain', 'new_domain'); -update community set shared_inbox_url = replace (shared_inbox_url, 'old_domain', 'new_domain'); - -``` - -## Больше информации - -- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database diff --git a/src/ru/administration/configuration.md b/src/ru/administration/configuration.md deleted file mode 100644 index b1ce84b..0000000 --- a/src/ru/administration/configuration.md +++ /dev/null @@ -1,14 +0,0 @@ -# Конфигурация - -Конфигурация основана на файле [config.hjson](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson). Этот файл также содержит документацию по всем доступным параметрам. В инструкциях по установке рассказывается, как изменить настройки по умолчанию. - -Файл `config.hjson` находится в `config/config.hjson`. Чтобы изменить расположение по умолчанию, вы можете установить переменную среды `LEMMY_CONFIG_LOCATION`. - -Дополнительная переменная среды `LEMMY_DATABASE_URL` доступна, который можно использовать со строкой подключения PostgreSQL, например `postgres://lemmy:password@lemmy_db:5432/lemmy`, передача всех деталей подключения сразу. - -Если контейнер Docker не используется, вручную создайте базу данных, указанную выше, выполнив следующие команды: - -```bash -cd server -./db-init.sh -``` diff --git a/src/ru/administration/federation_getting_started.md b/src/ru/administration/federation_getting_started.md deleted file mode 100644 index 3990099..0000000 --- a/src/ru/administration/federation_getting_started.md +++ /dev/null @@ -1,37 +0,0 @@ -# Federation - -Lemmy использует протокол ActivityPub (стандарт W3C) для обеспечения федерации между различными серверами (часто называемыми инстансами). Это очень похоже на то, как работает электронная почта. Например, если вы используете gmail.com, то вы можете отправлять письма не только другим пользователям gmail.com, но и yahoo.com, yandex.ru и так далее. Для этого в электронной почте используется протокол SMTP, поэтому ActivityPub можно рассматривать как «SMTP для социальных сетей». Количество различных действий, возможных в социальных сетях (публикация, комментарий, лайк, публикация и т. Д.), Означает, что ActivityPub намного сложнее, чем SMTP. - -Как и в случае с электронной почтой, федерация ActivityPub происходит только между серверами. Итак, если вы зарегистрированы на `enterprise.lemmy.ml`, вы подключаетесь только к API `enterprise.lemmy.ml`, в то время как сервер берет на себя отправку и прием данных от других экземпляров (например `voyager.lemmy.ml`). Большим преимуществом этого подхода является то, что обычному пользователю не нужно ничего делать, чтобы использовать федерацию. Фактически, если вы используете Lemmy, вы, вероятно, уже используете его. Один из способов подтвердить это - зайти в сообщество или в профиль пользователя. Если ты на `enterprise.lemmy.ml` и вы видите пользователя вроде `@nutomic@voyager.lemmy.ml`, или такое сообщество, как `!main@ds9.lemmy.ml`, тогда они федерированы, то есть они используют инстанс, отличный от вашего. - -Один из способов воспользоваться преимуществами федерации - открыть другой инстанст, например `ds9.lemmy.ml`, и просмотреть его. Если вы видите интересное сообщество, сообщение или пользователя, с которым хотите взаимодействовать, просто скопируйте его URL и вставьте его в поиск своего собственного экземпляра. Ваш инстанс будет подключаться к другому (при условии, что это разрешено списком разрешений / блокировок) и напрямую отображать удаленный контент для вас, чтобы вы могли следить за сообществом или комментировать сообщение. Вот несколько примеров рабочих примеров: - -- `!main@lemmy.ml` (Сообщество) -- `@nutomic@lemmy.ml` (Пользователь) -- `https://lemmy.ml/c/programming` (Сообщество) -- `https://lemmy.ml/u/nutomic` (Пользователь) -- `https://lemmy.ml/post/123` (Пост) -- `https://lemmy.ml/comment/321` (Комментарий) - -Вы можете увидеть список связанных экземпляров, перейдя по ссылке «Инстансы» внизу любой страницы Lemmy. - -## Получение сообществ - -При первом поиске сообщества сначала выбирается 20 сообщений. Только если хотя бы один пользователь на вашем экземпляре подписывается на удаленное сообщество, сообщество будет отправлять обновления на ваш экземпляр. Обновления включают: - -- Новые сообщения, комментарии -- Голосования -- Публикации, редактирования и удаление комментариев -- Действия модераторов - -Вы можете скопировать URL-адрес сообщества из адресной строки браузера и вставить его в поле поиска. Подождите несколько секунд, пост появится внизу. На данный момент нет индикатора загрузки для поиска, поэтому подождите несколько секунд, если он показывает «нет результатов». - -## Получение постов - -Вставьте URL-адрес публикации в поле поиска вашего экземпляра Lemmy. Подождите несколько секунд, пока не появится сообщение. Это также приведёт к получению профиля сообщества и профиля создателя сообщения. - -## Получение сообщений - -Если вы найдете интересный комментарий под сообщением на другом инстансе, вы можете найти под комментарием в трехточечном меню символ ссылки. Скопируйте эту ссылку. Это выглядит как `https://lemmy.ml/post/56382/ comment/40796`. Удалите часть `post/XXX` и поместите её в строку поиска. В этом примере выполните поиск по запросу https://lemmy.ml/comment/40796. Этот комментарий, все родительские комментарии, пользователи и сообщество, а также соответствующая публикация извлекаются из удаленного экземпляра, если они не известны локально. - -Родственные комментарии не загружаются! Если вам нужно больше комментариев к более старым сообщениям, вам нужно найти каждый из них, как описано выше. diff --git a/src/ru/administration/install_ansible.md b/src/ru/administration/install_ansible.md deleted file mode 100644 index 7155947..0000000 --- a/src/ru/administration/install_ansible.md +++ /dev/null @@ -1,26 +0,0 @@ -# Установка Ansible - -Это то же самое, что и [установка Docker](install_docker.md), за исключением того, что Ansible обрабатывает всё это автоматически. Он также выполняет некоторые дополнительные действия, такие как настройка TLS и электронной почты для вашего экземпляра Lemmy. - -Прежде всего вам нужны [установка Ansible на ваш локальный компьютер](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). Вам также необходимо будет установить [Docker SDK для Python](https://pypi.org/project/docker/) используя `pip install docker` ([больше информации в документации Ansible](https://docs.ansible.com/ansible/latest/collections/community/docker/docker_compose_module.html#id4)). - -Затем запустите следующую команду на вашем локальном компьютере: - -```bash -git clone https://github.com/LemmyNet/lemmy.git -cd lemmy/ansible/ -cp inventory.example inventory -nano inventory # enter your server, domain, contact email -# If the command below fails, you may need to comment out this line -# In the ansible.cfg file: -# interpreter_python=/usr/bin/python3 -ansible-playbook lemmy.yml --become -``` - -Для обновления до новой версии, просто запустите следующее в локальном репозитарии Lemmy: - -```bash -git pull origin main -cd ansible -ansible-playbook lemmy.yml --become -``` diff --git a/src/ru/administration/install_docker.md b/src/ru/administration/install_docker.md deleted file mode 100644 index e9ac4da..0000000 --- a/src/ru/administration/install_docker.md +++ /dev/null @@ -1,54 +0,0 @@ -# Установка Docker - -Убедитесь в наличии установленных docker и docker-compose (>=`1.24.0`) . В Ubunu, просто запустите `apt install docker-compose docker.io`. Далее, - -```bash -# создайте папку для файлов lemmy. путь не имеет значения, размещайте файлы где угодно -mkdir /lemmy -cd /lemmy - -# загрузите кнфигурацию по умолчанию -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/docker-compose.yml -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/lemmy.hjson - -# Установите корректные разрешения для каталога pictrs -mkdir -p volumes/pictrs -sudo chown -R 991:991 volumes/pictrs -``` - -Откройте `docker-compose.yml`, и убедитесь в наличии `LEMMY_EXTERNAL_HOST` для `lemmy-ui` это позволит установить корректный host. - -``` -- LEMMY_INTERNAL_HOST=lemmy:8536 -- LEMMY_EXTERNAL_HOST=your-domain.com -- LEMMY_HTTPS=false -``` - -Если хотите установить другой пароль для БД, вы также должны изменить его в `docker-compose.yml` **перед** первым запуском. - -После этого, загляните [Кофигурационный файл](configuration.md) под названием `lemmy.hjson`, и настройте его, в частности hostname, и возможно пароль БД. Затем запустите: - -`docker-compose up -d` - -Вы можете войти в lemmy-ui через `http://localhost:1235` - -Для того чтобы сделать Lemmy доступным в сети, вам необходимо настроить reverse proxy, например Nginx. [Пример конфигурации nginx](https://raw.githubusercontent.com/LemmyNet/lemmy/main/ansible/templates/nginx.conf), could be setup with: - -```bash -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/ansible/templates/nginx.conf -# Replace the {{ vars }} -# The default lemmy_port is 8536 -# The default lemmy_ui_port is 1235 -sudo mv nginx.conf /etc/nginx/sites-enabled/lemmy.conf -``` - -Вам также необходимо настроить TLS, например с [Let's Encrypt](https://letsencrypt.org/). После этого перезапустите Nginx для подгрузки конфигурации. - -## Обновление - -Для обновления до новой версии, вы можете изменить версию вручнуюy в `docker-compose.yml`. Как альтернатива, получите последнюю версию из нашего репозитария git: - -```bash -wget https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/prod/docker-compose.yml -docker-compose up -d -``` diff --git a/src/ru/administration/other_installation_methods.md b/src/ru/administration/other_installation_methods.md deleted file mode 100644 index 8491175..0000000 --- a/src/ru/administration/other_installation_methods.md +++ /dev/null @@ -1,15 +0,0 @@ -# Другие методы установки - -Отказ от ответственности: эти методы установки не рекомендуются разработчиками Lemmy. Если у вас возникнут проблемы, вам нужно решать их самостоятельно или спросить соответствующих авторов. Если вы заметили какие-либо ошибки Lemmy в установленном таким образом экземпляре, укажите это в отчете об ошибке. - -## Установка Lemmy без Docker - -Изначальная инструкция по установке Lemmy, не полагаясь на Docker. - -[https://lemmy.ca/post/1066](https://lemmy.ca/post/1066) - -## Установка на Amazon Web Services (AWS) - -Здесь содержатся необходимые определения инфраструктуры для развертывания Lemmy в [AWS](https://aws.amazon.com/) используя их [Cloud Development Kit](https://docs.aws.amazon.com/cdk/latest/guide/home.html). - -[https://github.com/jetbridge/lemmy-cdk](https://github.com/jetbridge/lemmy-cdk) diff --git a/src/ru/administration/troubleshooting.md b/src/ru/administration/troubleshooting.md deleted file mode 100644 index eb93250..0000000 --- a/src/ru/administration/troubleshooting.md +++ /dev/null @@ -1,67 +0,0 @@ -# Решения проблем - -Различные проблемы, которые могут возникнуть на новом инстансе и способы их решения. - -Многие функции Lemmy зависят от правильной конфигурации reverse proxy. Убедитесь, что ваш, эквивалентен нашему конфигурационному файлу [nginx](https://github.com/LemmyNet/lemmy/blob/main/ansible/templates/nginx.conf). - -## Главное - -### Журналы - -При возникновении проблем с интерфейсом проверьте [браузерную консоль](https://webmasters.stackexchange.com/a/77337) для любых сообщениях об ошибки. - -Для журналов сервера запустите `docker-compose logs -f lemmy` в вашей инсталяционной папке. Вы также можете запустить `docker-compose logs -f lemmy lemmy-ui pictrs` для получения журнала от различных сервисов. - -Если этого недостаточно, попробуйте изменить строку `RUST_LOG=error` в `docker-compose.yml` на `RUST_LOG=info` или `RUST_LOG=verbose`, затем сделайте `docker-compose restart lemmy`. - -### Создание пользователя с правами администратора не работает - -Убедитесь, что websocket работает правильно, проверив консоль браузера на наличие ошибок. В nginx для этого важны следующие заголовки: - -``` -proxy_http_version 1.1; -proxy_set_header Upgrade $http_upgrade; -proxy_set_header Connection "upgrade"; -``` - -### Ошибка ограничения скорости, когда на сайт заходят множество пользователей - -Убедитесь, что заголовки `X-Real-IP` и `X-Forwarded-For` отправляются в Lemmy посредством reverse proxy. В противном случае он будет считать все действия в соответствии с ограничением скорости IP-адреса обратного прокси-сервера. В nginx это должно выглядеть так: - -``` -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header Host $host; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -``` - -## Федерация - -### Другие инстансы не могут получать локальные объекты (сообщество, пост и т.д.) - -Ваш reverse proxy (например nginx) должен пересылать запросы с заголовком `Accept: application/activity+json` в бэкэнд. Это обрабатывается следующими строками: - -``` -set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}"; -if ($http_accept = "application/activity+json") { -set $proxpass "http://0.0.0.0:{{ lemmy_port }}"; -} -if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") { -set $proxpass "http://0.0.0.0:{{ lemmy_port }}"; -} -proxy_pass $proxpass; -``` - -Вы можете проверить, что он работает правильно, выполнив следующие команды, все они должны возвращать действительный 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/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/comment/123 # the id of a local comment -``` - -### Получение удаленных объектов работает, но публикации/комментирование в удаленных сообществах не успешны. - -Проверьте это [федерация разрешена в обоих случаях](../federation/administration.md#instance-allowlist-and-blocklist). - -Также убедитесь, что на вашем сервере установлено точное время. Действия подписываются меткой времени и будут отброшены, если она отключена более чем на 10 секунд. diff --git a/src/ru/client_development/api_reference.md b/src/ru/client_development/api_reference.md deleted file mode 100644 index 9eda4d9..0000000 --- a/src/ru/client_development/api_reference.md +++ /dev/null @@ -1,50 +0,0 @@ -# Справочник по API - -Lemmy имеет два взаимосвязанных API: - -- [WebSocket (анг.язык)](https://join-lemmy.org/api/index.html) -- [HTTP (анг.язык)](http_api.md) - -На этой странице описаны общие для них концепции. - - - -- [Основное использование](#basic-usage) -- [Типы данных](#data-types) - - [Типы Lemmy](#lemmy-types) - - [Низкоуровневые типы](#lower-level-types) -- [Скоростные лимиты по умолчанию](#default-rate-limits) - - - -## Основное использование - -Запрос и ответ строк [В формате JSON (анг.язык)](https://www.json.org). - -## Типы данных - -### Типы Lemmy - -- [Исходные таблицы, в которых есть столбцы/поля (анг.язык)](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/interfaces/source.ts) -- [Агрегирование (для таких вещей, как оценка) (анг.язык)](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/interfaces/aggregates.ts) -- [Представления - основные возвращаемые типы Lemmy (анг.язык)](https://github.com/LemmyNet/lemmy-js-client/blob/main/src/interfaces/views.ts) -- [Формы запросов/ответов находятся в этой папке (анг.язык)](https://github.com/LemmyNet/lemmy-js-client/tree/main/src/interfaces/api) - -### Низкоуровневые типы - -- `?` обозначает параметр, который может быть опущен в запросах и отсутствовать в ответах. Это будет типа **_SomeType_**. -- `[SomeType]` список, содержащий объекты типа **_SomeType_**. -- Времена и даты временной метки в строках [ISO 8601 (анг.язык)](https://en.wikipedia.org/wiki/ISO_8601) формата. Временные метки будут в формате UTC, ваш клиент должен выполнить преобразование UTC в локальный формат. - -## Скоростные лимиты по умолчанию - -Их можно редактировать в вашем `lemmy.hjson` файле, скопировав соответствующий раздел из [defaults.hjson (анг.язык)](https://github.com/LemmyNet/lemmy/blob/main/config/defaults.hjson). - -- 3 в час за регистрацию и создание сообщества. -- 6 в час за размещение изображений. -- 6 за 10 минут на создание поста. -- 180 действий в минуту для постголосования и создания комментариев. - -Все остальное не ограничено по скорости. - -**Смотри также:** [ограничение скорости для пользовательских интерфейсов (анг.язык)](custom_frontend.md#rate-limiting). diff --git a/src/ru/client_development/client_development.md b/src/ru/client_development/client_development.md deleted file mode 100644 index a22d127..0000000 --- a/src/ru/client_development/client_development.md +++ /dev/null @@ -1,6 +0,0 @@ -# Клиентская разработка - -- [Тематическое руководство ](client_development/theming.md) -- [Справочник по API](client_development/api_reference.md) -- [WebSocket API](https://join-lemmy.org/api/index.html) -- [HTTP API](client_development/http_api.md) diff --git a/src/ru/client_development/theming.md b/src/ru/client_development/theming.md deleted file mode 100644 index 7055bb9..0000000 --- a/src/ru/client_development/theming.md +++ /dev/null @@ -1,19 +0,0 @@ -# Тематическое руководство - -Пользователи Lemmy [Bootstrap v4](https://getbootstrap.com/), и не много настраиваемых классов css, поэтому любая тема, совместимая с bootstrap v4, должна работать нормально. - -## Создание - -- Используйте такой инструмент, как [bootstrap.build](https://bootstrap.build/) для создания темы начальной загрузки v4. Экспортируйте `bootstrap.min.css` как только вы закончите, сохраните `_variables.scss` тоже. - -## Тестирование - -- Чтобы протестировать тему, вы можете использовать веб-инструменты своего браузера или плагин, например stylus, для копирования и вставки темы при просмотре Lemmy. - -## Добавление - -1. Ответвление [lemmy-ui](https://github.com/LemmyNet/lemmy-ui). -1. Скопируйте `{my-theme-name}.min.css` в `src/assets/css/themes`. (Вы также можете скопировать в `_variables.scss` если хотите). -1. Перейдите в `src/shared/utils.ts` и добавьте `{my-theme-name}` в список тем. -1. Протестируйте локально -1. Сделайте запрос pull request с этими изменениями в Github diff --git a/src/ru/client_development/websocket_api.md b/src/ru/client_development/websocket_api.md deleted file mode 100644 index 430299e..0000000 --- a/src/ru/client_development/websocket_api.md +++ /dev/null @@ -1,3 +0,0 @@ -# WebSocket API - -[Lemmy WebSocket API 2.0 documentation](https://join-lemmy.org/api/index.html) diff --git a/src/ru/contributing/tests.md b/src/ru/contributing/tests.md deleted file mode 100644 index 3f25398..0000000 --- a/src/ru/contributing/tests.md +++ /dev/null @@ -1,29 +0,0 @@ -### Тесты - -#### Rust - -После установки [local development dependencies](local_development.md), запустите следующую команду: - -```bash -psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" -./test.sh -``` - -### Федерация - -Установите [Local development dependencies](local_development.md), и добавьте следующую строку `/etc/hosts`: - -``` -127.0.0.1 lemmy-alpha -127.0.0.1 lemmy-beta -127.0.0.1 lemmy-gamma -127.0.0.1 lemmy-delta -127.0.0.1 lemmy-epsilon -``` - -Затем используйте следующий скрипт для запуска тестов: - -``` -cd api_tests -./run-federation-test.bash -``` diff --git a/src/ru/federation/administration.md b/src/ru/federation/administration.md deleted file mode 100644 index 036ef7b..0000000 --- a/src/ru/federation/administration.md +++ /dev/null @@ -1,28 +0,0 @@ -# Администрирование Федерирования - -Примечание: Федерирование ActivityPub всё ещё находится в разработке. Сейчас мы рекомендуем использовать эту функцию только на тестовых инстансах. - -Для того чтобы включить федерирование, измените в настройках `federation.enabled` на `true` в `lemmy.hjson`, и перезапустите Lemmy. - -Федерация не запускается автоматически, её нужно активировать вручную через поиск. Для этого вам нужно ввести ссылку на удаленный объект, например: - -- `!main@lemmy.ml` (Сообщество) -- `@nutomic@lemmy.ml` (Пользователь) -- `https://lemmy.ml/c/programming` (Сообщество) -- `https://lemmy.ml/u/nutomic` (Пользователь) -- `https://lemmy.ml/post/123` (Пост) -- `https://lemmy.ml/comment/321` (Комментарий) - -Для ознакомления того, как работает федерация в Lemmy на техническом уровне, ознакомьтесь с нашими [Обзор Федерации](contributing_federation_overview.md). - -## Список разрешенных и заблокированных инстансов - -Lemmy имеет две конфигурационных секции `разрешённые инстансы` и `блокированные инстансы`. Они контролируют, какие инстансы могут федерироваться с Lemmy из вне. Обе настройки списка доменов разделяются запятыми, например `lemmy.ml,example.com`. Вы можете вносить изменения в настройках через `/admin`, или напрямую в файловой системе сервера. - -Важно отметить, что эти настройки влияют только на отправку и получение данных между инстансами. Если разрешить объединение с определенным инстансом, а затем удалить его из списка разрешений, это не повлияет на ранее объединенные данные. Эти сообщества, пользователи, сообщения и комментарии по-прежнему будут отображаться. Они просто больше не будут обновляться. И даже если инстанс заблокирован, он все равно может получать и отображать общедоступные данные из вашего инстанса. - -По умолчанию, оба `разрешённые инстансы` и `блокированные инстансы` пусты, что значит Lemmy будет федерироваться с любым совместимым инстансом. Мы не рекомендуем этого делать, потому что инструментарии модерации еще не готовы и не могут иметь дела с вредносными инстансами. - -Мы рекомендуем поместить список доверенных экземпляров в `разрешённые инстансы`, и федерироваться только с ними. Обратите внимание, что обе стороны должны добавлять друг друга в свои `allowed_instances`, чтобы разрешить двустороннюю федерацию. - -В качестве альтернативы, вы можете использовать чёрный список федераций. В этом случае, добавьте домен в ваш инстанс с которым вы _не_ хотите федерироваться. Вы можете установить только один из «разрещённых*инстансов» и «блокированные*инстансов», так как установка обоих не имеет смысла. diff --git a/src/ru/federation/lemmy_protocol.md b/src/ru/federation/lemmy_protocol.md deleted file mode 100644 index 5472d01..0000000 --- a/src/ru/federation/lemmy_protocol.md +++ /dev/null @@ -1,780 +0,0 @@ -# Протокол Федерации в Lemmy - -Протокол Lemmy (или протокол Lemmy Federation) - это строгое подмножество [протокола ActivityPub](https://www.w3.org/TR/activitypub/). Любое отклонение от протокола ActivityPub является ошибкой в Lemmy или в этой документации (или в обоих). - -Этот документ предназначен для разработчиков, знакомых с протоколами ActivityPub и ActivityStreams. Он дает подробное описание моделей акторов, объектов и действий, используемых Lemmy. - -Прежде чем читать это, взгляните на наш [Обзор федерации](Contributing_federation_overview.md), чтобы получить представление о том, как федерация Lemmy работает на высшем уровне. - -Lemmy еще не во всех отношениях следует спецификации ActivityPub. Например, мы не устанавливаем допустимый контекст, указывающий на наши поля контекста. Мы также игнорируем такие поля, как «inbox», «outbox» или «endpoints» для удалённых участников и предполагаем, что все принадлежит Lemmy. Для обзора девиаций прочтите [#698](https://github.com/LemmyNet/lemmy/issues/698). Они будут исправлены в ближайшее время. - -Lemmy также не очень гибкий, когда речь идет о входящих действиях и объектах. Они должны быть в точности идентичны приведенным ниже примерам. Такие вещи, как наличие массива вместо одного значения или идентификатора объекта вместо полного объекта, приведут к ошибке. - -В следующих таблицах «обязательный» означает, будет ли Lemmy принимать входящие действия без этого поля. Сам Lemmy всегда будет включать все непустые поля. - - - -- [Аннотация](#аннотация) -- [Акторы](#Акторы) - - [Сообщество](#Сообщество) - - [Исходящие Сообщения Сообщества](#Исходящие-Сообщения-Сообщества) - - [Подписчики Сообщества](#Подписчики-Сообщества) - - [Модераторы Сообщества](#Модераторы-Сообщества) - - [Пользователь](#Пользователь) - - [Входящие Пользователя](#Входящие-Пользователя) -- [Объект](#объект) - - [Пост](#пост) - - [Комментарий](#комментарий) - - [Личное сообщение](#личное-сообщение) -- [Виды активности](#виды-активности) - - [Пользователь в Сообществе](#пользователь-в-сообществе) - - [Следовать](#следовать) - - [Отписаться](#отписаться) - - [Создать или Обновить Сообщение](#создать-или-обновить-сообщение) - - [Создать или Обновить Комментарий](#создать-или-обновить-комментарий) - - [Понравилось Сообщение или Комментарий](#понравилось-сообщение-или-комментарий) - - [Сообщение или Комментарий не нравится](#сообщение-или-комментарий-не-нравится) - - [Удалить Пост или Комментарий](#удалить-пост-или-комментарий) - - [Убрать Пост или Комментарий](#remove-post-or-comment) - - [Отмена](#отмена) - - [Сообщество для Пользователя](#сообщество-для-пользователя) - - [Принятие Подписки ](#принятие-подписки) - - [Публикация](#публикация) - - [Убрать или Удалить Сообщество](#убрать-или-удалить-сообщество) - - [Восстановить Убранное или Удалённое Сообщество](#восстановить-убранное-или-удалённое-сообщество) - - [От Пользователя к Пользователю](#от-пользователя-к-пользователю) - - [Создать или Обновить личное сообщение](#создать-или-обновить-личное-сообщение) - - [Удалить Личное Сообщение](#удалить-личное-сообщение) - - [Отмена Удаления Личного Сообщения](#отмена-удаления-личного-сообщения)⏎ - - - -## Аннотация - -```json -{ - "@context": [ - "https://www.w3.org/ns/activitystreams", - { - "moderators": "as:moderators", - "sc": "http://schema.org#", - "stickied": "as:stickied", - "sensitive": "as:sensitive", - "pt": "https://join.lemmy.ml#", - "comments_enabled": { - "type": "sc:Boolean", - "id": "pt:commentsEnabled" - } - }, - "https://w3id.org/security/v1" - ] -} -``` - -Аннотация одинакова для всех действий и объектов. - -## Акторы - -### Сообщество - -Автоматизированный актор. Пользователи могут отправлять сообщения или комментарии к нему, которые сообщество пересылает своим подписчикам в виде `Announce`. - -Отправляет действия пользователю: `Accept/Follow`, `Announce` - -:Получает действия от пользователя: `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (только администратор/модератор), `Delete` (только создатель), `Undo` (только для собственных действий) - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main", - "type": "Group", - "preferredUsername": "main", - "name": "The Main Community", - "sensitive": false, - "content": "Welcome to the default community!", - "mediaType": "text/html", - "source": { - "content": "Welcome to the default community!", - "mediaType": "text/markdown" - }, - "icon": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/Z8pFFb21cl.png" - }, - "image": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/Wt8zoMcCmE.jpg" - }, - "inbox": "https://enterprise.lemmy.ml/c/main/inbox", - "outbox": "https://enterprise.lemmy.ml/c/main/outbox", - "followers": "https://enterprise.lemmy.ml/c/main/followers", - "moderators": "https://enterprise.lemmy.ml/c/main/moderators", - "endpoints": { - "sharedInbox": "https://enterprise.lemmy.ml/inbox" - }, - "published": "2020-10-06T17:27:43.282386+00:00", - "updated": "2020-10-08T11:57:50.545821+00:00", - "publicKey": { - "id": "https://enterprise.lemmy.ml/c/main#main-key", - "owner": "https://enterprise.lemmy.ml/c/main", - "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9JJ7Ybp/H7iXeLkWFepg\ny4PHyIXY1TO9rK3lIBmAjNnkNywyGXMgUiiVhGyN9yU7Km8aWayQsNHOkPL7wMZK\nnY2Q+CTQv49kprEdcDVPGABi6EbCSOcRFVaUjjvRHf9Olod2QP/9OtX0oIFKN2KN\nPIUjeKK5tw4EWB8N1i5HOuOjuTcl2BXSemCQLAlXerLjT8xCarGi21xHPaQvAuns\nHt8ye7fUZKPRT10kwDMapjQ9Tsd+9HeBvNa4SDjJX1ONskNh2j4bqHHs2WUymLpX\n1cgf2jmaXAsz6jD9u0wfrLPelPJog8RSuvOzDPrtwX6uyQOl5NK00RlBZwj7bMDx\nzwIDAQAB\n-----END PUBLIC KEY-----\n" - } -} -``` - -| Имя в поле | Обязательно | Описание | -| ------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| `preferredUsername` | да | Имя актора | -| `name` | да | Название сообщества | -| `sensitive` | да | Правда указывает на то, что все сообщения в сообществе NSFW | -| `attributedTo` | да | Сначала создатель сообщества, затем все остальные модераторы | -| `content` | нет | Текст для боковой панели сообщества, обычно содержащий описание и правила | -| `icon` | нет | Значок, отображаемый рядом с названием сообщества | -| `image` | нет | Изображение баннера, отображаемое вверху страницы сообщества | -| `inbox` | нет | URL-адрес папки входящих сообщений ActivityPub | -| `outbox` | нет | URL-адрес исходящего сообщения ActivityPub, содержит только до 20 последних сообщений, без комментариев, голосов или других действий | -| `followers` | нет | URL-адрес коллекции подписчиков, содержит только количество подписчиков, без ссылок на отдельных подписчиков | -| `endpoints` | нет | Содержит URL общего почтового ящика | -| `published` | нет | Дата и время, когда сообщество было впервые создано | -| `updated` | нет | Дата и время последнего изменения сообщества | -| `publicKey` | да | Открытый ключ, используемый для проверки подписей этого актора | - -#### Исходящие Сообщения Сообщества - -```json -{ - "@context": ..., - "items": [ - ... - ], - "totalItems": 3, - "id": "https://enterprise.lemmy.ml/c/main/outbox", - "type": "OrderedCollection" -} -``` - -Исходящие содержат только `Create/Post` мероприятия на данный момент. - -#### Подписчики Сообщества - -```json -{ - "totalItems": 2, - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main/followers", - "type": "Collection" -} -``` - -Коллекция подписчиков используется только для отображения количества подписчиков. Идентификаторы участников не включены, чтобы защитить конфиденциальность пользователей. - -#### Модераторы Сообщества - -```json -{ - "items": [ - "https://enterprise.lemmy.ml/u/picard", - "https://enterprise.lemmy.ml/u/riker" - ], - "totalItems": 2, - "@context": ..., - "id": "https://enterprise.lemmy.ml/c/main/moderators", - "type": "OrderedCollection" -} -``` - -### Пользователь - -Человек взаимодействует в первую очередь с сообществом, в котором он отправляет и получает сообщения / комментарии. Также может создавать и модерировать сообщества, а также отправлять личные сообщения другим пользователям. - -Отправляет действия в Сообщество: `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (только администратор/модератор), `Delete` (только создатель), `Undo` (только для собственных действий) - -Получает действия от сообщества: `Accept/Follow`, `Announce` - -Отправляет и получает действия от/для других пользователей: `Create/Note`, `Update/Note`, `Delete/Note`, `Undo/Delete/Note` (все, что связано с личными сообщениями) - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/u/picard", - "type": "Person", - "preferredUsername": "picard", - "name": "Jean-Luc Picard", - "content": "The user bio", - "mediaType": "text/html", - "source": { - "content": "The user bio", - "mediaType": "text/markdown" - }, - "icon": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/DS3q0colRA.jpg" - }, - "image": { - "type": "Image", - "url": "https://enterprise.lemmy.ml/pictrs/image/XenaYI5hTn.png" - }, - "inbox": "https://enterprise.lemmy.ml/u/picard/inbox", - "endpoints": { - "sharedInbox": "https://enterprise.lemmy.ml/inbox" - }, - "published": "2020-10-06T17:27:43.234391+00:00", - "updated": "2020-10-08T11:27:17.905625+00:00", - "publicKey": { - "id": "https://enterprise.lemmy.ml/u/picard#main-key", - "owner": "https://enterprise.lemmy.ml/u/picard", - "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyH9iH83+idw/T4QpuRSY\n5YgQ/T5pJCNxvQWb6qcCu3gEVigfbreqZKJpOih4YT36wu4GjPfoIkbWJXcfcEzq\nMEQoYbPStuwnklpN2zj3lRIPfGLht9CAlENLWikTUoW5kZLyU6UQtOGdT2b1hDuK\nsUEn67In6qYx6pal8fUbO6X3O2BKzGeofnXgHCu7QNIuH4RPzkWsLhvwqEJYP0zG\nodao2j+qmhKFsI4oNOUCGkdJejO7q+9gdoNxAtNNKilIOwUFBYXeZJb+XGlzo0X+\n70jdJ/xQCPlPlItU4pD/0FwPLtuReoOpMzLi20oDsPXJBvn+/NJaxqDINuywcN5p\n4wIDAQAB\n-----END PUBLIC KEY-----\n" - } -} -``` - -| Имя в поле | Обязательно | Описание | -| ------------------- | ----------- | ---------------------------------------------------------------- | -| `preferredUsername` | да | Имя Актора | -| `name` | нет | Отображаемое имя пользователя | -| `content` | нет | БИО пользователя | -| `icon` | нет | Аватар пользователя, отображаемый рядом с именем пользователя | -| `image` | нет | Баннер пользователя, отображаемый в верхней части профиля | -| `inbox` | нет | URL-адрес папки входящих сообщений ActivityPub | -| `endpoints` | нет | Содержит URL общего почтового ящика | -| `published` | нет | Дата и время, когда пользователь зарегистрировался | -| `updated` | нет | Дата и время последнего изменения профиля пользователя | -| `publicKey` | да | Открытый ключ используется для проверки подписей из этого актора | - -#### Входящие Пользователя - -```json -{ - "items": [], - "totalItems": 0, - "@context": ..., - "id": "http://lemmy-alpha:8541/u/lemmy_alpha/outbox", - "type": "OrderedCollection" -} -``` - -Папка для входящих сообщений пользователя еще не реализована и является лишь заполнителем для реализаций ActivityPub, которые в ней нуждаются. - -## Объект - -### Пост - -Страница с заголовком и необязательным URL-адресом и текстовым содержимым. URL-адрес часто ведет к изображению и в этом случае включается эскиз. Каждый пост принадлежит ровно одному сообществу. - -```json -{ - "@context": ..., - "id": "https://voyager.lemmy.ml/post/29", - "type": "Page", - "attributedTo": "https://voyager.lemmy.ml/u/picard", - "to": [ - "https://voyager.lemmy.ml/c/main", - "https://www.w3.org/ns/activitystreams#Public" - ], - "name": "Test thumbnail 2", - "content": "blub blub", - "mediaType": "text/html", - "source": { - "content": "blub blub", - "mediaType": "text/markdown" - }, - "url": "https://voyager.lemmy.ml:/pictrs/image/fzGwCsq7BJ.jpg", - "image": { - "type": "Image", - "url": "https://voyager.lemmy.ml/pictrs/image/UejwBqrJM2.jpg" - }, - "commentsEnabled": true, - "sensitive": false, - "stickied": false, - "published": "2020-09-24T17:42:50.396237+00:00", - "updated": "2020-09-24T18:31:14.158618+00:00" -} -``` - -| Имя в поле | Обязательно | Описание | -| ----------------- | ----------- | ------------------------------------------------------------------------------------------------------------------ | -| `attributedTo` | да | Идентификатор пользователя, который создал этот пост | -| `to` | да | Идентификатор сообщества, в котором оно было опубликовано | -| `name` | да | Заголовок сообщения | -| `content` | нет | Тело сообщения | -| `url` | нет | Произвольная ссылка, которой нужно поделиться | -| `image` | нет | Миниатюра для `url`, присутствует только в том случае, если это ссылка на изображение | -| `commentsEnabled` | да | Значение false означает, что публикация заблокирована и комментарии к ней добавить нельзя | -| `sensitive` | да | True отмечает сообщение как NSFW, размывает миниатюру и скрывает ее от пользователей с отключенной настройкой NSFW | -| `stickied` | да | True означает, что оно отображается в верхней части сообщества | -| `published` | нет | Дата и время создания сообщения | -| `updated` | нет | Дата и время, когда сообщение было отредактировано (отсутствует, если оно никогда не редактировалось) | - -### Комментарий - -Ответ на сообщение или ответ на другой комментарий. Содержит только текст (включая ссылки на других пользователей или сообщества). Lemmy отображает комментарии в виде древовидной структуры. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/comment/95", - "type": "Note", - "attributedTo": "https://enterprise.lemmy.ml/u/picard", - "to": "https://www.w3.org/ns/activitystreams#Public", - "content": "mmmk", - "mediaType": "text/html", - "source": { - "content": "mmmk", - "mediaType": "text/markdown" - }, - "inReplyTo": [ - "https://enterprise.lemmy.ml/post/38", - "https://voyager.lemmy.ml/comment/73" - ], - "published": "2020-10-06T17:53:22.174836+00:00", - "updated": "2020-10-06T17:53:22.174836+00:00" -} -``` - -| Имя в поле | Обязательно | Описание | -| -------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `attributedTo` | да | Идентификатор пользователя, создавшего комментарий | -| `to` | да | Сообщество, в котором был сделан комментарий | -| `content` | да | Текст комментария | -| `inReplyTo` | да | Идентификатор поста, в которой был сделан этот комментарий, и родительского комментария. Если это комментарий верхнего уровня, `inReplyTo` содержит только сообщение | -| `published` | нет | Дата и время создания комментария | -| `updated` | нет | Дата и время, когда комментарий был отредактирован (отсутствует, если он никогда не редактировался) | - -### Личное сообщение - -Прямое сообщение от одного пользователя другому. Не могу включать дополнительных пользователей. Поток еще не реализован, поэтому поле `inReplyTo` отсутствует. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/private_message/34", - "type": "Note", - "attributedTo": "https://enterprise.lemmy.ml/u/picard", - "to": "https://voyager.lemmy.ml/u/janeway", - "content": "test", - "source": { - "content": "test", - "mediaType": "text/markdown" - }, - "mediaType": "text/markdown", - "published": "2020-10-08T19:10:46.542820+00:00", - "updated": "2020-10-08T20:13:52.547156+00:00" -} -``` - -| Имя в поле | Обязательно | Описание | -| -------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| `attributedTo` | Идентификатор пользователя, создавшего это личное сообщение | -| `to` | Идентификатор получателя | -| `content` | да | Текст личного сообщения | -| `published` | нет | Дата и время создания сообщения | -| `updated` | нет | Дата и время, когда сообщение было отредактировано (отсутствует, если оно никогда не редактировалось) | - -## Виды активности - -### Пользователь в Сообществе - -#### Следовать - -Когда пользователь нажимает "Подписаться" в сообществе, `Follow` отправляется. Сообщество автоматически отвечает `Accept/Follow`. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/follow/2e4784b7-4edf-4fa1-a352-674d5d5f8891", - "type": "Follow", - "actor": "https://enterprise.lemmy.ml/u/picard", - "to": "https://ds9.lemmy.ml/c/main", - "object": "https://ds9.lemmy.ml/c/main" -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ------------------------------------------------- | -| `actor` | да | Пользователь, отправляющий запрос на отслеживание | -| `object` | да | Сообщество, за которым нужно следить | - -#### Отписаться - -Нажатие на кнопку отказа от подписки в сообществе вызывает отправку сообщения `Undo/Follow`. Сообщество удаляет пользователя из списка подписчиков после его получения. - -```json -{ - "@context": ..., - "id": "http://lemmy-alpha:8541/activities/undo/2c624a77-a003-4ed7-91cb-d502eb01b8e8", - "type": "Undo", - "actor": "http://lemmy-alpha:8541/u/lemmy_alpha", - "to": "http://lemmy-beta:8551/c/main", - "object": { - "@context": ..., - "id": "http://lemmy-alpha:8541/activities/follow/f0d732e7-b1e7-4857-a5e0-9dc83c3f7ee8", - "type": "Follow", - "actor": "http://lemmy-alpha:8541/u/lemmy_alpha", - "object": "http://lemmy-beta:8551/c/main" - } -} -``` - -#### Создать или Обновить Сообщение - -Когда пользователь создает новый пост, он отправляется в соответствующее сообщество. Редактирование ранее созданного сообщения вызывает почти идентичную активность, за исключением `type` являющейся `Update`. Мы пока не поддерживаем упоминания в сообщениях. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/create/6e11174f-501a-4531-ac03-818739bfd07d", - "type": "Create", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": ... -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ---------------------------------- | -| `type` | да | либо `Create` или `Update` | -| `cc` | да | Сообщество, в котором пишется пост | -| `object` | да | Пост создается | - -#### Создать или Обновить Комментарий - -Ответ на сообщение или другой комментарий. Может содержать упоминания других пользователей. Редактирование ранее созданного сообщения вызывает почти идентичную активность, за исключением `type` являющейся `Update`. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/create/6f52d685-489d-4989-a988-4faedaed1a70", - "type": "Create", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "tag": [{ - "type": "Mention", - "name": "@sisko@ds9.lemmy.ml", - "href": "https://ds9.lemmy.ml/u/sisko" - }], - "cc": [ - "https://ds9.lemmy.ml/c/main/", - "https://ds9.lemmy.ml/u/sisko" - ], - "object": ... -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tag` | нет | Список пользователей, упомянутых в комментарии (например `@user@example.com`) | -| `cc` | да | Сообщество, в котором создается публикация, пользователь, которому отвечает (создатель родительской публикации / комментария), а также любые упомянутые пользователи | -| `object` | да | Создаваемый комментарий | - -#### Понравилось Сообщение или Комментарий - -Голосоывание за публикацию или комментарий. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/like/8f3f48dd-587d-4624-af3d-59605b7abad3", - "type": "Like", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/p/123" -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ------------------------------------------------------------- | -| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий | -| `object` | да | За публикацию или комментарий проголосовали | - -#### Сообщение или Комментарий не нравится - -Голос против публикации или комментария. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/dislike/fd2b8e1d-719d-4269-bf6b-2cadeebba849", - "type": "Dislike", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/p/123" -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ------------------------------------------------------------- | -| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий | -| `object` | да | За публикацию или комментарий проголосовали | - -#### Удалить Пост или Комментарий - -Удаляет ранее созданный пост или комментарий. Это может сделать только первоначальный создатель этого сообщения/комментария. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/delete/f1b5d57c-80f8-4e03-a615-688d552e946c", - "type": "Delete", - "actor": "https://enterprise.lemmy.ml/u/riker", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://enterprise.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/post/32" -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ------------------------------------------------------------- | -| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий | -| `object` | да | Идентификатор удаляемой записи или комментария | - -#### Убрать Пост или Комментарий - -Убирает пост или комментарий. Это может быть сделано только модератором сообщества или администратором инстанса, где размещено сообщество. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/remove/aab93b8e-3688-4ea3-8212-d00d29519218", - "type": "Remove", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": "https://enterprise.lemmy.ml/comment/32" -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ------------------------------------------------------------- | -| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий | -| `object` | да | Идентификатор удаляемой записи или комментария | - -#### Отмена - -Отменяет предыдущее действие, может быть выполнено только `actor` `object`. В случае `Like` или `Dislike` подсчет голосов возвращается обратно. В случае `Delete` или `Remove` пост/комментарий восстанавливается. `object` создается заново, так как идентификатор действия и другие поля отличаются. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/undo/70ca5fb2-e280-4fd0-a593-334b7f8a5916", - "type": "Undo", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/" - ], - "object": ... -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | -------------------------------------------------------------------------- | -| `object` | да | Любая `Like`, `Dislike`, `Delete` или `Remove` активности как описано выше | - -#### Добавить Модератора - -Добавление нового модератора (зарегистрированного на `ds9.lemmy.ml`) в сообществе `!main@enterprise.lemmy.ml`. Должно быть отправлено существующим модератором сообщества. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/add/531471b1-3601-4053-b834-d26718da2a06", - "type": "Add", - "cc": [ - "https://enterprise.lemmy.ml/c/main" - ], - "to": "https://www.w3.org/ns/activitystreams#Public", - "object": "https://ds9.lemmy.ml/u/sisko", - "actor": "https://enterprise.lemmy.ml/u/picard", - "target": "https://enterprise.lemmy.ml/c/main/moderators" -} -``` - -#### Убрать Модератора - -Удаление существующего модератора из сообщества. Должено быть отправлено существующим модератором сообщества. - -```json -{ - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/remove/63b9a5b2-d3f8-4371-a7eb-711c7928b3c0", - "type": "Remove", - "object": "https://ds9.lemmy.ml/u/sisko", - "to": "https://www.w3.org/ns/activitystreams#Public", - "actor": "https://enterprise.lemmy.ml/u/picard", - "cc": [ - "https://enterprise.lemmy.ml/c/main" - ], - "target": "https://enterprise.lemmy.ml/c/main/moderators" -} -``` - -### Сообщество для Пользователя - -#### Принятие Подписки - -Автоматически отправляется сообществом в ответ на `Follow`. В то же время сообщество добавляет этого пользователя в свой список подписчиков. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/accept/5314bf7c-dab8-4b01-baf2-9be11a6a812e", - "type": "Accept", - "actor": "https://ds9.lemmy.ml/c/main", - "to": "https://enterprise.lemmy.ml/u/picard", - "object": { - "@context": ..., - "id": "https://enterprise.lemmy.ml/activities/follow/2e4784b7-4edf-4fa1-a352-674d5d5f8891", - "type": "Follow", - "object": "https://ds9.lemmy.ml/c/main", - "actor": "https://enterprise.lemmy.ml/u/picard" - } -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ------------------------------------------------- | -| `actor` | да | То же сообщество, что и в `Follow` активность | -| `to` | нет | Идентификатор пользователя, отправившего `Follow` | -| `object` | да | Ранее отправленные `Follow` активность | - -#### Публикация - -Когда сообщество получает сообщение или комментарий, оно помещает его в `Announce` и отправляет его всем подписчикам. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/announce/b98382e8-6cb1-469e-aa1f-65c5d2c31cc4", - "type": "Announce", - "actor": "https://ds9.lemmy.ml/c/main", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "https://ds9.lemmy.ml/c/main/followers" - ], - "object": ... -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `object` | да | Любая из `Create`, `Update`, `Like`, `Dislike`, `Delete` `Remove` или `Undo` активности описанная в [Пользователь в Сообществе](#пользователь-в-сообществе) секции | - -#### Убрать или Удалить Сообщество - -Администратор инстанса или модератор могут удалять сообщества. - -```json -{ - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/remove/e4ca7688-af9d-48b7-864f-765e7f9f3591", - "type": "Remove", - "actor": "http://ds9.lemmy.ml/c/some_community", - "cc": [ - "http://ds9.lemmy.ml/c/some_community/followers" - ], - "to": "https://www.w3.org/ns/activitystreams#Public", - "object": "http://ds9.lemmy.ml/c/some_community" -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | -------------------------- | -| `type` | да | Либо `Remove` или `Delete` | - -#### Восстановить Убранное или Удалённое Сообщество - -Отменяет убранное сообщество или удалённое. - -```json -{ - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/like/0703668c-8b09-4a85-aa7a-f93621936901", - "type": "Undo", - "actor": "http://ds9.lemmy.ml/c/some_community", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "http://ds9.lemmy.ml/c/testcom/followers" - ], - "object": { - "@context": ..., - "id": "http://ds9.lemmy.ml/activities/remove/1062b5e0-07e8-44fc-868c-854209935bdd", - "type": "Remove", - "actor": "http://ds9.lemmy.ml/c/some_community", - "object": "http://ds9.lemmy.ml/c/testcom", - "to": "https://www.w3.org/ns/activitystreams#Public", - "cc": [ - "http://ds9.lemmy.ml/c/testcom/followers" - ] - } -} - -``` - -| Имя в поле | Обязательно | Описание | -| ------------- | ----------- | -------------------------- | -| `object.type` | да | Либо `Remove` или `Delete` | - -### От Пользователя к Пользователю - -#### Создать или Обновить личное сообщение - -Создание нового личного сообщения между двумя пользователями. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/create/202daf0a-1489-45df-8d2e-c8a3173fed36", - "type": "Create", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": ... -} -``` - -| Имя в поле | Обязательно | Описание | -| ---------- | ----------- | ------------------------------------- | -| `type` | да | Либо `Create` или `Update` | -| `object` | да | [Личное сообщение](#личное-сообщение) | - -#### Удалить Личное Сообщение - -Удаляет предыдущее личное сообщение. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/delete/2de5a5f3-bf26-4949-a7f5-bf52edfca909", - "type": "Delete", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": "https://ds9.lemmy.ml/private_message/341" -} -``` - -#### Отмена Удаления Личного Сообщения - -Восстанавливает ранее удалённое личное сообщение. Объект создается заново, так как идентификатор действия и другие поля отличаются. - -```json -{ - "@context": ..., - "id": "https://ds9.lemmy.ml/activities/undo/b24bc56d-5db1-41dd-be06-3f1db8757842", - "type": "Undo", - "actor": "https://ds9.lemmy.ml/u/sisko", - "to": "https://enterprise.lemmy.ml/u/riker/inbox", - "object": ... -} -``` diff --git a/src/ru/federation/overview.md b/src/ru/federation/overview.md deleted file mode 100644 index 1b3fc41..0000000 --- a/src/ru/federation/overview.md +++ /dev/null @@ -1,123 +0,0 @@ -# Обзор Федерации - -Этот документ предназначен для всех, кто хочет знать, как работает федерация Lemmy, не вдаваясь в технические подробности. Он предназначен для предоставления общего принципа работы федерации ActivityPub в Lemmy. Если вы сами реализуете ActivityPub и хотите быть совместимым с Lemmy, прочтите наши [ActivityPub API outline](contributing_apub_api_outline.md). - -## Соглашения документации - -Чтобы не усложнять, иногда вы можете увидеть вещи в формате `Create/Note` или `Delete/Event` или `Undo/Follow`. То, что перед косой чертой - это Activity, а то, что после косой черты - это объект внутри Activity в свойстве `object`. Итак, это следует читать следующим образом: - -- `Create / Note`: действие` Create`, содержащее `Note` в поле` object`. -- `Delete / Event`: действие` Delete`, содержащее `Event` в поле` object` -- `Undo / Follow`: действие` Undo`, содержащее `Follow` в поле` object` - -В Lemmy мы используем определенные термины для обозначения элементов ActivityPub. По сути, это наши конкретные реализации хорошо известных концепций ActivityPub: - -- Сообщество: `Group` -- Пользователь: `Person` -- Пост: `Page` -- Комментарий: `Note` - -Этот документ состоит из трех основных разделов: - -- **Философия федерации** излагает общую модель того, как это должно быть федеративным -- **Действия пользователя** описывает, какие действия может предпринять Пользователь для взаимодействия -- **Активность сообщества** описывает, что Сообщество делает в ответ на определенные действия Пользователя. - -## Философия федерации - -Основным действующим лицом в «Lemmy» является Сообщество. Каждое сообщество находится в единственном экземпляре и состоит из списка сообщений и списка подписчиков. Основное взаимодействие заключается в том, что Пользователь отправляет пост или комментарий, связанный с публикацией или комментарием в сообществе, который затем аннонсируется об этом всем подписчикам. - -В каждом Сообществе есть определенный Пользователь-создатель, который отвечает за установку правил, назначение модераторов и удаление контента, нарушающего правила. - -Помимо модерации на уровне сообщества, у каждого экземпляра есть набор пользователей-администраторов, которые имеют право выполнять удаление и блокировку на уровне всего сайта. - -Пользователи следят за интересующими их сообществами, чтобы получать сообщения и комментарии. Они также голосуют за сообщения и комментарии, а также создают новые. Комментарии организованы в виде древовидной структуры и обычно сортируются по количеству голосов. Также поддерживаются прямые сообщения между пользователями. - -Пользователи могут не подписываться друг на друга, или не следовать за каким либо сообществом. - -Наша реализация федерации уже завершена, но на данном этапе, мы не совсем сосредоточились на соблюдении спецификации ActivityPub. В связи с этим, Lemmy, пока, несовместима с реализациями, которые должны давать возможность отправлять и получать рабочую активность. Это то, что мы планируем исправить в ближайшем будущем. Проверить [#698](https://github.com/LemmyNet/lemmy/issues/698) обзор наших несоответствий. - -## Действия пользователя - -### Следовать за сообществом - -На каждой странице сообщества есть кнопка «Подписаться». Нажатие на нее запускает действие `Follow`, которое будет отправлено пользователем в почтовый ящик сообщества. Сообщество автоматически ответит на почтовый ящик пользователя действием `Accept/Follow`. Он также добавит пользователя в свой список подписчиков и предоставит пользователю информацию о сообщениях и комментариях в Сообществе. - -### Отписаться от Сообщества - -После подписки на сообщество кнопка «Подписаться» заменяется на «Отписаться». При нажатии на нее в почтовый ящик Сообщества отправляется действие `Accept/Follow`. Сообщество удаляет пользователя из списка подписчиков и больше не отправляет ему никаких действий. - -### Создать пост - -Когда пользователь создает новое сообщение в определённом сообществе, оно отправляется как `Create/Page` в входящие Сообщества. - -### Создать комментарий - -Когда новый комментарий создается для сообщения, идентификатор сообщения и родительский идентификатор комментария (если он существует) указывается в поле `in_reply_to`. Это позволяет привязать его к нужному посту и построить -дерево комментариев. Затем он отправляется во входящие сообщения сообщества как `Create/Note` - -Экземпляр-источник также сканирует комментарий на предмет упоминания любого пользователя и отправляет `Create/Note` этим Пользователям. - -### Редактировать Пост - -Изменение содержания существующей публикации. Может быть выполнено только создавшим его пользователем. - -### Редактировать комментарий - -Изменение содержания существующего комментария. Может быть выполнено только создавшим его пользователем. - -### Нравится и Не нравится - -Пользователям могут нравится или не нравится любые сообщения или комментарии. Они отправляются `Like/Page`, `Dislike/Note` и т.д. в ящик Сообщества. - -### Удаление - -Создатель сообщения, комментария или сообщества может его удалить. Об этом сообщается подписчикам сообщества. Затем элемент скрывается от всех пользователей. - -### Удаления - -Модераторы могут удалять сообщения и комментарии из своих сообществ. Администраторы могут удалять любые сообщения или комментарии со всего сайта. Сообщества также могут быть удалены администраторами. Затем элемент скрывается от всех пользователей. - -Об удалении сообщается всем подписчикам Сообщества, поэтому они вступают в силу и там. Исключение составляют случаи, когда администратор удаляет элемент из Сообщества, размещенного в другом экземпляре. В этом случае удаление вступает в силу только локально. - -### Отмена предыдущего действия - -Мы ничего не удаляем из нашей базы данных, просто скрываем это от пользователей. Удаленные или удаленные Сообщества/Сообщения/Комментарии имеют кнопку «восстановить». Эта кнопка `Undo` генерирует восстановление оригинала удалённой активности как объекта, такого как `Undo/Remove/Post` или `Undo/Delete/Community`. - -Нажатие кнопки "нравится" за публикацию/комментарий, за которую уже проголосовали (или кнопку "не нравится" для публикации/комментария, за которую уже проголосовали), также генерирует сообщение как `Undo`. В этом случае `Undo/Like/Post` или `Undo/Dislike/Comment`. - -### Создать личное сообщение - -В профилях пользователей есть кнопка «Отправить сообщение», которая открывает диалоговое окно, позволяющее отправить личное сообщение этому пользователю. Отправляется как `Create/Note` во Входящие пользователя. Личные сообщения могут быть адресованы только одному,конкретному Пользователю. - -### Редактирование личного сообщения - -`Update/Note` изменяет текст предыдущего отправленного сообщения. - -### Удалить личное сообщение - -`Delete/Note` удаляет личное сообщение. - -### Восстановить личное сообщение - -`Undo/Delete/Note` возвращает удалённое личное сообщение. - -## Активность Сообщества - -Сообщество - это, по сути, бот, который будет делать что-либо только в ответ на действия пользователей. Пользователь, который первым создал Сообщество, становится первым модератором и может добавлять дополнительных модераторов. Как правило, всякий раз, когда Сообщество обнаруживает активность во входящих, оно пересылается всем его подписчикам. - -### Подтверждение подписки - -Если Сообщество получает `Follow` активность, это автоматически активирует ответ `Accept/Follow`. И добавляет Пользователя в список подписавшихся. - -### Не следовать - -Однажды получив `Undo/Follow`, Сообщество удаляет Пользователя из списка подписчиков. - -### Уведомление - -Если Сообщество получает какие-либо действия, связанные с публикациями или комментариями (Создать, Обновить, Нравится, Не нравится, Удалить, Убрать, Отменить), оно Уведомляет об этом своих подписчикам. В связи с этим, Уведомление создаётся как действие , и принимается как объект активности. Таким образом, следующие экземпляры будут в курсе любых действий в сообществах, за которыми они следят. - -### Удалить Сообщество - -Если создатель или администратор удаляет Сообщество, это отправляет `Delete/Group` всем его подписчикам. diff --git a/src/ru/federation/resources.md b/src/ru/federation/resources.md deleted file mode 100644 index 1f033d3..0000000 --- a/src/ru/federation/resources.md +++ /dev/null @@ -1,22 +0,0 @@ -# Источники ActivityPub - -## Официальные документы - -- [Стандарт ActivityPub (анг.язык)](https://www.w3.org/TR/activitypub/) -- [Словарь Activitypub (анг.язык)](https://www.w3.org/TR/activitystreams-vocabulary/) - -## Пояснения - -- [ActivityPub - one protocol to rule them all? (анг.язык)](https://schub.io/blog/2018/02/01/activitypub-one-protocol-to-rule-them-all.html) -- [A highly opinionated guide to learning about ActivityPub (анг.язык)](https://tinysubversions.com/notes/reading-activitypub/) -- [Activitypub implementers guide (анг.язык)](https://socialhub.activitypub.rocks/t/draft-guide-for-new-activitypub-implementers/479) -- [Mastodon Blog: How to implement a basic ActivityPub server (анг.язык)](https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/) -- [Mastodon Blog: Implementing an ActivityPub inbox (анг.язык)](https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/) -- [Data storage questions (анг.язык)](https://socialhub.activitypub.rocks/t/data-storage-questions/579) -- [Activitypub as it has been understood (анг.язык)](https://flak.tedunangst.com/post/ActivityPub-as-it-has-been-understood) - -## Примеры и Библиотеки - -- [ActivityPub example server (анг.язык)](https://github.com/tOkeshu/activitypub-example) -- [ActivityStreams crate (анг.язык)](https://docs.rs/activitystreams/) -- [HTTP Signatures crate (анг.язык)](https://git.asonix.dog/Aardwolf/http-signature-normalization) diff --git a/src/en/users/01-getting-started.md b/src/users/01-getting-started.md similarity index 100% rename from src/en/users/01-getting-started.md rename to src/users/01-getting-started.md diff --git a/src/en/users/02-media.md b/src/users/02-media.md similarity index 100% rename from src/en/users/02-media.md rename to src/users/02-media.md diff --git a/src/en/users/03-votes-and-ranking.md b/src/users/03-votes-and-ranking.md similarity index 100% rename from src/en/users/03-votes-and-ranking.md rename to src/users/03-votes-and-ranking.md diff --git a/src/en/users/04-moderation.md b/src/users/04-moderation.md similarity index 100% rename from src/en/users/04-moderation.md rename to src/users/04-moderation.md diff --git a/src/en/users/05-censorship-resistance.md b/src/users/05-censorship-resistance.md similarity index 100% rename from src/en/users/05-censorship-resistance.md rename to src/users/05-censorship-resistance.md diff --git a/src/en/users/06-other-features.md b/src/users/06-other-features.md similarity index 100% rename from src/en/users/06-other-features.md rename to src/users/06-other-features.md diff --git a/src/en/users/07-history-of-lemmy.md b/src/users/07-history-of-lemmy.md similarity index 100% rename from src/en/users/07-history-of-lemmy.md rename to src/users/07-history-of-lemmy.md diff --git a/src/en/users/moderation_01.png b/src/users/moderation_01.png similarity index 100% rename from src/en/users/moderation_01.png rename to src/users/moderation_01.png diff --git a/src/en/users/moderation_02.png b/src/users/moderation_02.png similarity index 100% rename from src/en/users/moderation_02.png rename to src/users/moderation_02.png diff --git a/src/en/users/more_button.png b/src/users/more_button.png similarity index 100% rename from src/en/users/more_button.png rename to src/users/more_button.png