Remove translations (#223)

* Remove translations

* fix typos path

* fix wget

* fix wget

* fix mdbook download link

* ls

* la -la

* need musl
This commit is contained in:
Nutomic 2023-06-21 12:51:08 +02:00 committed by GitHub
parent 749e08b19f
commit 0dc13b4ea1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
157 changed files with 46 additions and 7780 deletions

View File

@ -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

View File

@ -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

View File

@ -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"

View File

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

View File

@ -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

View File

@ -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}}
```

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -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)

View File

@ -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/)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

View File

@ -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.

View File

@ -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)

View File

@ -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)
<iframe id='ivplayer' width='640' height='360' src='https://invidious.xyz/embed/5axSUJj0bBY' style='border:none;'></iframe>
## 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 <br> ========= | <h4>Titulo 1</h4> |
| \## Titulo 2 | Titulo 2 <br>--------- | <h5>Titulo 2</h5> |
| \[enlace\](http://a.com) | \[enlace\]\[1\]<br><br>\[1\]: http://b.org | [enlace](https://commonmark.org/) |
| !\[Imagen\](http://url/a.png) | !\[Imagen\]\[1\]<br><br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) |
| \> Cita en bloque | | <blockquote>Cita en bloque</blockquote> |
| \* Lista <br>\* Lista <br>\* Lista | \- Lista <br>\- Lista <br>\- Lista <br> | _ Lista <br>_ Lista <br>\* Lista <br> |
| 1\. Uno <br>2\. Dos <br>3\. Tres | 1) Uno<br>2) Dos<br>3) Tres | 1. Uno<br>2. Dos<br>3. Tres |
| Línea Horizontal <br>\--- | Línea Horizontal<br>\*\*\* | Línea Horizontal <br><hr> |
| \`Código en línea\` con acento grave | | `Código en línea` con acento grave |
| \`\`\`<br>\# Bloque de código <br>print '3 acentos graves o'<br>print 'indentar 4 espacios' <br>\`\`\` | ····\# Bloque de código<br>····print '3 acentos graves o'<br>····print 'indentar 4 espacios' | \# Bloque de código <br>print '3 acentos graves o'<br>print 'indentar 4 espacios' |
| ::: spoiler o nsfw oculto <br>_mucho spoiler aquí_<br>::: | | <details><summary> spoiler o nsfw oculto </summary><p><em>mucho spoiler aquí</em></p></details> |
| Texto de ~subíndice~ | | Texto de <sub>subíndice</sub> |
| Texto de ^superíndice^ | | Texto de <sup>superíndice</sup> |
[Tutorial de CommonMark](https://commonmark.org/help/tutorial/)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

View File

@ -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.

View File

@ -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)

View File

@ -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

View File

@ -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
```

View File

@ -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.

View File

@ -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 $?
}
```

View File

@ -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
```

View File

@ -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
```

View File

@ -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

View File

@ -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