mirror of
https://github.com/LemmyNet/lemmy-docs.git
synced 2025-01-13 05:05:49 +00:00
Running prettier on markdown files. (#165)
* Running prettier on markdown files. * Add prettier check to CI, and script. * Forgot to add prettier * Try to add testing repo. * Address PR comments.
This commit is contained in:
parent
ddf8f191da
commit
8ea712e8e4
91 changed files with 1082 additions and 1000 deletions
|
@ -1,10 +1,15 @@
|
|||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
recursive: true
|
||||
submodule_update_remote: true
|
||||
pipeline:
|
||||
fetch_git_submodules:
|
||||
image: alpine/git
|
||||
check_formatting:
|
||||
image: alpine:3
|
||||
commands:
|
||||
- git submodule init
|
||||
- git submodule update --recursive --remote
|
||||
|
||||
- apk add prettier --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing
|
||||
- prettier -c src
|
||||
check_documentation_build:
|
||||
image: rust:1.61-slim-buster
|
||||
commands:
|
||||
|
|
|
@ -35,3 +35,7 @@ mdbook serve
|
|||
- 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.
|
||||
|
||||
## Formatting
|
||||
|
||||
To format your markdown files, install [prettier](https://prettier.io), then run `prettier -w src`
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
## Acerca del proyecto
|
||||
|
||||
Página de inicio|Página de publicación
|
||||
---|---
|
||||
![captura principal](main_screen.png)|![captura del chat](chat_screen.png)
|
||||
| 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.
|
||||
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.
|
||||
|
||||
|
@ -17,7 +17,7 @@ Cada servidor lemmy puede establecer su propia política de moderación; nombran
|
|||
### ¿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 [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/).
|
||||
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
- 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 🐈`
|
||||
- _Ejemplo_ `miau :cat:` => `miau 🐈`
|
||||
- Etiquetado de Usuarios con `@`, etiquetado de Comunidades con `!`.
|
||||
- *Ejemplo* `@miguel@lemmy.ml me invitó a la comunidad !gaming@lemmy.ml`
|
||||
- _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.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Metas
|
||||
|
||||
*Esta sección contiene ideas y recursos del equipo que desarrolla Lemmy*. **Parecido a un bloc de notas**
|
||||
_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.
|
||||
|
@ -18,7 +18,7 @@
|
|||
- ¿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?
|
||||
- En el móvil, permite cambiar entre ellos. ¿Por defecto?
|
||||
|
||||
# Recursos / Librerías potenciales
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<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.
|
||||
|
@ -15,18 +16,18 @@ Empieza tecleando...
|
|||
|
||||
## Clasificación
|
||||
|
||||
*Se aplica tanto a las publicaciones como a los comentarios.*
|
||||
_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.
|
||||
| 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).
|
||||
Para más detalles, revisa el [Apartado de la Clasificación de las publicaciones y los comentarios](ranking.md).
|
||||
|
||||
## Moderación / Administración
|
||||
|
||||
|
@ -44,23 +45,22 @@ Todas las acciones de los administradores en las comunidades se realizan en la b
|
|||
|
||||
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>
|
||||
| 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/)
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ Aunque es muy superior a la implementación de Reddit por su decaimiento de las
|
|||
|
||||
### 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.
|
||||
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
|
||||
|
@ -27,6 +27,7 @@ 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.
|
||||
|
@ -41,6 +42,6 @@ Un gráfico del rango a lo largo de 24 horas, de puntuaciones de 1, 5, 10, 100,
|
|||
|
||||
#### 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.
|
||||
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.
|
||||
|
|
|
@ -3,17 +3,21 @@
|
|||
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)
|
||||
|
|
|
@ -6,11 +6,12 @@ Cuando se utiliza docker o ansible, debe haber una carpeta llamada `volumes`, la
|
|||
|
||||
### Copia de seguridad incremental de la BD
|
||||
|
||||
Para hacer una copia de seguridad incremental de una base de datos en archivo `.sql` puedes ejecutar:
|
||||
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
|
||||
|
@ -42,7 +43,7 @@ docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with pas
|
|||
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:
|
||||
Entra al `psql` de tu docker:
|
||||
|
||||
`docker-compose exec postgres psql -U lemmy`
|
||||
|
||||
|
@ -74,5 +75,3 @@ update community set shared_inbox_url = replace (shared_inbox_url, 'old_domain',
|
|||
## Más recursos
|
||||
|
||||
- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
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:
|
||||
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
|
||||
|
|
|
@ -33,5 +33,5 @@ Pega la URL de una publicación en el campo de búsqueda de tu instancia de Lemm
|
|||
## 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.
|
||||
|
|
|
@ -12,23 +12,22 @@ Instrucciones para instalar Lemmy de forma Nativa, sin depender de docker. Origi
|
|||
|
||||
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**.
|
||||
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 |
|
||||
| | |
|
||||
|
||||
| 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
|
||||
|
||||
|
@ -48,7 +47,7 @@ sudo -Hu lemmy git tag -l
|
|||
sudo -Hu lemmy git checkout tags/v0.11.0
|
||||
```
|
||||
|
||||
### Build para producción? (Remover --release para dev)
|
||||
### Build para producción? (Remover --release para dev)
|
||||
|
||||
```bash
|
||||
sudo -Hu lemmy cargo build --release
|
||||
|
@ -149,7 +148,7 @@ 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/) |
|
||||
|
@ -158,7 +157,7 @@ Instalar paquetes extra requeridos para pict-rs:
|
|||
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.
|
||||
|
@ -178,7 +177,7 @@ 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.
|
||||
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:
|
||||
|
||||
|
@ -186,11 +185,10 @@ Ejecutar pictrs de acuerdo a la siguiente línea:
|
|||
pict-rs/pict-rs -a 127.0.0.1:9000 -p ~pictrs/pictrs-data/
|
||||
```
|
||||
|
||||
Pero sólo usaremos el script init.
|
||||
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
|
||||
|
@ -391,4 +389,3 @@ stop() {
|
|||
eend $?
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 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,
|
||||
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
|
||||
|
|
|
@ -8,21 +8,21 @@ Contiene las definiciones de infraestructura necesarias para desplegar [Lemmy](h
|
|||
|
||||
### 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.
|
||||
- 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 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.
|
||||
|
||||
|
@ -41,13 +41,14 @@ 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.
|
||||
|
||||
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
|
||||
- `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
|
||||
|
|
|
@ -38,7 +38,8 @@ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|||
|
||||
### 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:
|
||||
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") {
|
||||
|
@ -51,12 +52,14 @@ 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).
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Referencia de la API
|
||||
|
||||
Lemmy tiene dos APIs entrelazadas:
|
||||
|
||||
- [WebSocket](https://join-lemmy.org/api/index.html)
|
||||
- [HTTP](http_api.md)
|
||||
|
||||
|
@ -10,8 +11,8 @@ 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)
|
||||
- [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)
|
||||
|
||||
<!-- tocstop -->
|
||||
|
@ -31,8 +32,8 @@ Las cadenas de solicitud `request` y respuesta `response` están en [formato JSO
|
|||
|
||||
### 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***.
|
||||
- `?` 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
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 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.
|
||||
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)
|
||||
|
|
|
@ -20,7 +20,7 @@ El siguiente paso es construir una imagen Docker desde tu frontend. Si has bifur
|
|||
- LEMMY_INTERNAL_HOST=lemmy:8536
|
||||
- LEMMY_EXTERNAL_HOST=localhost:8536
|
||||
- LEMMY_HTTPS=false
|
||||
depends_on:
|
||||
depends_on:
|
||||
- lemmy
|
||||
```
|
||||
|
||||
|
@ -45,17 +45,17 @@ Lemmy limita la tasa de muchas acciones en función de la IP del cliente. Pero s
|
|||
Aquí hay un ejemplo recortado para NodeJS:
|
||||
|
||||
```javascript
|
||||
function setForwardedHeaders(
|
||||
headers: IncomingHttpHeaders
|
||||
): { [key: string]: string } {
|
||||
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-real-ip"]) {
|
||||
out["x-real-ip"] = headers["x-real-ip"];
|
||||
}
|
||||
if (headers['x-forwarded-for']) {
|
||||
out['x-forwarded-for'] = headers['x-forwarded-for'];
|
||||
if (headers["x-forwarded-for"]) {
|
||||
out["x-forwarded-for"] = headers["x-forwarded-for"];
|
||||
}
|
||||
|
||||
return out;
|
||||
|
|
|
@ -1,25 +1,26 @@
|
|||
# API HTTP de Lemmy
|
||||
|
||||
|
||||
<!-- toc -->
|
||||
|
||||
- [Websocket vs API HTTP](#websocket-vs-api-http)
|
||||
- [Ejemplos](#ejemplos)
|
||||
* [TypeScript](#typescript)
|
||||
* [Curl](#curl)
|
||||
+ [GET](#ejemplo-get)
|
||||
+ [POST](#ejemplo-post)
|
||||
- [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)
|
||||
- [RSS/Atom feeds](#rss-atom-feeds)
|
||||
- [Imagenes](#imagenes)
|
||||
- [Crear (request)](#crear-request)
|
||||
- [Crear (response)](#crear-response)
|
||||
* [Delete](#delete)
|
||||
|
||||
<!-- tocstop -->
|
||||
|
||||
## 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:
|
||||
|
||||
|
@ -40,9 +41,9 @@ Para más información. Véase el archivo
|
|||
}
|
||||
```
|
||||
|
||||
| Tipo | URL | Tipo de cuerpo | Tipo de Retorno |
|
||||
| --- | --- | --- | --- |
|
||||
| `PUT` | `/comment` | `EditComment` | `CommentResponse` |
|
||||
| Tipo | URL | Tipo de cuerpo | Tipo de Retorno |
|
||||
| ----- | ---------- | -------------- | ----------------- |
|
||||
| `PUT` | `/comment` | `EditComment` | `CommentResponse` |
|
||||
|
||||
### Curl
|
||||
|
||||
|
@ -85,7 +86,7 @@ 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*
|
||||
_El formato (format) y la miniatura (thumbnail) son opcionales_
|
||||
|
||||
#### Crear (request)
|
||||
|
||||
|
@ -93,7 +94,7 @@ El contenido subido debe ser un formulario (multipart/form-data) válido con una
|
|||
|
||||
Uploaded content must be valid multipart/form-data with an image array located within the images[] key.
|
||||
|
||||
`POST /pictrs/image`
|
||||
`POST /pictrs/image`
|
||||
|
||||
#### Crear (response)
|
||||
|
||||
|
@ -113,7 +114,6 @@ Uploaded content must be valid multipart/form-data with an image array located w
|
|||
|
||||
`GET /pictrs/image/delete/{delete_token}/{file}`
|
||||
|
||||
|
||||
# Nota
|
||||
|
||||
Esta documentación puede tener un retraso con respecto a la actual
|
||||
|
|
|
@ -8,12 +8,12 @@ Lemmy usa [Bootstrap v4](https://getbootstrap.com/), y algunas clases css custom
|
|||
|
||||
## 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.
|
||||
- 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. 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.
|
||||
1. Haz _pull request_ con los cambios que hiciste.
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
# API del WebSocket
|
||||
|
||||
[Documentación de la API del WebSocket de Lemmy](https://join-lemmy.org/api/index.html)
|
||||
|
|
|
@ -10,7 +10,7 @@ Información sobre como contribuir a Lemmy, ya sea traduciendo, probando, diseñ
|
|||
|
||||
## 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).
|
||||
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
|
||||
|
||||
|
@ -24,13 +24,13 @@ Mira el [Weblate de Lemmy](https://weblate.yerbamate.ml/projects/lemmy/) para l
|
|||
### 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:
|
||||
- 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.
|
||||
- `websocket` - Crea el sevidor del websocket.
|
||||
|
||||
## Linting / Formateo
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ 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": {
|
||||
|
|
|
@ -11,18 +11,19 @@ cd docker/federation
|
|||
|
||||
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
|
||||
| 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`).
|
||||
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`
|
||||
|
@ -34,7 +35,7 @@ Los contenedores de Firefox son una buena forma de probar su interacción.
|
|||
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
|
||||
[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`:
|
||||
|
||||
```
|
||||
|
@ -59,4 +60,4 @@ sudo docker-compose up -d
|
|||
- 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.
|
||||
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.
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
# 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
|
||||
|
@ -13,6 +15,7 @@ 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)
|
||||
|
@ -20,6 +23,7 @@ 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.
|
||||
|
@ -29,6 +33,7 @@ brew install node yarn
|
|||
```
|
||||
|
||||
### Obtener el código fuente del back end
|
||||
|
||||
```
|
||||
git clone https://github.com/LemmyNet/lemmy.git
|
||||
# or alternatively from gitea
|
||||
|
@ -36,18 +41,22 @@ git clone https://github.com/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
|
||||
|
@ -59,6 +68,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
|||
```
|
||||
|
||||
#### Distro basada en Arch
|
||||
|
||||
```
|
||||
sudo pacman -S postgresql
|
||||
sudo systemctl start postgresql
|
||||
|
@ -70,6 +80,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
|||
```
|
||||
|
||||
#### macOS
|
||||
|
||||
```
|
||||
brew install postgresql
|
||||
brew services start postgresql
|
||||
|
@ -82,6 +93,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
|||
```
|
||||
|
||||
### Ejecutar una instancia de desarrollo local
|
||||
|
||||
```
|
||||
cd lemmy
|
||||
cargo run
|
||||
|
@ -97,6 +109,6 @@ yarn
|
|||
yarn dev
|
||||
```
|
||||
|
||||
Enseguida entra a [localhost:1234](http://localhost:1234). Al guardar cambios, el frond end se debe recargar automáticamenete.
|
||||
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).
|
||||
|
|
|
@ -11,8 +11,8 @@ En general, nuestro manejo de las ramas es el descrito en [Un modelo de bifurcac
|
|||
- 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`
|
||||
- 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`
|
||||
|
|
|
@ -17,7 +17,7 @@ For an overview of how federation in Lemmy works on a technical level, check out
|
|||
|
||||
## 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.
|
||||
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.
|
||||
|
||||
|
@ -25,4 +25,4 @@ By default, both `allowed_instances` and `blocked_instances` values are empty, w
|
|||
|
||||
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.
|
||||
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.
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
# Federación
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Protocolo de la Federación Lemmy
|
||||
# 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).
|
||||
|
||||
|
@ -16,36 +16,36 @@ En las siguientes tablas, "obligatorio" se refiere a si Lemmy aceptará o no una
|
|||
|
||||
- [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)
|
||||
- [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)
|
||||
- [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)⏎
|
||||
- [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)⏎
|
||||
|
||||
<!-- tocstop -->
|
||||
|
||||
|
@ -53,21 +53,21 @@ En las siguientes tablas, "obligatorio" se refiere a si Lemmy aceptará o no una
|
|||
|
||||
```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"
|
||||
]
|
||||
"@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"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -122,23 +122,23 @@ Recibe actividades del usuario: Seguir `Follow`, Deshacer/Seguir `Undo/Follow`,
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
|
||||
| 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
|
||||
|
@ -228,18 +228,18 @@ Envía y recibe actividades de/para otros usuarios: Crear/Nota `Create/Note`, Ac
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
| 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
|
||||
|
||||
|
@ -291,19 +291,19 @@ Una página con título, y contenido opcional de URL y texto. La URL suele lleva
|
|||
}
|
||||
```
|
||||
|
||||
| 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ó) |
|
||||
| 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
|
||||
|
||||
|
@ -331,14 +331,14 @@ Una respuesta a una publicación, o una respuesta a otro comentario. Contiene s
|
|||
}
|
||||
```
|
||||
|
||||
| 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ó) |
|
||||
| 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
|
||||
|
||||
|
@ -361,15 +361,16 @@ Un mensaje directo de un usuario a otro. No puede incluir usuarios adicionales.
|
|||
"updated": "2020-10-08T20:13:52.547156+00:00"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Fix table in english version --->
|
||||
|
||||
| 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ó) |
|
||||
| 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
|
||||
|
||||
|
@ -390,14 +391,14 @@ Cuando el usuario hace clic en "Suscribirse" en una comunidad, se envía un `Fol
|
|||
}
|
||||
```
|
||||
|
||||
| Nombre del Campo | Obligatorio | Descripción |
|
||||
|---|---|---|
|
||||
| `actor` | si | El usuario que envía la solicitud de seguimiento `Follow` |
|
||||
| `object` | si | La comunidad a seguir |
|
||||
| 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.
|
||||
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
|
||||
{
|
||||
|
@ -434,11 +435,11 @@ Cuando un usuario crea una nueva publicación, ésta se envía a la comunidad co
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
| 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
|
||||
|
||||
|
@ -464,11 +465,11 @@ Una respuesta a una publicación, o a otro comentario. Puede contener menciones
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
| 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
|
||||
|
||||
|
@ -488,10 +489,10 @@ Un voto positivo para una publicación o un comentario
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
| 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
|
||||
|
||||
|
@ -511,10 +512,10 @@ Un voto negativo para una publicación o un comentario
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
| 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
|
||||
|
||||
|
@ -534,12 +535,12 @@ Elimina una publicación o comentario creado anteriormente. Esto sólo lo puede
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
| 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 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.
|
||||
|
||||
|
@ -557,10 +558,10 @@ Remover una publicación o un comentario. Esto sólo puede hacerlo un mod de la
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
| 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
|
||||
|
||||
|
@ -580,9 +581,9 @@ Revierte una actividad anterior, sólo puede hacerlo el actor `actor` del objeto
|
|||
}
|
||||
```
|
||||
|
||||
| Nombre del Campo | Obligatorio | Descripción |
|
||||
|---|---|---|
|
||||
| `object` | si | Cualquier actividad `Like`, `Dislike`, `Delete` o `Remove` tal como se ha descrito anteriormente |
|
||||
| Nombre del Campo | Obligatorio | Descripción |
|
||||
| ---------------- | ----------- | ------------------------------------------------------------------------------------------------ |
|
||||
| `object` | si | Cualquier actividad `Like`, `Dislike`, `Delete` o `Remove` tal como se ha descrito anteriormente |
|
||||
|
||||
#### Agregar Moderador
|
||||
|
||||
|
@ -645,11 +646,11 @@ Enviado automáticamente por la comunidad en respuesta a un `Follow`. Al mismo t
|
|||
}
|
||||
```
|
||||
|
||||
| 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 |
|
||||
| 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
|
||||
|
||||
|
@ -669,13 +670,13 @@ Cuando la comunidad recibe una actividad publicación o comentario, lo envuelve
|
|||
}
|
||||
```
|
||||
|
||||
| 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) |
|
||||
| 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.
|
||||
Un administrador de instancia puede remover la comunidad, o un mod puede eliminarla.
|
||||
|
||||
```json
|
||||
{
|
||||
|
@ -691,9 +692,9 @@ Un administrador de instancia puede remover la comunidad, o un mod puede elimina
|
|||
}
|
||||
```
|
||||
|
||||
| Nombre del Campo| Obligatorio | Descripción |
|
||||
|---|---|---|
|
||||
| `type` | si | Remover `Remove` o Eliminar `Delete` |
|
||||
| Nombre del Campo | Obligatorio | Descripción |
|
||||
| ---------------- | ----------- | ------------------------------------ |
|
||||
| `type` | si | Remover `Remove` o Eliminar `Delete` |
|
||||
|
||||
#### Restaurar Comunidad Removida o Eliminada
|
||||
|
||||
|
@ -723,9 +724,10 @@ Revierte la remoción o eliminación
|
|||
}
|
||||
|
||||
```
|
||||
| Nombre del Campo | Obligatorio | Descripción|
|
||||
|---|---|---|
|
||||
| `object.type` | si | Remover `Remove` o Eliminar `Delete` |
|
||||
|
||||
| Nombre del Campo | Obligatorio | Descripción |
|
||||
| ---------------- | ----------- | ------------------------------------ |
|
||||
| `object.type` | si | Remover `Remove` o Eliminar `Delete` |
|
||||
|
||||
### Usuario a Usuario
|
||||
|
||||
|
@ -744,10 +746,10 @@ Crea un nuevo mensaje privado entre dos usuarios.
|
|||
}
|
||||
```
|
||||
|
||||
| Nombre del Campo | Obligatorio| Descripción |
|
||||
|---|---|---|
|
||||
| `type` | si | Crear `Create` o Actualizar `Update` |
|
||||
| `object` | si | Un [Mensaje Privado](#private-message) |
|
||||
| Nombre del Campo | Obligatorio | Descripción |
|
||||
| ---------------- | ----------- | -------------------------------------- |
|
||||
| `type` | si | Crear `Create` o Actualizar `Update` |
|
||||
| `object` | si | Un [Mensaje Privado](#private-message) |
|
||||
|
||||
#### Eliminar Mensaje Privado
|
||||
|
||||
|