mirror of
https://github.com/LemmyNet/lemmy-docs.git
synced 2024-11-22 04:11:09 +00:00
Merge branch 'main' into fix_docker_install_2
This commit is contained in:
commit
dd56e433cc
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:
|
pipeline:
|
||||||
fetch_git_submodules:
|
check_formatting:
|
||||||
image: alpine/git
|
image: alpine:3
|
||||||
commands:
|
commands:
|
||||||
- git submodule init
|
- apk add prettier --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing
|
||||||
- git submodule update --recursive --remote
|
- prettier -c src
|
||||||
|
|
||||||
check_documentation_build:
|
check_documentation_build:
|
||||||
image: rust:1.61-slim-buster
|
image: rust:1.61-slim-buster
|
||||||
commands:
|
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.
|
- 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.
|
- 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.
|
- 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
|
## Acerca del proyecto
|
||||||
|
|
||||||
Página de inicio|Página de publicación
|
| Página de inicio | Página de publicación |
|
||||||
---|---
|
| ------------------------------------- | ------------------------------------ |
|
||||||
![captura principal](main_screen.png)|![captura del chat](chat_screen.png)
|
| ![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).
|
[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.
|
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?
|
### ¿Por qué se llama Lemmy?
|
||||||
|
|
||||||
- Cantante principal de [Motörhead](https://invidio.us/watch?v=pWB5JZRGl0U).
|
- 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).
|
- 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/).
|
- 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.
|
- Puntuaciones completas de los votos `(+/-)` como en el antiguo reddit.
|
||||||
- Temas, incluidos los claros, los oscuros, y los solarizados.
|
- Temas, incluidos los claros, los oscuros, y los solarizados.
|
||||||
- Emojis con soporte de autocompletado. Empieza tecleando `:`
|
- Emojis con soporte de autocompletado. Empieza tecleando `:`
|
||||||
- *Ejemplo* `miau :cat:` => `miau 🐈`
|
- _Ejemplo_ `miau :cat:` => `miau 🐈`
|
||||||
- Etiquetado de Usuarios con `@`, etiquetado de Comunidades con `!`.
|
- 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.
|
- 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.
|
- 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.
|
- Notificaciones, sobre las respuestas a los comentarios y cuando te etiquetan.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Metas
|
# 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.
|
- Piensa en un nombre / nombre clave.
|
||||||
- Debe tener comunidades.
|
- Debe tener comunidades.
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
- ¿Deberia permitir bots?
|
- ¿Deberia permitir bots?
|
||||||
- ¿Deberían los comentarios/votos ser estáticos, o sentirse como un chat, como [flowchat?](https://flow-chat.com).
|
- ¿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
|
- 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
|
# 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>
|
<iframe id='ivplayer' width='640' height='360' src='https://invidious.xyz/embed/5axSUJj0bBY' style='border:none;'></iframe>
|
||||||
|
|
||||||
## Comandos Útiles
|
## Comandos Útiles
|
||||||
|
|
||||||
Empieza tecleando...
|
Empieza tecleando...
|
||||||
|
|
||||||
- `@nombre_usuario` para obtener una lista de nombres de usuario.
|
- `@nombre_usuario` para obtener una lista de nombres de usuario.
|
||||||
|
@ -15,18 +16,18 @@ Empieza tecleando...
|
||||||
|
|
||||||
## Clasificación
|
## 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
|
| Tipo | Descripción |
|
||||||
--- | ---
|
| ------------------ | ---------------------------------------------------------------------------------------- |
|
||||||
Activo | Tendencias ordenadas en base a la puntuación, y la hora del comentario mas reciente.
|
| 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.
|
| 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.
|
| Nuevo | Las publicaciones más nuevas. |
|
||||||
Más comentados | Las publicaciones con más comentarios.
|
| 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.
|
| 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.
|
| 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
|
## 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.
|
Enriquece todas tus publicaciones / comentarios aplicando el formato Markdown para que el texto no se vea tan aburrido.
|
||||||
|
|
||||||
Tipo | O | … para obtener
|
| Tipo | O | … para obtener |
|
||||||
--- | --- | ---
|
| ------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
||||||
\*Italica\* | \_Italica\_ | _Italica_
|
| \*Italica\* | \_Italica\_ | _Italica_ |
|
||||||
\*\*Negrita\*\* | \_\_Negrita\_\_ | **Negrita**
|
| \*\*Negrita\*\* | \_\_Negrita\_\_ | **Negrita** |
|
||||||
\# Titulo 1 | Titulo 1 <br> ========= | <h4>Titulo 1</h4>
|
| \# Titulo 1 | Titulo 1 <br> ========= | <h4>Titulo 1</h4> |
|
||||||
\## Titulo 2 | Titulo 2 <br>--------- | <h5>Titulo 2</h5>
|
| \## 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/)
|
| \[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)
|
| !\[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>
|
| \> 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>
|
| \* 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
|
| 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>
|
| 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
|
| \`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'
|
| \`\`\`<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>
|
| ::: 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 ~subíndice~ | | Texto de <sub>subíndice</sub> |
|
||||||
Texto de ^superíndice^ | | Texto de <sup>superíndice</sup>
|
| Texto de ^superíndice^ | | Texto de <sup>superíndice</sup> |
|
||||||
|
|
||||||
[Tutorial de CommonMark](https://commonmark.org/help/tutorial/)
|
[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
|
### 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
|
Rank = ScaleFactor * log(Max(1, 3 + Score)) / (Time + 2)^Gravity
|
||||||
|
@ -27,6 +27,7 @@ Score = Upvotes - Downvotes
|
||||||
Time = time since submission (in hours)
|
Time = time since submission (in hours)
|
||||||
Gravity = Decay gravity, 1.8 is default
|
Gravity = Decay gravity, 1.8 is default
|
||||||
```
|
```
|
||||||
|
|
||||||
- Lemmy utiliza el mismo algoritmo `Rank` anterior, en dos tipos: `Active` y `Hot`.
|
- 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).
|
- 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.
|
- `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
|
#### 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.
|
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.
|
Información para administradores de las instancias de Lemmy, y para aquellos que quieran gestionar un servidor.
|
||||||
|
|
||||||
## Instalación
|
## Instalación
|
||||||
|
|
||||||
### Métodos oficiales/soportados
|
### Métodos oficiales/soportados
|
||||||
|
|
||||||
Lemmy tiene dos métodos principales de instalación:
|
Lemmy tiene dos métodos principales de instalación:
|
||||||
|
|
||||||
- [Manual con Docker](install_docker.md)
|
- [Manual con Docker](install_docker.md)
|
||||||
- [Automatizado con Ansible](install_ansible.md).
|
- [Automatizado con Ansible](install_ansible.md).
|
||||||
|
|
||||||
Recomendamos usar Ansible, porque simplifica la instalación y también facilita la actualización.
|
Recomendamos usar Ansible, porque simplifica la instalación y también facilita la actualización.
|
||||||
|
|
||||||
### Otros métodos de instalación
|
### Otros métodos de instalación
|
||||||
|
|
||||||
> ⚠️ **Bajo tu propio riesgo.**
|
> ⚠️ **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.
|
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)
|
- [Instalar desde Cero](from_scratch.md)
|
||||||
- [En Amazon Web Services (AWS)](on_aws.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
|
### 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
|
```bash
|
||||||
docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
|
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
|
### Un ejemplo de script de copia de seguridad
|
||||||
|
|
||||||
```bash
|
```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.
|
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.**
|
**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`
|
`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
|
## Más recursos
|
||||||
|
|
||||||
- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database
|
- 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`.
|
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_LOCATION # config.hjson
|
||||||
- LEMMY_CONFIG_DEFAULTS_LOCATION # defaults.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
|
## 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.
|
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.
|
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.
|
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
|
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
|
## Configuración
|
||||||
|
|
||||||
| Dependencias | |
|
| Dependencias | |
|
||||||
|------------------------------|-------------------------------------------|
|
| ------------ | ----------------------------------------- |
|
||||||
| app-admin | sudo |
|
| app-admin | sudo |
|
||||||
| dev-vcs | [git](https://git-scm.com/) |
|
| dev-vcs | [git](https://git-scm.com/) |
|
||||||
| dev-lang | [rust](https://www.rust-lang.org/) |
|
| dev-lang | [rust](https://www.rust-lang.org/) |
|
||||||
| dev-db | [postgresql](https://www.postgresql.org/) |
|
| dev-db | [postgresql](https://www.postgresql.org/) |
|
||||||
| www-servers | [nginx](https://nginx.org/en/) |
|
| www-servers | [nginx](https://nginx.org/en/) |
|
||||||
| sys-apps | [yarn](https://yarnpkg.com/) |
|
| sys-apps | [yarn](https://yarnpkg.com/) |
|
||||||
| app-shells | bash-completion |
|
| app-shells | bash-completion |
|
||||||
| | |
|
| | |
|
||||||
|
|
||||||
|
|
||||||
### Poner en marcha el postgresql
|
### Poner en marcha el postgresql
|
||||||
|
|
||||||
|
@ -48,7 +47,7 @@ sudo -Hu lemmy git tag -l
|
||||||
sudo -Hu lemmy git checkout tags/v0.11.0
|
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
|
```bash
|
||||||
sudo -Hu lemmy cargo build --release
|
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:
|
Instalar paquetes extra requeridos para pict-rs:
|
||||||
|
|
||||||
| Paquetes | |
|
| Paquetes | |
|
||||||
|-------------|--------------------------------------------------|
|
| ----------- | ------------------------------------------------ |
|
||||||
| media-libs | [gexiv2](https://gitlab.gnome.org/GNOME/gexiv2) |
|
| media-libs | [gexiv2](https://gitlab.gnome.org/GNOME/gexiv2) |
|
||||||
| media-gfx | [imagemagick](https://imagemagick.org/index.php) |
|
| media-gfx | [imagemagick](https://imagemagick.org/index.php) |
|
||||||
| media-video | [ffmpeg](https://ffmpeg.org/) |
|
| 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 requeridos para pict-rs (en caso de un sistema separado):
|
||||||
|
|
||||||
| Paquetes | |
|
| Paquetes | |
|
||||||
|----------|------------------------------------|
|
| -------- | ---------------------------------- |
|
||||||
| dev-lang | [rust](https://www.rust-lang.org/) |
|
| dev-lang | [rust](https://www.rust-lang.org/) |
|
||||||
|
|
||||||
**Opcional** Hacer un script o ejecutarlo manualmente como usuario.
|
**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**
|
**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:
|
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/
|
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.
|
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
|
## Actualizando
|
||||||
|
@ -391,4 +389,3 @@ stop() {
|
||||||
eend $?
|
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:
|
Para actualizar a una nueva versión, simplemente ejecuta lo siguiente en tu repo local de Lemmy:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git pull origin main
|
git pull origin main
|
||||||
cd ansible
|
cd ansible
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Instalación con Docker
|
# 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
|
```bash
|
||||||
# crea una carpeta para los archivos de lemmy. La ubicación no importa, puede ser en cualquier sitio
|
# 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:
|
### Incluye:
|
||||||
|
|
||||||
* ECS fargate cluster
|
- ECS fargate cluster
|
||||||
* Lemmy-UI
|
- Lemmy-UI
|
||||||
* Lemmy
|
- Lemmy
|
||||||
* Pictrs
|
- Pictrs
|
||||||
* IFramely
|
- IFramely
|
||||||
* CloudFront CDN
|
- CloudFront CDN
|
||||||
* Almacenamiento EFS para subir imágenes.
|
- Almacenamiento EFS para subir imágenes.
|
||||||
* Aurora Serverless Postgres DB
|
- Aurora Serverless Postgres DB
|
||||||
* Bastion VPC host
|
- Bastion VPC host
|
||||||
* Balanceadores de carga para Lemmy y IFramely
|
- Balanceadores de carga para Lemmy y IFramely
|
||||||
* Registros DNS para tu sitio.
|
- Registros DNS para tu sitio.
|
||||||
|
|
||||||
## Inicio rápido
|
## 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.
|
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
|
## 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
|
## Comandos del CDK útiles
|
||||||
|
|
||||||
* `npm run build` compila typescript a js
|
- `npm run build` compila typescript a js
|
||||||
* `npm run watch` vigila los cambios y compila
|
- `npm run watch` vigila los cambios y compila
|
||||||
* `npm run test` realiza las pruebas unitarias de jest
|
- `npm run test` realiza las pruebas unitarias de jest
|
||||||
* `cdk deploy` despliega esta pila en tu cuenta/región de AWS por defecto
|
- `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 diff` compara la pila desplegada con el estado actual
|
||||||
* `cdk synth` emite la plantilla de CloudFormation sintetizada
|
- `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)
|
### 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 }}";
|
set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}";
|
||||||
if ($http_accept = "application/activity+json") {
|
if ($http_accept = "application/activity+json") {
|
||||||
|
@ -51,12 +52,14 @@ proxy_pass $proxpass;
|
||||||
```
|
```
|
||||||
|
|
||||||
Puedes probar que funciona correctamente ejecutando los siguientes comandos, todos ellos deberían devolver JSON válido:
|
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/u/some-local-user
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # the id of a local post
|
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # the id of a local post
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # the id of a local comment
|
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # the id of a local comment
|
||||||
```
|
```
|
||||||
|
|
||||||
### La obtención de objetos remotos funciona, pero publicar/comentar en comunidades remotas falla
|
### 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).
|
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
|
# Referencia de la API
|
||||||
|
|
||||||
Lemmy tiene dos APIs entrelazadas:
|
Lemmy tiene dos APIs entrelazadas:
|
||||||
|
|
||||||
- [WebSocket](https://join-lemmy.org/api/index.html)
|
- [WebSocket](https://join-lemmy.org/api/index.html)
|
||||||
- [HTTP](http_api.md)
|
- [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)
|
- [Uso básico](#uso-básico)
|
||||||
- [Tipos de datos](#tipos-de-datos)
|
- [Tipos de datos](#tipos-de-datos)
|
||||||
* [Tipos de Lemmy](#tipos-de-lemmy)
|
- [Tipos de Lemmy](#tipos-de-lemmy)
|
||||||
* [Tipos de bajo nivel](#tipos-de-bajo-nivel)
|
- [Tipos de bajo nivel](#tipos-de-bajo-nivel)
|
||||||
- [Límites de tarifa por defecto](#límites-de-tarifa-por-defecto)
|
- [Límites de tarifa por defecto](#límites-de-tarifa-por-defecto)
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
@ -31,8 +32,8 @@ Las cadenas de solicitud `request` y respuesta `response` están en [formato JSO
|
||||||
|
|
||||||
### Tipos de bajo nivel
|
### 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).
|
- `?` 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***.
|
- `[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.
|
- 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
|
## Límites de tasa por defecto
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Desarrollo de clientes
|
# 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)
|
- [Guía para Temas](client_development/theming.md)
|
||||||
- [Referencia de la API](client_development/api_reference.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_INTERNAL_HOST=lemmy:8536
|
||||||
- LEMMY_EXTERNAL_HOST=localhost:8536
|
- LEMMY_EXTERNAL_HOST=localhost:8536
|
||||||
- LEMMY_HTTPS=false
|
- LEMMY_HTTPS=false
|
||||||
depends_on:
|
depends_on:
|
||||||
- lemmy
|
- 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:
|
Aquí hay un ejemplo recortado para NodeJS:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
function setForwardedHeaders(
|
function setForwardedHeaders(headers: IncomingHttpHeaders): {
|
||||||
headers: IncomingHttpHeaders
|
[key: string]: string,
|
||||||
): { [key: string]: string } {
|
} {
|
||||||
let out = {
|
let out = {
|
||||||
host: headers.host,
|
host: headers.host,
|
||||||
};
|
};
|
||||||
if (headers['x-real-ip']) {
|
if (headers["x-real-ip"]) {
|
||||||
out['x-real-ip'] = headers['x-real-ip'];
|
out["x-real-ip"] = headers["x-real-ip"];
|
||||||
}
|
}
|
||||||
if (headers['x-forwarded-for']) {
|
if (headers["x-forwarded-for"]) {
|
||||||
out['x-forwarded-for'] = headers['x-forwarded-for'];
|
out["x-forwarded-for"] = headers["x-forwarded-for"];
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
|
|
|
@ -1,25 +1,26 @@
|
||||||
# API HTTP de Lemmy
|
# API HTTP de Lemmy
|
||||||
|
|
||||||
|
|
||||||
<!-- toc -->
|
<!-- toc -->
|
||||||
|
|
||||||
- [Websocket vs API HTTP](#websocket-vs-api-http)
|
- [Websocket vs API HTTP](#websocket-vs-api-http)
|
||||||
- [Ejemplos](#ejemplos)
|
- [Ejemplos](#ejemplos)
|
||||||
* [TypeScript](#typescript)
|
- [TypeScript](#typescript)
|
||||||
* [Curl](#curl)
|
- [Curl](#curl)
|
||||||
+ [GET](#ejemplo-get)
|
- [GET](#ejemplo-get)
|
||||||
+ [POST](#ejemplo-post)
|
- [POST](#ejemplo-post)
|
||||||
- [Características exclusivas de la API HTTP](#características-exclusivas-de-la-api-http)
|
- [Características exclusivas de la API HTTP](#características-exclusivas-de-la-api-http)
|
||||||
* [RSS/Atom feeds](#rss-atom-feeds)
|
- [RSS/Atom feeds](#rss-atom-feeds)
|
||||||
* [Imagenes](#imagenes)
|
- [Imagenes](#imagenes)
|
||||||
+ [Crear (request)](#crear-request)
|
- [Crear (request)](#crear-request)
|
||||||
+ [Crear (response)](#crear-response)
|
- [Crear (response)](#crear-response)
|
||||||
* [Delete](#delete)
|
* [Delete](#delete)
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
|
||||||
## WebSocket vs API HTTP
|
## WebSocket vs API HTTP
|
||||||
|
|
||||||
La API HTTP de Lemmy es casi parecida a la API del Websocket:
|
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 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:
|
- **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 |
|
| Tipo | URL | Tipo de cuerpo | Tipo de Retorno |
|
||||||
| --- | --- | --- | --- |
|
| ----- | ---------- | -------------- | ----------------- |
|
||||||
| `PUT` | `/comment` | `EditComment` | `CommentResponse` |
|
| `PUT` | `/comment` | `EditComment` | `CommentResponse` |
|
||||||
|
|
||||||
### Curl
|
### 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}`
|
`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)
|
#### 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.
|
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)
|
#### 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}`
|
`GET /pictrs/image/delete/{delete_token}/{file}`
|
||||||
|
|
||||||
|
|
||||||
# Nota
|
# Nota
|
||||||
|
|
||||||
Esta documentación puede tener un retraso con respecto a la actual
|
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
|
## 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
|
## 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. 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. Abre el archivo `src/shared/utils.ts` y agregas `{nombre-de-mi-tema}` a la lista de temas.
|
||||||
1. Pruebalo localmente
|
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
|
# API del WebSocket
|
||||||
|
|
||||||
[Documentación de la API del WebSocket de Lemmy](https://join-lemmy.org/api/index.html)
|
[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
|
## 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
|
## Arquitectura
|
||||||
|
|
||||||
|
@ -24,13 +24,13 @@ Mira el [Weblate de Lemmy](https://weblate.yerbamate.ml/projects/lemmy/) para l
|
||||||
### Back end
|
### Back end
|
||||||
|
|
||||||
- El back end está escrito en `rust`, usando `diesel`, y `actix`.
|
- 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.
|
- `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.
|
- 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`)
|
- `api` - Las iteracciones de alto nivel del usuario (cosas como `CreateComment`)
|
||||||
- `routes` - Los puntos finales (endpoints) del servidor.
|
- `routes` - Los puntos finales (endpoints) del servidor.
|
||||||
- `apub` - Las conversiones activitypub.
|
- `apub` - Las conversiones activitypub.
|
||||||
- `websocket` - Crea el sevidor del websocket.
|
- `websocket` - Crea el sevidor del websocket.
|
||||||
|
|
||||||
## Linting / Formateo
|
## 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`.
|
**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.
|
Para acelerar la compilación de Docker, añade el siguiente código a `/etc/docker/daemon.json` y reinicia Docker.
|
||||||
|
|
||||||
```
|
```
|
||||||
{
|
{
|
||||||
"features": {
|
"features": {
|
||||||
|
|
|
@ -11,18 +11,19 @@ cd docker/federation
|
||||||
|
|
||||||
Las pruebas de federación establecen 5 instancias:
|
Las pruebas de federación establecen 5 instancias:
|
||||||
|
|
||||||
Instancia | Nombre de usuario | Localización | Notas
|
| 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-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-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-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-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
|
| 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
|
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.
|
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`
|
- `!main@lemmy-alpha:8541`
|
||||||
- `http://lemmy-beta:8551/post/3`
|
- `http://lemmy-beta:8551/post/3`
|
||||||
- `@lemmy-gamma@lemmy-gamma:8561`
|
- `@lemmy-gamma@lemmy-gamma:8561`
|
||||||
|
@ -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.
|
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
|
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`:
|
`/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
|
- 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
|
- 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
|
# Desarrollo Local
|
||||||
|
|
||||||
### Instalar requisitos
|
### Instalar requisitos
|
||||||
|
|
||||||
Instala Rust utilizando [la opción recomendada en rust-lang.org](https://www.rust-lang.org/tools/install) (rustup).
|
Instala Rust utilizando [la opción recomendada en rust-lang.org](https://www.rust-lang.org/tools/install) (rustup).
|
||||||
|
|
||||||
#### Distro basada en Debian
|
#### Distro basada en Debian
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt install git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
|
sudo apt install git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
|
||||||
# install yarn
|
# install yarn
|
||||||
|
@ -13,6 +15,7 @@ sudo apt update && sudo apt install yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Distro basada en Arch
|
#### Distro basada en Arch
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo pacman -S git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
|
sudo pacman -S git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
|
||||||
# install yarn (stable)
|
# install yarn (stable)
|
||||||
|
@ -20,6 +23,7 @@ curl -o- -L https://yarnpkg.com/install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
#### macOS
|
#### macOS
|
||||||
|
|
||||||
Instala [Homebrew](https://brew.sh/) si aún no lo has instalado.
|
Instala [Homebrew](https://brew.sh/) si aún no lo has instalado.
|
||||||
|
|
||||||
Finalmente, instala Node y Yarn.
|
Finalmente, instala Node y Yarn.
|
||||||
|
@ -29,6 +33,7 @@ brew install node yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
### Obtener el código fuente del back end
|
### Obtener el código fuente del back end
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/LemmyNet/lemmy.git
|
git clone https://github.com/LemmyNet/lemmy.git
|
||||||
# or alternatively from gitea
|
# or alternatively from gitea
|
||||||
|
@ -36,18 +41,22 @@ git clone https://github.com/LemmyNet/lemmy.git
|
||||||
```
|
```
|
||||||
|
|
||||||
### Compila el backend (Rust)
|
### Compila el backend (Rust)
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo build
|
cargo build
|
||||||
# para desarrollo, usa `cargo check` en su lugar)
|
# para desarrollo, usa `cargo check` en su lugar)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Obtener el código fuente del front end
|
### Obtener el código fuente del front end
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/LemmyNet/lemmy-ui.git --recurse-submodules
|
git clone https://github.com/LemmyNet/lemmy-ui.git --recurse-submodules
|
||||||
```
|
```
|
||||||
|
|
||||||
### Configurar postgresql
|
### Configurar postgresql
|
||||||
|
|
||||||
#### Distro basada en Debian
|
#### Distro basada en Debian
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt install postgresql
|
sudo apt install postgresql
|
||||||
sudo systemctl start postgresql
|
sudo systemctl start postgresql
|
||||||
|
@ -59,6 +68,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Distro basada en Arch
|
#### Distro basada en Arch
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo pacman -S postgresql
|
sudo pacman -S postgresql
|
||||||
sudo systemctl start postgresql
|
sudo systemctl start postgresql
|
||||||
|
@ -70,6 +80,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
#### macOS
|
#### macOS
|
||||||
|
|
||||||
```
|
```
|
||||||
brew install postgresql
|
brew install postgresql
|
||||||
brew services start postgresql
|
brew services start postgresql
|
||||||
|
@ -82,6 +93,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
### Ejecutar una instancia de desarrollo local
|
### Ejecutar una instancia de desarrollo local
|
||||||
|
|
||||||
```
|
```
|
||||||
cd lemmy
|
cd lemmy
|
||||||
cargo run
|
cargo run
|
||||||
|
@ -97,6 +109,6 @@ yarn
|
||||||
yarn dev
|
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).
|
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 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`
|
- Hacer lo mismo para `lemmy-ui`: `./deploy.sh 0.x.0-rc-x`
|
||||||
- Despliega en las instancias de prueba de la federación
|
- 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)
|
- 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`
|
- `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
|
- Prueba que todo funciona como se espera, haz nuevas versiones beta/rc si es necesario
|
||||||
- Despliega en lemmy.ml, para descubrir los problemas restantes
|
- 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`
|
- 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
|
## 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.
|
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.
|
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
|
# 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).
|
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)
|
- [Contexto](#context)
|
||||||
- [Actores](#actors)
|
- [Actores](#actors)
|
||||||
* [Comunidad](#community)
|
- [Comunidad](#community)
|
||||||
+ [Bandeja de salida de la Comunidad](#community-outbox)
|
- [Bandeja de salida de la Comunidad](#community-outbox)
|
||||||
+ [Seguidores de la Comunidad](#community-followers)
|
- [Seguidores de la Comunidad](#community-followers)
|
||||||
+ [Moderadores de la Comunidad](#community-moderators)
|
- [Moderadores de la Comunidad](#community-moderators)
|
||||||
* [Usuario](#user)
|
- [Usuario](#user)
|
||||||
+ [Bandeja de salida del Usuario](#user-outbox)
|
- [Bandeja de salida del Usuario](#user-outbox)
|
||||||
- [Objectos](#objects)
|
- [Objectos](#objects)
|
||||||
* [Publicación](#post)
|
- [Publicación](#post)
|
||||||
* [Comentario](#comment)
|
- [Comentario](#comment)
|
||||||
* [Mensaje privado](#private-message)
|
- [Mensaje privado](#private-message)
|
||||||
- [Actividades](#activities)
|
- [Actividades](#activities)
|
||||||
* [Usuario a Comunidad](#user-to-community)
|
- [Usuario a Comunidad](#user-to-community)
|
||||||
+ [Seguir](#follow)
|
- [Seguir](#follow)
|
||||||
+ [Dejar de seguir](#unfollow)
|
- [Dejar de seguir](#unfollow)
|
||||||
+ [Crear o Actualizar Publicación](#create-or-update-post)
|
- [Crear o Actualizar Publicación](#create-or-update-post)
|
||||||
+ [Crear o Actualizar Comentario](#create-or-update-comment)
|
- [Crear o Actualizar Comentario](#create-or-update-comment)
|
||||||
+ [Me gusta Publicación o Comentario](#like-post-or-comment)
|
- [Me gusta Publicación o Comentario](#like-post-or-comment)
|
||||||
+ [No me gusta Publicación o Comentario](#dislike-post-or-comment)
|
- [No me gusta Publicación o Comentario](#dislike-post-or-comment)
|
||||||
+ [Eliminar Publicación o Comentario](#delete-post-or-comment)
|
- [Eliminar Publicación o Comentario](#delete-post-or-comment)
|
||||||
+ [Remover Publicación o Comentario](#remove-post-or-comment)
|
- [Remover Publicación o Comentario](#remove-post-or-comment)
|
||||||
+ [Deshacer](#undo)
|
- [Deshacer](#undo)
|
||||||
* [Comunidad a Usuario](#community-to-user)
|
- [Comunidad a Usuario](#community-to-user)
|
||||||
+ [Aceptar Seguir](#accept-follow)
|
- [Aceptar Seguir](#accept-follow)
|
||||||
+ [Anunciar](#announce)
|
- [Anunciar](#announce)
|
||||||
+ [Remover o Eliminar Comunidad](#remove-or-delete-community)
|
- [Remover o Eliminar Comunidad](#remove-or-delete-community)
|
||||||
+ [Restaurar Comunidad Removida o Eliminada](#restore-removed-or-deleted-community)
|
- [Restaurar Comunidad Removida o Eliminada](#restore-removed-or-deleted-community)
|
||||||
* [Usuario a Usuario](#user-to-user)
|
- [Usuario a Usuario](#user-to-user)
|
||||||
+ [Crear o Actualizar Mensaje Privado](#create-or-update-private-message)
|
- [Crear o Actualizar Mensaje Privado](#create-or-update-private-message)
|
||||||
+ [Eliminar Mensaje Privado](#delete-private-message)
|
- [Eliminar Mensaje Privado](#delete-private-message)
|
||||||
+ [Deshacer la Eliminación del Mensaje Privado](#undo-delete-private-message)⏎
|
- [Deshacer la Eliminación del Mensaje Privado](#undo-delete-private-message)⏎
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
@ -53,21 +53,21 @@ En las siguientes tablas, "obligatorio" se refiere a si Lemmy aceptará o no una
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"@context": [
|
"@context": [
|
||||||
"https://www.w3.org/ns/activitystreams",
|
"https://www.w3.org/ns/activitystreams",
|
||||||
{
|
{
|
||||||
"moderators": "as:moderators",
|
"moderators": "as:moderators",
|
||||||
"sc": "http://schema.org#",
|
"sc": "http://schema.org#",
|
||||||
"stickied": "as:stickied",
|
"stickied": "as:stickied",
|
||||||
"sensitive": "as:sensitive",
|
"sensitive": "as:sensitive",
|
||||||
"pt": "https://join.lemmy.ml#",
|
"pt": "https://join.lemmy.ml#",
|
||||||
"comments_enabled": {
|
"comments_enabled": {
|
||||||
"type": "sc:Boolean",
|
"type": "sc:Boolean",
|
||||||
"id": "pt:commentsEnabled"
|
"id": "pt:commentsEnabled"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"https://w3id.org/security/v1"
|
"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 |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `preferredUsername` | si | Nombre del actor |
|
| `preferredUsername` | si | Nombre del actor |
|
||||||
| `name` | si | Titulo de la comunidad |
|
| `name` | si | Titulo de la comunidad |
|
||||||
| `sensitive` | si | True indica que todas las publicaciones en la comunidad son nsfw |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `endpoints` | no | Contiene la URL de la bandeja de entrada compartida |
|
||||||
| `published` | no | Fecha de creación de la comunidad |
|
| `published` | no | Fecha de creación de la comunidad |
|
||||||
| `updated` | no | Fecha de la última modificació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 |
|
| `publicKey` | si | La clave pública utilizada para verificar las firmas de este actor |
|
||||||
|
|
||||||
#### Bandeja de Salida de la Comunidad
|
#### Bandeja de Salida de la Comunidad
|
||||||
|
|
||||||
```json
|
```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 |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ------------------- | ----------- | ------------------------------------------------------------------ |
|
||||||
| `preferredUsername` | si | Nombre del actor |
|
| `preferredUsername` | si | Nombre del actor |
|
||||||
| `name` | no | El nombre para mostrar del usuario |
|
| `name` | no | El nombre para mostrar del usuario |
|
||||||
| `content` | no | La biografía del usuario |
|
| `content` | no | La biografía del usuario |
|
||||||
| `icon` | no | El avatar del usuario, que aparece junto al nombre 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 |
|
| `image` | no | Banner del usuario, mostrada en la parte superior del perfil |
|
||||||
| `inbox` | no | URL de la bandeja de entrada de ActivityPub |
|
| `inbox` | no | URL de la bandeja de entrada de ActivityPub |
|
||||||
| `endpoints` | no | Contiene la URL de la bandeja de entrada compartida |
|
| `endpoints` | no | Contiene la URL de la bandeja de entrada compartida |
|
||||||
| `published` | no | Fecha de registro del usuario |
|
| `published` | no | Fecha de registro del usuario |
|
||||||
| `updated` | no | Fecha de la última actualización del perfil 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 |
|
| `publicKey` | si | La clave pública utilizada para verificar las firmas de este actor |
|
||||||
|
|
||||||
#### Bandeja de salida del Usuario
|
#### 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 |
|
| Nombre del Campo | Obligatorio | Description |
|
||||||
|---|---|---|
|
| ----------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | si | ID del usuario que creó esta publicación |
|
| `attributedTo` | si | ID del usuario que creó esta publicación |
|
||||||
| `to` | si | ID de la comunidad en la que se publicó |
|
| `to` | si | ID de la comunidad en la que se publicó |
|
||||||
| `name` | si | Título de la publicación |
|
| `name` | si | Título de la publicación |
|
||||||
| `content` | no | Cuerpo de la publicación |
|
| `content` | no | Cuerpo de la publicación |
|
||||||
| `url` | no | Un enlace arbitrario para compartir |
|
| `url` | no | Un enlace arbitrario para compartir |
|
||||||
| `image` | no | Miniatura para la `url`, sólo aparece si es un enlace de imagen |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `stickied` | si | True significa que se muestra en la parte superior de la comunidad |
|
||||||
| `published` | no | Fecha de creación de la publicación |
|
| `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ó) |
|
| `updated` | no | Fecha en la que se editó la publicación (no está presente si nunca se editó) |
|
||||||
|
|
||||||
### Comentario
|
### 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 |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | si | ID del usuario que creó el comentario |
|
| `attributedTo` | si | ID del usuario que creó el comentario |
|
||||||
| `to` | si | Comunidad donde se hizo el comentario |
|
| `to` | si | Comunidad donde se hizo el comentario |
|
||||||
| `content` | si | El texto del 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 |
|
| `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 |
|
| `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ó) |
|
| `updated` | no | Fecha en la que se editó la publicación (no está presente si nunca se editó) |
|
||||||
|
|
||||||
### Mensaje Privado
|
### 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"
|
"updated": "2020-10-08T20:13:52.547156+00:00"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
<!-- Fix table in english version --->
|
<!-- Fix table in english version --->
|
||||||
|
|
||||||
| Nombre del Campo | Obligatorio | Descripción |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ---------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | | ID del usuario que creo este mensaje |
|
| `attributedTo` | | ID del usuario que creo este mensaje |
|
||||||
| `to` | | ID del destinatario |
|
| `to` | | ID del destinatario |
|
||||||
| `content` | si | El texto del mensaje privado |
|
| `content` | si | El texto del mensaje privado |
|
||||||
| `published` | no | Fecha de creación del mensaje |
|
| `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ó) |
|
| `updated` | no | Fecha en la que se editó la publicación (no está presente si nunca se editó) |
|
||||||
|
|
||||||
## Actividades
|
## 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 |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | --------------------------------------------------------- |
|
||||||
| `actor` | si | El usuario que envía la solicitud de seguimiento `Follow` |
|
| `actor` | si | El usuario que envía la solicitud de seguimiento `Follow` |
|
||||||
| `object` | si | La comunidad a seguir |
|
| `object` | si | La comunidad a seguir |
|
||||||
|
|
||||||
#### Dejar de 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
|
```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 |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | -------------------------------------- |
|
||||||
| `type` | si | Crear `Create` o Actualizar `Update` |
|
| `type` | si | Crear `Create` o Actualizar `Update` |
|
||||||
| `cc` | si | Comunidad donde se hizo la publicación |
|
| `cc` | si | Comunidad donde se hizo la publicación |
|
||||||
| `object` | si | La publicación que se crea |
|
| `object` | si | La publicación que se crea |
|
||||||
|
|
||||||
#### Crear o Actulizar Comentario
|
#### 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 |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `tag` | no | Lista de los usuarios que se mencionan en el comentario (como `@usuario@ejemplo.com`) |
|
| `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 |
|
| `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 |
|
| `object` | si | El comentario que se crea |
|
||||||
|
|
||||||
#### Me gusta Publicación o Comentario
|
#### 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|
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ------------------------------------------------------------------- |
|
||||||
| `cc` | si | ID de la comunidad en la que se encuentra la publicación/comentario |
|
| `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 |
|
| `object` | si | La publicación o comentario que se ha votado |
|
||||||
|
|
||||||
#### No me gusta Publicación o Comentario
|
#### 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|
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ------------------------------------------------------------------- |
|
||||||
| `cc` | si | ID de la comunidad en la que se encuentra la publicación/comentario |
|
| `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 |
|
| `object` | si | La publicación o comentario que se ha votado |
|
||||||
|
|
||||||
#### Eliminar Publicación o Comentario
|
#### 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|
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ------------------------------------------------------------------- |
|
||||||
| `cc` | si | ID de la comunidad en la que se encuentra la publicación/comentario |
|
| `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 |
|
| `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.
|
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|
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ------------------------------------------------------------------- |
|
||||||
| `cc` | si | ID de la comunidad en la que se encuentra la publicación/comentario |
|
| `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 |
|
| `object` | si | La publicación o comentario que se está removiendo |
|
||||||
|
|
||||||
#### Deshacer
|
#### Deshacer
|
||||||
|
|
||||||
|
@ -580,9 +581,9 @@ Revierte una actividad anterior, sólo puede hacerlo el actor `actor` del objeto
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nombre del Campo | Obligatorio | Descripción |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ------------------------------------------------------------------------------------------------ |
|
||||||
| `object` | si | Cualquier actividad `Like`, `Dislike`, `Delete` o `Remove` tal como se ha descrito anteriormente |
|
| `object` | si | Cualquier actividad `Like`, `Dislike`, `Delete` o `Remove` tal como se ha descrito anteriormente |
|
||||||
|
|
||||||
#### Agregar Moderador
|
#### 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 |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ----------------------------------------------- |
|
||||||
| `actor` | si | La misma comunidad que en la actividad `Follow` |
|
| `actor` | si | La misma comunidad que en la actividad `Follow` |
|
||||||
| `to` | no | ID del usuario que envió el `Follow` |
|
| `to` | no | ID del usuario que envió el `Follow` |
|
||||||
| `object` | si | La actividad de `Follow` enviada anteriormente |
|
| `object` | si | La actividad de `Follow` enviada anteriormente |
|
||||||
|
|
||||||
#### Anuncio
|
#### Anuncio
|
||||||
|
|
||||||
|
@ -669,13 +670,13 @@ Cuando la comunidad recibe una actividad publicación o comentario, lo envuelve
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nombre del Campo | Obligatorio | Descripción |
|
| 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) |
|
| `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
|
#### 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
|
```json
|
||||||
{
|
{
|
||||||
|
@ -691,9 +692,9 @@ Un administrador de instancia puede remover la comunidad, o un mod puede elimina
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nombre del Campo| Obligatorio | Descripción |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | ------------------------------------ |
|
||||||
| `type` | si | Remover `Remove` o Eliminar `Delete` |
|
| `type` | si | Remover `Remove` o Eliminar `Delete` |
|
||||||
|
|
||||||
#### Restaurar Comunidad Removida o Eliminada
|
#### Restaurar Comunidad Removida o Eliminada
|
||||||
|
|
||||||
|
@ -723,9 +724,10 @@ Revierte la remoción o eliminación
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
| Nombre del Campo | Obligatorio | Descripción|
|
|
||||||
|---|---|---|
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
| `object.type` | si | Remover `Remove` o Eliminar `Delete` |
|
| ---------------- | ----------- | ------------------------------------ |
|
||||||
|
| `object.type` | si | Remover `Remove` o Eliminar `Delete` |
|
||||||
|
|
||||||
### Usuario a Usuario
|
### Usuario a Usuario
|
||||||
|
|
||||||
|
@ -744,10 +746,10 @@ Crea un nuevo mensaje privado entre dos usuarios.
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nombre del Campo | Obligatorio| Descripción |
|
| Nombre del Campo | Obligatorio | Descripción |
|
||||||
|---|---|---|
|
| ---------------- | ----------- | -------------------------------------- |
|
||||||
| `type` | si | Crear `Create` o Actualizar `Update` |
|
| `type` | si | Crear `Create` o Actualizar `Update` |
|
||||||
| `object` | si | Un [Mensaje Privado](#private-message) |
|
| `object` | si | Un [Mensaje Privado](#private-message) |
|
||||||
|
|
||||||
#### Eliminar Mensaje Privado
|
#### Eliminar Mensaje Privado
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,9 @@ Este documento es para cualquiera que quiera saber como funciona la federación
|
||||||
|
|
||||||
Para mantener las cosas simples, a veces verás cosas formateadas como Crear/Nota `Create/Note` o Eliminar/Evento `Delete/Event` o Deshacer/Seguir `Undo/Follow`. La cosa antes de la barra es la Actividad, y la cosa después de la barra es el Objeto dentro de la Actividad, una propiedad del objeto `objet`. Así que estos deben ser leídos como sigue:
|
Para mantener las cosas simples, a veces verás cosas formateadas como Crear/Nota `Create/Note` o Eliminar/Evento `Delete/Event` o Deshacer/Seguir `Undo/Follow`. La cosa antes de la barra es la Actividad, y la cosa después de la barra es el Objeto dentro de la Actividad, una propiedad del objeto `objet`. Así que estos deben ser leídos como sigue:
|
||||||
|
|
||||||
* `Create/Note`: una actividad `Create` que contiene una `Note` en el campo del `object`
|
- `Create/Note`: una actividad `Create` que contiene una `Note` en el campo del `object`
|
||||||
* `Delete/Event`: una actividad `Delete` que contiene un `Event` en el campo del `object`
|
- `Delete/Event`: una actividad `Delete` que contiene un `Event` en el campo del `object`
|
||||||
* `Undo/Follow`: una actividad `Undo` que contiene un `Follow` en el campo del `object`
|
- `Undo/Follow`: una actividad `Undo` que contiene un `Follow` en el campo del `object`
|
||||||
|
|
||||||
En Lemmy utilizamos algunos términos específicos para referirnos a los elementos de ActivityPub. Son esencialmente nuestras implementaciones específicas de conceptos conocidos de ActivityPub:
|
En Lemmy utilizamos algunos términos específicos para referirnos a los elementos de ActivityPub. Son esencialmente nuestras implementaciones específicas de conceptos conocidos de ActivityPub:
|
||||||
|
|
||||||
|
@ -20,9 +20,9 @@ En Lemmy utilizamos algunos términos específicos para referirnos a los element
|
||||||
|
|
||||||
Este documento tiene tres secciones principales:
|
Este documento tiene tres secciones principales:
|
||||||
|
|
||||||
* __Filosofía de la federación:__ expone el modelo general de cómo se debe federar.
|
- **Filosofía de la federación:** expone el modelo general de cómo se debe federar.
|
||||||
* __Actividades del usuario:__ describen las acciones que un usuario puede realizar para interactuar.
|
- **Actividades del usuario:** describen las acciones que un usuario puede realizar para interactuar.
|
||||||
* __Actividades de la comunidad:__ describen lo que hace la comunidad en respuesta a determinadas acciones de los usuarios.
|
- **Actividades de la comunidad:** describen lo que hace la comunidad en respuesta a determinadas acciones de los usuarios.
|
||||||
|
|
||||||
## Filosofía de la federación
|
## Filosofía de la federación
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ Los mods pueden remover Publicaciones y Comentarios de sus Comunidades. Los admi
|
||||||
|
|
||||||
Las remociones se envían a todos los seguidores de la Comunidad, por lo que también tienen efecto allí. La excepción es si un administrador elimina un elemento de una Comunidad que está alojada en una instancia diferente. En este caso, la eliminación sólo tiene efecto a nivel local.
|
Las remociones se envían a todos los seguidores de la Comunidad, por lo que también tienen efecto allí. La excepción es si un administrador elimina un elemento de una Comunidad que está alojada en una instancia diferente. En este caso, la eliminación sólo tiene efecto a nivel local.
|
||||||
|
|
||||||
### Revertir una acción anterior
|
### Revertir una acción anterior
|
||||||
|
|
||||||
**No eliminamos nada de nuestra base de datos, sólo lo ocultamos a los usuarios**. Las Comunidades/Publicaciones/Comentarios removidos o eliminados tienen un botón de "restauración". Este botón genera una actividad de Deshacer `Undo` que establece la actividad original de eliminar/remover como objeto, como Deshacer/Remover/Publicación `Undo/Remove/Post` o Deshacer/Eliminar/Comunidad `Undo/Delete/Community`.
|
**No eliminamos nada de nuestra base de datos, sólo lo ocultamos a los usuarios**. Las Comunidades/Publicaciones/Comentarios removidos o eliminados tienen un botón de "restauración". Este botón genera una actividad de Deshacer `Undo` que establece la actividad original de eliminar/remover como objeto, como Deshacer/Remover/Publicación `Undo/Remove/Post` o Deshacer/Eliminar/Comunidad `Undo/Delete/Community`.
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ Si la Comunidad recibe una actividad de Seguir `Follow`, responde automáticamen
|
||||||
### Dejar de seguir
|
### Dejar de seguir
|
||||||
|
|
||||||
Al recibir un Deshacer/Seguir `Undo/Follow`, la Comunidad elimina al Usuario de su lista de seguidores.
|
Al recibir un Deshacer/Seguir `Undo/Follow`, la Comunidad elimina al Usuario de su lista de seguidores.
|
||||||
|
|
||||||
### Anunciar
|
### Anunciar
|
||||||
|
|
||||||
Si la Comunidad recibe cualquier actividad relacionada con una publicación o comentario (Crear, Actualizar, Me gusta, No me gusta, Eliminar, Borrar, Deshacer), lo anunciará a sus seguidores. Para ello, se crea un Anuncio con la Comunidad como actor, y la actividad recibida como objeto. De este modo, las instancias seguidoras se mantienen actualizadas sobre cualquier acción en las Comunidades que siguen.
|
Si la Comunidad recibe cualquier actividad relacionada con una publicación o comentario (Crear, Actualizar, Me gusta, No me gusta, Eliminar, Borrar, Deshacer), lo anunciará a sus seguidores. Para ello, se crea un Anuncio con la Comunidad como actor, y la actividad recibida como objeto. De este modo, las instancias seguidoras se mantienen actualizadas sobre cualquier acción en las Comunidades que siguen.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Recursos de ActivityPub
|
# Recursos de ActivityPub
|
||||||
|
|
||||||
## Documentos Oficiales
|
## Documentos Oficiales
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
## À propos du pojet
|
## À propos du pojet
|
||||||
|
|
||||||
Première page|Publication
|
| Première page | Publication |
|
||||||
---|---
|
| ------------------------------- | ------------------------------- |
|
||||||
![main screen](main_screen.png)|![chat screen](chat_screen.png)
|
| ![main screen](main_screen.png) | ![chat screen](chat_screen.png) |
|
||||||
|
|
||||||
[Lemmy](https://github.com/LemmyNet/lemmy) est similaire à des sites comme [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me) ou [Hacker News](https://news.ycombinator.com/) : vous vous abonnez aux forums qui vous intéressent, vous publiez des liens et des discussions, puis vous votez et commentez. Dans les coulisses, c'est très différent : n'importe qui peut facilement gérer un serveur, et tous ces serveurs sont fédérés (pensez au courrier électronique) et connectés au même univers, appelé le [Fediverse] (https://en.wikipedia.org/wiki/Fediverse).
|
[Lemmy](https://github.com/LemmyNet/lemmy) est similaire à des sites comme [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me) ou [Hacker News](https://news.ycombinator.com/) : vous vous abonnez aux forums qui vous intéressent, vous publiez des liens et des discussions, puis vous votez et commentez. Dans les coulisses, c'est très différent : n'importe qui peut facilement gérer un serveur, et tous ces serveurs sont fédérés (pensez au courrier électronique) et connectés au même univers, appelé le [Fediverse] (https://en.wikipedia.org/wiki/Fediverse).
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ L'objectif global est de créer une alternative facilement auto-hébergeable et
|
||||||
|
|
||||||
Chaque serveur lemmy peut définir sa propre politique de modération, en nommant des administrateurs pour l'ensemble du site et des modérateurs de communauté afin d'écarter les trolls et de favoriser un environnement sain et non toxique où chacun peut se sentir à l'aise pour contribuer.
|
Chaque serveur lemmy peut définir sa propre politique de modération, en nommant des administrateurs pour l'ensemble du site et des modérateurs de communauté afin d'écarter les trolls et de favoriser un environnement sain et non toxique où chacun peut se sentir à l'aise pour contribuer.
|
||||||
|
|
||||||
*Note: La Fédération est toujours en développement actif*
|
_Note: La Fédération est toujours en développement actif_
|
||||||
|
|
||||||
### Pourquoi "Lemmy" ?
|
### Pourquoi "Lemmy" ?
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
- i18n / Prise en charge d l'internationalisation.
|
- i18n / Prise en charge d l'internationalisation.
|
||||||
- RSS / Flux Atom pour "Tous", "Abonnés", "Boîte de réception", "Utilisateur" et "Communauté".
|
- RSS / Flux Atom pour "Tous", "Abonnés", "Boîte de réception", "Utilisateur" et "Communauté".
|
||||||
- Prise en charge du publipostage croisé.
|
- Prise en charge du publipostage croisé.
|
||||||
- Une *recherche de messages similaires* lors de la création de nouveaux messages. Idéal pour les communautés de questions/réponses.
|
- Une _recherche de messages similaires_ lors de la création de nouveaux messages. Idéal pour les communautés de questions/réponses.
|
||||||
- Capacités de modération.
|
- Capacités de modération.
|
||||||
- Logs de modération publics.
|
- Logs de modération publics.
|
||||||
- Peut épingler des messages en haut des communautés.
|
- Peut épingler des messages en haut des communautés.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Objectifs
|
# Objectifs
|
||||||
|
|
||||||
*Cette section contient des idées et des ressources de l'équipe qui développe Lemmy*. Similaire à un bloc-notes
|
_Cette section contient des idées et des ressources de l'équipe qui développe Lemmy_. Similaire à un bloc-notes
|
||||||
|
|
||||||
- Trouver un nom / nom de code.
|
- Trouver un nom / nom de code.
|
||||||
- Doit avoir des communautés.
|
- Doit avoir des communautés.
|
||||||
|
|
|
@ -8,16 +8,16 @@ Commencez à taper...
|
||||||
|
|
||||||
## Triage
|
## Triage
|
||||||
|
|
||||||
*Applique aux messages et aux commentaires*.
|
_Applique aux messages et aux commentaires_.
|
||||||
|
|
||||||
Type | Description
|
| Type | Description |
|
||||||
--- | ---
|
| --------------------- | -------------------------------------------------------------------------------- |
|
||||||
Actif | Tendance triée en fonction du score et de l'heure du commentaire le plus récent.
|
| Actif | Tendance triée en fonction du score et de l'heure du commentaire le plus récent. |
|
||||||
Hot | Tendance de tri basée sur le score et l'heure de création du message.
|
| Hot | Tendance de tri basée sur le score et l'heure de création du message. |
|
||||||
Nouveau | Les éléments les plus récents.
|
| Nouveau | Les éléments les plus récents. |
|
||||||
Plus de commentaires | Les messages avec le plus de commentaires.
|
| Plus de commentaires | Les messages avec le plus de commentaires. |
|
||||||
Nouveaux commentaires | Les messages avec les commentaires les plus récents, IE un tri de style forum.
|
| Nouveaux commentaires | Les messages avec les commentaires les plus récents, IE un tri de style forum. |
|
||||||
Top | Les éléments les mieux notés dans la période donnée.
|
| Top | Les éléments les mieux notés dans la période donnée. |
|
||||||
|
|
||||||
Pour plus de détails, consultez le [Classement des messages et des commentaires] (ranking.md).
|
Pour plus de détails, consultez le [Classement des messages et des commentaires] (ranking.md).
|
||||||
|
|
||||||
|
@ -35,23 +35,22 @@ Toutes les actions d'administration sur les communautés sont effectuées sur la
|
||||||
|
|
||||||
## Markdown Guide
|
## Markdown Guide
|
||||||
|
|
||||||
Tapez | ou | ... pour obtenir
|
| Tapez | ou | ... pour obtenir |
|
||||||
--- | --- | ---
|
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||||
\*Italique\* | \_Italique\_ | _Italique_
|
| \*Italique\* | \_Italique\_ | _Italique_ |
|
||||||
\*\*Gras\*\* | \_\_Gras\_\_ | **Gras**
|
| \*\*Gras\*\* | \_\_Gras\_\_ | **Gras** |
|
||||||
\# Rubrique 1 | Rubrique 1 <br> ========= | <h4>Rubrique 1</h4>
|
| \# Rubrique 1 | Rubrique 1 <br> ========= | <h4>Rubrique 1</h4> |
|
||||||
\## Rubrique 2 | Rubrique 2 <br>--------- | <h5>Rubrique 2</h5>
|
| \## Rubrique 2 | Rubrique 2 <br>--------- | <h5>Rubrique 2</h5> |
|
||||||
\[lien\](http://a.com) | \[lien\]\[1\]<br>⋮ <br>\[1\]: http://b.org | [lien](https://commonmark.org/)
|
| \[lien\](http://a.com) | \[lien\]\[1\]<br>⋮ <br>\[1\]: http://b.org | [lien](https://commonmark.org/) |
|
||||||
!\[Image\](http://url/a.png) | !\[Image\]\[1\]<br>⋮ <br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png)
|
| !\[Image\](http://url/a.png) | !\[Image\]\[1\]<br>⋮ <br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) |
|
||||||
\> Citation en bloc | | <blockquote>Citation en bloc</blockquote>
|
| \> Citation en bloc | | <blockquote>Citation en bloc</blockquote> |
|
||||||
\* Liste <br>\* Liste <br>\* Liste | \- Liste <br>\- Liste <br>\- Liste <br> | * Liste <br>* Liste <br>* Liste <br>
|
| \* Liste <br>\* Liste <br>\* Liste | \- Liste <br>\- Liste <br>\- Liste <br> | _ Liste <br>_ Liste <br>\* Liste <br> |
|
||||||
1\. Un <br>2\. Deux <br>3\. Trois | 1) Un<br>2) Deux<br>3) Trois | 1. Une<br>2. Deux<br>3. Trois
|
| 1\. Un <br>2\. Deux <br>3\. Trois | 1) Un<br>2) Deux<br>3) Trois | 1. Une<br>2. Deux<br>3. Trois |
|
||||||
Règle horizontale <br>\--- | Règle horizontale<br>\*\*\* | Règle horizontale <br><hr>
|
| Règle horizontale <br>\--- | Règle horizontale<br>\*\*\* | Règle horizontale <br><hr> |
|
||||||
\`Code Inline\` avec des backticks | |`Code Inline` avec des backticks
|
| \`Code Inline\` avec des backticks | | `Code Inline` avec des backticks |
|
||||||
\`\`\`<br>\# bloc de code <br>print '3 backticks ou'<br>print 'retrait de 4 espaces' <br>\`\`\` | ····\# bloc de code<br>····print '3 backticks ou'<br>····print 'retrait de 4 espaces' | \# bloc de code <br>print '3 backticks ou'<br>print 'retrait de 4 espaces'
|
| \`\`\`<br>\# bloc de code <br>print '3 backticks ou'<br>print 'retrait de 4 espaces' <br>\`\`\` | ····\# bloc de code<br>····print '3 backticks ou'<br>····print 'retrait de 4 espaces' | \# bloc de code <br>print '3 backticks ou'<br>print 'retrait de 4 espaces' |
|
||||||
::: spoiler caché ou trucs nsfw<br>*un tas de spoilers ici*<br>::: | | <details><summary> spoiler caché ou trucs nsfw </summary><p><em>un tas de spoilers ici</em></p></details>
|
| ::: spoiler caché ou trucs nsfw<br>_un tas de spoilers ici_<br>::: | | <details><summary> spoiler caché ou trucs nsfw </summary><p><em>un tas de spoilers ici</em></p></details> |
|
||||||
Certains texte \~indice\~ | | Certains texte <sub>indice</sub>
|
| Certains texte \~indice\~ | | Certains texte <sub>indice</sub> |
|
||||||
Quelques texte ^indice^ | | Quelques texte <sup>indice</sup>
|
| Quelques texte ^indice^ | | Quelques texte <sup>indice</sup> |
|
||||||
|
|
||||||
[Tutoriel CommonMark](https://commonmark.org/help/tutorial/)
|
[Tutoriel CommonMark](https://commonmark.org/help/tutorial/)
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
### Reddit
|
### Reddit
|
||||||
|
|
||||||
Ne tient pas compte de la durée de vie du fil de discussion, [ce qui donne aux premiers commentaires un avantage écrasant sur les derniers](https://minimaxir.com/2016/11/first-comment/), l'effet étant encore pire dans les petites communautés. Les nouveaux commentaires sont regroupés au bas du fil de discussion, ce qui a pour effet de tuer la discussion et de faire de chaque fil de discussion une course au commentaire précoce. Cela diminue la qualité de la conversation et récompense les commentaires répétitifs et les spams.
|
Ne tient pas compte de la durée de vie du fil de discussion, [ce qui donne aux premiers commentaires un avantage écrasant sur les derniers](https://minimaxir.com/2016/11/first-comment/), l'effet étant encore pire dans les petites communautés. Les nouveaux commentaires sont regroupés au bas du fil de discussion, ce qui a pour effet de tuer la discussion et de faire de chaque fil de discussion une course au commentaire précoce. Cela diminue la qualité de la conversation et récompense les commentaires répétitifs et les spams.
|
||||||
|
|
||||||
### Hacker News
|
### Hacker News
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ Score = Upvotes - Downvotes
|
||||||
Time = time since submission (in hours)
|
Time = time since submission (in hours)
|
||||||
Gravity = Decay gravity, 1.8 is default
|
Gravity = Decay gravity, 1.8 is default
|
||||||
```
|
```
|
||||||
|
|
||||||
- Lemmy utilise le même algorithme de `Rank` ci-dessus, en deux sortes : `Active`, et `Hot`.
|
- Lemmy utilise le même algorithme de `Rank` ci-dessus, en deux sortes : `Active`, et `Hot`.
|
||||||
- Actif" utilise les votes du message, et le temps du dernier commentaire (limité à deux jours).
|
- Actif" utilise les votes du message, et le temps du dernier commentaire (limité à deux jours).
|
||||||
- `Hot` utilise les votes du message, et l'heure de publication du message.
|
- `Hot` utilise les votes du message, et l'heure de publication du message.
|
||||||
|
|
|
@ -6,11 +6,12 @@ Lorsque vous utilisez docker ou ansible, il devrait y avoir un dossier `volumes`
|
||||||
|
|
||||||
### Sauvegarde incrémentale de la base de données
|
### Sauvegarde incrémentale de la base de données
|
||||||
|
|
||||||
Pour sauvegarder de manière incrémentielle la base de données dans un fichier `.sql`, vous pouvez exécuter :
|
Pour sauvegarder de manière incrémentielle la base de données dans un fichier `.sql`, vous pouvez exécuter :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
|
docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
### Un exemple de script de sauvegarde
|
### Un exemple de script de sauvegarde
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -41,7 +42,7 @@ docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with pas
|
||||||
|
|
||||||
Si vous ne vous êtes pas encore fédéré, vous pouvez changer votre nom de domaine dans la base de données. **Attention : ne faites pas cela après vous être fédéré, ou cela brisera la fédération.**
|
Si vous ne vous êtes pas encore fédéré, vous pouvez changer votre nom de domaine dans la base de données. **Attention : ne faites pas cela après vous être fédéré, ou cela brisera la fédération.**
|
||||||
|
|
||||||
Entrez dans `psql` pour votre docker :
|
Entrez dans `psql` pour votre docker :
|
||||||
|
|
||||||
`docker-compose exec postgres psql -U lemmy`
|
`docker-compose exec postgres psql -U lemmy`
|
||||||
|
|
||||||
|
@ -73,5 +74,3 @@ update community set shared_inbox_url = replace (shared_inbox_url, 'ancien_domai
|
||||||
## Plus de ressources
|
## Plus de ressources
|
||||||
|
|
||||||
- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database
|
- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ Vous pouvez voir la liste des instances liées en suivant le lien "Instances" au
|
||||||
|
|
||||||
## Recherche de communautés
|
## Recherche de communautés
|
||||||
|
|
||||||
Si vous recherchez une communauté pour la première fois, 20 messages sont récupérés initialement. Ce n'est que si au moins un utilisateur de votre instance s'inscrit à la communauté distante que celle-ci enverra des mises à jour à votre instance. Les mises à jour incluent :
|
Si vous recherchez une communauté pour la première fois, 20 messages sont récupérés initialement. Ce n'est que si au moins un utilisateur de votre instance s'inscrit à la communauté distante que celle-ci enverra des mises à jour à votre instance. Les mises à jour incluent :
|
||||||
|
|
||||||
- Nouveaux messages, commentaires
|
- Nouveaux messages, commentaires
|
||||||
- Votes
|
- Votes
|
||||||
|
|
|
@ -18,6 +18,7 @@ ansible-playbook lemmy.yml --become
|
||||||
```
|
```
|
||||||
|
|
||||||
Pour mettre à jour une nouvelle version, il suffit d'exécuter la commande suivante dans votre dépôt Lemmy local :
|
Pour mettre à jour une nouvelle version, il suffit d'exécuter la commande suivante dans votre dépôt Lemmy local :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git pull origin main
|
git pull origin main
|
||||||
cd ansible
|
cd ansible
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Installation de Docker
|
# Installation de Docker
|
||||||
|
|
||||||
Assurez-vous que vous avez à la fois docker et docker-compose(>=`1.24.0`) installés. Sur Ubuntu, exécutez simplement `apt install docker-compose docker.io`. Suivant,
|
Assurez-vous que vous avez à la fois docker et docker-compose(>=`1.24.0`) installés. Sur Ubuntu, exécutez simplement `apt install docker-compose docker.io`. Suivant,
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# créez un dossier pour les fichiers lemmy. l'emplacement n'a pas d'importance, vous pouvez le mettre où vous voulez
|
# créez un dossier pour les fichiers lemmy. l'emplacement n'a pas d'importance, vous pouvez le mettre où vous voulez
|
||||||
|
|
|
@ -52,12 +52,14 @@ proxy_pass $proxpass;
|
||||||
```
|
```
|
||||||
|
|
||||||
Vous pouvez vérifier qu'il fonctionne correctement en exécutant les commandes suivantes, qui devraient toutes renvoyer un JSON valide :
|
Vous pouvez vérifier qu'il fonctionne correctement en exécutant les commandes suivantes, qui devraient toutes renvoyer un JSON valide :
|
||||||
|
|
||||||
```
|
```
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/u/some-local-user
|
curl -H "Accept: application/activity+json" https://your-instance.com/u/some-local-user
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # the id of a local post
|
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # the id of a local post
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # the id of a local comment
|
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # the id of a local comment
|
||||||
```
|
```
|
||||||
|
|
||||||
### La récupération d'objets distants fonctionne, mais la publication/le commentaire dans les communautés distantes échoue.
|
### La récupération d'objets distants fonctionne, mais la publication/le commentaire dans les communautés distantes échoue.
|
||||||
|
|
||||||
Vérifiez que [la fédération est autorisée sur les deux instances](../federation/administration.md#instance-allowlist-and-blocklist).
|
Vérifiez que [la fédération est autorisée sur les deux instances](../federation/administration.md#instance-allowlist-and-blocklist).
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
# WebSocket API
|
# WebSocket API
|
||||||
|
|
||||||
[Lemmy WebSocket API 2.0 documentation](https://join-lemmy.org/api/index.html)
|
[Lemmy WebSocket API 2.0 documentation](https://join-lemmy.org/api/index.html)
|
||||||
|
|
|
@ -17,7 +17,7 @@ Pour un aperçu du fonctionnement technique de la fédération dans Lemmy, consu
|
||||||
|
|
||||||
## Allowlist et blocklist de l'instance
|
## Allowlist et blocklist de l'instance
|
||||||
|
|
||||||
La section fédération de la configuration de Lemmy a deux variables `allowed_instances` et `blocked_instances`. Celles-ci contrôlent avec quelles autres instances Lemmy va se fédérer. Les deux paramètres prennent une liste de domaines séparés par des virgules, par exemple `lemmy.ml,exemple.com`. Vous pouvez modifier ces paramètres soit via `/admin`, soit directement sur le système de fichiers du serveur.
|
La section fédération de la configuration de Lemmy a deux variables `allowed_instances` et `blocked_instances`. Celles-ci contrôlent avec quelles autres instances Lemmy va se fédérer. Les deux paramètres prennent une liste de domaines séparés par des virgules, par exemple `lemmy.ml,exemple.com`. Vous pouvez modifier ces paramètres soit via `/admin`, soit directement sur le système de fichiers du serveur.
|
||||||
|
|
||||||
Il est important de noter que ces paramètres n'affectent que l'envoi et la réception de données entre les instances. Si vous autorisez la fédération avec une certaine instance, puis la supprimez de la liste d'autorisation, cela n'affectera pas les données fédérées précédemment. Ces communautés, utilisateurs, messages et commentaires seront toujours affichés. Ils ne seront simplement plus mis à jour. Et même si une instance est bloquée, elle peut toujours récupérer et afficher les données publiques de votre instance.
|
Il est important de noter que ces paramètres n'affectent que l'envoi et la réception de données entre les instances. Si vous autorisez la fédération avec une certaine instance, puis la supprimez de la liste d'autorisation, cela n'affectera pas les données fédérées précédemment. Ces communautés, utilisateurs, messages et commentaires seront toujours affichés. Ils ne seront simplement plus mis à jour. Et même si une instance est bloquée, elle peut toujours récupérer et afficher les données publiques de votre instance.
|
||||||
|
|
||||||
|
@ -25,4 +25,4 @@ Par défaut, les valeurs `allowed_instances` et `blocked_instances` sont vides,
|
||||||
|
|
||||||
Ce que nous recommandons est de mettre une liste d'instances de confiance dans `allowed_instances`, et de ne se fédérer qu'avec celles-ci. Notez que les deux parties doivent s'ajouter mutuellement à leurs `allowed_instances` pour permettre une fédération bidirectionnelle.
|
Ce que nous recommandons est de mettre une liste d'instances de confiance dans `allowed_instances`, et de ne se fédérer qu'avec celles-ci. Notez que les deux parties doivent s'ajouter mutuellement à leurs `allowed_instances` pour permettre une fédération bidirectionnelle.
|
||||||
|
|
||||||
Alternativement, vous pouvez aussi utiliser une fédération basée sur une liste de blocage. Dans ce cas, ajoutez les domaines des instances avec lesquelles vous ne voulez *pas* vous fédérer. Vous ne pouvez définir que l'un des deux, `allowed_instances` et `blocked_instances`, car définir les deux n'a pas de sens.
|
Alternativement, vous pouvez aussi utiliser une fédération basée sur une liste de blocage. Dans ce cas, ajoutez les domaines des instances avec lesquelles vous ne voulez _pas_ vous fédérer. Vous ne pouvez définir que l'un des deux, `allowed_instances` et `blocked_instances`, car définir les deux n'a pas de sens.
|
||||||
|
|
|
@ -16,38 +16,38 @@ Dans les tableaux suivants, le terme "obligatoire" indique si Lemmy accepte ou n
|
||||||
|
|
||||||
- [Contexte](#contexte)
|
- [Contexte](#contexte)
|
||||||
- [Acteurs](#acteurs)
|
- [Acteurs](#acteurs)
|
||||||
* [Communauté](#communauté)
|
- [Communauté](#communauté)
|
||||||
+ [Boîte de sortie communautaire](#boîte-de-sortie-communautaire)
|
- [Boîte de sortie communautaire](#boîte-de-sortie-communautaire)
|
||||||
+ [Suiveurs de la communauté](#suiveurs-de-la-communauté)
|
- [Suiveurs de la communauté](#suiveurs-de-la-communauté)
|
||||||
+ [Modérateurs de la communauté](#modérateurs-de-la-communauté)
|
- [Modérateurs de la communauté](#modérateurs-de-la-communauté)
|
||||||
* [Utilisateur](#utilisateur)
|
- [Utilisateur](#utilisateur)
|
||||||
+ [Boîte de sortie de l'utilisateur](#boîte-de-sortie-de-lutilisateur)
|
- [Boîte de sortie de l'utilisateur](#boîte-de-sortie-de-lutilisateur)
|
||||||
- [Objets](#objets)
|
- [Objets](#objets)
|
||||||
* [Publication](#publication)
|
- [Publication](#publication)
|
||||||
* [Commentaire](#commentaire)
|
- [Commentaire](#commentaire)
|
||||||
* [Message privé](#message-privé)
|
- [Message privé](#message-privé)
|
||||||
- [Activités](#activités)
|
- [Activités](#activités)
|
||||||
* [De l'utilisateur à la communauté](#utilisateur-à-la-communauté)
|
- [De l'utilisateur à la communauté](#utilisateur-à-la-communauté)
|
||||||
+ [Suivre](#suivre)
|
- [Suivre](#suivre)
|
||||||
+ [Ne pas suivre](#ne-pas-suivre)
|
- [Ne pas suivre](#ne-pas-suivre)
|
||||||
+ [Créer ou mettre à jour un poste](#créer-ou-mettre-à-jour-un-message)
|
- [Créer ou mettre à jour un poste](#créer-ou-mettre-à-jour-un-message)
|
||||||
+ [Créer ou mettre à jour un commentaire](#créer-ou-mettre-à-jour-un-commentaire)
|
- [Créer ou mettre à jour un commentaire](#créer-ou-mettre-à-jour-un-commentaire)
|
||||||
+ [Aimer le message ou le commentaire](#jaime-un-message-ou-un-commentaire)
|
- [Aimer le message ou le commentaire](#jaime-un-message-ou-un-commentaire)
|
||||||
+ [Ne pas aimer le message ou le commentaire](#naime-pas-le-message-ou-le-commentaire)
|
- [Ne pas aimer le message ou le commentaire](#naime-pas-le-message-ou-le-commentaire)
|
||||||
+ [Supprimer un message ou un commentaire](#supprimer-un-message-ou-un-commentaire)
|
- [Supprimer un message ou un commentaire](#supprimer-un-message-ou-un-commentaire)
|
||||||
+ [Retirer un message ou le commentaire](#retirer-un-message-ou-le-commentaire)
|
- [Retirer un message ou le commentaire](#retirer-un-message-ou-le-commentaire)
|
||||||
+ [Défaire](#defaire)
|
- [Défaire](#defaire)
|
||||||
+ [Ajouter un modérateur](#ajouter-un-mod)
|
- [Ajouter un modérateur](#ajouter-un-mod)
|
||||||
+ [Supprimer un modérateur](#supprimer-un-mod)
|
- [Supprimer un modérateur](#supprimer-un-mod)
|
||||||
* [De la communauté à l'utilisateur](#communauté-à-lutilisateur)
|
- [De la communauté à l'utilisateur](#communauté-à-lutilisateur)
|
||||||
+ [Accepter Suivre](#accepter-un-suivi)
|
- [Accepter Suivre](#accepter-un-suivi)
|
||||||
+ [Annoncer](#annoncer)
|
- [Annoncer](#annoncer)
|
||||||
+ [Retirer ou supprimer une communauté](#retirer-ou-supprimer-une-communauté)
|
- [Retirer ou supprimer une communauté](#retirer-ou-supprimer-une-communauté)
|
||||||
+ [Restaurer une communauté retiré ou effacée](#rétablir-la-communauté-supprimée-ou-retirée)
|
- [Restaurer une communauté retiré ou effacée](#rétablir-la-communauté-supprimée-ou-retirée)
|
||||||
* [D'utilisateur à utilisateur](#utilisateur-à-utilisateur)
|
- [D'utilisateur à utilisateur](#utilisateur-à-utilisateur)
|
||||||
+ [Créer ou mettre à jour un message privé](#créer-ou-mettre-à-jour-un-message-privé)
|
- [Créer ou mettre à jour un message privé](#créer-ou-mettre-à-jour-un-message-privé)
|
||||||
+ [Supprimer un message privé](#supprimer-un-message-privé)
|
- [Supprimer un message privé](#supprimer-un-message-privé)
|
||||||
+ [Défaire Supprimer un message privé](#annuler-la-suppression-dun-message-privé)⏎
|
- [Défaire Supprimer un message privé](#annuler-la-suppression-dun-message-privé)⏎
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
@ -55,21 +55,21 @@ Dans les tableaux suivants, le terme "obligatoire" indique si Lemmy accepte ou n
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"@context": [
|
"@context": [
|
||||||
"https://www.w3.org/ns/activitystreams",
|
"https://www.w3.org/ns/activitystreams",
|
||||||
{
|
{
|
||||||
"moderators": "as:moderators",
|
"moderators": "as:moderators",
|
||||||
"sc": "http://schema.org#",
|
"sc": "http://schema.org#",
|
||||||
"stickied": "as:stickied",
|
"stickied": "as:stickied",
|
||||||
"sensitive": "as:sensitive",
|
"sensitive": "as:sensitive",
|
||||||
"pt": "https://join.lemmy.ml#",
|
"pt": "https://join.lemmy.ml#",
|
||||||
"comments_enabled": {
|
"comments_enabled": {
|
||||||
"type": "sc:Boolean",
|
"type": "sc:Boolean",
|
||||||
"id": "pt:commentsEnabled"
|
"id": "pt:commentsEnabled"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"https://w3id.org/security/v1"
|
"https://w3id.org/security/v1"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -124,23 +124,23 @@ Reçoit des activités de l'utilisateur : `Follow`, `Undo/Follow`, `Create`, `Up
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `preferredUsername` | oui | Nom de l'acteur |
|
| `preferredUsername` | oui | Nom de l'acteur |
|
||||||
| `name` | oui | Titre de la communauté |
|
| `name` | oui | Titre de la communauté |
|
||||||
| `sensitive` | oui | True indique que tous les messages dans la communauté sont nsfw |
|
| `sensitive` | oui | True indique que tous les messages dans la communauté sont nsfw |
|
||||||
| `attributedTo` | oui | D'abord le créateur de la communauté, puis tous les autres modérateurs. |
|
| `attributedTo` | oui | D'abord le créateur de la communauté, puis tous les autres modérateurs. |
|
||||||
| `content` | non | Texte pour la barre latérale de la communauté, contenant généralement une description et des règles. |
|
| `content` | non | Texte pour la barre latérale de la communauté, contenant généralement une description et des règles. |
|
||||||
| `icon` | non | Icône, affichée à côté du nom de la communauté |
|
| `icon` | non | Icône, affichée à côté du nom de la communauté |
|
||||||
| `image` | non | Image de bannière, affichée en haut de la page de la communauté |
|
| `image` | non | Image de bannière, affichée en haut de la page de la communauté |
|
||||||
| `inbox` | non | URL de la boîte de réception ActivityPub |
|
| `inbox` | non | URL de la boîte de réception ActivityPub |
|
||||||
| `outbox` | non | ActivityPub URL de la boîte de sortie, contient uniquement les 20 derniers messages, sans commentaires, votes ou autres activités. |
|
| `outbox` | non | ActivityPub URL de la boîte de sortie, contient uniquement les 20 derniers messages, sans commentaires, votes ou autres activités. |
|
||||||
| `followers` | non | URL de la collection de suiveurs, contenant uniquement le nombre de suiveurs, sans référence à des suiveurs individuels. |
|
| `followers` | non | URL de la collection de suiveurs, contenant uniquement le nombre de suiveurs, sans référence à des suiveurs individuels. |
|
||||||
| `endpoints` | non | Contient l'URL de la boîte de réception partagée |
|
| `endpoints` | non | Contient l'URL de la boîte de réception partagée |
|
||||||
| `published` | non | Date à laquelle la communauté a été créée pour la première fois |
|
| `published` | non | Date à laquelle la communauté a été créée pour la première fois |
|
||||||
| `updated` | non | Date à laquelle la communauté a été modifiée pour la dernière fois |
|
| `updated` | non | Date à laquelle la communauté a été modifiée pour la dernière fois |
|
||||||
| `publicKey` | oui | La clé publique utilisée pour vérifier les signatures de cet acteur. |
|
| `publicKey` | oui | La clé publique utilisée pour vérifier les signatures de cet acteur. |
|
||||||
|
|
||||||
#### Boîte de sortie communautaire
|
#### Boîte de sortie communautaire
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
@ -230,18 +230,18 @@ Envoie et reçoit des activités de/vers d'autres utilisateurs : Créer/Note `Cr
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------------- | ----------- | ------------------------------------------------------------------------ |
|
||||||
| `preferredUsername` | oui | Nom de l'acteur |
|
| `preferredUsername` | oui | Nom de l'acteur |
|
||||||
| `name` | non | Nom d'affichage de l'utilisateur |
|
| `name` | non | Nom d'affichage de l'utilisateur |
|
||||||
| `content` | non | Biographie de l'utilisateur |
|
| `content` | non | Biographie de l'utilisateur |
|
||||||
| `icon` | non | L'avatar de l'utilisateur, affiché à côté de son nom d'utilisateur |
|
| `icon` | non | L'avatar de l'utilisateur, affiché à côté de son nom d'utilisateur |
|
||||||
| `image` | non | La bannière de l'utilisateur, affichée en haut du profil |
|
| `image` | non | La bannière de l'utilisateur, affichée en haut du profil |
|
||||||
| `inbox` | non | URL de la boîte de réception d'ActivityPub |
|
| `inbox` | non | URL de la boîte de réception d'ActivityPub |
|
||||||
| `endpoints` | non | Contient l'URL de la boîte de réception partagée |
|
| `endpoints` | non | Contient l'URL de la boîte de réception partagée |
|
||||||
| `published` | non | La date de l'inscription de l'utilisateur.
|
| `published` | non | La date de l'inscription de l'utilisateur. |
|
||||||
| `updated` | non | Date à laquelle le profil de l'utilisateur a été modifié en dernier lieu |
|
| `updated` | non | Date à laquelle le profil de l'utilisateur a été modifié en dernier lieu |
|
||||||
| `publicKey` | oui | La clé publique utilisée pour vérifier les signatures de cet acteur |
|
| `publicKey` | oui | La clé publique utilisée pour vérifier les signatures de cet acteur |
|
||||||
|
|
||||||
#### Boîte de sortie de l'utilisateur
|
#### Boîte de sortie de l'utilisateur
|
||||||
|
|
||||||
|
@ -293,19 +293,19 @@ Une page avec un titre, une URL facultative et un contenu textuel. L'URL mène s
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ----------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | oui | ID de l'utilisateur qui a créé ce message |
|
| `attributedTo` | oui | ID de l'utilisateur qui a créé ce message |
|
||||||
| `to` | oui | ID de la communauté où il a été posté |
|
| `to` | oui | ID de la communauté où il a été posté |
|
||||||
| `name` | oui | Titre du message |
|
| `name` | oui | Titre du message |
|
||||||
| `content` | non | Corps du message |
|
| `content` | non | Corps du message |
|
||||||
| `url` | non | Un lien arbitraire à partager |
|
| `url` | non | Un lien arbitraire à partager |
|
||||||
| `image` | non | Miniature pour `url`, seulement présent si c'est un lien d'image |
|
| `image` | non | Miniature pour `url`, seulement présent si c'est un lien d'image |
|
||||||
| `commentsEnabled` | oui | False indique que le message est verrouillé, et qu'aucun commentaire ne peut être ajouté |
|
| `commentsEnabled` | oui | False indique que le message est verrouillé, et qu'aucun commentaire ne peut être ajouté |
|
||||||
| `sensitive` | oui | True marque le message comme NSFW, brouille la vignette et la cache aux utilisateurs dont le paramètre NSFW est désactivé |
|
| `sensitive` | oui | True marque le message comme NSFW, brouille la vignette et la cache aux utilisateurs dont le paramètre NSFW est désactivé |
|
||||||
| `stickied` | oui | Le message est affiché en haut de la page de la communauté. |
|
| `stickied` | oui | Le message est affiché en haut de la page de la communauté. |
|
||||||
| `published` | non | La date et l'heure de création de l'article. |
|
| `published` | non | La date et l'heure de création de l'article. |
|
||||||
| `updated` | non | La date à laquelle le message a été édité (non présent s'il n'a jamais été édité). |
|
| `updated` | non | La date à laquelle le message a été édité (non présent s'il n'a jamais été édité). |
|
||||||
|
|
||||||
### Commentaire
|
### Commentaire
|
||||||
|
|
||||||
|
@ -333,14 +333,14 @@ Une réponse à un message, ou une réponse à un autre commentaire. Ne contient
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| -------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | oui | ID de l'utilisateur qui a créé le commentaire |
|
| `attributedTo` | oui | ID de l'utilisateur qui a créé le commentaire |
|
||||||
| `to` | oui | Communauté où le commentaire a été fait |
|
| `to` | oui | Communauté où le commentaire a été fait |
|
||||||
| `content` | oui | Le texte du commentaire |
|
| `content` | oui | Le texte du commentaire |
|
||||||
| `inReplyTo` | oui | IDs du message où ce commentaire a été fait, et du commentaire parent. S'il s'agit d'un commentaire de haut niveau, `inReplyTo` ne contient que l'article. |
|
| `inReplyTo` | oui | IDs du message où ce commentaire a été fait, et du commentaire parent. S'il s'agit d'un commentaire de haut niveau, `inReplyTo` ne contient que l'article. |
|
||||||
| `published` | non | La date de création du commentaire. |
|
| `published` | non | La date de création du commentaire. |
|
||||||
| `updated` | non | Date à laquelle le commentaire a été modifié (non présent s'il n'a jamais été modifié) |
|
| `updated` | non | Date à laquelle le commentaire a été modifié (non présent s'il n'a jamais été modifié) |
|
||||||
|
|
||||||
### Message privé
|
### Message privé
|
||||||
|
|
||||||
|
@ -364,13 +364,13 @@ Un message direct d'un utilisateur à un autre. Il ne peut pas inclure d'autres
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| -------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | ID de l'utilisateur qui a créé ce message privé |
|
| `attributedTo` | ID de l'utilisateur qui a créé ce message privé |
|
||||||
| `to` | ID du destinataire |
|
| `to` | ID du destinataire |
|
||||||
| `content` | oui | Le texte du message privé |
|
| `content` | oui | Le texte du message privé |
|
||||||
| `published` | non | Date à laquelle le message a été créé |
|
| `published` | non | Date à laquelle le message a été créé |
|
||||||
| `updated` | non | Date à laquelle le message a été modifié (non présent s'il n'a jamais été modifié) |
|
| `updated` | non | Date à laquelle le message a été modifié (non présent s'il n'a jamais été modifié) |
|
||||||
|
|
||||||
## Activités
|
## Activités
|
||||||
|
|
||||||
|
@ -391,10 +391,10 @@ Lorsque l'utilisateur clique sur "Subscribe" dans une communauté, un `Follow` e
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | --------------------------------------------- |
|
||||||
| `actor` | oui | L'utilisateur qui envoie la demande de suivi.
|
| `actor` | oui | L'utilisateur qui envoie la demande de suivi. |
|
||||||
| `object` | oui | La communauté à suivre |
|
| `object` | oui | La communauté à suivre |
|
||||||
|
|
||||||
#### Ne pas suivre
|
#### Ne pas suivre
|
||||||
|
|
||||||
|
@ -435,11 +435,11 @@ Lorsqu'un utilisateur crée un nouveau message, celui-ci est envoyé à la commu
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | --------------------------------- | --- |
|
||||||
| `type` | oui | soit `Create`, soit `Update` |...
|
| `type` | oui | soit `Create`, soit `Update` | ... |
|
||||||
| `cc` | oui | Communauté où le message est créé |
|
| `cc` | oui | Communauté où le message est créé |
|
||||||
| `object` | oui | Le message en cours de création |
|
| `object` | oui | Le message en cours de création |
|
||||||
|
|
||||||
#### Créer ou mettre à jour un commentaire
|
#### Créer ou mettre à jour un commentaire
|
||||||
|
|
||||||
|
@ -465,11 +465,11 @@ Une réponse à un article ou à un autre commentaire. Peut contenir des mention
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | ---------------------------------------------------------------------------------------- |
|
||||||
| `tag` | non | Liste des utilisateurs mentionnés dans le commentaire (comme `@utilisateur@exemple.com`) |
|
| `tag` | non | Liste des utilisateurs mentionnés dans le commentaire (comme `@utilisateur@exemple.com`) |
|
||||||
| `cc`| oui | La liste des utilisateurs mentionnés dans le commentaire (par exemple, `@`).
|
| `cc` | oui | La liste des utilisateurs mentionnés dans le commentaire (par exemple, `@`). |
|
||||||
| `object` | oui | Le commentaire en cours de création |
|
| `object` | oui | Le commentaire en cours de création |
|
||||||
|
|
||||||
#### J'aime un message ou un commentaire
|
#### J'aime un message ou un commentaire
|
||||||
|
|
||||||
|
@ -489,10 +489,10 @@ Un vote positif pour un message ou un commentaire.
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | ---------------------------------------------------------- |
|
||||||
| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. |
|
| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. |
|
||||||
| `object` | oui | Le message ou le commentaire en cours de validation |
|
| `object` | oui | Le message ou le commentaire en cours de validation |
|
||||||
|
|
||||||
#### N'aime pas le message ou le commentaire
|
#### N'aime pas le message ou le commentaire
|
||||||
|
|
||||||
|
@ -512,10 +512,10 @@ Un vote négatif pour un message ou un commentaire.
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | ---------------------------------------------------------- |
|
||||||
| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. |
|
| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. |
|
||||||
| `object` | oui | Le message ou le commentaire en cours de validation |
|
| `object` | oui | Le message ou le commentaire en cours de validation |
|
||||||
|
|
||||||
#### Supprimer un message ou un commentaire
|
#### Supprimer un message ou un commentaire
|
||||||
|
|
||||||
|
@ -535,10 +535,10 @@ Supprime un message ou un commentaire précédemment créé. Ceci ne peut être
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | ---------------------------------------------------------- |
|
||||||
| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. |
|
| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. |
|
||||||
| `object` | oui | ID du message ou du commentaire à supprimer |
|
| `object` | oui | ID du message ou du commentaire à supprimer |
|
||||||
|
|
||||||
#### Supprimer un message ou un commentaire
|
#### Supprimer un message ou un commentaire
|
||||||
|
|
||||||
|
@ -558,10 +558,10 @@ Supprime un message ou un commentaire. Cela ne peut être fait que par un mod de
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | ---------------------------------------------------------- |
|
||||||
| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. |
|
| `cc` | oui | L'ID de la communauté où se trouve le message/commentaire. |
|
||||||
| `object` | oui | ID du message ou du commentaire à supprimer |
|
| `object` | oui | ID du message ou du commentaire à supprimer |
|
||||||
|
|
||||||
#### Défaire
|
#### Défaire
|
||||||
|
|
||||||
|
@ -581,9 +581,9 @@ Défait une activité précédente, ne peut être fait que par l'acteur `actor`
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | ----------------------------------------------------------------------------- |
|
||||||
| `object` | oui | Toute activité `Like`, `Dislike`, `Delete` ou `Remove` comme décrit ci-dessus |
|
| `object` | oui | Toute activité `Like`, `Dislike`, `Delete` ou `Remove` comme décrit ci-dessus |
|
||||||
|
|
||||||
#### Ajouter un mod
|
#### Ajouter un mod
|
||||||
|
|
||||||
|
@ -622,6 +622,7 @@ Supprime un mod existant de la communauté. Doit être envoyé par un mod exista
|
||||||
"target": "https://enterprise.lemmy.ml/c/main/moderators"
|
"target": "https://enterprise.lemmy.ml/c/main/moderators"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Communauté à l'utilisateur
|
### Communauté à l'utilisateur
|
||||||
|
|
||||||
#### Accepter un suivi
|
#### Accepter un suivi
|
||||||
|
@ -645,11 +646,11 @@ Envoyé automatiquement par la communauté en réponse à un `Follow`. En même
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | --------------------------------------------------- |
|
||||||
| `actor` | oui | La même communauté que celle de l'activité `Follow` |
|
| `actor` | oui | La même communauté que celle de l'activité `Follow` |
|
||||||
| `to` | non | L'ID de l'utilisateur qui a envoyé le `Follow` |
|
| `to` | non | L'ID de l'utilisateur qui a envoyé le `Follow` |
|
||||||
| `object` | oui | L'activité `Follow` précédemment envoyée |
|
| `object` | oui | L'activité `Follow` précédemment envoyée |
|
||||||
|
|
||||||
#### Annoncer
|
#### Annoncer
|
||||||
|
|
||||||
|
@ -669,13 +670,13 @@ Lorsque la communauté reçoit une activité de post ou de commentaire, elle l'i
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `object` | oui | Toute activité de type `Create`, `Update`, `Like`, `Dislike`, `Delete` `Remove` ou `Undo` décrite dans la section [User to Community](#user-to-community) |
|
| `object` | oui | Toute activité de type `Create`, `Update`, `Like`, `Dislike`, `Delete` `Remove` ou `Undo` décrite dans la section [User to Community](#user-to-community) |
|
||||||
|
|
||||||
#### Retirer ou supprimer une communauté
|
#### Retirer ou supprimer une communauté
|
||||||
|
|
||||||
Un administrateur d'instance peut supprimer la communauté, ou un mod peut la supprimer.
|
Un administrateur d'instance peut supprimer la communauté, ou un mod peut la supprimer.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -691,9 +692,9 @@ Un administrateur d'instance peut supprimer la communauté, ou un mod peut la su
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | --------------------------- |
|
||||||
| `type` | oui | Soit `Remove` soit `Delete` |
|
| `type` | oui | Soit `Remove` soit `Delete` |
|
||||||
|
|
||||||
#### Rétablir la communauté supprimée ou retirée
|
#### Rétablir la communauté supprimée ou retirée
|
||||||
|
|
||||||
|
@ -723,13 +724,14 @@ Rétablit le retrait ou la suppression.
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
| Nom du champ | Obligatoire | Description |
|
|
||||||
|---|---|---|
|
| Nom du champ | Obligatoire | Description |
|
||||||
| `object.type` | oui | Soit `Remove` ou `Delete` |
|
| ------------- | ----------- | ------------------------- |
|
||||||
|
| `object.type` | oui | Soit `Remove` ou `Delete` |
|
||||||
|
|
||||||
### Utilisateur à Utilisateur
|
### Utilisateur à Utilisateur
|
||||||
|
|
||||||
#### Créer ou mettre à jour un message privé
|
#### Créer ou mettre à jour un message privé
|
||||||
|
|
||||||
Crée un nouveau message privé entre deux utilisateurs.
|
Crée un nouveau message privé entre deux utilisateurs.
|
||||||
|
|
||||||
|
@ -744,10 +746,10 @@ Crée un nouveau message privé entre deux utilisateurs.
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nom du champ | Obligatoire | Description |
|
| Nom du champ | Obligatoire | Description |
|
||||||
|---|---|---|
|
| ------------ | ----------- | ------------------------------------- | --- |
|
||||||
| `type` | oui | Soit `Create`, soit `Update` |...
|
| `type` | oui | Soit `Create`, soit `Update` | ... |
|
||||||
| `object` | oui | A [Private Message](#private-message) |
|
| `object` | oui | A [Private Message](#private-message) |
|
||||||
|
|
||||||
#### Supprimer un message privé
|
#### Supprimer un message privé
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
# Aperçu de la fédération
|
# Aperçu de la fédération
|
||||||
|
|
||||||
|
|
||||||
Ce document est destiné à tous ceux qui veulent savoir comment fonctionne la fédération Lemmy, sans être trop technique. Il est destiné à fournir un aperçu de haut niveau de la fédération ActivityPub dans Lemmy. Si vous implémentez ActivityPub vous-même et souhaitez être compatible avec Lemmy, lisez notre [ActivityPub API outline](contributing_apub_api_outline.md).
|
Ce document est destiné à tous ceux qui veulent savoir comment fonctionne la fédération Lemmy, sans être trop technique. Il est destiné à fournir un aperçu de haut niveau de la fédération ActivityPub dans Lemmy. Si vous implémentez ActivityPub vous-même et souhaitez être compatible avec Lemmy, lisez notre [ActivityPub API outline](contributing_apub_api_outline.md).
|
||||||
|
|
||||||
## Conventions de documentation
|
## Conventions de documentation
|
||||||
|
|
||||||
Pour garder les choses simples, vous verrez parfois des choses formatées comme `Create/Note`, `Delete/Event` ou `Undo/Follow`. La chose avant le slash est l'activité, et la chose après le slash est l'objet à l'intérieur de l'activité, dans une propriété `object`. Il faut donc les lire comme suit :
|
Pour garder les choses simples, vous verrez parfois des choses formatées comme `Create/Note`, `Delete/Event` ou `Undo/Follow`. La chose avant le slash est l'activité, et la chose après le slash est l'objet à l'intérieur de l'activité, dans une propriété `object`. Il faut donc les lire comme suit :
|
||||||
|
|
||||||
* `Create/Note` : une activité `Create` contenant une `Note` dans le champ `object`.
|
- `Create/Note` : une activité `Create` contenant une `Note` dans le champ `object`.
|
||||||
* `Delete/Event` : une activité `Delete` contenant un `Event` dans le champ `object`.
|
- `Delete/Event` : une activité `Delete` contenant un `Event` dans le champ `object`.
|
||||||
* `Undo/Follow` : une activité `Undo` contenant un `Follow` dans le champ `object`.
|
- `Undo/Follow` : une activité `Undo` contenant un `Follow` dans le champ `object`.
|
||||||
|
|
||||||
Dans Lemmy, nous utilisons certains termes spécifiques pour désigner les éléments ActivityPub. Il s'agit essentiellement de nos implémentations spécifiques de concepts ActivityPub bien connus :
|
Dans Lemmy, nous utilisons certains termes spécifiques pour désigner les éléments ActivityPub. Il s'agit essentiellement de nos implémentations spécifiques de concepts ActivityPub bien connus :
|
||||||
|
|
||||||
|
@ -20,13 +19,13 @@ Dans Lemmy, nous utilisons certains termes spécifiques pour désigner les élé
|
||||||
|
|
||||||
Ce document comporte trois sections principales :
|
Ce document comporte trois sections principales :
|
||||||
|
|
||||||
* __Philosophie de la fédération__ expose le modèle général de la manière dont le projet est censé se fédérer.
|
- **Philosophie de la fédération** expose le modèle général de la manière dont le projet est censé se fédérer.
|
||||||
* __Les activités des utilisateurs__ décrivent les actions qu'un utilisateur peut entreprendre pour interagir.
|
- **Les activités des utilisateurs** décrivent les actions qu'un utilisateur peut entreprendre pour interagir.
|
||||||
* __Activités de la communauté__ décrit ce que la communauté fait en réponse à certaines actions de l'utilisateur.
|
- **Activités de la communauté** décrit ce que la communauté fait en réponse à certaines actions de l'utilisateur.
|
||||||
|
|
||||||
## Philosophie de la Fédération
|
## Philosophie de la Fédération
|
||||||
|
|
||||||
L'acteur principal de Lemmy est la communauté. Chaque communauté réside sur une seule instance, et se compose d'une liste de messages et d'une liste de followers. L'interaction principale est celle d'un utilisateur qui envoie une activité liée à un message ou à un commentaire à la boîte de réception de la communauté, qui l'annonce ensuite à tous ses suiveurs.
|
L'acteur principal de Lemmy est la communauté. Chaque communauté réside sur une seule instance, et se compose d'une liste de messages et d'une liste de followers. L'interaction principale est celle d'un utilisateur qui envoie une activité liée à un message ou à un commentaire à la boîte de réception de la communauté, qui l'annonce ensuite à tous ses suiveurs.
|
||||||
|
|
||||||
Chaque communauté a un utilisateur créateur spécifique, qui est responsable de la définition des règles, de la nomination des modérateurs et de la suppression du contenu qui viole les règles.
|
Chaque communauté a un utilisateur créateur spécifique, qui est responsable de la définition des règles, de la nomination des modérateurs et de la suppression du contenu qui viole les règles.
|
||||||
|
|
||||||
|
@ -109,12 +108,12 @@ La communauté est essentiellement un robot, qui n'agit qu'en réaction aux acti
|
||||||
|
|
||||||
### Accepter le suivi
|
### Accepter le suivi
|
||||||
|
|
||||||
Si la communauté reçoit une activité "Follow", elle répond automatiquement par "Accept/Follow". Elle ajoute également l'utilisateur à sa liste de suiveurs.
|
Si la communauté reçoit une activité "Follow", elle répond automatiquement par "Accept/Follow". Elle ajoute également l'utilisateur à sa liste de suiveurs.
|
||||||
|
|
||||||
### Unfollow
|
### Unfollow
|
||||||
|
|
||||||
À la réception d'un `Undo/Follow`, la communauté supprime l'utilisateur de sa liste de followers.
|
À la réception d'un `Undo/Follow`, la communauté supprime l'utilisateur de sa liste de followers.
|
||||||
|
|
||||||
#### Annoncer
|
#### Annoncer
|
||||||
|
|
||||||
Si la communauté reçoit une activité liée à un message ou à un commentaire (créer, mettre à jour, aimer, détester, retirer, supprimer, annuler), elle l'annoncera à ses membres. Pour cela, une Annonce est créée avec la Communauté comme acteur, et l'activité reçue comme objet. Les instances qui suivent restent ainsi informées de toutes les actions des communautés qu'elles suivent.
|
Si la communauté reçoit une activité liée à un message ou à un commentaire (créer, mettre à jour, aimer, détester, retirer, supprimer, annuler), elle l'annoncera à ses membres. Pour cela, une Annonce est créée avec la Communauté comme acteur, et l'activité reçue comme objet. Les instances qui suivent restent ainsi informées de toutes les actions des communautés qu'elles suivent.
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
## Tentang Proyek Ini
|
## Tentang Proyek Ini
|
||||||
|
|
||||||
Halaman Depan|Pos
|
| Halaman Depan | Pos |
|
||||||
---|---
|
| ------------------------------- | ------------------------------------ |
|
||||||
![layar utama](main_screen.png)|![layar percakapan](chat_screen.png)
|
| ![layar utama](main_screen.png) | ![layar percakapan](chat_screen.png) |
|
||||||
|
|
||||||
[Lemmy](https://github.com/LemmyNet/lemmy) serupa seperti situs seperti [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), atau [Hacker News](https://news.ycombinator.com/): Anda berlangganan ke forum yang Anda tertarik kepada mereka, pos tautan dan diskusi, kemudian pilih, dan komentar di sana. Di belakang layar, itu sangat berbeda; semua orang bisa dengan mudah menjalankan sebuah peladen dan semua peladen tersebut terfederasi (seperti surel) dan terhubung ke semesta yang sama, yaitu [Fediverse](https://en.wikipedia.org/wiki/Fediverse).
|
[Lemmy](https://github.com/LemmyNet/lemmy) serupa seperti situs seperti [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), atau [Hacker News](https://news.ycombinator.com/): Anda berlangganan ke forum yang Anda tertarik kepada mereka, pos tautan dan diskusi, kemudian pilih, dan komentar di sana. Di belakang layar, itu sangat berbeda; semua orang bisa dengan mudah menjalankan sebuah peladen dan semua peladen tersebut terfederasi (seperti surel) dan terhubung ke semesta yang sama, yaitu [Fediverse](https://en.wikipedia.org/wiki/Fediverse).
|
||||||
|
|
||||||
*Kata “fediverse” (federated universe) merujuk kepada jaringan dari semua peladen Lemmy [dan proyek lainnya](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/), yang dimana pengguna bisa berbicara satu sama lain dengan seamlessly.*
|
_Kata “fediverse” (federated universe) merujuk kepada jaringan dari semua peladen Lemmy [dan proyek lainnya](https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/), yang dimana pengguna bisa berbicara satu sama lain dengan seamlessly._
|
||||||
|
|
||||||
Seperti surel, entah Anda mendaftar di Gmail atau Outlook, Anda tahu Anda akan bisa mengirim surel ke semua yang Anda butuhkan, asalkan Anda tahu alamat mereka. Di Lemmy, Anda bisa berlangganan ke komunitas di peladen mana pun lainnya dan bisa mengikuti diskusi dengan pengguna terdaftar dimana pun.
|
Seperti surel, entah Anda mendaftar di Gmail atau Outlook, Anda tahu Anda akan bisa mengirim surel ke semua yang Anda butuhkan, asalkan Anda tahu alamat mereka. Di Lemmy, Anda bisa berlangganan ke komunitas di peladen mana pun lainnya dan bisa mengikuti diskusi dengan pengguna terdaftar dimana pun.
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ Tidak ada pemegang modal dan tidak ada iklan tertarget: hanya orang yang membagi
|
||||||
|
|
||||||
Setiap peladen Lemmy bisa menentukan kebijakan moderasinya sendiri-sendiri; mengangkat admin tingkat situs, moderator komunitas untuk waspada terhadap _troll_, dan memupuk lingkungan yang sehat di mana semua bisa dengan nyaman berkontribusi.
|
Setiap peladen Lemmy bisa menentukan kebijakan moderasinya sendiri-sendiri; mengangkat admin tingkat situs, moderator komunitas untuk waspada terhadap _troll_, dan memupuk lingkungan yang sehat di mana semua bisa dengan nyaman berkontribusi.
|
||||||
|
|
||||||
*Catatan: Federasi masih dalam pengembangan aktif*
|
_Catatan: Federasi masih dalam pengembangan aktif_
|
||||||
|
|
||||||
### Kenapa dinamai Lemmy?
|
### Kenapa dinamai Lemmy?
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
- Yang dibutuhkan untuk mendaftar adalah nama pengguna dan kata sandi!
|
- Yang dibutuhkan untuk mendaftar adalah nama pengguna dan kata sandi!
|
||||||
- Dukungan avatar pengguna.
|
- Dukungan avatar pengguna.
|
||||||
- Utas komentar dengan pembaruan langsung.
|
- Utas komentar dengan pembaruan langsung.
|
||||||
- Skor pilihan penuh `(+/-)` seperti Reddit yang lama.
|
- Skor pilihan penuh `(+/-)` seperti Reddit yang lama.
|
||||||
- Banyak tema, termasuk terang, gelap, dan solarized.
|
- Banyak tema, termasuk terang, gelap, dan solarized.
|
||||||
- Emoji dengan dukungan ketik otomatis. Mulai mengetik `:`
|
- Emoji dengan dukungan ketik otomatis. Mulai mengetik `:`
|
||||||
- Tandai pengguna menggunakan `@`, tandai komunitas menggunakan `!`.
|
- Tandai pengguna menggunakan `@`, tandai komunitas menggunakan `!`.
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
- i18n/dukungan penginternasionalan
|
- i18n/dukungan penginternasionalan
|
||||||
- Umpan RSS/Atom untuk `Semua`, `Berlangganan`, `Kotak Masuk`, `Pengguna`, dan `Komunitas`.
|
- Umpan RSS/Atom untuk `Semua`, `Berlangganan`, `Kotak Masuk`, `Pengguna`, dan `Komunitas`.
|
||||||
- Dukungan pos-lintas.
|
- Dukungan pos-lintas.
|
||||||
- Sebuah *pencarian pos serupa* ketika membuat pos baru. Bagus untuk komunitas tanya/jawab.
|
- Sebuah _pencarian pos serupa_ ketika membuat pos baru. Bagus untuk komunitas tanya/jawab.
|
||||||
- Kemampuan moderasi.
|
- Kemampuan moderasi.
|
||||||
- Log Moderasi Publik.
|
- Log Moderasi Publik.
|
||||||
- Bisa melengketkan pos ke bagian atas komunitas.
|
- Bisa melengketkan pos ke bagian atas komunitas.
|
||||||
|
|
|
@ -6,11 +6,11 @@ Jadi Anda ingin bergabung dengan Lemmy dan mulai mengepos. Bagus! Begini cara un
|
||||||
|
|
||||||
Hal pertama yang Anda harus lakukan adalah **memilih peladen Anda**. Ini merupakan langkah tambahan dibandingkan dengan situs seperti Reddit, tapi tidak sesulit yang dikira.
|
Hal pertama yang Anda harus lakukan adalah **memilih peladen Anda**. Ini merupakan langkah tambahan dibandingkan dengan situs seperti Reddit, tapi tidak sesulit yang dikira.
|
||||||
|
|
||||||
*Seperti surel, identitas Anda dihos oleh peladen yang dimana Anda mendaftar. Jadi sebagai contoh, saya gabung ke lemmy.ml, jadi untuk menyebutkan saya, Anda bisa mengetikkan @retiolus@lemmy.ml di pos Anda.*
|
_Seperti surel, identitas Anda dihos oleh peladen yang dimana Anda mendaftar. Jadi sebagai contoh, saya gabung ke lemmy.ml, jadi untuk menyebutkan saya, Anda bisa mengetikkan @retiolus@lemmy.ml di pos Anda._
|
||||||
|
|
||||||
Jika apa yang ingin Anda bicarakan sesuai dengan kategori yang jelas (mungkin itu permainan video atau seni atau kehidupan aneh atau pengkodean atau fiksi, dll.) maka mungkin ada baiknya membuat peladen pertama Anda di mana yang terutama akan menampung konten semacam itu – akan lebih mudah untuk membuat koneksi dan menemukan orang-orang yang berpikiran sama. Pikirkan peladen Anda sebagai lingkungan atau tempat, di mana obrolan umum tersebut dapat memiliki fokus khusus.
|
Jika apa yang ingin Anda bicarakan sesuai dengan kategori yang jelas (mungkin itu permainan video atau seni atau kehidupan aneh atau pengkodean atau fiksi, dll.) maka mungkin ada baiknya membuat peladen pertama Anda di mana yang terutama akan menampung konten semacam itu – akan lebih mudah untuk membuat koneksi dan menemukan orang-orang yang berpikiran sama. Pikirkan peladen Anda sebagai lingkungan atau tempat, di mana obrolan umum tersebut dapat memiliki fokus khusus.
|
||||||
|
|
||||||
*Anda memiliki kemampuan untuk melihat semua pos lokal publik yang dibuat oleh orang di peladen Anda di bilah "Lokal".*
|
_Anda memiliki kemampuan untuk melihat semua pos lokal publik yang dibuat oleh orang di peladen Anda di bilah "Lokal"._
|
||||||
|
|
||||||
Jika Anda tidak di sini untuk menempel ke satu topik, Anda mungkin ingin memilih peladen yang melayani percakapan umum. Apa pun itu, ada daftar peladen yang berguna di [join-lemmy.org](https://join-lemmy.org/instances).
|
Jika Anda tidak di sini untuk menempel ke satu topik, Anda mungkin ingin memilih peladen yang melayani percakapan umum. Apa pun itu, ada daftar peladen yang berguna di [join-lemmy.org](https://join-lemmy.org/instances).
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Pergi ke halaman Masuk `(https://your.server/login)` dari peladen Anda dan pilih
|
||||||
|
|
||||||
Hal selanjutnya untuk dilakukan adalah mengunggah gambar profil Anda, berikan halaman pengaturan `(https://your.server/settings)` sebuah utak-atik (dan kembali melakukannya ketika Anda sudah di Lemmy selama beberapa pekan atau hanya untuk utak-atik yang mungkin membantu pengalaman Anda) dan bersiaplah untuk mengenalkan diri Anda.
|
Hal selanjutnya untuk dilakukan adalah mengunggah gambar profil Anda, berikan halaman pengaturan `(https://your.server/settings)` sebuah utak-atik (dan kembali melakukannya ketika Anda sudah di Lemmy selama beberapa pekan atau hanya untuk utak-atik yang mungkin membantu pengalaman Anda) dan bersiaplah untuk mengenalkan diri Anda.
|
||||||
|
|
||||||
*Beberapa pengaturan yang menarik untuk diperiksa adalah: jenis filter umpan baku antara berlangganan, lokal, atau semua dan jenis pengurutan baku Anda*
|
_Beberapa pengaturan yang menarik untuk diperiksa adalah: jenis filter umpan baku antara berlangganan, lokal, atau semua dan jenis pengurutan baku Anda_
|
||||||
|
|
||||||
Meskipun Anda bisa hanya santai membaca Lemmy, keseruan yang asli dimulai ketika Anda meluncur dan mulai berpartisipasi dengan mengepos, mengeluarkan pilihan, dan berkomentar
|
Meskipun Anda bisa hanya santai membaca Lemmy, keseruan yang asli dimulai ketika Anda meluncur dan mulai berpartisipasi dengan mengepos, mengeluarkan pilihan, dan berkomentar
|
||||||
|
|
||||||
|
@ -56,17 +56,17 @@ Tampilan standar Lemmy memiliki satu umpan. Anda bisa mengubah konten dari umpan
|
||||||
|
|
||||||
**Semua** atau **lini masa terfederasi** adalah untuk melihat semua pos publik yang peladen Anda ketahui dari seluruh jaringan (termasuk yang lokal). Alasan yang paling umum ketika sesuatu tampil di lini masa terfederasi adalah ada seseorang dari peladen Anda mengikuti komunitas yang ada di peladen lainnya.
|
**Semua** atau **lini masa terfederasi** adalah untuk melihat semua pos publik yang peladen Anda ketahui dari seluruh jaringan (termasuk yang lokal). Alasan yang paling umum ketika sesuatu tampil di lini masa terfederasi adalah ada seseorang dari peladen Anda mengikuti komunitas yang ada di peladen lainnya.
|
||||||
|
|
||||||
| Jenis | Deskripsi |
|
| Jenis | Deskripsi |
|
||||||
| --- | --- |
|
| ---------------------- | -------------------------------------------------------------------- |
|
||||||
| Pos | Hanya tampilkan publikasi (pos) |
|
| Pos | Hanya tampilkan publikasi (pos) |
|
||||||
| Komentar | Hanya tampilkan komentar |
|
| Komentar | Hanya tampilkan komentar |
|
||||||
| \-\-\- | \-\-\- |
|
| \-\-\- | \-\-\- |
|
||||||
| Aktif | Urut yang tren berdasarkan skor dan waktu komentar yang paling baru. |
|
| Aktif | Urut yang tren berdasarkan skor dan waktu komentar yang paling baru. |
|
||||||
| Hangat | Urut yang tren berdasarkan skor dan waktu pembuatan pos. |
|
| Hangat | Urut yang tren berdasarkan skor dan waktu pembuatan pos. |
|
||||||
| Baru | Yang terbaru. |
|
| Baru | Yang terbaru. |
|
||||||
| Paling Banyak Komentar | Pos dengan komentar paling banyak. |
|
| Paling Banyak Komentar | Pos dengan komentar paling banyak. |
|
||||||
| Komentar Terbaru | Pos dengan komentar yang paling baru, alias urut gaya-forum. |
|
| Komentar Terbaru | Pos dengan komentar yang paling baru, alias urut gaya-forum. |
|
||||||
| Teratas | Skor terbesar di jangka waktu tertentu. |
|
| Teratas | Skor terbesar di jangka waktu tertentu. |
|
||||||
|
|
||||||
Untuk detail lebih lanjut, periksa [detail Ranking Pos dan Komentar](ranking.md).
|
Untuk detail lebih lanjut, periksa [detail Ranking Pos dan Komentar](ranking.md).
|
||||||
|
|
||||||
|
@ -74,22 +74,22 @@ Untuk detail lebih lanjut, periksa [detail Ranking Pos dan Komentar](ranking.md)
|
||||||
|
|
||||||
Pos Lemmy ditulis menggunakan Markdown, tentu saja ada pintasan untuk Anda gunakan ketika menulis, di bawah ini merupakan tabel untuk membantu Anda jika Anda ingin tahu lebih lanjut.
|
Pos Lemmy ditulis menggunakan Markdown, tentu saja ada pintasan untuk Anda gunakan ketika menulis, di bawah ini merupakan tabel untuk membantu Anda jika Anda ingin tahu lebih lanjut.
|
||||||
|
|
||||||
Ketik | Atau | … untuk mendapatkan
|
| Ketik | Atau | … untuk mendapatkan |
|
||||||
--- | --- | ---
|
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |
|
||||||
\*Miring\* | \_Miring\_ | _Miring_
|
| \*Miring\* | \_Miring\_ | _Miring_ |
|
||||||
\*\*Tebal\*\* | \_\_Tebal\_\_ | **Tebal**
|
| \*\*Tebal\*\* | \_\_Tebal\_\_ | **Tebal** |
|
||||||
\# Tajuk 1 | Tajuk 1 <br> ========= | <h4>Tajuk 1</h4>
|
| \# Tajuk 1 | Tajuk 1 <br> ========= | <h4>Tajuk 1</h4> |
|
||||||
\## Tajuk 2 | Tajuk 2 <br>--------- | <h5>Tajuk 2</h5>
|
| \## Tajuk 2 | Tajuk 2 <br>--------- | <h5>Tajuk 2</h5> |
|
||||||
\[Tautan\](http://a.com) | \[Tautan\]\[1\]<br>⋮ <br>\[1\]: http://b.org | [Tautan](https://commonmark.org/)
|
| \[Tautan\](http://a.com) | \[Tautan\]\[1\]<br>⋮ <br>\[1\]: http://b.org | [Tautan](https://commonmark.org/) |
|
||||||
!\[Gambar\](http://url/a.png) | !\[Gambar\]\[1\]<br>⋮ <br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png)
|
| !\[Gambar\](http://url/a.png) | !\[Gambar\]\[1\]<br>⋮ <br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) |
|
||||||
\> Kutipan | | <blockquote>Kutipan</blockquote>
|
| \> Kutipan | | <blockquote>Kutipan</blockquote> |
|
||||||
\* Daftar <br>\* Daftar <br>\* Daftar | \- Daftar <br>\- Daftar <br>\- Daftar <br> | * Daftar <br>* Daftar <br>* Daftar <br>
|
| \* Daftar <br>\* Daftar <br>\* Daftar | \- Daftar <br>\- Daftar <br>\- Daftar <br> | _ Daftar <br>_ Daftar <br>\* Daftar <br> |
|
||||||
1\. Satu <br>2\. Dua <br>3\. Tiga | 1) Satu<br>2) Dua<br>3) Tiga | 1. Satu<br>2. Dua<br>3. Tiga
|
| 1\. Satu <br>2\. Dua <br>3\. Tiga | 1) Satu<br>2) Dua<br>3) Tiga | 1. Satu<br>2. Dua<br>3. Tiga |
|
||||||
Garis Horizontal <br>\--- | Garis Horizontal<br>\*\*\* | Garis Horizontal <br><hr>
|
| Garis Horizontal <br>\--- | Garis Horizontal<br>\*\*\* | Garis Horizontal <br><hr> |
|
||||||
\`Kode di pos\` dengan petik terbalik | |`Kode di pos` dengan petik terbalik
|
| \`Kode di pos\` dengan petik terbalik | | `Kode di pos` dengan petik terbalik |
|
||||||
\`\`\`<br>\# blok kode <br>print '3 petik terbalik or'<br>print 'indentasi 4 spasi' <br>\`\`\` | ····\# blok kode<br>····print '3 petik terbalik or'<br>····print 'indentasi 4 spasi' | \# blok kode <br>print '3 petik terbalik or'<br>print 'indentasi 4 spasi'
|
| \`\`\`<br>\# blok kode <br>print '3 petik terbalik or'<br>print 'indentasi 4 spasi' <br>\`\`\` | ····\# blok kode<br>····print '3 petik terbalik or'<br>····print 'indentasi 4 spasi' | \# blok kode <br>print '3 petik terbalik or'<br>print 'indentasi 4 spasi' |
|
||||||
::: spoiler sembunyi atau sesuatu porno<br>*sesuatu untuk disembunyikan*<br>::: | | <details><summary> sembunyi atau sesuatu porno </summary><p><em>sesuatu untuk disembunyikan</em></p></details>
|
| ::: spoiler sembunyi atau sesuatu porno<br>_sesuatu untuk disembunyikan_<br>::: | | <details><summary> sembunyi atau sesuatu porno </summary><p><em>sesuatu untuk disembunyikan</em></p></details> |
|
||||||
Teks ~bawah~ garis | | Teks <sub>bawah</sub> garis
|
| Teks ~bawah~ garis | | Teks <sub>bawah</sub> garis |
|
||||||
Teks ^atas^ garis | | Teks <sup>atas</sup> garis
|
| Teks ^atas^ garis | | Teks <sup>atas</sup> garis |
|
||||||
|
|
||||||
[Tutorial CommonMark](https://commonmark.org/help/tutorial/)
|
[Tutorial CommonMark](https://commonmark.org/help/tutorial/)
|
||||||
|
|
|
@ -27,6 +27,7 @@ Score = Upvotes - Downvotes
|
||||||
Time = time since submission (in hours)
|
Time = time since submission (in hours)
|
||||||
Gravity = Decay gravity, 1.8 is default
|
Gravity = Decay gravity, 1.8 is default
|
||||||
```
|
```
|
||||||
|
|
||||||
- Lemmy menggunakan algoritma `Rank` yang sama di atas, dengan dua cara: `Active` dan `Hot`
|
- Lemmy menggunakan algoritma `Rank` yang sama di atas, dengan dua cara: `Active` dan `Hot`
|
||||||
- `Active` menggunakan suara pos, dan waktu komentar terakhir (dibatasi hingga dua hari).
|
- `Active` menggunakan suara pos, dan waktu komentar terakhir (dibatasi hingga dua hari).
|
||||||
- `Hot` menggunakan suara pos, dan waktu pos diterbitkan.
|
- `Hot` menggunakan suara pos, dan waktu pos diterbitkan.
|
||||||
|
@ -41,6 +42,6 @@ Plot peringkat lebih dari 24 jam, dengan skor 1, 5, 10, 100, 1000, dengan faktor
|
||||||
|
|
||||||
#### Penghitungan Pengguna Aktif
|
#### Penghitungan Pengguna Aktif
|
||||||
|
|
||||||
Lemmy juga menampilkan jumlah *pengguna aktif* untuk situs Anda, dan komunitasnya. Ini dihitung dalam `hari`, `pekan`, `bulan`, dan `setengah tahun` terakhir, dan ditembolokkan dalam pemulaian Lemmy, dan setiap jam.
|
Lemmy juga menampilkan jumlah _pengguna aktif_ untuk situs Anda, dan komunitasnya. Ini dihitung dalam `hari`, `pekan`, `bulan`, dan `setengah tahun` terakhir, dan ditembolokkan dalam pemulaian Lemmy, dan setiap jam.
|
||||||
|
|
||||||
Pengguna aktif merupakan seseorang yang mempos atau berkomentar di peladen atau komunitas dalam jangka waktu terakhir yang ditentukan. Untuk penghitungan situs, hanya pengguna lokal yang dihitung. Untuk penghitungan komunitas, pengguna terfederasi juga dihitung.
|
Pengguna aktif merupakan seseorang yang mempos atau berkomentar di peladen atau komunitas dalam jangka waktu terakhir yang ditentukan. Untuk penghitungan situs, hanya pengguna lokal yang dihitung. Untuk penghitungan komunitas, pengguna terfederasi juga dihitung.
|
||||||
|
|
|
@ -3,17 +3,21 @@
|
||||||
Informasi untuk admin peladen Lemmy dan mereka yang ingin menjalankan sebuah peladen.
|
Informasi untuk admin peladen Lemmy dan mereka yang ingin menjalankan sebuah peladen.
|
||||||
|
|
||||||
## Pasang
|
## Pasang
|
||||||
|
|
||||||
### Metode Resmi/Didukung
|
### Metode Resmi/Didukung
|
||||||
|
|
||||||
Lemmy memiliki dua metode pemasangan utama:
|
Lemmy memiliki dua metode pemasangan utama:
|
||||||
|
|
||||||
- [Manual dengan Docker](install_docker.md)
|
- [Manual dengan Docker](install_docker.md)
|
||||||
- [Otomatis dengan Ansible](install_ansible.md)
|
- [Otomatis dengan Ansible](install_ansible.md)
|
||||||
|
|
||||||
Kami merekomendasikan menggunakan Ansible, karena menyederhanakan instalasi dan juga membuat pembaruan lebih mudah.
|
Kami merekomendasikan menggunakan Ansible, karena menyederhanakan instalasi dan juga membuat pembaruan lebih mudah.
|
||||||
|
|
||||||
### Metode pemasangan lainnya
|
### Metode pemasangan lainnya
|
||||||
|
|
||||||
> ⚠️ **Hati-hati! Risiko Anda sendiri**
|
> ⚠️ **Hati-hati! Risiko Anda sendiri**
|
||||||
|
|
||||||
Dalam beberapa kasus, mungkin perlu menggunakan metode pemasangan yang berbeda. Tetapi kami tidak merekomendasikan ini, dan tidak dapat memberikan dukungan untuk mereka.
|
Dalam beberapa kasus, mungkin perlu menggunakan metode pemasangan yang berbeda. Tetapi kami tidak merekomendasikan ini, dan tidak dapat memberikan dukungan untuk mereka.
|
||||||
|
|
||||||
- [Dari Awal](from_scratch.md)
|
- [Dari Awal](from_scratch.md)
|
||||||
- [Di Amazon Web Services (AWS)](on_aws.md)
|
- [Di Amazon Web Services (AWS)](on_aws.md)
|
||||||
|
|
|
@ -11,6 +11,7 @@ Untuk pencadangan DB bertahap ke berkas `.sql`, Anda bisa menjalankan:
|
||||||
```bash
|
```bash
|
||||||
docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
|
docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
### Contoh skrip pencadangan
|
### Contoh skrip pencadangan
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -24,7 +25,7 @@ rsync -avP -zz --rsync-path="sudo rsync" MY_USER@MY_IP:/LEMMY_LOCATION/volumes ~
|
||||||
|
|
||||||
### Memulihkan DB
|
### Memulihkan DB
|
||||||
|
|
||||||
Jika Anda perlu untuk memulihkan dari berkas `pg_dumpall`, pertama-tama Anda perlu membersihkan basis data telah ada Anda.
|
Jika Anda perlu untuk memulihkan dari berkas `pg_dumpall`, pertama-tama Anda perlu membersihkan basis data telah ada Anda.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Drop the existing DB
|
# Drop the existing DB
|
||||||
|
@ -41,7 +42,7 @@ docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with pas
|
||||||
|
|
||||||
Jika Anda belum terfederasi, Anda bisa mengubah nama domain Anda di DB. **Peringatan: jangan lakukan ini setelah Anda terfederasi atau itu akan merusak federasi.**
|
Jika Anda belum terfederasi, Anda bisa mengubah nama domain Anda di DB. **Peringatan: jangan lakukan ini setelah Anda terfederasi atau itu akan merusak federasi.**
|
||||||
|
|
||||||
Pergi ke `psql` dari Docker Anda:
|
Pergi ke `psql` dari Docker Anda:
|
||||||
|
|
||||||
`docker-compose exec postgres psql -U lemmy`
|
`docker-compose exec postgres psql -U lemmy`
|
||||||
|
|
||||||
|
@ -73,5 +74,3 @@ update community set shared_inbox_url = replace (shared_inbox_url, 'old_domain',
|
||||||
## Lihat juga
|
## Lihat juga
|
||||||
|
|
||||||
- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database
|
- https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Konfigurasi didasarkan pada berkas config.hjson, yang di mana ditempatkan secara baku di `config/config.hjson`. Untuk mengubah lokasi baku, Anda bisa mengatur variabel lingkungan `LEMMY_CONFIG_LOCATION`.
|
Konfigurasi didasarkan pada berkas config.hjson, yang di mana ditempatkan secara baku di `config/config.hjson`. Untuk mengubah lokasi baku, Anda bisa mengatur variabel lingkungan `LEMMY_CONFIG_LOCATION`.
|
||||||
|
|
||||||
Variabel lingkungan tambahan `LEMMY_DATABASE_URL` juga tersedia, yang bisa digunakan dengan string koneksi PostgreSQL seperti `postgres://lemmy:password@lemmy_db:5432/lemmy`, meneruskan semua detail koneksi sekaligus.
|
Variabel lingkungan tambahan `LEMMY_DATABASE_URL` juga tersedia, yang bisa digunakan dengan string koneksi PostgreSQL seperti `postgres://lemmy:password@lemmy_db:5432/lemmy`, meneruskan semua detail koneksi sekaligus.
|
||||||
|
|
||||||
Jika kontainer Docker tidak digunakan, buat basis data yang disebutkan di atas secara manual dengan menjalankan perintah berikut:
|
Jika kontainer Docker tidak digunakan, buat basis data yang disebutkan di atas secara manual dengan menjalankan perintah berikut:
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ Lemmy menggunakan protokol ActivityPub (standar W3C) untuk mengaktifkan federasi
|
||||||
|
|
||||||
Sama seperti surel, federasi ActivityPub hanya terjadi antar peladen. Jadi jika Anda terdaftar pada `enterprise.lemmy.ml`, Anda hanya terhubung ke API dari `enterprise.lemmy.ml`, sementara peladen mengurus pengiriman dan penerimaan data dari peladen lainnya (mis. `voyager.lemmy.ml`). Keuntungan besar dari pendekatan ini adalah pengguna biasa tidak harus melakukan apa pun untuk menggunakan federasi. Bahkan jika Anda menggunakan Lemmy, kemungkinan besar Anda sudah menggunakannya. Salah satu cara untuk mengonfirmasinya adalah dengan membuka komunitas atau profil pengguna. Jika Anda berada di `enterprise.lemmy.ml` dan Anda melihat pengguna seperti `@nutomic@voyager.lemmy.ml`, atau komunitas seperti `!main@ds9.lemmy.ml`, maka itu berarti Anda sudah terfederasi, artinya mereka menggunakan peladen yang berbeda dari Anda.
|
Sama seperti surel, federasi ActivityPub hanya terjadi antar peladen. Jadi jika Anda terdaftar pada `enterprise.lemmy.ml`, Anda hanya terhubung ke API dari `enterprise.lemmy.ml`, sementara peladen mengurus pengiriman dan penerimaan data dari peladen lainnya (mis. `voyager.lemmy.ml`). Keuntungan besar dari pendekatan ini adalah pengguna biasa tidak harus melakukan apa pun untuk menggunakan federasi. Bahkan jika Anda menggunakan Lemmy, kemungkinan besar Anda sudah menggunakannya. Salah satu cara untuk mengonfirmasinya adalah dengan membuka komunitas atau profil pengguna. Jika Anda berada di `enterprise.lemmy.ml` dan Anda melihat pengguna seperti `@nutomic@voyager.lemmy.ml`, atau komunitas seperti `!main@ds9.lemmy.ml`, maka itu berarti Anda sudah terfederasi, artinya mereka menggunakan peladen yang berbeda dari Anda.
|
||||||
|
|
||||||
Salah satu cara Anda bisa mengambil keuntungan dari federasi adalah dengan membuka peladen lain, seperti `ds9.lemmy.ml` dan jelajahi itu. Jika Anda melihat sebuah komunitas, pos, atau pengguna yang menarik yang Anda ingin berinteraksi dengan mereka, tinggal salin URL-nya dan tempel itu di pencarian dari peladen Anda sendiri. Peladen Anda akan terhubung ke yang disebutkan (menganggap daftar yang diperbolehkan/diblokir memperbolehkannya), dan secara langsung menampilkan konten jarak jauh untuk Anda, sehingga Anda bisa mengikuti sebuah komunitas atau berkomentar di sebuah pos. Berikut adalah beberapa contoh dari pencarian yang bekerja:
|
Salah satu cara Anda bisa mengambil keuntungan dari federasi adalah dengan membuka peladen lain, seperti `ds9.lemmy.ml` dan jelajahi itu. Jika Anda melihat sebuah komunitas, pos, atau pengguna yang menarik yang Anda ingin berinteraksi dengan mereka, tinggal salin URL-nya dan tempel itu di pencarian dari peladen Anda sendiri. Peladen Anda akan terhubung ke yang disebutkan (menganggap daftar yang diperbolehkan/diblokir memperbolehkannya), dan secara langsung menampilkan konten jarak jauh untuk Anda, sehingga Anda bisa mengikuti sebuah komunitas atau berkomentar di sebuah pos. Berikut adalah beberapa contoh dari pencarian yang bekerja:
|
||||||
|
|
||||||
- `!main@lemmy.ml` (Komunitas)
|
- `!main@lemmy.ml` (Komunitas)
|
||||||
- `@nutomic@lemmy.ml` (Pengguna)
|
- `@nutomic@lemmy.ml` (Pengguna)
|
||||||
|
|
|
@ -27,6 +27,7 @@ Untuk mencoba bahwa federasi peladen Anda bekerja dengan benar, jalankan `curl -
|
||||||
## Penyertaan pada daftar peladen di join-lemmy.org
|
## Penyertaan pada daftar peladen di join-lemmy.org
|
||||||
|
|
||||||
Untuk dimasukkan pada daftar peladen Lemmy di [join-lemmy.org](https://join-lemmy.org/instances), Anda harus memenuhi persyaratan berikut:
|
Untuk dimasukkan pada daftar peladen Lemmy di [join-lemmy.org](https://join-lemmy.org/instances), Anda harus memenuhi persyaratan berikut:
|
||||||
|
|
||||||
- [x] Terfederasi dengan paling tidak satu peladen dari daftar
|
- [x] Terfederasi dengan paling tidak satu peladen dari daftar
|
||||||
- [x] Mempunyai deskripsi dan ikon situs
|
- [x] Mempunyai deskripsi dan ikon situs
|
||||||
- [x] Bersabar dan menunggu situs untuk diperbarui, tidak ada jadwal pasti untuk itu
|
- [x] Bersabar dan menunggu situs untuk diperbarui, tidak ada jadwal pasti untuk itu
|
||||||
|
@ -36,6 +37,7 @@ Sementara menunggu, Anda selalu bisa mempromosikan peladen Anda di jejaring sosi
|
||||||
## Selalu terkini
|
## Selalu terkini
|
||||||
|
|
||||||
Anda bisa berlangganan ke umpan RSS GitHub untuk diinformasikan tentang rilis terbaru:
|
Anda bisa berlangganan ke umpan RSS GitHub untuk diinformasikan tentang rilis terbaru:
|
||||||
|
|
||||||
- [lemmy](https://github.com/LemmyNet/lemmy/releases.atom)
|
- [lemmy](https://github.com/LemmyNet/lemmy/releases.atom)
|
||||||
- [lemmy-ui](https://github.com/LemmyNet/lemmy-ui/releases.atom)
|
- [lemmy-ui](https://github.com/LemmyNet/lemmy-ui/releases.atom)
|
||||||
- [lemmy-js-client](https://github.com/LemmyNet/lemmy-js-client/releases.atom)
|
- [lemmy-js-client](https://github.com/LemmyNet/lemmy-js-client/releases.atom)
|
||||||
|
|
|
@ -11,6 +11,7 @@ Instruksi ini ditulis untuk Ubuntu 20.04.
|
||||||
Karena dibuat dari sumber, jadi mungkin akan memakan waktu yang lama, terutama pada perangkat yang lambat. Contohnya, Lemmy v0.12.2 membutuhkan 17 menit untuk dibangun pada VPS inti ganda. Jika Anda lebih suka binari sudah siap, gunakan Docker.
|
Karena dibuat dari sumber, jadi mungkin akan memakan waktu yang lama, terutama pada perangkat yang lambat. Contohnya, Lemmy v0.12.2 membutuhkan 17 menit untuk dibangun pada VPS inti ganda. Jika Anda lebih suka binari sudah siap, gunakan Docker.
|
||||||
|
|
||||||
Susun dan pasang Lemmy, siapkan basis data:
|
Susun dan pasang Lemmy, siapkan basis data:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt install pkg-config libssl-dev libpq-dev cargo postgresql
|
apt install pkg-config libssl-dev libpq-dev cargo postgresql
|
||||||
# pasang rilis terbaru, anda juga bisa menspesifikkannya dengan --version
|
# pasang rilis terbaru, anda juga bisa menspesifikkannya dengan --version
|
||||||
|
@ -24,7 +25,8 @@ sudo -iu postgres psql -c "CREATE DATABASE lemmy WITH OWNER lemmy;"
|
||||||
adduser lemmy --system --disabled-login --no-create-home --group
|
adduser lemmy --system --disabled-login --no-create-home --group
|
||||||
```
|
```
|
||||||
|
|
||||||
Konfigurasi minimal Lemmy, taruh ini di `/etc/lemmy/lemmy.hjson` (lihat di [sini](https://github.com/LemmyNet/lemmy/blob/main/config/config.hjson) untuk pilihan konfigurasi lebih banyak). Jalankan `chown lemmy:lemmy /etc/lemmy/ -R` untuk mengatur pemilik yang benar.
|
Konfigurasi minimal Lemmy, taruh ini di `/etc/lemmy/lemmy.hjson` (lihat di [sini](https://github.com/LemmyNet/lemmy/blob/main/config/config.hjson) untuk pilihan konfigurasi lebih banyak). Jalankan `chown lemmy:lemmy /etc/lemmy/ -R` untuk mengatur pemilik yang benar.
|
||||||
|
|
||||||
```hjson
|
```hjson
|
||||||
{
|
{
|
||||||
database: {
|
database: {
|
||||||
|
@ -39,7 +41,8 @@ Konfigurasi minimal Lemmy, taruh ini di `/etc/lemmy/lemmy.hjson` (lihat di [sini
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Berkas unit systemd, sehingga Lemmy bisa secara otomatis dimulai dan diberhentikan, log dikelola lewat journalctl dll. Taruh berkas ini ke /etc/systemd/system/lemmy.service, kemudian jalankan `systemctl enable lemmy` dan `systemctl start lemmy`.
|
Berkas unit systemd, sehingga Lemmy bisa secara otomatis dimulai dan diberhentikan, log dikelola lewat journalctl dll. Taruh berkas ini ke /etc/systemd/system/lemmy.service, kemudian jalankan `systemctl enable lemmy` dan `systemctl start lemmy`.
|
||||||
|
|
||||||
```
|
```
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Lemmy - A link aggregator for the fediverse
|
Description=Lemmy - A link aggregator for the fediverse
|
||||||
|
@ -61,11 +64,12 @@ NoNewPrivileges=true
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
|
|
||||||
Jika Anda melakukan semuanya dengan benar, log Lemmy dari `journalctl -u lemmy` akan menampilkan "Starting http server at 127.0.0.1:8536". Anda juga bisa menjalankan `curl localhost:8536/api/v3/site` yang seharusnya mengembalikan respons yang berhasil , seperti `{"site_view":null,"admins":[],"banned":[],"online":0,"version":"unknown version","my_user":null,"federated_instances":null}`.
|
Jika Anda melakukan semuanya dengan benar, log Lemmy dari `journalctl -u lemmy` akan menampilkan "Starting http server at 127.0.0.1:8536". Anda juga bisa menjalankan `curl localhost:8536/api/v3/site` yang seharusnya mengembalikan respons yang berhasil , seperti `{"site_view":null,"admins":[],"banned":[],"online":0,"version":"unknown version","my_user":null,"federated_instances":null}`.
|
||||||
|
|
||||||
### Pasang lemmy-ui (antarmuka web)
|
### Pasang lemmy-ui (antarmuka web)
|
||||||
|
|
||||||
Pasang dependensi (nodejs dan yarn di repositori Ubuntu 20.04 terlalu tua)
|
Pasang dependensi (nodejs dan yarn di repositori Ubuntu 20.04 terlalu tua)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# https://classic.yarnpkg.com/en/docs/install/#debian-stable
|
# https://classic.yarnpkg.com/en/docs/install/#debian-stable
|
||||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||||||
|
@ -75,7 +79,8 @@ curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
||||||
sudo apt install nodejs yarn
|
sudo apt install nodejs yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
Klon repositori git, checkout versi yang Anda inginkan (dalam contoh ini adalah 0.12.2) dan susun itu.
|
Klon repositori git, checkout versi yang Anda inginkan (dalam contoh ini adalah 0.12.2) dan susun itu.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir /var/lib/lemmy-ui
|
mkdir /var/lib/lemmy-ui
|
||||||
cd /var/lib/lemmy-ui
|
cd /var/lib/lemmy-ui
|
||||||
|
@ -89,7 +94,8 @@ yarn build:prod
|
||||||
exit
|
exit
|
||||||
```
|
```
|
||||||
|
|
||||||
Tambahkan berkas unit systemd yang lain, kali ini untuk lemmy-ui. Anda perlu mengganti example.com dengan domain Anda. Taruh berkas di `/etc/systemd/system/lemmy-ui.service`, kemudian jalankan `systemctl enable lemmy-ui` dan `systemctl start lemmy-ui`.
|
Tambahkan berkas unit systemd yang lain, kali ini untuk lemmy-ui. Anda perlu mengganti example.com dengan domain Anda. Taruh berkas di `/etc/systemd/system/lemmy-ui.service`, kemudian jalankan `systemctl enable lemmy-ui` dan `systemctl start lemmy-ui`.
|
||||||
|
|
||||||
```
|
```
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Lemmy UI - Web frontend for Lemmy
|
Description=Lemmy UI - Web frontend for Lemmy
|
||||||
|
@ -114,26 +120,30 @@ NoNewPrivileges=true
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
|
|
||||||
Jika semuanya benar, perintah `curl -I localhost:1234` seharusnya menampilkan `200 OK` di bagian atas.
|
Jika semuanya benar, perintah `curl -I localhost:1234` seharusnya menampilkan `200 OK` di bagian atas.
|
||||||
|
|
||||||
### Mengonfigurasi proksi-balik dan TLS
|
### Mengonfigurasi proksi-balik dan TLS
|
||||||
|
|
||||||
Pasang dependensi
|
Pasang dependensi
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt install nginx certbot python3-certbot-nginx
|
apt install nginx certbot python3-certbot-nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
Minta sertifikat TLS Let's Encrypt (ikuti saja instruksinya)
|
Minta sertifikat TLS Let's Encrypt (ikuti saja instruksinya)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
certbot certonly --nginx
|
certbot certonly --nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
Sertifikat Let's Encrypt akan diperbarui secara otomatis, jadi tambahkan baris di bawah ini ke crontab Anda, dengan menjalankan `sudo crontab -e`. Ganti example.com dengan domain Anda.
|
Sertifikat Let's Encrypt akan diperbarui secara otomatis, jadi tambahkan baris di bawah ini ke crontab Anda, dengan menjalankan `sudo crontab -e`. Ganti example.com dengan domain Anda.
|
||||||
|
|
||||||
```
|
```
|
||||||
@daily certbot certonly --nginx --cert-name example.com -d example.com --deploy-hook 'nginx -s reload'
|
@daily certbot certonly --nginx --cert-name example.com -d example.com --deploy-hook 'nginx -s reload'
|
||||||
```
|
```
|
||||||
|
|
||||||
Akhirnya, tambahkan konfigurasi nginx. Setelah mengunduh, Anda perlu mengubah beberapa variabel di berkas.
|
Akhirnya, tambahkan konfigurasi nginx. Setelah mengunduh, Anda perlu mengubah beberapa variabel di berkas.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/nginx.conf \
|
curl https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/nginx.conf \
|
||||||
--output /etc/nginx/sites-enabled/lemmy.conf
|
--output /etc/nginx/sites-enabled/lemmy.conf
|
||||||
|
@ -144,7 +154,7 @@ sed -i -e 's/{{lemmy_ui_port}}/1234/g' /etc/nginx/sites-enabled/lemmy.conf
|
||||||
nginx -s reload
|
nginx -s reload
|
||||||
```
|
```
|
||||||
|
|
||||||
Sekarang buka domain Lemmy Anda di peramban, dan itu seharusnya menampilkan sebuah layar konfigurasi. Gunakan untuk membuat pengguna admin pertama dan komunitas baku.
|
Sekarang buka domain Lemmy Anda di peramban, dan itu seharusnya menampilkan sebuah layar konfigurasi. Gunakan untuk membuat pengguna admin pertama dan komunitas baku.
|
||||||
|
|
||||||
### Pict-rs (untuk hos gambar, opsional)
|
### Pict-rs (untuk hos gambar, opsional)
|
||||||
|
|
||||||
|
@ -157,7 +167,7 @@ mkdir /var/lib/pictrs-source
|
||||||
cd /var/lib/pictrs
|
cd /var/lib/pictrs
|
||||||
git clone https://git.asonix.dog/asonix/pict-rs.git .
|
git clone https://git.asonix.dog/asonix/pict-rs.git .
|
||||||
# periksa docker-compose.yml untuk versi pict-rs yang digunakan oleh lemmy
|
# periksa docker-compose.yml untuk versi pict-rs yang digunakan oleh lemmy
|
||||||
# https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/docker-compose.yml#L40
|
# https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/docker-compose.yml#L40
|
||||||
git checkout v0.2.6-r2
|
git checkout v0.2.6-r2
|
||||||
# atau tinggal tambahkan folder bin ke $PATH anda
|
# atau tinggal tambahkan folder bin ke $PATH anda
|
||||||
$HOME/.cargo/bin/cargo build --release
|
$HOME/.cargo/bin/cargo build --release
|
||||||
|
@ -167,7 +177,8 @@ mkdir /var/lib/pictrs
|
||||||
chown pictrs:pictrs /var/lib/pictrs
|
chown pictrs:pictrs /var/lib/pictrs
|
||||||
```
|
```
|
||||||
|
|
||||||
Pict-rs memerlukan perintah `magick` yang ada di ImageMagick versi 7, tapi Ubuntu 20.04 hanya ada ImageMagick 6. Jadi Anda harus memasangnya secara manual, seperti lewat [situs web resmi](https://imagemagick.org/script/download.php#linux).
|
Pict-rs memerlukan perintah `magick` yang ada di ImageMagick versi 7, tapi Ubuntu 20.04 hanya ada ImageMagick 6. Jadi Anda harus memasangnya secara manual, seperti lewat [situs web resmi](https://imagemagick.org/script/download.php#linux).
|
||||||
|
|
||||||
```
|
```
|
||||||
wget https://download.imagemagick.org/ImageMagick/download/binaries/magick
|
wget https://download.imagemagick.org/ImageMagick/download/binaries/magick
|
||||||
# bandingkan hash dengan "message digest" di halaman resmi yang ditautkan di atas
|
# bandingkan hash dengan "message digest" di halaman resmi yang ditautkan di atas
|
||||||
|
@ -177,6 +188,7 @@ chmod 755 /usr/bin/magick
|
||||||
```
|
```
|
||||||
|
|
||||||
Seperti sebelumnya, letakkan konfigurasi di bawah ini ke `/etc/systemd/system/pictrs.service`, kemudian jalankan `systemctl enable pictrs` dan `systemctl start pictrs`.
|
Seperti sebelumnya, letakkan konfigurasi di bawah ini ke `/etc/systemd/system/pictrs.service`, kemudian jalankan `systemctl enable pictrs` dan `systemctl start pictrs`.
|
||||||
|
|
||||||
```
|
```
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=pict-rs - A simple image host
|
Description=pict-rs - A simple image host
|
||||||
|
@ -193,9 +205,9 @@ Restart=on-failure
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
|
|
||||||
Jika berjalan dengan benar, `curl 127.0.0.1:8080` seharusnya tidak menampilkan apa-apa (terutama tidak ada galat).
|
Jika berjalan dengan benar, `curl 127.0.0.1:8080` seharusnya tidak menampilkan apa-apa (terutama tidak ada galat).
|
||||||
|
|
||||||
Sekarang tambahkan baris `pictrs_url: "http://127.0.0.1:8080"` ke `/etc/lemmy/lemmy.hjson` sehingga Lemmy mengetahui bagaimana menjangkau Pict-rs. Kemudian mulai ulang Lemmy dengan `systemctl restart lemmy` dan pengunggahan gambar seharusnya bisa bekerja.
|
Sekarang tambahkan baris `pictrs_url: "http://127.0.0.1:8080"` ke `/etc/lemmy/lemmy.hjson` sehingga Lemmy mengetahui bagaimana menjangkau Pict-rs. Kemudian mulai ulang Lemmy dengan `systemctl restart lemmy` dan pengunggahan gambar seharusnya bisa bekerja.
|
||||||
|
|
||||||
## Meningkatkan/Memperbarui
|
## Meningkatkan/Memperbarui
|
||||||
|
|
||||||
|
@ -230,7 +242,7 @@ cd /var/lib/pictrs-source
|
||||||
git checkout main
|
git checkout main
|
||||||
git pull --tags
|
git pull --tags
|
||||||
# periksa docker-compose.yml untuk versi pict-rs yang digunakan oleh lemmy
|
# periksa docker-compose.yml untuk versi pict-rs yang digunakan oleh lemmy
|
||||||
# https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/docker-compose.yml#L40
|
# https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/docker-compose.yml#L40
|
||||||
git checkout v0.2.6-r2
|
git checkout v0.2.6-r2
|
||||||
# atau tinggal tambahkan folder bin ke $PATH anda
|
# atau tinggal tambahkan folder bin ke $PATH anda
|
||||||
$HOME/.cargo/bin/cargo build --release
|
$HOME/.cargo/bin/cargo build --release
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
# Pemasangan Menggunakan Ansible
|
# Pemasangan Menggunakan Ansible
|
||||||
|
|
||||||
Ikuti instruksi di repositori [Lemmy-Ansible](https://github.com/LemmyNet/lemmy-ansible).
|
Ikuti instruksi di repositori [Lemmy-Ansible](https://github.com/LemmyNet/lemmy-ansible).
|
||||||
|
|
|
@ -26,7 +26,7 @@ Buka `docker-compose.yml` Anda dan pastikan `LEMMY_EXTERNAL_HOST` untuk `lemmy-u
|
||||||
|
|
||||||
Jika Anda ingin kata sandi basis data yang berbeda, Anda harus menggantinya juga di `docker-compose.yml` **sebelum** pemulaian pertama Anda.
|
Jika Anda ingin kata sandi basis data yang berbeda, Anda harus menggantinya juga di `docker-compose.yml` **sebelum** pemulaian pertama Anda.
|
||||||
|
|
||||||
Setelah ini, coba lihat ke [berkas konfigurasi](configuration.md) bernama `lemmy.hjson` dan coba sesuaikan, khususnya nama hos dan mungkin kata sandi basis data. Kemudian jalankan:
|
Setelah ini, coba lihat ke [berkas konfigurasi](configuration.md) bernama `lemmy.hjson` dan coba sesuaikan, khususnya nama hos dan mungkin kata sandi basis data. Kemudian jalankan:
|
||||||
|
|
||||||
`docker-compose up -d`
|
`docker-compose up -d`
|
||||||
|
|
||||||
|
|
|
@ -8,20 +8,20 @@ Ini mengadung definisi infrastruktur yang diperlukan untuk memasang [Lemmy](http
|
||||||
|
|
||||||
### Termasuk:
|
### Termasuk:
|
||||||
|
|
||||||
* Kluster fargate ECS
|
- Kluster fargate ECS
|
||||||
* Lemmy-UI
|
- Lemmy-UI
|
||||||
* Lemmy
|
- Lemmy
|
||||||
* Pictrs
|
- Pictrs
|
||||||
* CDN CloudFront
|
- CDN CloudFront
|
||||||
* Penyimpanan EFS untuk pengunggahan gambar
|
- Penyimpanan EFS untuk pengunggahan gambar
|
||||||
* Basis Data Postgres Aurora Tanpa Peladen
|
- Basis Data Postgres Aurora Tanpa Peladen
|
||||||
* Hos VPC Bastion
|
- Hos VPC Bastion
|
||||||
* Penyeimbang beban untuk Lemmy
|
- Penyeimbang beban untuk Lemmy
|
||||||
* Rekaman DNS untuk situs Anda
|
- Rekaman DNS untuk situs Anda
|
||||||
|
|
||||||
## Mulai cepat
|
## Mulai cepat
|
||||||
|
|
||||||
Klon [Lemmy-CDK]( https://github.com/jetbridge/lemmy-cdk).
|
Klon [Lemmy-CDK](https://github.com/jetbridge/lemmy-cdk).
|
||||||
|
|
||||||
Klon [Lemmy](https://github.com/LemmyNet/lemmy) dan [Lemmy-UI](https://github.com/LemmyNet/lemmy-ui) ke direktori di atas ini.
|
Klon [Lemmy](https://github.com/LemmyNet/lemmy) dan [Lemmy-UI](https://github.com/LemmyNet/lemmy-ui) ke direktori di atas ini.
|
||||||
|
|
||||||
|
@ -40,13 +40,14 @@ cdk deploy
|
||||||
```
|
```
|
||||||
|
|
||||||
## Harga
|
## Harga
|
||||||
Ini *bukan* cara termurah untuk menjalankan Lemmy. Basis Data Aurora Tanpa Peladen bisa membebani Anda ~$90/bulan jika tidak pergi tidur.
|
|
||||||
|
Ini _bukan_ cara termurah untuk menjalankan Lemmy. Basis Data Aurora Tanpa Peladen bisa membebani Anda ~$90/bulan jika tidak pergi tidur.
|
||||||
|
|
||||||
## Perintah CDK yang Berguna
|
## Perintah CDK yang Berguna
|
||||||
|
|
||||||
* `npm run build` susun typescript ke js
|
- `npm run build` susun typescript ke js
|
||||||
* `npm run watch` lacak perubahan dan susun
|
- `npm run watch` lacak perubahan dan susun
|
||||||
* `npm run test` laksanakan uji unit jest
|
- `npm run test` laksanakan uji unit jest
|
||||||
* `cdk deploy` jalankan tumpukan (stack) ini ke akun/wilayah AWS baku Anda
|
- `cdk deploy` jalankan tumpukan (stack) ini ke akun/wilayah AWS baku Anda
|
||||||
* `cdk diff` bandingkan tumpukan yang jalan dengan kondisi saat ini
|
- `cdk diff` bandingkan tumpukan yang jalan dengan kondisi saat ini
|
||||||
* `cdk synth` memancarkan templat CloudFormation yang disintesis
|
- `cdk synth` memancarkan templat CloudFormation yang disintesis
|
||||||
|
|
|
@ -39,6 +39,7 @@ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
### Peladen lain tidak bisa mengambil konten lokal (komunitas, pos, dll.)
|
### Peladen lain tidak bisa mengambil konten lokal (komunitas, pos, dll.)
|
||||||
|
|
||||||
Proksi-balik Anda (mis. nginx) perlu meneruskan permintaan dengan tajuk `Accept: application/activity+json` ke bagian-belakang. Itu ditangani oleh baris berikut:
|
Proksi-balik Anda (mis. nginx) perlu meneruskan permintaan dengan tajuk `Accept: application/activity+json` ke bagian-belakang. Itu ditangani oleh baris berikut:
|
||||||
|
|
||||||
```
|
```
|
||||||
set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}";
|
set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}";
|
||||||
if ($http_accept = "application/activity+json") {
|
if ($http_accept = "application/activity+json") {
|
||||||
|
@ -51,12 +52,14 @@ proxy_pass $proxpass;
|
||||||
```
|
```
|
||||||
|
|
||||||
Anda bisa memeriksa bahwa itu bekerja dengan benar dengan menjalankan perintah berikut, semuanya seharusnya mengembalikan JSON yang valid:
|
Anda bisa memeriksa bahwa itu bekerja dengan benar dengan menjalankan perintah berikut, semuanya seharusnya mengembalikan JSON yang valid:
|
||||||
|
|
||||||
```
|
```
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/u/some-local-user
|
curl -H "Accept: application/activity+json" https://your-instance.com/u/some-local-user
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # id dari sebuah pos lokal
|
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # id dari sebuah pos lokal
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # id dari sebuah komentar lokal
|
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # id dari sebuah komentar lokal
|
||||||
```
|
```
|
||||||
|
|
||||||
### Mengambil konten jarak jauh bekerja, tapi mengepos/berkomentar di komunitas jarak jauh gagal
|
### Mengambil konten jarak jauh bekerja, tapi mengepos/berkomentar di komunitas jarak jauh gagal
|
||||||
|
|
||||||
Periksa bahwa [federasi dibolehkan pada kedua belah peladen](../federation/administration.md#instance-allowlist-and-blocklist).
|
Periksa bahwa [federasi dibolehkan pada kedua belah peladen](../federation/administration.md#instance-allowlist-and-blocklist).
|
||||||
|
|
|
@ -20,7 +20,7 @@ Langkah selanjutnya adalah membangun _image_ Docker dari antarmuka Anda. Jika An
|
||||||
- LEMMY_INTERNAL_HOST=lemmy:8536
|
- LEMMY_INTERNAL_HOST=lemmy:8536
|
||||||
- LEMMY_EXTERNAL_HOST=localhost:8536
|
- LEMMY_EXTERNAL_HOST=localhost:8536
|
||||||
- LEMMY_HTTPS=false
|
- LEMMY_HTTPS=false
|
||||||
depends_on:
|
depends_on:
|
||||||
- lemmy
|
- lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -45,17 +45,17 @@ Lemmy melakukan pembatasan untuk banyak tindakan berdasarkan IP klien. Tetapi, j
|
||||||
Berikut adalah contoh potongan untuk NodeJS:
|
Berikut adalah contoh potongan untuk NodeJS:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
function setForwardedHeaders(
|
function setForwardedHeaders(headers: IncomingHttpHeaders): {
|
||||||
headers: IncomingHttpHeaders
|
[key: string]: string,
|
||||||
): { [key: string]: string } {
|
} {
|
||||||
let out = {
|
let out = {
|
||||||
host: headers.host,
|
host: headers.host,
|
||||||
};
|
};
|
||||||
if (headers['x-real-ip']) {
|
if (headers["x-real-ip"]) {
|
||||||
out['x-real-ip'] = headers['x-real-ip'];
|
out["x-real-ip"] = headers["x-real-ip"];
|
||||||
}
|
}
|
||||||
if (headers['x-forwarded-for']) {
|
if (headers["x-forwarded-for"]) {
|
||||||
out['x-forwarded-for'] = headers['x-forwarded-for'];
|
out["x-forwarded-for"] = headers["x-forwarded-for"];
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
|
|
|
@ -6,11 +6,11 @@ Dokumen ini mengandung ekstra yang tidak ada di [dokumentasi API](/api).
|
||||||
|
|
||||||
- [Contoh Curl](#contoh-curl)
|
- [Contoh Curl](#contoh-curl)
|
||||||
- [Fitur khusus API HTTP](#fitur-khusus-api-http)
|
- [Fitur khusus API HTTP](#fitur-khusus-api-http)
|
||||||
* [Umpan RSS/Atom](#umpan-rssatom)
|
- [Umpan RSS/Atom](#umpan-rssatom)
|
||||||
* [Gambar](#gambar)
|
- [Gambar](#gambar)
|
||||||
+ [Buat (permintaan)](#buat-permintaan)
|
- [Buat (permintaan)](#buat-permintaan)
|
||||||
+ [Buat (respons)](#buat-respons)
|
- [Buat (respons)](#buat-respons)
|
||||||
+ [Hapus](#hapus)
|
- [Hapus](#hapus)
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
@ -55,13 +55,13 @@ Lemmy meneruskan permintaan gambar ke Pictrs yang berjalan di lokal.
|
||||||
|
|
||||||
`GET /pictrs/image/{filename}?format={webp, jpg, ...}&thumbnail={96}`
|
`GET /pictrs/image/{filename}?format={webp, jpg, ...}&thumbnail={96}`
|
||||||
|
|
||||||
*Format dan keluku opsional.*
|
_Format dan keluku opsional._
|
||||||
|
|
||||||
#### Buat (Permintaan)
|
#### Buat (Permintaan)
|
||||||
|
|
||||||
Konten yang diunggah harus merupakan data format/multi-bagian dengan _array_ gambar yang terletak di dalam kunci images[].
|
Konten yang diunggah harus merupakan data format/multi-bagian dengan _array_ gambar yang terletak di dalam kunci images[].
|
||||||
|
|
||||||
`POST /pictrs/image`
|
`POST /pictrs/image`
|
||||||
|
|
||||||
#### Buat (respons)
|
#### Buat (respons)
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ Informasi tentang berkontribusi ke Lemmy, entah itu penerjemahan, menguji, pende
|
||||||
|
|
||||||
Periksa [Weblate Lemmy](https://weblate.yerbamate.ml/projects/lemmy/) untuk penerjemahan. Anda bisa juga membantu dengan [menerjemahkan dokumentasi ini](https://github.com/LemmyNet/lemmy-docs#adding-a-new-language).
|
Periksa [Weblate Lemmy](https://weblate.yerbamate.ml/projects/lemmy/) untuk penerjemahan. Anda bisa juga membantu dengan [menerjemahkan dokumentasi ini](https://github.com/LemmyNet/lemmy-docs#adding-a-new-language).
|
||||||
|
|
||||||
|
|
||||||
## Arsitektur
|
## Arsitektur
|
||||||
|
|
||||||
### Antarmuka
|
### Antarmuka
|
||||||
|
@ -25,13 +24,13 @@ Periksa [Weblate Lemmy](https://weblate.yerbamate.ml/projects/lemmy/) untuk pene
|
||||||
### Bagian-Belakang
|
### Bagian-Belakang
|
||||||
|
|
||||||
- Bagian-belakang dengan `Rust`, menggunakan `Diesel` dan `Actix`.
|
- Bagian-belakang dengan `Rust`, menggunakan `Diesel` dan `Actix`.
|
||||||
- Kode peladen dibagi ke bagian utama di `src`. Mereka termasuk:
|
- Kode peladen dibagi ke bagian utama di `src`. Mereka termasuk:
|
||||||
- `db` - Aksi basis data tingkat rendah.
|
- `db` - Aksi basis data tingkat rendah.
|
||||||
- Penambahan basis data dilakukan menggunakan migrasi Diesel. Jalankan `diesel migration generate xxxxx` untuk menambahkan sesuatu yang baru.
|
- Penambahan basis data dilakukan menggunakan migrasi Diesel. Jalankan `diesel migration generate xxxxx` untuk menambahkan sesuatu yang baru.
|
||||||
- `api` - Interaksi pengguna tingkat tinggi (hal seperti `CreateComment`)
|
- `api` - Interaksi pengguna tingkat tinggi (hal seperti `CreateComment`)
|
||||||
- `routes` - Endpoint peladen.
|
- `routes` - Endpoint peladen.
|
||||||
- `apub` - Konversi activitypub.
|
- `apub` - Konversi activitypub.
|
||||||
- `websocket` - Membuat peladen websocket.
|
- `websocket` - Membuat peladen websocket.
|
||||||
|
|
||||||
## Linting/Pemformatan
|
## Linting/Pemformatan
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Pengembangan Docker
|
# Pengembangan Docker
|
||||||
|
|
||||||
## Dependensi
|
## Dependensi
|
||||||
|
|
||||||
### Distro berbasis Debian
|
### Distro berbasis Debian
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -26,9 +27,10 @@ cd docker/dev
|
||||||
|
|
||||||
dan pergi ke http://localhost:1236
|
dan pergi ke http://localhost:1236
|
||||||
|
|
||||||
*Catatan: banyak fitur (seperti dokumen dan gambar) tidak akan berfungsi tanpa menggunakan profil nginx seperti itu di `ansible/templates/nginx.conf`.
|
\*Catatan: banyak fitur (seperti dokumen dan gambar) tidak akan berfungsi tanpa menggunakan profil nginx seperti itu di `ansible/templates/nginx.conf`.
|
||||||
|
|
||||||
Untuk mempercepat pengompilasian Docker, tambahkan yang di bawah ini ke `/etc/docker/daemon.json` dan mulai ulang Docker.
|
Untuk mempercepat pengompilasian Docker, tambahkan yang di bawah ini ke `/etc/docker/daemon.json` dan mulai ulang Docker.
|
||||||
|
|
||||||
```
|
```
|
||||||
{
|
{
|
||||||
"features": {
|
"features": {
|
||||||
|
|
|
@ -2,26 +2,27 @@
|
||||||
|
|
||||||
## Menjalankan secara lokal
|
## Menjalankan secara lokal
|
||||||
|
|
||||||
Pasang dependensi yang dijelaskan di [pengembangan Docker](docker_development.md). Kemudian, jalankan berikut
|
Pasang dependensi yang dijelaskan di [pengembangan Docker](docker_development.md). Kemudian, jalankan berikut
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd docker/federation
|
cd docker/federation
|
||||||
./start-local-instances.bash
|
./start-local-instances.bash
|
||||||
```
|
```
|
||||||
|
|
||||||
Pengujian federasi membangun lima peladen:
|
Pengujian federasi membangun lima peladen:
|
||||||
|
|
||||||
Peladen | Nama Pengguna | Lokasi | Catatan
|
| Peladen | Nama Pengguna | Lokasi | Catatan |
|
||||||
--- | --- | --- | ---
|
| ------------- | ------------- | --------------------------------------- | ----------------------------------------------- |
|
||||||
lemmy-alpha | lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540) | terfederasi dengan seluruh peladen lainnya
|
| lemmy-alpha | lemmy_alpha | [127.0.0.1:8540](http://127.0.0.1:8540) | terfederasi dengan seluruh peladen lainnya |
|
||||||
lemmy-beta | lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550) | terfederasi dengan seluruh peladen lainnya
|
| lemmy-beta | lemmy_beta | [127.0.0.1:8550](http://127.0.0.1:8550) | terfederasi dengan seluruh peladen lainnya |
|
||||||
lemmy-gamma | lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560) | terfederasi dengan seluruh peladen lainnya
|
| lemmy-gamma | lemmy_gamma | [127.0.0.1:8560](http://127.0.0.1:8560) | terfederasi dengan seluruh peladen lainnya |
|
||||||
lemmy-delta | lemmy_delta | [127.0.0.1:8570](http://127.0.0.1:8570) | hanya memperbolehkan federasi dengan lemmy-beta
|
| lemmy-delta | lemmy_delta | [127.0.0.1:8570](http://127.0.0.1:8570) | hanya memperbolehkan federasi dengan lemmy-beta |
|
||||||
lemmy-epsilon | lemmy_epsilon | [127.0.0.1:8580](http://127.0.0.1:8580) | menggunakan daftar-hitam, memblokir lemmy-alpha
|
| lemmy-epsilon | lemmy_epsilon | [127.0.0.1:8580](http://127.0.0.1:8580) | menggunakan daftar-hitam, memblokir lemmy-alpha |
|
||||||
|
|
||||||
Anda bisa masuk ke setiap itu dengan nama peladen dan `lemmy` sebagai kata sandinya, misal (`lemmy_alpha`, `lemmy`).
|
Anda bisa masuk ke setiap itu dengan nama peladen dan `lemmy` sebagai kata sandinya, misal (`lemmy_alpha`, `lemmy`).
|
||||||
|
|
||||||
Untuk memulai federasi antar peladen, kunjungi salah satu dari itu dan cari satu pengguna, komunitas, atau pos, seperti ini. Mohon dicatat bahwa bagian-belakang Lemmy berjalan di porta yang berbeda dari antarmuka, jadi Anda harus menambahkan angka porta di bilah URL dengan satu.
|
Untuk memulai federasi antar peladen, kunjungi salah satu dari itu dan cari satu pengguna, komunitas, atau pos, seperti ini. Mohon dicatat bahwa bagian-belakang Lemmy berjalan di porta yang berbeda dari antarmuka, jadi Anda harus menambahkan angka porta di bilah URL dengan satu.
|
||||||
|
|
||||||
- `!main@lemmy-alpha:8541`
|
- `!main@lemmy-alpha:8541`
|
||||||
- `http://lemmy-beta:8551/post/3`
|
- `http://lemmy-beta:8551/post/3`
|
||||||
- `@lemmy-gamma@lemmy-gamma:8561`
|
- `@lemmy-gamma@lemmy-gamma:8561`
|
||||||
|
@ -34,7 +35,7 @@ Kontainer Firefox merupakan cara terbaik untuk menguji interaksi mereka.
|
||||||
|
|
||||||
Ikuti instruksi pemasangan normal, entah menggunakan [Ansible](../administration/install_ansible.md) atau [secara manual](../administration/install_docker.md). Kemudian, ganti baris `image: dessalines/lemmy:v0.x.x` di `/lemmy/docker-compose.yml` dengan `image: dessalines/lemmy:federation`. Tambah dan konfigurasi [blok federasi ini](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson#L64) ke `lemmy.hjson` Anda.
|
Ikuti instruksi pemasangan normal, entah menggunakan [Ansible](../administration/install_ansible.md) atau [secara manual](../administration/install_docker.md). Kemudian, ganti baris `image: dessalines/lemmy:v0.x.x` di `/lemmy/docker-compose.yml` dengan `image: dessalines/lemmy:federation`. Tambah dan konfigurasi [blok federasi ini](https://github.com/lemmynet/lemmy/blob/main/config/config.hjson#L64) ke `lemmy.hjson` Anda.
|
||||||
|
|
||||||
Setelah itu, dan kapan pun yang Anda inginkan untuk memperbarui ke versi terbaru, jalankan perintah ini di peladen:
|
Setelah itu, dan kapan pun yang Anda inginkan untuk memperbarui ke versi terbaru, jalankan perintah ini di peladen:
|
||||||
|
|
||||||
```
|
```
|
||||||
cd /lemmy/
|
cd /lemmy/
|
||||||
|
@ -48,4 +49,4 @@ sudo docker-compose up -d
|
||||||
- check_is_apub_valid : Memastikan bahwa itu ada di daftar peladen yang diperbolehkan
|
- check_is_apub_valid : Memastikan bahwa itu ada di daftar peladen yang diperbolehkan
|
||||||
- Pemeriksaan tingkat rendah : Untuk memastikan bahwa pengguna bisa membuat/memperbarui/menghapus pos di peladen yang sama dengan pos tersebut
|
- Pemeriksaan tingkat rendah : Untuk memastikan bahwa pengguna bisa membuat/memperbarui/menghapus pos di peladen yang sama dengan pos tersebut
|
||||||
|
|
||||||
Untuk poin terakhir, harap dicatat bahwa kita *tidak* memeriksa apakah aktor yang mengirimkan aktifitas membuat sebuah pos sebenarnya sama dengan pembuat pos, atau pengguna yang menghapus pos merupakan moderator/admin. Hal tersebut diperiksa oleh kode API, dan merupakan tanggung jawab setiap peladen untuk memeriksa izin pengguna. Ini tidak meninggalkan vektor serangan apa pun, karena sebagai pengguna peladen normal tidak bisa melakukan aksi yang melanggar peraturan API. Satu-satunya yang bisa melakukannya adalah admin (dan perangkat lunak yang digunakan oleh admin). Tapi admin bisa melakukan apa pun di peladen, termasuk mengirim aktifitas dari akun pengguna lainnya. Jadi kita tidak akan mendapatkan keamanan apa pun dengan memeriksa izin mod dan serupa.
|
Untuk poin terakhir, harap dicatat bahwa kita _tidak_ memeriksa apakah aktor yang mengirimkan aktifitas membuat sebuah pos sebenarnya sama dengan pembuat pos, atau pengguna yang menghapus pos merupakan moderator/admin. Hal tersebut diperiksa oleh kode API, dan merupakan tanggung jawab setiap peladen untuk memeriksa izin pengguna. Ini tidak meninggalkan vektor serangan apa pun, karena sebagai pengguna peladen normal tidak bisa melakukan aksi yang melanggar peraturan API. Satu-satunya yang bisa melakukannya adalah admin (dan perangkat lunak yang digunakan oleh admin). Tapi admin bisa melakukan apa pun di peladen, termasuk mengirim aktifitas dari akun pengguna lainnya. Jadi kita tidak akan mendapatkan keamanan apa pun dengan memeriksa izin mod dan serupa.
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
# Pengembangan Lokal
|
# Pengembangan Lokal
|
||||||
|
|
||||||
### Pasang persyaratan penyusunan
|
### Pasang persyaratan penyusunan
|
||||||
|
|
||||||
Pasang Rust menggunakan [opsi yang direkomendasikan di rust-lang.org](https://www.rust-lang.org/tools/install) (rustup).
|
Pasang Rust menggunakan [opsi yang direkomendasikan di rust-lang.org](https://www.rust-lang.org/tools/install) (rustup).
|
||||||
|
|
||||||
#### Distro berbasis Debian
|
#### Distro berbasis Debian
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt install git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
|
sudo apt install git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
|
||||||
# pasang yarn
|
# pasang yarn
|
||||||
|
@ -13,6 +15,7 @@ sudo apt update && sudo apt install yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Distro berbasis Arch
|
#### Distro berbasis Arch
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo pacman -S git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
|
sudo pacman -S git cargo libssl-dev pkg-config libpq-dev yarn curl gnupg2 espeak
|
||||||
# pasang yarn (stabil)
|
# pasang yarn (stabil)
|
||||||
|
@ -20,6 +23,7 @@ curl -o- -L https://yarnpkg.com/install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
#### macOS
|
#### macOS
|
||||||
|
|
||||||
Pasang [Homebrew](https://brew.sh/) jika Anda belum memasangnya.
|
Pasang [Homebrew](https://brew.sh/) jika Anda belum memasangnya.
|
||||||
|
|
||||||
Terakhir, pasang Node dan Yarn.
|
Terakhir, pasang Node dan Yarn.
|
||||||
|
@ -29,6 +33,7 @@ brew install node yarn
|
||||||
```
|
```
|
||||||
|
|
||||||
### Dapatkan kode sumber bagian-belakang
|
### Dapatkan kode sumber bagian-belakang
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/LemmyNet/lemmy.git
|
git clone https://github.com/LemmyNet/lemmy.git
|
||||||
# atau alternatif dari gitea
|
# atau alternatif dari gitea
|
||||||
|
@ -36,18 +41,22 @@ git clone https://github.com/LemmyNet/lemmy.git
|
||||||
```
|
```
|
||||||
|
|
||||||
### Susun bagian-belakang (Rust)
|
### Susun bagian-belakang (Rust)
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo build
|
cargo build
|
||||||
# untuk pengembangan, gunakan `cargo check`
|
# untuk pengembangan, gunakan `cargo check`
|
||||||
```
|
```
|
||||||
|
|
||||||
### Dapatkan kode sumber antarmuka
|
### Dapatkan kode sumber antarmuka
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/LemmyNet/lemmy-ui.git --recurse-submodules
|
git clone https://github.com/LemmyNet/lemmy-ui.git --recurse-submodules
|
||||||
```
|
```
|
||||||
|
|
||||||
### Siapkan PostgreSQL
|
### Siapkan PostgreSQL
|
||||||
|
|
||||||
#### Distro berbasis Debian
|
#### Distro berbasis Debian
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo apt install postgresql
|
sudo apt install postgresql
|
||||||
sudo systemctl start postgresql
|
sudo systemctl start postgresql
|
||||||
|
@ -59,6 +68,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Distro berbasis Arch
|
#### Distro berbasis Arch
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo pacman -S postgresql
|
sudo pacman -S postgresql
|
||||||
sudo systemctl start postgresql
|
sudo systemctl start postgresql
|
||||||
|
@ -70,6 +80,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
#### macOS
|
#### macOS
|
||||||
|
|
||||||
```
|
```
|
||||||
brew install postgresql
|
brew install postgresql
|
||||||
brew services start postgresql
|
brew services start postgresql
|
||||||
|
@ -82,6 +93,7 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
|
||||||
```
|
```
|
||||||
|
|
||||||
### Jalankan sebuah peladen pengembangan lokal
|
### Jalankan sebuah peladen pengembangan lokal
|
||||||
|
|
||||||
```
|
```
|
||||||
cd lemmy
|
cd lemmy
|
||||||
cargo run
|
cargo run
|
||||||
|
|
|
@ -11,8 +11,8 @@ Secara umum, pengelolaan kami terhadap cabang seperti yang dijelaskan pada [A st
|
||||||
- Buat sebuah beta atau versi kandidat rilis menggunakan `docker/prod/deploy.sh`
|
- Buat sebuah beta atau versi kandidat rilis menggunakan `docker/prod/deploy.sh`
|
||||||
- Lakukan yang sama untuk `lemmy-ui`: `./deploy.sh 0.x.0-rc-x`
|
- Lakukan yang sama untuk `lemmy-ui`: `./deploy.sh 0.x.0-rc-x`
|
||||||
- Terapkan ke peladen uji federasi
|
- Terapkan ke peladen uji federasi
|
||||||
- Menjaga satu peladen pada versi stabil terbaru untuk menguji kompatibilitas federasi (otomatisasi ini dengan Ansible)
|
- Menjaga satu peladen pada versi stabil terbaru untuk menguji kompatibilitas federasi (otomatisasi ini dengan Ansible)
|
||||||
- `ansible-playbook -i federation playbooks/site.yml --vault-password-file vault_pass -e rc_version=0.x.0-rc.x`
|
- `ansible-playbook -i federation playbooks/site.yml --vault-password-file vault_pass -e rc_version=0.x.0-rc.x`
|
||||||
- Uji coba bahwa seluruhnya bekerja sesuai yang diharapkan, buat rilis beta/rc baru jika dibutuhkan
|
- Uji coba bahwa seluruhnya bekerja sesuai yang diharapkan, buat rilis beta/rc baru jika dibutuhkan
|
||||||
- Terapkan ke lemmy.ml, untuk menemukan masalah yang tersisa
|
- Terapkan ke lemmy.ml, untuk menemukan masalah yang tersisa
|
||||||
- Jika itu berjalan baik, buat rilis `0.x.0` yang resmi dengan `docker/prod/deploy.sh`
|
- Jika itu berjalan baik, buat rilis `0.x.0` yang resmi dengan `docker/prod/deploy.sh`
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#### Rust
|
#### Rust
|
||||||
|
|
||||||
Setelah memasang [dependensi pengembangan lokal](local_development.md), jalankan perintah berikut:
|
Setelah memasang [dependensi pengembangan lokal](local_development.md), jalankan perintah berikut:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
|
psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
|
||||||
|
@ -11,7 +11,7 @@ psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
|
||||||
|
|
||||||
### Federasi
|
### Federasi
|
||||||
|
|
||||||
Pasang [dependensi pengembangan lokal](local_development.md) dan tambahkan baris berikut ke `/etc/hosts`:
|
Pasang [dependensi pengembangan lokal](local_development.md) dan tambahkan baris berikut ke `/etc/hosts`:
|
||||||
|
|
||||||
```
|
```
|
||||||
127.0.0.1 lemmy-alpha
|
127.0.0.1 lemmy-alpha
|
||||||
|
@ -22,6 +22,7 @@ Pasang [dependensi pengembangan lokal](local_development.md) dan tambahkan baris
|
||||||
```
|
```
|
||||||
|
|
||||||
Kemudian gunakan skrip berikut untuk menjalankan pengujian:
|
Kemudian gunakan skrip berikut untuk menjalankan pengujian:
|
||||||
|
|
||||||
```
|
```
|
||||||
cd api_tests
|
cd api_tests
|
||||||
./run-federation-test.bash
|
./run-federation-test.bash
|
||||||
|
|
|
@ -10,42 +10,42 @@ Sebelum membaca bagian ini, coba lihat pada [Tinjauan Federasi](overview.md) kam
|
||||||
|
|
||||||
- [Context](#context)
|
- [Context](#context)
|
||||||
- [Actors](#actors)
|
- [Actors](#actors)
|
||||||
* [Community](#community)
|
- [Community](#community)
|
||||||
* [User](#user)
|
- [User](#user)
|
||||||
- [Objects](#objects)
|
- [Objects](#objects)
|
||||||
* [Post](#post)
|
- [Post](#post)
|
||||||
* [Comment](#comment)
|
- [Comment](#comment)
|
||||||
* [Private Message](#private-message)
|
- [Private Message](#private-message)
|
||||||
- [Collections](#collections)
|
- [Collections](#collections)
|
||||||
* [Community Outbox](#community-outbox)
|
- [Community Outbox](#community-outbox)
|
||||||
* [Community Followers](#community-followers)
|
- [Community Followers](#community-followers)
|
||||||
* [Community Moderators](#community-moderators)
|
- [Community Moderators](#community-moderators)
|
||||||
* [User Outbox](#user-outbox)
|
- [User Outbox](#user-outbox)
|
||||||
- [Activities](#activities)
|
- [Activities](#activities)
|
||||||
* [User to Community](#user-to-community)
|
- [User to Community](#user-to-community)
|
||||||
+ [Follow](#follow)
|
- [Follow](#follow)
|
||||||
+ [Unfollow](#unfollow)
|
- [Unfollow](#unfollow)
|
||||||
+ [Report Post or Comment](#report-post-or-comment)
|
- [Report Post or Comment](#report-post-or-comment)
|
||||||
* [Community to User](#community-to-user)
|
- [Community to User](#community-to-user)
|
||||||
+ [Accept Follow](#accept-follow)
|
- [Accept Follow](#accept-follow)
|
||||||
+ [Announce](#announce)
|
- [Announce](#announce)
|
||||||
* [Announcable](#announcable)
|
- [Announcable](#announcable)
|
||||||
+ [Create or Update Post](#create-or-update-post)
|
- [Create or Update Post](#create-or-update-post)
|
||||||
+ [Create or Update Comment](#create-or-update-comment)
|
- [Create or Update Comment](#create-or-update-comment)
|
||||||
+ [Like Post or Comment](#like-post-or-comment)
|
- [Like Post or Comment](#like-post-or-comment)
|
||||||
+ [Dislike Post or Comment](#dislike-post-or-comment)
|
- [Dislike Post or Comment](#dislike-post-or-comment)
|
||||||
+ [Undo Like or Dislike Post or Comment](#undo-like-or-dislike-post-or-comment)
|
- [Undo Like or Dislike Post or Comment](#undo-like-or-dislike-post-or-comment)
|
||||||
+ [Delete Post or Comment](#delete-post-or-comment)
|
- [Delete Post or Comment](#delete-post-or-comment)
|
||||||
+ [Remove Post or Comment](#remove-post-or-comment)
|
- [Remove Post or Comment](#remove-post-or-comment)
|
||||||
+ [Undo Delete or Remove](#undo-delete-or-remove)
|
- [Undo Delete or Remove](#undo-delete-or-remove)
|
||||||
+ [Add Mod](#add-mod)
|
- [Add Mod](#add-mod)
|
||||||
+ [Remove Mod](#remove-mod)
|
- [Remove Mod](#remove-mod)
|
||||||
+ [Block User](#block-user)
|
- [Block User](#block-user)
|
||||||
+ [Undo Block User](#undo-block-user)
|
- [Undo Block User](#undo-block-user)
|
||||||
* [User to User](#user-to-user)
|
- [User to User](#user-to-user)
|
||||||
+ [Create or Update Private message](#create-or-update-private-message)
|
- [Create or Update Private message](#create-or-update-private-message)
|
||||||
+ [Delete Private Message](#delete-private-message)
|
- [Delete Private Message](#delete-private-message)
|
||||||
+ [Undo Delete Private Message](#undo-delete-private-message)
|
- [Undo Delete Private Message](#undo-delete-private-message)
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
@ -65,34 +65,34 @@ Aktor terotomatisasi. Pengguna bisa mengirim pos atau komentar ke ini, yang mana
|
||||||
|
|
||||||
Mengirim aktivitas ke pengguna: `Accept/Follow`, `Announce`.
|
Mengirim aktivitas ke pengguna: `Accept/Follow`, `Announce`.
|
||||||
|
|
||||||
Menerima aktivitas dari pengguna: `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (hanya admin/moderator), `Delete` (hanya pembuat), Undo (hanya untuk tindakan sendiri)
|
Menerima aktivitas dari pengguna: `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (hanya admin/moderator), `Delete` (hanya pembuat), Undo (hanya untuk tindakan sendiri)
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{{#include ../../../include/crates/apub/assets/lemmy/objects/group.json}}
|
{{#include ../../../include/crates/apub/assets/lemmy/objects/group.json}}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nama Bidang | Deskripsi |
|
| Nama Bidang | Deskripsi |
|
||||||
|---|---|
|
| ------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `preferredUsername` | Nama aktor |
|
| `preferredUsername` | Nama aktor |
|
||||||
| `name` | Judul komunitas |
|
| `name` | Judul komunitas |
|
||||||
| `sensitive` | True menunjukkan bahwa semua pos di komunitas adalah NSFW |
|
| `sensitive` | True menunjukkan bahwa semua pos di komunitas adalah NSFW |
|
||||||
| `attributedTo` | Pertama, pembuat komunitas, kemudian moderator lainnya |
|
| `attributedTo` | Pertama, pembuat komunitas, kemudian moderator lainnya |
|
||||||
| `content` | Teks untuk bilah samping komunitas, biasanya memuat deskripsi dan peraturan |
|
| `content` | Teks untuk bilah samping komunitas, biasanya memuat deskripsi dan peraturan |
|
||||||
| `icon` | Ikon, ditampilkan di sebelah nama komunitas |
|
| `icon` | Ikon, ditampilkan di sebelah nama komunitas |
|
||||||
| `image` | Gambar spanduk, ditampilkan di bagian atas halaman komunitas |
|
| `image` | Gambar spanduk, ditampilkan di bagian atas halaman komunitas |
|
||||||
| `inbox` | URL kotak masuk ActivityPub |
|
| `inbox` | URL kotak masuk ActivityPub |
|
||||||
| `outbox` | URL kotak keluar ActivityPub, hanya mengandung 20 pos terakhir, tidak ada komentar, pilihan suara, atau aktivitas lainnya |
|
| `outbox` | URL kotak keluar ActivityPub, hanya mengandung 20 pos terakhir, tidak ada komentar, pilihan suara, atau aktivitas lainnya |
|
||||||
| `followers` | URL koleksi pengikut, hanya mengandung jumlah pengikut, tidak ada penunjuk terhadap pengikut individual |
|
| `followers` | URL koleksi pengikut, hanya mengandung jumlah pengikut, tidak ada penunjuk terhadap pengikut individual |
|
||||||
| `endpoints` | URL kotak masuk bersama |
|
| `endpoints` | URL kotak masuk bersama |
|
||||||
| `published` | Tanggal waktu komunitas dibuat |
|
| `published` | Tanggal waktu komunitas dibuat |
|
||||||
| `updated` | Tanggal waktu komunitas terakhir diubah |
|
| `updated` | Tanggal waktu komunitas terakhir diubah |
|
||||||
| `publicKey` | Kunci publik yang digunakan untuk memverifikasi tanda tangan dari aktor ini |
|
| `publicKey` | Kunci publik yang digunakan untuk memverifikasi tanda tangan dari aktor ini |
|
||||||
|
|
||||||
### Pengguna
|
### Pengguna
|
||||||
|
|
||||||
Orang, yang berinteraksi secara umum dengan komunitas, di mana ia mengirim dan menerima pos dan/atau komentar. Bisa juga membuat dan memoderasi komunitas dan mengirim pesan pribadi ke pengguna lain.
|
Orang, yang berinteraksi secara umum dengan komunitas, di mana ia mengirim dan menerima pos dan/atau komentar. Bisa juga membuat dan memoderasi komunitas dan mengirim pesan pribadi ke pengguna lain.
|
||||||
|
|
||||||
Mengirim aktivitas ke komunitas: `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (hanya admin/moderator), `Delete` (hanya pembuat), `Undo` (hanya untuk tindakan sendiri).
|
Mengirim aktivitas ke komunitas: `Follow`, `Undo/Follow`, `Create`, `Update`, `Like`, `Dislike`, `Remove` (hanya admin/moderator), `Delete` (hanya pembuat), `Undo` (hanya untuk tindakan sendiri).
|
||||||
|
|
||||||
Menerima aktivitas dari komunitas: `Accept/Follow`, `Announce`
|
Menerima aktivitas dari komunitas: `Accept/Follow`, `Announce`
|
||||||
|
|
||||||
|
@ -102,18 +102,18 @@ Menerima dan mengirim aktivitas dari/ke pengguna lain: `Create/Note`, `Update/No
|
||||||
{{#include ../../../include/crates/apub/assets/lemmy/objects/person.json}}
|
{{#include ../../../include/crates/apub/assets/lemmy/objects/person.json}}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nama Bidang | Deskripsi |
|
| Nama Bidang | Deskripsi |
|
||||||
|---|---|
|
| ------------------- | --------------------------------------------------------------------------- |
|
||||||
| `preferredUsername` | Nama aktor |
|
| `preferredUsername` | Nama aktor |
|
||||||
| `name` | Nama tampilan pengguna |
|
| `name` | Nama tampilan pengguna |
|
||||||
| `content` | Bio pengguna |
|
| `content` | Bio pengguna |
|
||||||
| `icon` | Avatar pengguna, ditampilkan di sebelah nama pengguna |
|
| `icon` | Avatar pengguna, ditampilkan di sebelah nama pengguna |
|
||||||
| `image` | Spanduk pengguna, ditampilkan di bagian atas profil pengguna |
|
| `image` | Spanduk pengguna, ditampilkan di bagian atas profil pengguna |
|
||||||
| `inbox` | URL kotak masuk ActivityPub |
|
| `inbox` | URL kotak masuk ActivityPub |
|
||||||
| `endpoints` | URL kotak masuk bersama |
|
| `endpoints` | URL kotak masuk bersama |
|
||||||
| `published` | Tanggal waktu pengguna mendaftar |
|
| `published` | Tanggal waktu pengguna mendaftar |
|
||||||
| `updated` | Tanggal waktu profil pengguna terakhir diubah |
|
| `updated` | Tanggal waktu profil pengguna terakhir diubah |
|
||||||
| `publicKey` | Kunci publik yang digunakan untuk memverifikasi tanda tangan dari aktor ini |
|
| `publicKey` | Kunci publik yang digunakan untuk memverifikasi tanda tangan dari aktor ini |
|
||||||
|
|
||||||
Kotak masuk pengguna sebenarnya belum diimplementasikan dan hanya sebagai papan nama untuk implementasi ActivityPub yang membutuhkannya.
|
Kotak masuk pengguna sebenarnya belum diimplementasikan dan hanya sebagai papan nama untuk implementasi ActivityPub yang membutuhkannya.
|
||||||
|
|
||||||
|
@ -127,19 +127,19 @@ Halaman dengan judul, dan opsional ada URL dan konten teks. URL biasanya merujuk
|
||||||
{{#include ../../../include/crates/apub/assets/lemmy/objects/page.json}}
|
{{#include ../../../include/crates/apub/assets/lemmy/objects/page.json}}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nama Bidang | Deskripsi |
|
| Nama Bidang | Deskripsi |
|
||||||
|---|---|
|
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | ID dari pengguna yang membuat pos tersebut |
|
| `attributedTo` | ID dari pengguna yang membuat pos tersebut |
|
||||||
| `to` | ID dari komunitas di mana pos tersebut dipos |
|
| `to` | ID dari komunitas di mana pos tersebut dipos |
|
||||||
| `name` | Judul pos |
|
| `name` | Judul pos |
|
||||||
| `content` | Badan/Konten pos |
|
| `content` | Badan/Konten pos |
|
||||||
| `url` | Tautan apa pun untuk dibagian |
|
| `url` | Tautan apa pun untuk dibagian |
|
||||||
| `image` | Keluku untuk `url`, hanya ada jika tautannya adalah tautan gambar |
|
| `image` | Keluku untuk `url`, hanya ada jika tautannya adalah tautan gambar |
|
||||||
| `commentsEnabled` | False menunjukkan bahwa pos tersebut dikunci dan tidak ada komentar lagi yang bisa ditambahkan |
|
| `commentsEnabled` | False menunjukkan bahwa pos tersebut dikunci dan tidak ada komentar lagi yang bisa ditambahkan |
|
||||||
| `sensitive` | True menandai pos tersebut sebagai NSFW, mengaburkan kelukunya, dan menyembunyikannya dari pengguna dari pengguna yang pengaturan NSFW-nya dimatikan |
|
| `sensitive` | True menandai pos tersebut sebagai NSFW, mengaburkan kelukunya, dan menyembunyikannya dari pengguna dari pengguna yang pengaturan NSFW-nya dimatikan |
|
||||||
| `stickied` | True menunjukkan bahwa pos tersebut ditampilkan di bagian atas komunitas |
|
| `stickied` | True menunjukkan bahwa pos tersebut ditampilkan di bagian atas komunitas |
|
||||||
| `published` | Tanggal waktu pos dibuat |
|
| `published` | Tanggal waktu pos dibuat |
|
||||||
| `updated` | Tanggal waktu pos disunting (tidak ada jika tidak pernah disunting) |
|
| `updated` | Tanggal waktu pos disunting (tidak ada jika tidak pernah disunting) |
|
||||||
|
|
||||||
### Komentar
|
### Komentar
|
||||||
|
|
||||||
|
@ -149,14 +149,14 @@ Balasan kepada pos, atau balasan ke komentar lain. Hanya mengandung teks (termas
|
||||||
{{#include ../../../include/crates/apub/assets/lemmy/objects/note.json}}
|
{{#include ../../../include/crates/apub/assets/lemmy/objects/note.json}}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nama Bidang | Deskripsi |
|
| Nama Bidang | Deskripsi |
|
||||||
|---|---|
|
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | ID dari pengguna yang membuat pos |
|
| `attributedTo` | ID dari pengguna yang membuat pos |
|
||||||
| `to` | Komunitas di mana komentar tersebut dibuat |
|
| `to` | Komunitas di mana komentar tersebut dibuat |
|
||||||
| `content` | Teks komentar |
|
| `content` | Teks komentar |
|
||||||
| `inReplyTo` | ID pos di mana komentar tersebut dibuat, dan komentar induk (jika ada). Jika komentar ini adalah komentar induk, bidang ini hanya berisi ID pos saja |
|
| `inReplyTo` | ID pos di mana komentar tersebut dibuat, dan komentar induk (jika ada). Jika komentar ini adalah komentar induk, bidang ini hanya berisi ID pos saja |
|
||||||
| `published` | Tanggal waktu komentar dibuat |
|
| `published` | Tanggal waktu komentar dibuat |
|
||||||
| `updated` | Tanggal waktu komentar disunting (tidak ada jika tidak pernah disunting) |
|
| `updated` | Tanggal waktu komentar disunting (tidak ada jika tidak pernah disunting) |
|
||||||
|
|
||||||
### Pesan Pribadi
|
### Pesan Pribadi
|
||||||
|
|
||||||
|
@ -166,13 +166,13 @@ Pesan langsung dari satu pengguna ke pengguna lain. Tidak bisa ada pengguna keti
|
||||||
{{#include ../../../include/crates/apub/assets/lemmy/objects/chat_message.json}}
|
{{#include ../../../include/crates/apub/assets/lemmy/objects/chat_message.json}}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Nama Bidang | Deskripsi |
|
| Nama Bidang | Deskripsi |
|
||||||
|---|---|
|
| -------------- | --------------------------------------------------------------------- |
|
||||||
| `attributedTo` | ID pengguna yang membuat pesan pribadi |
|
| `attributedTo` | ID pengguna yang membuat pesan pribadi |
|
||||||
| `to` | ID penerima |
|
| `to` | ID penerima |
|
||||||
| `content` | Teks pesan pribadi |
|
| `content` | Teks pesan pribadi |
|
||||||
| `published` | Tanggal waktu pesan dibuat |
|
| `published` | Tanggal waktu pesan dibuat |
|
||||||
| `updated` | Tanggal waktu pesan disunting (tidak ada jika tidak pernah disunting) |
|
| `updated` | Tanggal waktu pesan disunting (tidak ada jika tidak pernah disunting) |
|
||||||
|
|
||||||
## Koleksi
|
## Koleksi
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ Koleksi/Statistik pengikut hanya digunakan untuk menampilkan jumlah pengikut kom
|
||||||
|
|
||||||
#### Ikuti
|
#### Ikuti
|
||||||
|
|
||||||
Ketika pengguna mengklik "Langgan" di komunitas, aktivitas `Follow` dikirim. Secara otomatis komunitas membalas dengan `Accept/Follow`.
|
Ketika pengguna mengklik "Langgan" di komunitas, aktivitas `Follow` dikirim. Secara otomatis komunitas membalas dengan `Accept/Follow`.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{{#include ../../../include/crates/apub/assets/lemmy/activities/following/follow.json}}
|
{{#include ../../../include/crates/apub/assets/lemmy/activities/following/follow.json}}
|
||||||
|
@ -224,7 +224,6 @@ Ketika pengguna mengklik "Berhenti Berlangganan" di komunitas, aktivitas `Undo/F
|
||||||
{{#include ../../../include/crates/apub/assets/lemmy/activities/following/undo_follow.json}}
|
{{#include ../../../include/crates/apub/assets/lemmy/activities/following/undo_follow.json}}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
#### Lapor Pos atau Komentar
|
#### Lapor Pos atau Komentar
|
||||||
|
|
||||||
Melaporkan pos atau komentar sebagai pelanggaran peraturan, supaya admin/moderator bisa meninjaunya.
|
Melaporkan pos atau komentar sebagai pelanggaran peraturan, supaya admin/moderator bisa meninjaunya.
|
||||||
|
|
|
@ -1,17 +1,16 @@
|
||||||
# Tinjauan Federasi
|
# Tinjauan Federasi
|
||||||
|
|
||||||
|
|
||||||
Dokumen ini untuk siapa saja yang ingin mengetahui bagaimana federasi Lemmy bekerja, tanpa terlalu teknis. Ini dimaksudkan untuk memberikan tinjauan umum tingkat tinggi terhadap federasi ActivityPub di Lemmy. Jika Anda mengimplementasikan ActivityPub sendiri dan ingin kompatibel dengan Lemmy, baca [Garis Besar API ActivityPub](contributing_apub_api_outline.md) kami.
|
Dokumen ini untuk siapa saja yang ingin mengetahui bagaimana federasi Lemmy bekerja, tanpa terlalu teknis. Ini dimaksudkan untuk memberikan tinjauan umum tingkat tinggi terhadap federasi ActivityPub di Lemmy. Jika Anda mengimplementasikan ActivityPub sendiri dan ingin kompatibel dengan Lemmy, baca [Garis Besar API ActivityPub](contributing_apub_api_outline.md) kami.
|
||||||
|
|
||||||
## Konvensi dokumentasi
|
## Konvensi dokumentasi
|
||||||
|
|
||||||
Untuk mempermudah, kadang kala Anda akan melihat sesuatu diformat seperti `Create/Note` atau `Delete/Event` atau `Undo/Follow`. Hal sebelum garis miring adalah Aktivitas dan setelahnya adalah Objek di dalam Aktivitas, di properti `object`. Jadi itu dibaca sebagai berikut:
|
Untuk mempermudah, kadang kala Anda akan melihat sesuatu diformat seperti `Create/Note` atau `Delete/Event` atau `Undo/Follow`. Hal sebelum garis miring adalah Aktivitas dan setelahnya adalah Objek di dalam Aktivitas, di properti `object`. Jadi itu dibaca sebagai berikut:
|
||||||
|
|
||||||
* `Create/Note`: sebuah aktivitas `Create` yang mengandung `Note` di bidang `object`
|
- `Create/Note`: sebuah aktivitas `Create` yang mengandung `Note` di bidang `object`
|
||||||
* `Delete/Event`: sebuah aktivitas `Delete` yang mengandung `Event` di bidang `object`
|
- `Delete/Event`: sebuah aktivitas `Delete` yang mengandung `Event` di bidang `object`
|
||||||
* `Undo/Follow`: sebuah aktivitas `Undo` yang mengandung `Follow` di bidang `object`
|
- `Undo/Follow`: sebuah aktivitas `Undo` yang mengandung `Follow` di bidang `object`
|
||||||
|
|
||||||
Di Lemmy, kami menggunakan beberapa hal spesifik yang merujuk kepada item ActivityPub. Mereka sejatinya adalah implementasi kami terhadap konsep ActivityPub:
|
Di Lemmy, kami menggunakan beberapa hal spesifik yang merujuk kepada item ActivityPub. Mereka sejatinya adalah implementasi kami terhadap konsep ActivityPub:
|
||||||
|
|
||||||
- Komunitas: `Group`
|
- Komunitas: `Group`
|
||||||
- Pengguna: `Person`
|
- Pengguna: `Person`
|
||||||
|
@ -20,15 +19,15 @@ Di Lemmy, kami menggunakan beberapa hal spesifik yang merujuk kepada item Activi
|
||||||
|
|
||||||
Dokumentasi ini memiliki tiga bagian utama:
|
Dokumentasi ini memiliki tiga bagian utama:
|
||||||
|
|
||||||
* __Filosofi Federasi__ menjabarkan gambaran umum bagaimana ini ditujukan untuk federasi
|
- **Filosofi Federasi** menjabarkan gambaran umum bagaimana ini ditujukan untuk federasi
|
||||||
* __Aktivitas Pengguna__ menjelaskan tindakan apa yang Pengguna bisa lakukan untuk berinteraksi
|
- **Aktivitas Pengguna** menjelaskan tindakan apa yang Pengguna bisa lakukan untuk berinteraksi
|
||||||
* __Aktivitas Komunitas__ menjelaskan apa yang Komunitas lakukan sebagai respons terhadap tindakan beberapa Pengguna
|
- **Aktivitas Komunitas** menjelaskan apa yang Komunitas lakukan sebagai respons terhadap tindakan beberapa Pengguna
|
||||||
|
|
||||||
## Filosofi Federasi
|
## Filosofi Federasi
|
||||||
|
|
||||||
Aktor utama di Lemmy adalah Komunitas. Setiap komunitas berada di suatu peladen tunggal dan terdiri dari daftar Pos dan daftar pengikut. Interaksi utama adalah Pengguna mengirim Pos atau Komentar terkait aktivitas ke kotak masuk Komunitas, yang kemudian mengumumkannya ke seluruh pengikutnya.
|
Aktor utama di Lemmy adalah Komunitas. Setiap komunitas berada di suatu peladen tunggal dan terdiri dari daftar Pos dan daftar pengikut. Interaksi utama adalah Pengguna mengirim Pos atau Komentar terkait aktivitas ke kotak masuk Komunitas, yang kemudian mengumumkannya ke seluruh pengikutnya.
|
||||||
|
|
||||||
Setiap Komunitas memiliki Pengguna pembuat tertentu, yang bertanggung jawab untuk mengatur peraturan, mengangkat moderator, dan menghapus konten yang melanggar peraturan.
|
Setiap Komunitas memiliki Pengguna pembuat tertentu, yang bertanggung jawab untuk mengatur peraturan, mengangkat moderator, dan menghapus konten yang melanggar peraturan.
|
||||||
|
|
||||||
Selain moderasi di tingkat komunitas, setiap peladen memiliki seperangkat Pengguna administrator, yang mempunyai kekuasaan untuk melakukan penghapusan dan pelarangan tingkat situs.
|
Selain moderasi di tingkat komunitas, setiap peladen memiliki seperangkat Pengguna administrator, yang mempunyai kekuasaan untuk melakukan penghapusan dan pelarangan tingkat situs.
|
||||||
|
|
||||||
|
@ -42,7 +41,7 @@ Implementasi federasi kami sudah komplit fitur, tapi kami sampai saat ini belum
|
||||||
|
|
||||||
### Mengikuti sebuah Komunitas
|
### Mengikuti sebuah Komunitas
|
||||||
|
|
||||||
Setiap halaman Komunitas memiliki tombol "Ikuti". Mengkliknya akan memicu sebuah aktivitas `Follow` untuk dikirim dari pengguna ke kotak masuk Komunitas. Komunitas akan secara otomatis merespons dengan aktivitas `Accept/Follow` ke kotak masuk pengguna. Itu juga akan menambahkan pengguna tersebut ke daftar pengikutnya dan mengirimkan setiap aktivitas terkait Pos/Komentar di Komunitas ke pengguna.
|
Setiap halaman Komunitas memiliki tombol "Ikuti". Mengkliknya akan memicu sebuah aktivitas `Follow` untuk dikirim dari pengguna ke kotak masuk Komunitas. Komunitas akan secara otomatis merespons dengan aktivitas `Accept/Follow` ke kotak masuk pengguna. Itu juga akan menambahkan pengguna tersebut ke daftar pengikutnya dan mengirimkan setiap aktivitas terkait Pos/Komentar di Komunitas ke pengguna.
|
||||||
|
|
||||||
### Batal Mengikuti Komunitas
|
### Batal Mengikuti Komunitas
|
||||||
|
|
||||||
|
@ -54,7 +53,7 @@ Ketika pengguna membuat Pos di Komunitas tertentu, itu akan dikirim sebagai `Cre
|
||||||
|
|
||||||
### Membuat Komentar
|
### Membuat Komentar
|
||||||
|
|
||||||
Ketika sebuah Komentar baru dibuat untuk sebuah Pos, baik ID Pos dan ID Komentar induk (jika ada) ditulis ke bidang `in_reply_to`. Ini memungkinkan untuk menetapkannya ke Pos yang benar dan membangun pohon Komentar. Kemudian itu dikirim ke kotak masuk Komunitas sebagai `Create/Note`
|
Ketika sebuah Komentar baru dibuat untuk sebuah Pos, baik ID Pos dan ID Komentar induk (jika ada) ditulis ke bidang `in_reply_to`. Ini memungkinkan untuk menetapkannya ke Pos yang benar dan membangun pohon Komentar. Kemudian itu dikirim ke kotak masuk Komunitas sebagai `Create/Note`
|
||||||
|
|
||||||
Peladen asal juga memindai Komentar untuk sebutan Pengguna apa pun dan mengirim aktivitas `Create/Note` ke Pengguna tersebut.
|
Peladen asal juga memindai Komentar untuk sebutan Pengguna apa pun dan mengirim aktivitas `Create/Note` ke Pengguna tersebut.
|
||||||
|
|
||||||
|
@ -108,12 +107,12 @@ Komunitas itu secara dasarnya adalah bot, yang hanya akan melakukan sesuatu seba
|
||||||
|
|
||||||
### Menerima Ikuti
|
### Menerima Ikuti
|
||||||
|
|
||||||
Jika komunitas menerima aktivitas `Follow`, maka komunitas akan secara otomatis membalas dengan `Accept/Follow`. Komunitas juga menambahkan pengguna tersebut ke daftar pengikutnya.
|
Jika komunitas menerima aktivitas `Follow`, maka komunitas akan secara otomatis membalas dengan `Accept/Follow`. Komunitas juga menambahkan pengguna tersebut ke daftar pengikutnya.
|
||||||
|
|
||||||
### Batal Ikuti
|
### Batal Ikuti
|
||||||
|
|
||||||
Ketika menerima `Undo/Follow`, Komunitas menghapus Pengguna tersebut dari daftar pengikutnya.
|
Ketika menerima `Undo/Follow`, Komunitas menghapus Pengguna tersebut dari daftar pengikutnya.
|
||||||
|
|
||||||
### Mengumumkan
|
### Mengumumkan
|
||||||
|
|
||||||
Jika Komunitas menerima aktivitas terkait Pos atau Komentar (Buat, Perbarui, Suka, Tidak Suka, Hapus, Bersihkan, Urung), Komunitas akan mengumumkannya ke pengikutnya. Untuk ini, Mengumumkan dibuat dengan Komunitas sebagai aktor dan aktivitas yang diterima sebagai objek. Karena itu, peladen tersebut dapat terus pembaruan terkait aktivitas di Komunitas yang diikutinya.
|
Jika Komunitas menerima aktivitas terkait Pos atau Komentar (Buat, Perbarui, Suka, Tidak Suka, Hapus, Bersihkan, Urung), Komunitas akan mengumumkannya ke pengikutnya. Untuk ini, Mengumumkan dibuat dengan Komunitas sebagai aktor dan aktivitas yang diterima sebagai objek. Karena itu, peladen tersebut dapat terus pembaruan terkait aktivitas di Komunitas yang diikutinya.
|
||||||
|
|
|
@ -6,15 +6,15 @@ Di Lemmy, **moderator** adalah seseorang yang mengelola dan punya hak terhadap s
|
||||||
|
|
||||||
Seorang **administrator** memiliki hak penuh terhadap seluruh apa yang ada di peladen, dan demikian juga terhadap seluruh komunitas.
|
Seorang **administrator** memiliki hak penuh terhadap seluruh apa yang ada di peladen, dan demikian juga terhadap seluruh komunitas.
|
||||||
|
|
||||||
| Aksi | Hasil | Tingkat izin |
|
| Aksi | Hasil | Tingkat izin |
|
||||||
| --- | --- | --- |
|
| -------------------- | ----------------------------------------------- | ------------ |
|
||||||
| kunci | Cegah membuat komentar baru di bawah sebuah pos | Moderator |
|
| kunci | Cegah membuat komentar baru di bawah sebuah pos | Moderator |
|
||||||
| tempel | Semat publikasi ke atas daftar komunitas | Moderator |
|
| tempel | Semat publikasi ke atas daftar komunitas | Moderator |
|
||||||
| hapus | Hapus pos | Moderator |
|
| hapus | Hapus pos | Moderator |
|
||||||
| larang | Larang pengguna dari komunitas | Moderator |
|
| larang | Larang pengguna dari komunitas | Moderator |
|
||||||
| angkat menjadi mod | Berikan pengguna status moderator | Moderator |
|
| angkat menjadi mod | Berikan pengguna status moderator | Moderator |
|
||||||
| angkat menjadi admin | Berikan pengguna status admin | Admin |
|
| angkat menjadi admin | Berikan pengguna status admin | Admin |
|
||||||
| larang dari situs | Larang pengguna dari peladen | Admin |
|
| larang dari situs | Larang pengguna dari peladen | Admin |
|
||||||
|
|
||||||
Untuk melakukan aksi moderasi pada seorang pengguna, Anda memerlukan pos dari pengguna tersebut dan klik 3 titik di kanan bawah dari judul.
|
Untuk melakukan aksi moderasi pada seorang pengguna, Anda memerlukan pos dari pengguna tersebut dan klik 3 titik di kanan bawah dari judul.
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Краткое изложение
|
# Краткое изложение
|
||||||
|
|
||||||
- [О нас](about/about.md)
|
- [О нас](about/about.md)
|
||||||
- [Возможности](about/features.md)
|
- [Возможности](about/features.md)
|
||||||
- [Цели](about/goals.md)
|
- [Цели](about/goals.md)
|
||||||
- [Посты и оценка комментариев](about/ranking.md)
|
- [Посты и оценка комментариев](about/ranking.md)
|
||||||
- [Путеводитель](about/guide.md)
|
- [Путеводитель](about/guide.md)
|
||||||
- [Администрирование](administration/administration.md)
|
- [Администрирование](administration/administration.md)
|
||||||
- [Установить с помощью Docker](administration/install_docker.md)
|
- [Установить с помощью Docker](administration/install_docker.md)
|
||||||
- [Установить с помощью Ansible](administration/install_ansible.md)
|
- [Установить с помощью Ansible](administration/install_ansible.md)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
## О проекте
|
## О проекте
|
||||||
|
|
||||||
Главная страница|Пост
|
| Главная страница | Пост |
|
||||||
---|---
|
| ------------------------------- | ------------------------------- |
|
||||||
![main screen](main_screen.png)|![chat screen](chat_screen.png)
|
| ![main screen](main_screen.png) | ![chat screen](chat_screen.png) |
|
||||||
|
|
||||||
[Lemmy](https://github.com/LemmyNet/lemmy) это аналог таких сайтов как [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), или [Hacker News](https://news.ycombinator.com/): вы подписываетесь на форумы, которые вас интересуют , размещаете ссылки и дискутируете, затем голосуете и комментируете их. Однако за кулисами всё совсем по-другому; любой может легко запустить сервер, и все эти серверы объединены (например электронная почта) и подключены к одной вселенной, именуемой [Федиверс](https://ru.wikipedia.org/wiki/Fediverse).
|
[Lemmy](https://github.com/LemmyNet/lemmy) это аналог таких сайтов как [Reddit](https://reddit.com), [Lobste.rs](https://lobste.rs), [Raddle](https://raddle.me), или [Hacker News](https://news.ycombinator.com/): вы подписываетесь на форумы, которые вас интересуют , размещаете ссылки и дискутируете, затем голосуете и комментируете их. Однако за кулисами всё совсем по-другому; любой может легко запустить сервер, и все эти серверы объединены (например электронная почта) и подключены к одной вселенной, именуемой [Федиверс](https://ru.wikipedia.org/wiki/Fediverse).
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
Каждый сервер Lemmy может устанавливать свою собственную политику модерации; назначать администраторов всего сайта и модераторов сообщества для защиты от троллей и создания здоровой, нетоксичной среды, в которой каждый может чувствовать себя комфортно.
|
Каждый сервер Lemmy может устанавливать свою собственную политику модерации; назначать администраторов всего сайта и модераторов сообщества для защиты от троллей и создания здоровой, нетоксичной среды, в которой каждый может чувствовать себя комфортно.
|
||||||
|
|
||||||
*Примечание: API-интерфейсы WebSocket и HTTP в настоящее время нестабильны*
|
_Примечание: API-интерфейсы WebSocket и HTTP в настоящее время нестабильны_
|
||||||
|
|
||||||
### Почему назвали Lemmy (рус.Лемми)??
|
### Почему назвали Lemmy (рус.Лемми)??
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
- i18n / поддержка интернационализации.
|
- i18n / поддержка интернационализации.
|
||||||
- RSS / Atom ленты для `Все`, `Подписок`, `Входящих`, `Пользователь`, and `Сообщества`.
|
- RSS / Atom ленты для `Все`, `Подписок`, `Входящих`, `Пользователь`, and `Сообщества`.
|
||||||
- Поддержка кросс-постинга.
|
- Поддержка кросс-постинга.
|
||||||
- *Поиск похожих постов* при создании новых. Отлично подходит для вопросов / ответов сообществ.
|
- _Поиск похожих постов_ при создании новых. Отлично подходит для вопросов / ответов сообществ.
|
||||||
- Возможности модерации.
|
- Возможности модерации.
|
||||||
- Журналы (Логи) Публичной Модерации.
|
- Журналы (Логи) Публичной Модерации.
|
||||||
- Можно прикреплять посты в топ сообщества.
|
- Можно прикреплять посты в топ сообщества.
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
- Просмотр с мобильных устройств, разрешить переключаться между ними. По умолчанию?
|
- Просмотр с мобильных устройств, разрешить переключаться между ними. По умолчанию?
|
||||||
|
|
||||||
# Источники / Потенциальные библиотеки
|
# Источники / Потенциальные библиотеки
|
||||||
|
|
||||||
- [Diesel в Postgres типов даты (анг.язык)](https://kotiri.com/2018/01/31/postgresql-diesel-rust-types.html)
|
- [Diesel в Postgres типов даты (анг.язык)](https://kotiri.com/2018/01/31/postgresql-diesel-rust-types.html)
|
||||||
- [Примеры в diesel (анг.язык)](http://siciarz.net/24-days-rust-diesel/)
|
- [Примеры в diesel (анг.язык)](http://siciarz.net/24-days-rust-diesel/)
|
||||||
- [Рекурсивный запрос списка смежности для вложенных комментариев (анг.язык)](https://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tree/192462#192462)
|
- [Рекурсивный запрос списка смежности для вложенных комментариев (анг.язык)](https://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into-a-tree/192462#192462)
|
||||||
|
|
|
@ -8,16 +8,16 @@
|
||||||
|
|
||||||
## Сортировка
|
## Сортировка
|
||||||
|
|
||||||
*Применяется как к сообщениям, так и к комментариям*
|
_Применяется как к сообщениям, так и к комментариям_
|
||||||
|
|
||||||
Тип | Описание
|
| Тип | Описание |
|
||||||
--- | ---
|
| ----------------------- | ----------------------------------------------------------------------------- |
|
||||||
Активность | Сортировка на основе оценки подсчёта баллов со времени последнего комментария
|
| Активность | Сортировка на основе оценки подсчёта баллов со времени последнего комментария |
|
||||||
Популярные | Сортировка на основе оценки подсчёта баллов с даты создания поста.
|
| Популярные | Сортировка на основе оценки подсчёта баллов с даты создания поста. |
|
||||||
Новые | Новинки.
|
| Новые | Новинки. |
|
||||||
Наиболее Комментируемые | Посты с наибольшим количеством комментариев.
|
| Наиболее Комментируемые | Посты с наибольшим количеством комментариев. |
|
||||||
Новые Комментарии | Посты снаибольшим колличеством комментариев, Т.е. сортировка в стиле форума.
|
| Новые Комментарии | Посты снаибольшим колличеством комментариев, Т.е. сортировка в стиле форума. |
|
||||||
Лучшие | С наивысшим количеством баллов заданный период времени.
|
| Лучшие | С наивысшим количеством баллов заданный период времени. |
|
||||||
|
|
||||||
Детали можно посмотреть по ссылке [Посты и оценка комментариев в деталях](ranking.md).
|
Детали можно посмотреть по ссылке [Посты и оценка комментариев в деталях](ranking.md).
|
||||||
|
|
||||||
|
@ -35,22 +35,22 @@
|
||||||
|
|
||||||
## Путеводитель по Markdown
|
## Путеводитель по Markdown
|
||||||
|
|
||||||
Наберите | Или | … Получите
|
| Наберите | Или | … Получите |
|
||||||
--- | --- | ---
|
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
||||||
\*Курсив\* | \_Курсив\_ | _Курсив_
|
| \*Курсив\* | \_Курсив\_ | _Курсив_ |
|
||||||
\*\*Жирный\*\* | \_\_Жирный\_\_ | **Жирный шрифт**
|
| \*\*Жирный\*\* | \_\_Жирный\_\_ | **Жирный шрифт** |
|
||||||
\# Заголовок 1 | Заголовок 1 <br> ========= | <h4>Заголовок 1</h4>
|
| \# Заголовок 1 | Заголовок 1 <br> ========= | <h4>Заголовок 1</h4> |
|
||||||
\## Заголовок 2 | Заголовок 2 <br>--------- | <h5>Заголовок 2</h5>
|
| \## Заголовок 2 | Заголовок 2 <br>--------- | <h5>Заголовок 2</h5> |
|
||||||
\[Ссылка\](http://a.com) | \[Ссылка\]\[1\]<br>⋮ <br>\[1\]: http://b.org | [Ссылка](https://commonmark.org/)
|
| \[Ссылка\](http://a.com) | \[Ссылка\]\[1\]<br>⋮ <br>\[1\]: http://b.org | [Ссылка](https://commonmark.org/) |
|
||||||
!\[Изображение\](http://url/a.png) | !\[Изображение\]\[1\]<br>⋮ <br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png)
|
| !\[Изображение\](http://url/a.png) | !\[Изображение\]\[1\]<br>⋮ <br>\[1\]: http://url/b.jpg | ![Markdown](https://commonmark.org/help/images/favicon.png) |
|
||||||
\> Цитата | | <blockquote>Цитата</blockquote>
|
| \> Цитата | | <blockquote>Цитата</blockquote> |
|
||||||
\* Списки <br>\* Списки <br>\* Списки | \- Списки <br>\- Списки <br>\- Списки <br> | * Списки <br>* Списки <br>* Списки <br>
|
| \* Списки <br>\* Списки <br>\* Списки | \- Списки <br>\- Списки <br>\- Списки <br> | _ Списки <br>_ Списки <br>\* Списки <br> |
|
||||||
1\. Один <br>2\. Два <br>3\. Три | 1) Один<br>2) Два<br>3) Три | 1. Один<br>2. Два<br>3. Три
|
| 1\. Один <br>2\. Два <br>3\. Три | 1) Один<br>2) Два<br>3) Три | 1. Один<br>2. Два<br>3. Три |
|
||||||
Подчёркивания <br>\--- | Подчёркивания<br>\*\*\* | Подчёркивания <br><hr>
|
| Подчёркивания <br>\--- | Подчёркивания<br>\*\*\* | Подчёркивания <br><hr> |
|
||||||
\`Инлайн код\` с обратными кавычками | |`Инлайн код` с обратными кавычками
|
| \`Инлайн код\` с обратными кавычками | | `Инлайн код` с обратными кавычками |
|
||||||
\`\`\`<br>\# блок кода <br>print '3 кавычки или'<br>отбить 'отступ 4 пробела' <br>\`\`\` | ····\# блок кода<br>····отбить '3 кавычки или'<br>····отбить 'отступ 4 пробела' | \# блок кода <br>print '3 кавычки или'<br>отбить 'отступ 4 пробела'
|
| \`\`\`<br>\# блок кода <br>print '3 кавычки или'<br>отбить 'отступ 4 пробела' <br>\`\`\` | ····\# блок кода<br>····отбить '3 кавычки или'<br>····отбить 'отступ 4 пробела' | \# блок кода <br>print '3 кавычки или'<br>отбить 'отступ 4 пробела' |
|
||||||
::: спрятать спойлер или материал nsfw<br>*внести сюда*<br>::: | | <details><summary> спрятанный или nsfw материал </summary><p><em>внести сюда</em></p></details>
|
| ::: спрятать спойлер или материал nsfw<br>_внести сюда_<br>::: | | <details><summary> спрятанный или nsfw материал </summary><p><em>внести сюда</em></p></details> |
|
||||||
~подстрочный~ текст | | Some <sub>подстрочный</sub> текст
|
| ~подстрочный~ текст | | Some <sub>подстрочный</sub> текст |
|
||||||
^надстрочный^ текст | | Some <sup>надстрочный</sup> текст
|
| ^надстрочный^ текст | | Some <sup>надстрочный</sup> текст |
|
||||||
|
|
||||||
[CommonMark Tutorial](https://commonmark.org/help/tutorial/)
|
[CommonMark Tutorial](https://commonmark.org/help/tutorial/)
|
||||||
|
|
|
@ -27,6 +27,7 @@ Score = Upvotes - Downvotes
|
||||||
Time = time since submission (in hours)
|
Time = time since submission (in hours)
|
||||||
Gravity = Decay gravity, 1.8 is default
|
Gravity = Decay gravity, 1.8 is default
|
||||||
```
|
```
|
||||||
|
|
||||||
- В Lemmy такой же алгоритм `Классификатор` как наверху, разделяя на два: `Активный`, и `Лучший`.
|
- В Lemmy такой же алгоритм `Классификатор` как наверху, разделяя на два: `Активный`, и `Лучший`.
|
||||||
- `Активный` использует голосование за публикацию и время последнего комментария (ограничено двумя днями).
|
- `Активный` использует голосование за публикацию и время последнего комментария (ограничено двумя днями).
|
||||||
- `Лучший` использует голоса за публикацию и время опубликования.
|
- `Лучший` использует голоса за публикацию и время опубликования.
|
||||||
|
@ -41,6 +42,6 @@ Gravity = Decay gravity, 1.8 is default
|
||||||
|
|
||||||
#### Подсчёты Активных Пользователей
|
#### Подсчёты Активных Пользователей
|
||||||
|
|
||||||
Lemmy также показывает количество * активных пользователей * для вашего сайта и его сообществ. Они подсчитываются в течение последнего дня, недели, месяца и полугодия и кэшируются при запуске lemmy и каждый час.
|
Lemmy также показывает количество _ активных пользователей _ для вашего сайта и его сообществ. Они подсчитываются в течение последнего дня, недели, месяца и полугодия и кэшируются при запуске lemmy и каждый час.
|
||||||
|
|
||||||
Активный пользователь - это тот, кто опубликовал или прокомментировал на вашем инстансе или сообществе в течение последнего заданного периода времени. При подсчете сайтов учитываются только локальные пользователи. В подсчет сообщества включены федеративные пользователи.
|
Активный пользователь - это тот, кто опубликовал или прокомментировал на вашем инстансе или сообществе в течение последнего заданного периода времени. При подсчете сайтов учитываются только локальные пользователи. В подсчет сообщества включены федеративные пользователи.
|
||||||
|
|
|
@ -6,11 +6,12 @@
|
||||||
|
|
||||||
### Инкрементное резервное копирование базы данных
|
### Инкрементное резервное копирование базы данных
|
||||||
|
|
||||||
Для инкрементного резервного копирование БД в `.sql` файл, вы можете запустить:
|
Для инкрементного резервного копирование БД в `.sql` файл, вы можете запустить:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
|
docker-compose exec postgres pg_dumpall -c -U lemmy > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
### Пример сценария резервного копирования
|
### Пример сценария резервного копирования
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -30,7 +31,7 @@ rsync -avP -zz --rsync-path="sudo rsync" MY_USER@MY_IP:/LEMMY_LOCATION/volumes ~
|
||||||
# Сбросьте существующую БД
|
# Сбросьте существующую БД
|
||||||
docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
|
docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
|
||||||
|
|
||||||
# Восстановите БД из резервного .sql
|
# Восстановите БД из резервного .sql
|
||||||
cat db_dump.sql | docker exec -i FOLDERNAME_postgres_1 psql -U lemmy # restores the db
|
cat db_dump.sql | docker exec -i FOLDERNAME_postgres_1 psql -U lemmy # restores the db
|
||||||
|
|
||||||
# Возможно при импортировании БД, вам понадобится установить новый пароль, отличающийся от предыдущего.
|
# Возможно при импортировании БД, вам понадобится установить новый пароль, отличающийся от предыдущего.
|
||||||
|
@ -41,7 +42,7 @@ docker exec -i FOLDERNAME_postgres_1 psql -U lemmy -c "alter user lemmy with pas
|
||||||
|
|
||||||
Если вы еще не федерируетесь, вы можете изменить свое доменное имя в БД. **Внимание: не делайте этого после начала федерирования, иначе сломаете процесс федерации.**
|
Если вы еще не федерируетесь, вы можете изменить свое доменное имя в БД. **Внимание: не делайте этого после начала федерирования, иначе сломаете процесс федерации.**
|
||||||
|
|
||||||
Зайдите в `psql` вашего docker :
|
Зайдите в `psql` вашего docker :
|
||||||
|
|
||||||
`docker-compose exec postgres psql -U lemmy`
|
`docker-compose exec postgres psql -U lemmy`
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# Federation
|
# Federation
|
||||||
|
|
||||||
Lemmy использует протокол ActivityPub (стандарт W3C) для обеспечения федерации между различными серверами (часто называемыми инстансами). Это очень похоже на то, как работает электронная почта. Например, если вы используете gmail.com, то вы можете отправлять письма не только другим пользователям gmail.com, но и yahoo.com, yandex.ru и так далее. Для этого в электронной почте используется протокол SMTP, поэтому ActivityPub можно рассматривать как «SMTP для социальных сетей». Количество различных действий, возможных в социальных сетях (публикация, комментарий, лайк, публикация и т. Д.), Означает, что ActivityPub намного сложнее, чем SMTP.
|
Lemmy использует протокол ActivityPub (стандарт W3C) для обеспечения федерации между различными серверами (часто называемыми инстансами). Это очень похоже на то, как работает электронная почта. Например, если вы используете gmail.com, то вы можете отправлять письма не только другим пользователям gmail.com, но и yahoo.com, yandex.ru и так далее. Для этого в электронной почте используется протокол SMTP, поэтому ActivityPub можно рассматривать как «SMTP для социальных сетей». Количество различных действий, возможных в социальных сетях (публикация, комментарий, лайк, публикация и т. Д.), Означает, что ActivityPub намного сложнее, чем SMTP.
|
||||||
|
|
||||||
Как и в случае с электронной почтой, федерация ActivityPub происходит только между серверами. Итак, если вы зарегистрированы на `enterprise.lemmy.ml`, вы подключаетесь только к API `enterprise.lemmy.ml`, в то время как сервер берет на себя отправку и прием данных от других экземпляров (например `voyager.lemmy.ml`). Большим преимуществом этого подхода является то, что обычному пользователю не нужно ничего делать, чтобы использовать федерацию. Фактически, если вы используете Lemmy, вы, вероятно, уже используете его. Один из способов подтвердить это - зайти в сообщество или в профиль пользователя. Если ты на `enterprise.lemmy.ml` и вы видите пользователя вроде `@nutomic@voyager.lemmy.ml`, или такое сообщество, как `!main@ds9.lemmy.ml`, тогда они федерированы, то есть они используют инстанс, отличный от вашего.
|
Как и в случае с электронной почтой, федерация ActivityPub происходит только между серверами. Итак, если вы зарегистрированы на `enterprise.lemmy.ml`, вы подключаетесь только к API `enterprise.lemmy.ml`, в то время как сервер берет на себя отправку и прием данных от других экземпляров (например `voyager.lemmy.ml`). Большим преимуществом этого подхода является то, что обычному пользователю не нужно ничего делать, чтобы использовать федерацию. Фактически, если вы используете Lemmy, вы, вероятно, уже используете его. Один из способов подтвердить это - зайти в сообщество или в профиль пользователя. Если ты на `enterprise.lemmy.ml` и вы видите пользователя вроде `@nutomic@voyager.lemmy.ml`, или такое сообщество, как `!main@ds9.lemmy.ml`, тогда они федерированы, то есть они используют инстанс, отличный от вашего.
|
||||||
|
|
||||||
Один из способов воспользоваться преимуществами федерации - открыть другой инстанст, например `ds9.lemmy.ml`, и просмотреть его. Если вы видите интересное сообщество, сообщение или пользователя, с которым хотите взаимодействовать, просто скопируйте его URL и вставьте его в поиск своего собственного экземпляра. Ваш инстанс будет подключаться к другому (при условии, что это разрешено списком разрешений / блокировок) и напрямую отображать удаленный контент для вас, чтобы вы могли следить за сообществом или комментировать сообщение. Вот несколько примеров рабочих примеров:
|
Один из способов воспользоваться преимуществами федерации - открыть другой инстанст, например `ds9.lemmy.ml`, и просмотреть его. Если вы видите интересное сообщество, сообщение или пользователя, с которым хотите взаимодействовать, просто скопируйте его URL и вставьте его в поиск своего собственного экземпляра. Ваш инстанс будет подключаться к другому (при условии, что это разрешено списком разрешений / блокировок) и напрямую отображать удаленный контент для вас, чтобы вы могли следить за сообществом или комментировать сообщение. Вот несколько примеров рабочих примеров:
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ Lemmy использует протокол ActivityPub (стандарт W3C)
|
||||||
- `https://lemmy.ml/post/123` (Пост)
|
- `https://lemmy.ml/post/123` (Пост)
|
||||||
- `https://lemmy.ml/comment/321` (Комментарий)
|
- `https://lemmy.ml/comment/321` (Комментарий)
|
||||||
|
|
||||||
Вы можете увидеть список связанных экземпляров, перейдя по ссылке «Инстансы» внизу любой страницы Lemmy.
|
Вы можете увидеть список связанных экземпляров, перейдя по ссылке «Инстансы» внизу любой страницы Lemmy.
|
||||||
|
|
||||||
## Получение сообществ
|
## Получение сообществ
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ Lemmy использует протокол ActivityPub (стандарт W3C)
|
||||||
- Публикации, редактирования и удаление комментариев
|
- Публикации, редактирования и удаление комментариев
|
||||||
- Действия модераторов
|
- Действия модераторов
|
||||||
|
|
||||||
Вы можете скопировать URL-адрес сообщества из адресной строки браузера и вставить его в поле поиска. Подождите несколько секунд, пост появится внизу. На данный момент нет индикатора загрузки для поиска, поэтому подождите несколько секунд, если он показывает «нет результатов».
|
Вы можете скопировать URL-адрес сообщества из адресной строки браузера и вставить его в поле поиска. Подождите несколько секунд, пост появится внизу. На данный момент нет индикатора загрузки для поиска, поэтому подождите несколько секунд, если он показывает «нет результатов».
|
||||||
|
|
||||||
## Получение постов
|
## Получение постов
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Установка Ansible
|
# Установка Ansible
|
||||||
|
|
||||||
Это то же самое, что и [установка Docker](install_docker.md), за исключением того, что Ansible обрабатывает всё это автоматически. Он также выполняет некоторые дополнительные действия, такие как настройка TLS и электронной почты для вашего экземпляра Lemmy.
|
Это то же самое, что и [установка Docker](install_docker.md), за исключением того, что Ansible обрабатывает всё это автоматически. Он также выполняет некоторые дополнительные действия, такие как настройка TLS и электронной почты для вашего экземпляра Lemmy.
|
||||||
|
|
||||||
Прежде всего вам нужны [установка Ansible на ваш локальный компьютер](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). Вам также необходимо будет установить [Docker SDK для Python](https://pypi.org/project/docker/) используя `pip install docker` ([больше информации в документации Ansible](https://docs.ansible.com/ansible/latest/collections/community/docker/docker_compose_module.html#id4)).
|
Прежде всего вам нужны [установка Ansible на ваш локальный компьютер](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). Вам также необходимо будет установить [Docker SDK для Python](https://pypi.org/project/docker/) используя `pip install docker` ([больше информации в документации Ansible](https://docs.ansible.com/ansible/latest/collections/community/docker/docker_compose_module.html#id4)).
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ ansible-playbook lemmy.yml --become
|
||||||
```
|
```
|
||||||
|
|
||||||
Для обновления до новой версии, просто запустите следующее в локальном репозитарии Lemmy:
|
Для обновления до новой версии, просто запустите следующее в локальном репозитарии Lemmy:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git pull origin main
|
git pull origin main
|
||||||
cd ansible
|
cd ansible
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Установка Docker
|
# Установка Docker
|
||||||
|
|
||||||
Убедитесь в наличии установленных docker и docker-compose (>=`1.24.0`) . В Ubunu, просто запустите `apt install docker-compose docker.io`. Далее,
|
Убедитесь в наличии установленных docker и docker-compose (>=`1.24.0`) . В Ubunu, просто запустите `apt install docker-compose docker.io`. Далее,
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# создайте папку для файлов lemmy. путь не имеет значения, размещайте файлы где угодно
|
# создайте папку для файлов lemmy. путь не имеет значения, размещайте файлы где угодно
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
# Другие методы установки
|
# Другие методы установки
|
||||||
|
|
||||||
Отказ от ответственности: эти методы установки не рекомендуются разработчиками Lemmy. Если у вас возникнут проблемы, вам нужно решать их самостоятельно или спросить соответствующих авторов. Если вы заметили какие-либо ошибки Lemmy в установленном таким образом экземпляре, укажите это в отчете об ошибке.
|
Отказ от ответственности: эти методы установки не рекомендуются разработчиками Lemmy. Если у вас возникнут проблемы, вам нужно решать их самостоятельно или спросить соответствующих авторов. Если вы заметили какие-либо ошибки Lemmy в установленном таким образом экземпляре, укажите это в отчете об ошибке.
|
||||||
|
|
||||||
## Установка Lemmy без Docker
|
## Установка Lemmy без Docker
|
||||||
|
|
||||||
Изначальная инструкция по установке Lemmy, не полагаясь на Docker.
|
Изначальная инструкция по установке Lemmy, не полагаясь на Docker.
|
||||||
|
|
||||||
[https://lemmy.ca/post/1066](https://lemmy.ca/post/1066)
|
[https://lemmy.ca/post/1066](https://lemmy.ca/post/1066)
|
||||||
|
|
||||||
## Установка на Amazon Web Services (AWS)
|
## Установка на Amazon Web Services (AWS)
|
||||||
|
|
||||||
Здесь содержатся необходимые определения инфраструктуры для развертывания Lemmy в [AWS](https://aws.amazon.com/) используя их [Cloud Development Kit](https://docs.aws.amazon.com/cdk/latest/guide/home.html).
|
Здесь содержатся необходимые определения инфраструктуры для развертывания Lemmy в [AWS](https://aws.amazon.com/) используя их [Cloud Development Kit](https://docs.aws.amazon.com/cdk/latest/guide/home.html).
|
||||||
|
|
||||||
[https://github.com/jetbridge/lemmy-cdk](https://github.com/jetbridge/lemmy-cdk)
|
[https://github.com/jetbridge/lemmy-cdk](https://github.com/jetbridge/lemmy-cdk)
|
||||||
|
|
|
@ -26,7 +26,7 @@ proxy_set_header Connection "upgrade";
|
||||||
|
|
||||||
### Ошибка ограничения скорости, когда на сайт заходят множество пользователей
|
### Ошибка ограничения скорости, когда на сайт заходят множество пользователей
|
||||||
|
|
||||||
Убедитесь, что заголовки `X-Real-IP` и `X-Forwarded-For` отправляются в Lemmy посредством reverse proxy. В противном случае он будет считать все действия в соответствии с ограничением скорости IP-адреса обратного прокси-сервера. В nginx это должно выглядеть так:
|
Убедитесь, что заголовки `X-Real-IP` и `X-Forwarded-For` отправляются в Lemmy посредством reverse proxy. В противном случае он будет считать все действия в соответствии с ограничением скорости IP-адреса обратного прокси-сервера. В nginx это должно выглядеть так:
|
||||||
|
|
||||||
```
|
```
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
@ -36,9 +36,9 @@ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
## Федерация
|
## Федерация
|
||||||
|
|
||||||
### Другие инстансы не могут получать локальные объекты (сообщество, пост и т.д.)
|
### Другие инстансы не могут получать локальные объекты (сообщество, пост и т.д.)
|
||||||
|
|
||||||
Ваш reverse proxy (например nginx) должен пересылать запросы с заголовком `Accept: application/activity+json` в бэкэнд. Это обрабатывается следующими строками:
|
Ваш reverse proxy (например nginx) должен пересылать запросы с заголовком `Accept: application/activity+json` в бэкэнд. Это обрабатывается следующими строками:
|
||||||
|
|
||||||
```
|
```
|
||||||
set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}";
|
set $proxpass "http://0.0.0.0:{{ lemmy_ui_port }}";
|
||||||
|
@ -52,12 +52,14 @@ proxy_pass $proxpass;
|
||||||
```
|
```
|
||||||
|
|
||||||
Вы можете проверить, что он работает правильно, выполнив следующие команды, все они должны возвращать действительный JSON:
|
Вы можете проверить, что он работает правильно, выполнив следующие команды, все они должны возвращать действительный JSON:
|
||||||
|
|
||||||
```
|
```
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/u/some-local-user
|
curl -H "Accept: application/activity+json" https://your-instance.com/u/some-local-user
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
curl -H "Accept: application/activity+json" https://your-instance.com/c/some-local-community
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # the id of a local post
|
curl -H "Accept: application/activity+json" https://your-instance.com/post/123 # the id of a local post
|
||||||
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # the id of a local comment
|
curl -H "Accept: application/activity+json" https://your-instance.com/comment/123 # the id of a local comment
|
||||||
```
|
```
|
||||||
|
|
||||||
### Получение удаленных объектов работает, но публикации/комментирование в удаленных сообществах не успешны.
|
### Получение удаленных объектов работает, но публикации/комментирование в удаленных сообществах не успешны.
|
||||||
|
|
||||||
Проверьте это [федерация разрешена в обоих случаях](../federation/administration.md#instance-allowlist-and-blocklist).
|
Проверьте это [федерация разрешена в обоих случаях](../federation/administration.md#instance-allowlist-and-blocklist).
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Справочник по API
|
# Справочник по API
|
||||||
|
|
||||||
Lemmy имеет два взаимосвязанных API:
|
Lemmy имеет два взаимосвязанных API:
|
||||||
|
|
||||||
- [WebSocket (анг.язык)](https://join-lemmy.org/api/index.html)
|
- [WebSocket (анг.язык)](https://join-lemmy.org/api/index.html)
|
||||||
- [HTTP (анг.язык)](http_api.md)
|
- [HTTP (анг.язык)](http_api.md)
|
||||||
|
|
||||||
|
@ -10,8 +11,8 @@ Lemmy имеет два взаимосвязанных API:
|
||||||
|
|
||||||
- [Основное использование](#basic-usage)
|
- [Основное использование](#basic-usage)
|
||||||
- [Типы данных](#data-types)
|
- [Типы данных](#data-types)
|
||||||
* [Типы Lemmy](#lemmy-types)
|
- [Типы Lemmy](#lemmy-types)
|
||||||
* [Низкоуровневые типы](#lower-level-types)
|
- [Низкоуровневые типы](#lower-level-types)
|
||||||
- [Скоростные лимиты по умолчанию](#default-rate-limits)
|
- [Скоростные лимиты по умолчанию](#default-rate-limits)
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
@ -31,17 +32,17 @@ Lemmy имеет два взаимосвязанных API:
|
||||||
|
|
||||||
### Низкоуровневые типы
|
### Низкоуровневые типы
|
||||||
|
|
||||||
- `?` обозначает параметр, который может быть опущен в запросах и отсутствовать в ответах. Это будет типа ***SomeType***.
|
- `?` обозначает параметр, который может быть опущен в запросах и отсутствовать в ответах. Это будет типа **_SomeType_**.
|
||||||
- `[SomeType]` список, содержащий объекты типа ***SomeType***.
|
- `[SomeType]` список, содержащий объекты типа **_SomeType_**.
|
||||||
- Времена и даты временной метки в строках [ISO 8601 (анг.язык)](https://en.wikipedia.org/wiki/ISO_8601) формата. Временные метки будут в формате UTC, ваш клиент должен выполнить преобразование UTC в локальный формат.
|
- Времена и даты временной метки в строках [ISO 8601 (анг.язык)](https://en.wikipedia.org/wiki/ISO_8601) формата. Временные метки будут в формате UTC, ваш клиент должен выполнить преобразование UTC в локальный формат.
|
||||||
|
|
||||||
## Скоростные лимиты по умолчанию
|
## Скоростные лимиты по умолчанию
|
||||||
|
|
||||||
Их можно редактировать в вашем `lemmy.hjson` файле, скопировав соответствующий раздел из [defaults.hjson (анг.язык)](https://github.com/LemmyNet/lemmy/blob/main/config/defaults.hjson).
|
Их можно редактировать в вашем `lemmy.hjson` файле, скопировав соответствующий раздел из [defaults.hjson (анг.язык)](https://github.com/LemmyNet/lemmy/blob/main/config/defaults.hjson).
|
||||||
|
|
||||||
- 3 в час за регистрацию и создание сообщества.
|
- 3 в час за регистрацию и создание сообщества.
|
||||||
- 6 в час за размещение изображений.
|
- 6 в час за размещение изображений.
|
||||||
- 6 за 10 минут на создание поста.
|
- 6 за 10 минут на создание поста.
|
||||||
- 180 действий в минуту для постголосования и создания комментариев.
|
- 180 действий в минуту для постголосования и создания комментариев.
|
||||||
|
|
||||||
Все остальное не ограничено по скорости.
|
Все остальное не ограничено по скорости.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Клиентская разработка
|
# Клиентская разработка
|
||||||
|
|
||||||
- [Тематическое руководство ](client_development/theming.md)
|
- [Тематическое руководство ](client_development/theming.md)
|
||||||
- [Справочник по API](client_development/api_reference.md)
|
- [Справочник по API](client_development/api_reference.md)
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
# Тематическое руководство
|
# Тематическое руководство
|
||||||
|
|
||||||
Пользователи Lemmy [Bootstrap v4](https://getbootstrap.com/), и не много настраиваемых классов css, поэтому любая тема, совместимая с bootstrap v4, должна работать нормально.
|
Пользователи Lemmy [Bootstrap v4](https://getbootstrap.com/), и не много настраиваемых классов css, поэтому любая тема, совместимая с bootstrap v4, должна работать нормально.
|
||||||
|
|
||||||
## Создание
|
## Создание
|
||||||
|
|
||||||
- Используйте такой инструмент, как [bootstrap.build](https://bootstrap.build/) для создания темы начальной загрузки v4. Экспортируйте `bootstrap.min.css` как только вы закончите, сохраните `_variables.scss` тоже.
|
- Используйте такой инструмент, как [bootstrap.build](https://bootstrap.build/) для создания темы начальной загрузки v4. Экспортируйте `bootstrap.min.css` как только вы закончите, сохраните `_variables.scss` тоже.
|
||||||
|
|
||||||
## Тестирование
|
## Тестирование
|
||||||
|
|
||||||
- Чтобы протестировать тему, вы можете использовать веб-инструменты своего браузера или плагин, например stylus, для копирования и вставки темы при просмотре Lemmy.
|
- Чтобы протестировать тему, вы можете использовать веб-инструменты своего браузера или плагин, например stylus, для копирования и вставки темы при просмотре Lemmy.
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
# WebSocket API
|
# WebSocket API
|
||||||
|
|
||||||
[Lemmy WebSocket API 2.0 documentation](https://join-lemmy.org/api/index.html)
|
[Lemmy WebSocket API 2.0 documentation](https://join-lemmy.org/api/index.html)
|
||||||
|
|
|
@ -22,6 +22,7 @@ psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
|
||||||
```
|
```
|
||||||
|
|
||||||
Затем используйте следующий скрипт для запуска тестов:
|
Затем используйте следующий скрипт для запуска тестов:
|
||||||
|
|
||||||
```
|
```
|
||||||
cd api_tests
|
cd api_tests
|
||||||
./run-federation-test.bash
|
./run-federation-test.bash
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
## Список разрешенных и заблокированных инстансов
|
## Список разрешенных и заблокированных инстансов
|
||||||
|
|
||||||
Lemmy имеет две конфигурационных секции `разрешённые инстансы` и `блокированные инстансы`. Они контролируют, какие инстансы могут федерироваться с Lemmy из вне. Обе настройки списка доменов разделяются запятыми, например `lemmy.ml,example.com`. Вы можете вносить изменения в настройках через `/admin`, или напрямую в файловой системе сервера.
|
Lemmy имеет две конфигурационных секции `разрешённые инстансы` и `блокированные инстансы`. Они контролируют, какие инстансы могут федерироваться с Lemmy из вне. Обе настройки списка доменов разделяются запятыми, например `lemmy.ml,example.com`. Вы можете вносить изменения в настройках через `/admin`, или напрямую в файловой системе сервера.
|
||||||
|
|
||||||
Важно отметить, что эти настройки влияют только на отправку и получение данных между инстансами. Если разрешить объединение с определенным инстансом, а затем удалить его из списка разрешений, это не повлияет на ранее объединенные данные. Эти сообщества, пользователи, сообщения и комментарии по-прежнему будут отображаться. Они просто больше не будут обновляться. И даже если инстанс заблокирован, он все равно может получать и отображать общедоступные данные из вашего инстанса.
|
Важно отметить, что эти настройки влияют только на отправку и получение данных между инстансами. Если разрешить объединение с определенным инстансом, а затем удалить его из списка разрешений, это не повлияет на ранее объединенные данные. Эти сообщества, пользователи, сообщения и комментарии по-прежнему будут отображаться. Они просто больше не будут обновляться. И даже если инстанс заблокирован, он все равно может получать и отображать общедоступные данные из вашего инстанса.
|
||||||
|
|
||||||
|
@ -25,4 +25,4 @@ Lemmy имеет две конфигурационных секции `разр
|
||||||
|
|
||||||
Мы рекомендуем поместить список доверенных экземпляров в `разрешённые инстансы`, и федерироваться только с ними. Обратите внимание, что обе стороны должны добавлять друг друга в свои `allowed_instances`, чтобы разрешить двустороннюю федерацию.
|
Мы рекомендуем поместить список доверенных экземпляров в `разрешённые инстансы`, и федерироваться только с ними. Обратите внимание, что обе стороны должны добавлять друг друга в свои `allowed_instances`, чтобы разрешить двустороннюю федерацию.
|
||||||
|
|
||||||
В качестве альтернативы, вы можете использовать чёрный список федераций. В этом случае, добавьте домен в ваш инстанс с которым вы *не* хотите федерироваться. Вы можете установить только один из «разрещённых_инстансов» и «блокированные_инстансов», так как установка обоих не имеет смысла.
|
В качестве альтернативы, вы можете использовать чёрный список федераций. В этом случае, добавьте домен в ваш инстанс с которым вы _не_ хотите федерироваться. Вы можете установить только один из «разрещённых*инстансов» и «блокированные*инстансов», так как установка обоих не имеет смысла.
|
||||||
|
|
|
@ -1,51 +1,51 @@
|
||||||
# Протокол Федерации в Lemmy
|
# Протокол Федерации в Lemmy
|
||||||
|
|
||||||
Протокол Lemmy (или протокол Lemmy Federation) - это строгое подмножество [протокола ActivityPub](https://www.w3.org/TR/activitypub/). Любое отклонение от протокола ActivityPub является ошибкой в Lemmy или в этой документации (или в обоих).
|
Протокол Lemmy (или протокол Lemmy Federation) - это строгое подмножество [протокола ActivityPub](https://www.w3.org/TR/activitypub/). Любое отклонение от протокола ActivityPub является ошибкой в Lemmy или в этой документации (или в обоих).
|
||||||
|
|
||||||
Этот документ предназначен для разработчиков, знакомых с протоколами ActivityPub и ActivityStreams. Он дает подробное описание моделей акторов, объектов и действий, используемых Lemmy.
|
Этот документ предназначен для разработчиков, знакомых с протоколами ActivityPub и ActivityStreams. Он дает подробное описание моделей акторов, объектов и действий, используемых Lemmy.
|
||||||
|
|
||||||
Прежде чем читать это, взгляните на наш [Обзор федерации](Contributing_federation_overview.md), чтобы получить представление о том, как федерация Lemmy работает на высшем уровне.
|
Прежде чем читать это, взгляните на наш [Обзор федерации](Contributing_federation_overview.md), чтобы получить представление о том, как федерация Lemmy работает на высшем уровне.
|
||||||
|
|
||||||
Lemmy еще не во всех отношениях следует спецификации ActivityPub. Например, мы не устанавливаем допустимый контекст, указывающий на наши поля контекста. Мы также игнорируем такие поля, как «inbox», «outbox» или «endpoints» для удалённых участников и предполагаем, что все принадлежит Lemmy. Для обзора девиаций прочтите [#698](https://github.com/LemmyNet/lemmy/issues/698). Они будут исправлены в ближайшее время.
|
Lemmy еще не во всех отношениях следует спецификации ActivityPub. Например, мы не устанавливаем допустимый контекст, указывающий на наши поля контекста. Мы также игнорируем такие поля, как «inbox», «outbox» или «endpoints» для удалённых участников и предполагаем, что все принадлежит Lemmy. Для обзора девиаций прочтите [#698](https://github.com/LemmyNet/lemmy/issues/698). Они будут исправлены в ближайшее время.
|
||||||
|
|
||||||
Lemmy также не очень гибкий, когда речь идет о входящих действиях и объектах. Они должны быть в точности идентичны приведенным ниже примерам. Такие вещи, как наличие массива вместо одного значения или идентификатора объекта вместо полного объекта, приведут к ошибке.
|
Lemmy также не очень гибкий, когда речь идет о входящих действиях и объектах. Они должны быть в точности идентичны приведенным ниже примерам. Такие вещи, как наличие массива вместо одного значения или идентификатора объекта вместо полного объекта, приведут к ошибке.
|
||||||
|
|
||||||
В следующих таблицах «обязательный» означает, будет ли Lemmy принимать входящие действия без этого поля. Сам Lemmy всегда будет включать все непустые поля.
|
В следующих таблицах «обязательный» означает, будет ли Lemmy принимать входящие действия без этого поля. Сам Lemmy всегда будет включать все непустые поля.
|
||||||
|
|
||||||
<!-- toc -->
|
<!-- toc -->
|
||||||
|
|
||||||
- [Аннотация](#аннотация)
|
- [Аннотация](#аннотация)
|
||||||
- [Акторы](#Акторы)
|
- [Акторы](#Акторы)
|
||||||
* [Сообщество](#Сообщество)
|
- [Сообщество](#Сообщество)
|
||||||
+ [Исходящие Сообщения Сообщества](#Исходящие-Сообщения-Сообщества)
|
- [Исходящие Сообщения Сообщества](#Исходящие-Сообщения-Сообщества)
|
||||||
+ [Подписчики Сообщества](#Подписчики-Сообщества)
|
- [Подписчики Сообщества](#Подписчики-Сообщества)
|
||||||
+ [Модераторы Сообщества](#Модераторы-Сообщества)
|
- [Модераторы Сообщества](#Модераторы-Сообщества)
|
||||||
* [Пользователь](#Пользователь)
|
- [Пользователь](#Пользователь)
|
||||||
+ [Входящие Пользователя](#Входящие-Пользователя)
|
- [Входящие Пользователя](#Входящие-Пользователя)
|
||||||
- [Объект](#объект)
|
- [Объект](#объект)
|
||||||
* [Пост](#пост)
|
- [Пост](#пост)
|
||||||
* [Комментарий](#комментарий)
|
- [Комментарий](#комментарий)
|
||||||
* [Личное сообщение](#личное-сообщение)
|
- [Личное сообщение](#личное-сообщение)
|
||||||
- [Виды активности](#виды-активности)
|
- [Виды активности](#виды-активности)
|
||||||
* [Пользователь в Сообществе](#пользователь-в-сообществе)
|
- [Пользователь в Сообществе](#пользователь-в-сообществе)
|
||||||
+ [Следовать](#следовать)
|
- [Следовать](#следовать)
|
||||||
+ [Отписаться](#отписаться)
|
- [Отписаться](#отписаться)
|
||||||
+ [Создать или Обновить Сообщение](#создать-или-обновить-сообщение)
|
- [Создать или Обновить Сообщение](#создать-или-обновить-сообщение)
|
||||||
+ [Создать или Обновить Комментарий](#создать-или-обновить-комментарий)
|
- [Создать или Обновить Комментарий](#создать-или-обновить-комментарий)
|
||||||
+ [Понравилось Сообщение или Комментарий](#понравилось-сообщение-или-комментарий)
|
- [Понравилось Сообщение или Комментарий](#понравилось-сообщение-или-комментарий)
|
||||||
+ [Сообщение или Комментарий не нравится](#сообщение-или-комментарий-не-нравится)
|
- [Сообщение или Комментарий не нравится](#сообщение-или-комментарий-не-нравится)
|
||||||
+ [Удалить Пост или Комментарий](#удалить-пост-или-комментарий)
|
- [Удалить Пост или Комментарий](#удалить-пост-или-комментарий)
|
||||||
+ [Убрать Пост или Комментарий](#remove-post-or-comment)
|
- [Убрать Пост или Комментарий](#remove-post-or-comment)
|
||||||
+ [Отмена](#отмена)
|
- [Отмена](#отмена)
|
||||||
* [Сообщество для Пользователя](#сообщество-для-пользователя)
|
- [Сообщество для Пользователя](#сообщество-для-пользователя)
|
||||||
+ [Принятие Подписки ](#принятие-подписки )
|
- [Принятие Подписки ](#принятие-подписки)
|
||||||
+ [Публикация](#публикация)
|
- [Публикация](#публикация)
|
||||||
+ [Убрать или Удалить Сообщество](#убрать-или-удалить-сообщество)
|
- [Убрать или Удалить Сообщество](#убрать-или-удалить-сообщество)
|
||||||
+ [Восстановить Убранное или Удалённое Сообщество](#восстановить-убранное-или-удалённое-сообщество)
|
- [Восстановить Убранное или Удалённое Сообщество](#восстановить-убранное-или-удалённое-сообщество)
|
||||||
* [От Пользователя к Пользователю](#от-пользователя-к-пользователю)
|
- [От Пользователя к Пользователю](#от-пользователя-к-пользователю)
|
||||||
+ [Создать или Обновить личное сообщение](#создать-или-обновить-личное-сообщение)
|
- [Создать или Обновить личное сообщение](#создать-или-обновить-личное-сообщение)
|
||||||
+ [Удалить Личное Сообщение](#удалить-личное-сообщение)
|
- [Удалить Личное Сообщение](#удалить-личное-сообщение)
|
||||||
+ [Отмена Удаления Личного Сообщения](#отмена-удаления-личного-сообщения)⏎
|
- [Отмена Удаления Личного Сообщения](#отмена-удаления-личного-сообщения)⏎
|
||||||
|
|
||||||
<!-- tocstop -->
|
<!-- tocstop -->
|
||||||
|
|
||||||
|
@ -53,24 +53,25 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"@context": [
|
"@context": [
|
||||||
"https://www.w3.org/ns/activitystreams",
|
"https://www.w3.org/ns/activitystreams",
|
||||||
{
|
{
|
||||||
"moderators": "as:moderators",
|
"moderators": "as:moderators",
|
||||||
"sc": "http://schema.org#",
|
"sc": "http://schema.org#",
|
||||||
"stickied": "as:stickied",
|
"stickied": "as:stickied",
|
||||||
"sensitive": "as:sensitive",
|
"sensitive": "as:sensitive",
|
||||||
"pt": "https://join.lemmy.ml#",
|
"pt": "https://join.lemmy.ml#",
|
||||||
"comments_enabled": {
|
"comments_enabled": {
|
||||||
"type": "sc:Boolean",
|
"type": "sc:Boolean",
|
||||||
"id": "pt:commentsEnabled"
|
"id": "pt:commentsEnabled"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"https://w3id.org/security/v1"
|
"https://w3id.org/security/v1"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Аннотация одинакова для всех действий и объектов.
|
|
||||||
|
Аннотация одинакова для всех действий и объектов.
|
||||||
|
|
||||||
## Акторы
|
## Акторы
|
||||||
|
|
||||||
|
@ -121,24 +122,24 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| `preferredUsername` | да | Имя актора |
|
| `preferredUsername` | да | Имя актора |
|
||||||
| `name` | да | Название сообщества |
|
| `name` | да | Название сообщества |
|
||||||
| `sensitive` | да | Правда указывает на то, что все сообщения в сообществе NSFW |
|
| `sensitive` | да | Правда указывает на то, что все сообщения в сообществе NSFW |
|
||||||
| `attributedTo` | да | Сначала создатель сообщества, затем все остальные модераторы |
|
| `attributedTo` | да | Сначала создатель сообщества, затем все остальные модераторы |
|
||||||
| `content` | нет | Текст для боковой панели сообщества, обычно содержащий описание и правила |
|
| `content` | нет | Текст для боковой панели сообщества, обычно содержащий описание и правила |
|
||||||
| `icon` | нет | Значок, отображаемый рядом с названием сообщества |
|
| `icon` | нет | Значок, отображаемый рядом с названием сообщества |
|
||||||
| `image` | нет | Изображение баннера, отображаемое вверху страницы сообщества |
|
| `image` | нет | Изображение баннера, отображаемое вверху страницы сообщества |
|
||||||
| `inbox` | нет | URL-адрес папки входящих сообщений ActivityPub |
|
| `inbox` | нет | URL-адрес папки входящих сообщений ActivityPub |
|
||||||
| `outbox` | нет | URL-адрес исходящего сообщения ActivityPub, содержит только до 20 последних сообщений, без комментариев, голосов или других действий |
|
| `outbox` | нет | URL-адрес исходящего сообщения ActivityPub, содержит только до 20 последних сообщений, без комментариев, голосов или других действий |
|
||||||
| `followers` | нет | URL-адрес коллекции подписчиков, содержит только количество подписчиков, без ссылок на отдельных подписчиков |
|
| `followers` | нет | URL-адрес коллекции подписчиков, содержит только количество подписчиков, без ссылок на отдельных подписчиков |
|
||||||
| `endpoints` | нет | Содержит URL общего почтового ящика |
|
| `endpoints` | нет | Содержит URL общего почтового ящика |
|
||||||
| `published` | нет | Дата и время, когда сообщество было впервые создано |
|
| `published` | нет | Дата и время, когда сообщество было впервые создано |
|
||||||
| `updated` | нет | Дата и время последнего изменения сообщества |
|
| `updated` | нет | Дата и время последнего изменения сообщества |
|
||||||
| `publicKey` | да | Открытый ключ, используемый для проверки подписей этого актора |
|
| `publicKey` | да | Открытый ключ, используемый для проверки подписей этого актора |
|
||||||
|
|
||||||
#### Исходящие Сообщения Сообщества
|
#### Исходящие Сообщения Сообщества
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -227,20 +228,20 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ------------------- | ----------- | ---------------------------------------------------------------- |
|
||||||
| `preferredUsername` | да | Имя Актора |
|
| `preferredUsername` | да | Имя Актора |
|
||||||
| `name` | нет | Отображаемое имя пользователя |
|
| `name` | нет | Отображаемое имя пользователя |
|
||||||
| `content` | нет | БИО пользователя |
|
| `content` | нет | БИО пользователя |
|
||||||
| `icon` | нет | Аватар пользователя, отображаемый рядом с именем пользователя |
|
| `icon` | нет | Аватар пользователя, отображаемый рядом с именем пользователя |
|
||||||
| `image` | нет | Баннер пользователя, отображаемый в верхней части профиля |
|
| `image` | нет | Баннер пользователя, отображаемый в верхней части профиля |
|
||||||
| `inbox` | нет | URL-адрес папки входящих сообщений ActivityPub |
|
| `inbox` | нет | URL-адрес папки входящих сообщений ActivityPub |
|
||||||
| `endpoints` | нет | Содержит URL общего почтового ящика |
|
| `endpoints` | нет | Содержит URL общего почтового ящика |
|
||||||
| `published` | нет | Дата и время, когда пользователь зарегистрировался |
|
| `published` | нет | Дата и время, когда пользователь зарегистрировался |
|
||||||
| `updated` | нет | Дата и время последнего изменения профиля пользователя |
|
| `updated` | нет | Дата и время последнего изменения профиля пользователя |
|
||||||
| `publicKey` | да | Открытый ключ используется для проверки подписей из этого актора |
|
| `publicKey` | да | Открытый ключ используется для проверки подписей из этого актора |
|
||||||
|
|
||||||
#### Входящие Пользователя
|
#### Входящие Пользователя
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -252,7 +253,7 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Папка для входящих сообщений пользователя еще не реализована и является лишь заполнителем для реализаций ActivityPub, которые в ней нуждаются.
|
Папка для входящих сообщений пользователя еще не реализована и является лишь заполнителем для реализаций ActivityPub, которые в ней нуждаются.
|
||||||
|
|
||||||
## Объект
|
## Объект
|
||||||
|
|
||||||
|
@ -290,19 +291,19 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ----------------- | ----------- | ------------------------------------------------------------------------------------------------------------------ |
|
||||||
| `attributedTo` | да | Идентификатор пользователя, который создал этот пост |
|
| `attributedTo` | да | Идентификатор пользователя, который создал этот пост |
|
||||||
| `to` | да | Идентификатор сообщества, в котором оно было опубликовано |
|
| `to` | да | Идентификатор сообщества, в котором оно было опубликовано |
|
||||||
| `name` | да | Заголовок сообщения |
|
| `name` | да | Заголовок сообщения |
|
||||||
| `content` | нет | Тело сообщения |
|
| `content` | нет | Тело сообщения |
|
||||||
| `url` | нет | Произвольная ссылка, которой нужно поделиться |
|
| `url` | нет | Произвольная ссылка, которой нужно поделиться |
|
||||||
| `image` | нет | Миниатюра для `url`, присутствует только в том случае, если это ссылка на изображение |
|
| `image` | нет | Миниатюра для `url`, присутствует только в том случае, если это ссылка на изображение |
|
||||||
| `commentsEnabled` | да | Значение false означает, что публикация заблокирована и комментарии к ней добавить нельзя |
|
| `commentsEnabled` | да | Значение false означает, что публикация заблокирована и комментарии к ней добавить нельзя |
|
||||||
| `sensitive` | да | True отмечает сообщение как NSFW, размывает миниатюру и скрывает ее от пользователей с отключенной настройкой NSFW |
|
| `sensitive` | да | True отмечает сообщение как NSFW, размывает миниатюру и скрывает ее от пользователей с отключенной настройкой NSFW |
|
||||||
| `stickied` | да | True означает, что оно отображается в верхней части сообщества |
|
| `stickied` | да | True означает, что оно отображается в верхней части сообщества |
|
||||||
| `published` | нет | Дата и время создания сообщения |
|
| `published` | нет | Дата и время создания сообщения |
|
||||||
| `updated` | нет | Дата и время, когда сообщение было отредактировано (отсутствует, если оно никогда не редактировалось) |
|
| `updated` | нет | Дата и время, когда сообщение было отредактировано (отсутствует, если оно никогда не редактировалось) |
|
||||||
|
|
||||||
### Комментарий
|
### Комментарий
|
||||||
|
|
||||||
|
@ -330,14 +331,14 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| -------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | да | Идентификатор пользователя, создавшего комментарий |
|
| `attributedTo` | да | Идентификатор пользователя, создавшего комментарий |
|
||||||
| `to` | да | Сообщество, в котором был сделан комментарий |
|
| `to` | да | Сообщество, в котором был сделан комментарий |
|
||||||
| `content` | да | Текст комментария |
|
| `content` | да | Текст комментария |
|
||||||
| `inReplyTo` | да | Идентификатор поста, в которой был сделан этот комментарий, и родительского комментария. Если это комментарий верхнего уровня, `inReplyTo` содержит только сообщение |
|
| `inReplyTo` | да | Идентификатор поста, в которой был сделан этот комментарий, и родительского комментария. Если это комментарий верхнего уровня, `inReplyTo` содержит только сообщение |
|
||||||
| `published` | нет | Дата и время создания комментария |
|
| `published` | нет | Дата и время создания комментария |
|
||||||
| `updated` | нет | Дата и время, когда комментарий был отредактирован (отсутствует, если он никогда не редактировался) |
|
| `updated` | нет | Дата и время, когда комментарий был отредактирован (отсутствует, если он никогда не редактировался) |
|
||||||
|
|
||||||
### Личное сообщение
|
### Личное сообщение
|
||||||
|
|
||||||
|
@ -361,13 +362,13 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| -------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||||
| `attributedTo` | Идентификатор пользователя, создавшего это личное сообщение |
|
| `attributedTo` | Идентификатор пользователя, создавшего это личное сообщение |
|
||||||
| `to` | Идентификатор получателя |
|
| `to` | Идентификатор получателя |
|
||||||
| `content` | да | Текст личного сообщения |
|
| `content` | да | Текст личного сообщения |
|
||||||
| `published` | нет | Дата и время создания сообщения |
|
| `published` | нет | Дата и время создания сообщения |
|
||||||
| `updated` | нет | Дата и время, когда сообщение было отредактировано (отсутствует, если оно никогда не редактировалось) |
|
| `updated` | нет | Дата и время, когда сообщение было отредактировано (отсутствует, если оно никогда не редактировалось) |
|
||||||
|
|
||||||
## Виды активности
|
## Виды активности
|
||||||
|
|
||||||
|
@ -375,7 +376,7 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
|
|
||||||
#### Следовать
|
#### Следовать
|
||||||
|
|
||||||
Когда пользователь нажимает "Подписаться" в сообществе, `Follow` отправляется. Сообщество автоматически отвечает `Accept/Follow`.
|
Когда пользователь нажимает "Подписаться" в сообществе, `Follow` отправляется. Сообщество автоматически отвечает `Accept/Follow`.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -388,14 +389,14 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ------------------------------------------------- |
|
||||||
| `actor` | да | Пользователь, отправляющий запрос на отслеживание |
|
| `actor` | да | Пользователь, отправляющий запрос на отслеживание |
|
||||||
| `object` | да | Сообщество, за которым нужно следить |
|
| `object` | да | Сообщество, за которым нужно следить |
|
||||||
|
|
||||||
#### Отписаться
|
#### Отписаться
|
||||||
|
|
||||||
Нажатие на кнопку отказа от подписки в сообществе вызывает отправку сообщения `Undo/Follow`. Сообщество удаляет пользователя из списка подписчиков после его получения.
|
Нажатие на кнопку отказа от подписки в сообществе вызывает отправку сообщения `Undo/Follow`. Сообщество удаляет пользователя из списка подписчиков после его получения.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -432,15 +433,15 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ---------------------------------- |
|
||||||
| `type` | да | либо `Create` или `Update` |
|
| `type` | да | либо `Create` или `Update` |
|
||||||
| `cc` | да | Сообщество, в котором пишется пост |
|
| `cc` | да | Сообщество, в котором пишется пост |
|
||||||
| `object` | да | Пост создается |
|
| `object` | да | Пост создается |
|
||||||
|
|
||||||
#### Создать или Обновить Комментарий
|
#### Создать или Обновить Комментарий
|
||||||
|
|
||||||
Ответ на сообщение или другой комментарий. Может содержать упоминания других пользователей. Редактирование ранее созданного сообщения вызывает почти идентичную активность, за исключением `type` являющейся `Update`.
|
Ответ на сообщение или другой комментарий. Может содержать упоминания других пользователей. Редактирование ранее созданного сообщения вызывает почти идентичную активность, за исключением `type` являющейся `Update`.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -462,11 +463,11 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `tag` | нет | Список пользователей, упомянутых в комментарии (например `@user@example.com`) |
|
| `tag` | нет | Список пользователей, упомянутых в комментарии (например `@user@example.com`) |
|
||||||
| `cc` | да | Сообщество, в котором создается публикация, пользователь, которому отвечает (создатель родительской публикации / комментария), а также любые упомянутые пользователи |
|
| `cc` | да | Сообщество, в котором создается публикация, пользователь, которому отвечает (создатель родительской публикации / комментария), а также любые упомянутые пользователи |
|
||||||
| `object` | да | Создаваемый комментарий |
|
| `object` | да | Создаваемый комментарий |
|
||||||
|
|
||||||
#### Понравилось Сообщение или Комментарий
|
#### Понравилось Сообщение или Комментарий
|
||||||
|
|
||||||
|
@ -486,10 +487,10 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ------------------------------------------------------------- |
|
||||||
| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий |
|
| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий |
|
||||||
| `object` | да | За публикацию или комментарий проголосовали |
|
| `object` | да | За публикацию или комментарий проголосовали |
|
||||||
|
|
||||||
#### Сообщение или Комментарий не нравится
|
#### Сообщение или Комментарий не нравится
|
||||||
|
|
||||||
|
@ -509,14 +510,14 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ------------------------------------------------------------- |
|
||||||
| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий |
|
| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий |
|
||||||
| `object` | да | За публикацию или комментарий проголосовали |
|
| `object` | да | За публикацию или комментарий проголосовали |
|
||||||
|
|
||||||
#### Удалить Пост или Комментарий
|
#### Удалить Пост или Комментарий
|
||||||
|
|
||||||
Удаляет ранее созданный пост или комментарий. Это может сделать только первоначальный создатель этого сообщения/комментария.
|
Удаляет ранее созданный пост или комментарий. Это может сделать только первоначальный создатель этого сообщения/комментария.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -532,14 +533,14 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ------------------------------------------------------------- |
|
||||||
| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий |
|
| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий |
|
||||||
| `object` | да | Идентификатор удаляемой записи или комментария |
|
| `object` | да | Идентификатор удаляемой записи или комментария |
|
||||||
|
|
||||||
#### Убрать Пост или Комментарий
|
#### Убрать Пост или Комментарий
|
||||||
|
|
||||||
Убирает пост или комментарий. Это может быть сделано только модератором сообщества или администратором инстанса, где размещено сообщество.
|
Убирает пост или комментарий. Это может быть сделано только модератором сообщества или администратором инстанса, где размещено сообщество.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -555,10 +556,10 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ------------------------------------------------------------- |
|
||||||
| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий |
|
| `cc` | да | Идентификатор сообщества, в котором размещён пост/комментарий |
|
||||||
| `object` | да | Идентификатор удаляемой записи или комментария |
|
| `object` | да | Идентификатор удаляемой записи или комментария |
|
||||||
|
|
||||||
#### Отмена
|
#### Отмена
|
||||||
|
|
||||||
|
@ -578,9 +579,9 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | -------------------------------------------------------------------------- |
|
||||||
| `object` | да | Любая `Like`, `Dislike`, `Delete` или `Remove` активности как описано выше |
|
| `object` | да | Любая `Like`, `Dislike`, `Delete` или `Remove` активности как описано выше |
|
||||||
|
|
||||||
#### Добавить Модератора
|
#### Добавить Модератора
|
||||||
|
|
||||||
|
@ -603,7 +604,7 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
|
|
||||||
#### Убрать Модератора
|
#### Убрать Модератора
|
||||||
|
|
||||||
Удаление существующего модератора из сообщества. Должено быть отправлено существующим модератором сообщества.
|
Удаление существующего модератора из сообщества. Должено быть отправлено существующим модератором сообщества.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -619,9 +620,10 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
"target": "https://enterprise.lemmy.ml/c/main/moderators"
|
"target": "https://enterprise.lemmy.ml/c/main/moderators"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Сообщество для Пользователя
|
### Сообщество для Пользователя
|
||||||
|
|
||||||
#### Принятие Подписки
|
#### Принятие Подписки
|
||||||
|
|
||||||
Автоматически отправляется сообществом в ответ на `Follow`. В то же время сообщество добавляет этого пользователя в свой список подписчиков.
|
Автоматически отправляется сообществом в ответ на `Follow`. В то же время сообщество добавляет этого пользователя в свой список подписчиков.
|
||||||
|
|
||||||
|
@ -642,15 +644,15 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ------------------------------------------------- |
|
||||||
| `actor` | да | То же сообщество, что и в `Follow` активность |
|
| `actor` | да | То же сообщество, что и в `Follow` активность |
|
||||||
| `to` | нет | Идентификатор пользователя, отправившего `Follow` |
|
| `to` | нет | Идентификатор пользователя, отправившего `Follow` |
|
||||||
| `object` | да | Ранее отправленные `Follow` активность |
|
| `object` | да | Ранее отправленные `Follow` активность |
|
||||||
|
|
||||||
#### Публикация
|
#### Публикация
|
||||||
|
|
||||||
Когда сообщество получает сообщение или комментарий, оно помещает его в `Announce` и отправляет его всем подписчикам.
|
Когда сообщество получает сообщение или комментарий, оно помещает его в `Announce` и отправляет его всем подписчикам.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -666,13 +668,13 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| `object` | да | Любая из `Create`, `Update`, `Like`, `Dislike`, `Delete` `Remove` или `Undo` активности описанная в [Пользователь в Сообществе](#пользователь-в-сообществе) секции |
|
| `object` | да | Любая из `Create`, `Update`, `Like`, `Dislike`, `Delete` `Remove` или `Undo` активности описанная в [Пользователь в Сообществе](#пользователь-в-сообществе) секции |
|
||||||
|
|
||||||
#### Убрать или Удалить Сообщество
|
#### Убрать или Удалить Сообщество
|
||||||
|
|
||||||
Администратор инстанса или модератор могут удалять сообщества.
|
Администратор инстанса или модератор могут удалять сообщества.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -688,14 +690,13 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
| Имя в поле | Обязательно | Описание |
|
||||||
| Имя в поле | Обязательно | Описание |
|
| ---------- | ----------- | -------------------------- |
|
||||||
|---|---|---|
|
| `type` | да | Либо `Remove` или `Delete` |
|
||||||
| `type` | да | Либо `Remove` или `Delete` |
|
|
||||||
|
|
||||||
#### Восстановить Убранное или Удалённое Сообщество
|
#### Восстановить Убранное или Удалённое Сообщество
|
||||||
|
|
||||||
Отменяет убранное сообщество или удалённое.
|
Отменяет убранное сообщество или удалённое.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -721,9 +722,10 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
| Имя в поле | Обязательно | Описание |
|
|
||||||
|---|---|---|
|
| Имя в поле | Обязательно | Описание |
|
||||||
| `object.type` | да | Либо `Remove` или `Delete` |
|
| ------------- | ----------- | -------------------------- |
|
||||||
|
| `object.type` | да | Либо `Remove` или `Delete` |
|
||||||
|
|
||||||
### От Пользователя к Пользователю
|
### От Пользователя к Пользователю
|
||||||
|
|
||||||
|
@ -742,12 +744,12 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
| Имя в поле | Обязательно | Описание |
|
| Имя в поле | Обязательно | Описание |
|
||||||
|---|---|---|
|
| ---------- | ----------- | ------------------------------------- |
|
||||||
| `type` | да | Либо `Create` или `Update` |
|
| `type` | да | Либо `Create` или `Update` |
|
||||||
| `object` | да | [Личное сообщение](#личное-сообщение) |
|
| `object` | да | [Личное сообщение](#личное-сообщение) |
|
||||||
|
|
||||||
#### Удалить Личное Сообщение
|
#### Удалить Личное Сообщение
|
||||||
|
|
||||||
Удаляет предыдущее личное сообщение.
|
Удаляет предыдущее личное сообщение.
|
||||||
|
|
||||||
|
@ -764,7 +766,7 @@ Lemmy также не очень гибкий, когда речь идет о
|
||||||
|
|
||||||
#### Отмена Удаления Личного Сообщения
|
#### Отмена Удаления Личного Сообщения
|
||||||
|
|
||||||
Восстанавливает ранее удалённое личное сообщение. Объект создается заново, так как идентификатор действия и другие поля отличаются.
|
Восстанавливает ранее удалённое личное сообщение. Объект создается заново, так как идентификатор действия и другие поля отличаются.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
Этот документ предназначен для всех, кто хочет знать, как работает федерация Lemmy, не вдаваясь в технические подробности. Он предназначен для предоставления общего принципа работы федерации ActivityPub в Lemmy. Если вы сами реализуете ActivityPub и хотите быть совместимым с Lemmy, прочтите наши [ActivityPub API outline](contributing_apub_api_outline.md).
|
Этот документ предназначен для всех, кто хочет знать, как работает федерация Lemmy, не вдаваясь в технические подробности. Он предназначен для предоставления общего принципа работы федерации ActivityPub в Lemmy. Если вы сами реализуете ActivityPub и хотите быть совместимым с Lemmy, прочтите наши [ActivityPub API outline](contributing_apub_api_outline.md).
|
||||||
|
|
||||||
## Соглашения документации
|
## Соглашения документации
|
||||||
|
|
||||||
Чтобы не усложнять, иногда вы можете увидеть вещи в формате `Create/Note` или `Delete/Event` или `Undo/Follow`. То, что перед косой чертой - это Activity, а то, что после косой черты - это объект внутри Activity в свойстве `object`. Итак, это следует читать следующим образом:
|
Чтобы не усложнять, иногда вы можете увидеть вещи в формате `Create/Note` или `Delete/Event` или `Undo/Follow`. То, что перед косой чертой - это Activity, а то, что после косой черты - это объект внутри Activity в свойстве `object`. Итак, это следует читать следующим образом:
|
||||||
|
|
||||||
* `Create / Note`: действие` Create`, содержащее `Note` в поле` object`.
|
- `Create / Note`: действие` Create`, содержащее `Note` в поле` object`.
|
||||||
* `Delete / Event`: действие` Delete`, содержащее `Event` в поле` object`
|
- `Delete / Event`: действие` Delete`, содержащее `Event` в поле` object`
|
||||||
* `Undo / Follow`: действие` Undo`, содержащее `Follow` в поле` object`
|
- `Undo / Follow`: действие` Undo`, содержащее `Follow` в поле` object`
|
||||||
|
|
||||||
В Lemmy мы используем определенные термины для обозначения элементов ActivityPub. По сути, это наши конкретные реализации хорошо известных концепций ActivityPub:
|
В Lemmy мы используем определенные термины для обозначения элементов ActivityPub. По сути, это наши конкретные реализации хорошо известных концепций ActivityPub:
|
||||||
|
|
||||||
|
@ -19,13 +19,13 @@
|
||||||
|
|
||||||
Этот документ состоит из трех основных разделов:
|
Этот документ состоит из трех основных разделов:
|
||||||
|
|
||||||
* __Философия федерации__ излагает общую модель того, как это должно быть федеративным
|
- **Философия федерации** излагает общую модель того, как это должно быть федеративным
|
||||||
* __Действия пользователя__ описывает, какие действия может предпринять Пользователь для взаимодействия
|
- **Действия пользователя** описывает, какие действия может предпринять Пользователь для взаимодействия
|
||||||
* __Активность сообщества__ описывает, что Сообщество делает в ответ на определенные действия Пользователя.
|
- **Активность сообщества** описывает, что Сообщество делает в ответ на определенные действия Пользователя.
|
||||||
|
|
||||||
## Философия федерации
|
## Философия федерации
|
||||||
|
|
||||||
Основным действующим лицом в «Lemmy» является Сообщество. Каждое сообщество находится в единственном экземпляре и состоит из списка сообщений и списка подписчиков. Основное взаимодействие заключается в том, что Пользователь отправляет пост или комментарий, связанный с публикацией или комментарием в сообществе, который затем аннонсируется об этом всем подписчикам.
|
Основным действующим лицом в «Lemmy» является Сообщество. Каждое сообщество находится в единственном экземпляре и состоит из списка сообщений и списка подписчиков. Основное взаимодействие заключается в том, что Пользователь отправляет пост или комментарий, связанный с публикацией или комментарием в сообществе, который затем аннонсируется об этом всем подписчикам.
|
||||||
|
|
||||||
В каждом Сообществе есть определенный Пользователь-создатель, который отвечает за установку правил, назначение модераторов и удаление контента, нарушающего правила.
|
В каждом Сообществе есть определенный Пользователь-создатель, который отвечает за установку правил, назначение модераторов и удаление контента, нарушающего правила.
|
||||||
|
|
||||||
|
@ -35,13 +35,13 @@
|
||||||
|
|
||||||
Пользователи могут не подписываться друг на друга, или не следовать за каким либо сообществом.
|
Пользователи могут не подписываться друг на друга, или не следовать за каким либо сообществом.
|
||||||
|
|
||||||
Наша реализация федерации уже завершена, но на данном этапе, мы не совсем сосредоточились на соблюдении спецификации ActivityPub. В связи с этим, Lemmy, пока, несовместима с реализациями, которые должны давать возможность отправлять и получать рабочую активность. Это то, что мы планируем исправить в ближайшем будущем. Проверить [#698](https://github.com/LemmyNet/lemmy/issues/698) обзор наших несоответствий.
|
Наша реализация федерации уже завершена, но на данном этапе, мы не совсем сосредоточились на соблюдении спецификации ActivityPub. В связи с этим, Lemmy, пока, несовместима с реализациями, которые должны давать возможность отправлять и получать рабочую активность. Это то, что мы планируем исправить в ближайшем будущем. Проверить [#698](https://github.com/LemmyNet/lemmy/issues/698) обзор наших несоответствий.
|
||||||
|
|
||||||
## Действия пользователя
|
## Действия пользователя
|
||||||
|
|
||||||
### Следовать за сообществом
|
### Следовать за сообществом
|
||||||
|
|
||||||
На каждой странице сообщества есть кнопка «Подписаться». Нажатие на нее запускает действие `Follow`, которое будет отправлено пользователем в почтовый ящик сообщества. Сообщество автоматически ответит на почтовый ящик пользователя действием `Accept/Follow`. Он также добавит пользователя в свой список подписчиков и предоставит пользователю информацию о сообщениях и комментариях в Сообществе.
|
На каждой странице сообщества есть кнопка «Подписаться». Нажатие на нее запускает действие `Follow`, которое будет отправлено пользователем в почтовый ящик сообщества. Сообщество автоматически ответит на почтовый ящик пользователя действием `Accept/Follow`. Он также добавит пользователя в свой список подписчиков и предоставит пользователю информацию о сообщениях и комментариях в Сообществе.
|
||||||
|
|
||||||
### Отписаться от Сообщества
|
### Отписаться от Сообщества
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
### Создать пост
|
### Создать пост
|
||||||
|
|
||||||
Когда пользователь создает новое сообщение в определённом сообществе, оно отправляется как `Create/Page` в входящие Сообщества.
|
Когда пользователь создает новое сообщение в определённом сообществе, оно отправляется как `Create/Page` в входящие Сообщества.
|
||||||
|
|
||||||
### Создать комментарий
|
### Создать комментарий
|
||||||
|
|
||||||
|
@ -72,21 +72,21 @@
|
||||||
|
|
||||||
### Удаление
|
### Удаление
|
||||||
|
|
||||||
Создатель сообщения, комментария или сообщества может его удалить. Об этом сообщается подписчикам сообщества. Затем элемент скрывается от всех пользователей.
|
Создатель сообщения, комментария или сообщества может его удалить. Об этом сообщается подписчикам сообщества. Затем элемент скрывается от всех пользователей.
|
||||||
|
|
||||||
### Удаления
|
### Удаления
|
||||||
|
|
||||||
Модераторы могут удалять сообщения и комментарии из своих сообществ. Администраторы могут удалять любые сообщения или комментарии со всего сайта. Сообщества также могут быть удалены администраторами. Затем элемент скрывается от всех пользователей.
|
Модераторы могут удалять сообщения и комментарии из своих сообществ. Администраторы могут удалять любые сообщения или комментарии со всего сайта. Сообщества также могут быть удалены администраторами. Затем элемент скрывается от всех пользователей.
|
||||||
|
|
||||||
Об удалении сообщается всем подписчикам Сообщества, поэтому они вступают в силу и там. Исключение составляют случаи, когда администратор удаляет элемент из Сообщества, размещенного в другом экземпляре. В этом случае удаление вступает в силу только локально.
|
Об удалении сообщается всем подписчикам Сообщества, поэтому они вступают в силу и там. Исключение составляют случаи, когда администратор удаляет элемент из Сообщества, размещенного в другом экземпляре. В этом случае удаление вступает в силу только локально.
|
||||||
|
|
||||||
### Отмена предыдущего действия
|
### Отмена предыдущего действия
|
||||||
|
|
||||||
Мы ничего не удаляем из нашей базы данных, просто скрываем это от пользователей. Удаленные или удаленные Сообщества/Сообщения/Комментарии имеют кнопку «восстановить». Эта кнопка `Undo` генерирует восстановление оригинала удалённой активности как объекта, такого как `Undo/Remove/Post` или `Undo/Delete/Community`.
|
Мы ничего не удаляем из нашей базы данных, просто скрываем это от пользователей. Удаленные или удаленные Сообщества/Сообщения/Комментарии имеют кнопку «восстановить». Эта кнопка `Undo` генерирует восстановление оригинала удалённой активности как объекта, такого как `Undo/Remove/Post` или `Undo/Delete/Community`.
|
||||||
|
|
||||||
Нажатие кнопки "нравится" за публикацию/комментарий, за которую уже проголосовали (или кнопку "не нравится" для публикации/комментария, за которую уже проголосовали), также генерирует сообщение как `Undo`. В этом случае `Undo/Like/Post` или `Undo/Dislike/Comment`.
|
Нажатие кнопки "нравится" за публикацию/комментарий, за которую уже проголосовали (или кнопку "не нравится" для публикации/комментария, за которую уже проголосовали), также генерирует сообщение как `Undo`. В этом случае `Undo/Like/Post` или `Undo/Dislike/Comment`.
|
||||||
|
|
||||||
### Создать личное сообщение
|
### Создать личное сообщение
|
||||||
|
|
||||||
В профилях пользователей есть кнопка «Отправить сообщение», которая открывает диалоговое окно, позволяющее отправить личное сообщение этому пользователю. Отправляется как `Create/Note` во Входящие пользователя. Личные сообщения могут быть адресованы только одному,конкретному Пользователю.
|
В профилях пользователей есть кнопка «Отправить сообщение», которая открывает диалоговое окно, позволяющее отправить личное сообщение этому пользователю. Отправляется как `Create/Note` во Входящие пользователя. Личные сообщения могут быть адресованы только одному,конкретному Пользователю.
|
||||||
|
|
||||||
|
@ -104,16 +104,16 @@
|
||||||
|
|
||||||
## Активность Сообщества
|
## Активность Сообщества
|
||||||
|
|
||||||
Сообщество - это, по сути, бот, который будет делать что-либо только в ответ на действия пользователей. Пользователь, который первым создал Сообщество, становится первым модератором и может добавлять дополнительных модераторов. Как правило, всякий раз, когда Сообщество обнаруживает активность во входящих, оно пересылается всем его подписчикам.
|
Сообщество - это, по сути, бот, который будет делать что-либо только в ответ на действия пользователей. Пользователь, который первым создал Сообщество, становится первым модератором и может добавлять дополнительных модераторов. Как правило, всякий раз, когда Сообщество обнаруживает активность во входящих, оно пересылается всем его подписчикам.
|
||||||
|
|
||||||
### Подтверждение подписки
|
### Подтверждение подписки
|
||||||
|
|
||||||
Если Сообщество получает `Follow` активность, это автоматически активирует ответ `Accept/Follow`. И добавляет Пользователя в список подписавшихся.
|
Если Сообщество получает `Follow` активность, это автоматически активирует ответ `Accept/Follow`. И добавляет Пользователя в список подписавшихся.
|
||||||
|
|
||||||
### Не следовать
|
### Не следовать
|
||||||
|
|
||||||
Однажды получив `Undo/Follow`, Сообщество удаляет Пользователя из списка подписчиков.
|
Однажды получив `Undo/Follow`, Сообщество удаляет Пользователя из списка подписчиков.
|
||||||
|
|
||||||
### Уведомление
|
### Уведомление
|
||||||
|
|
||||||
Если Сообщество получает какие-либо действия, связанные с публикациями или комментариями (Создать, Обновить, Нравится, Не нравится, Удалить, Убрать, Отменить), оно Уведомляет об этом своих подписчикам. В связи с этим, Уведомление создаётся как действие , и принимается как объект активности. Таким образом, следующие экземпляры будут в курсе любых действий в сообществах, за которыми они следят.
|
Если Сообщество получает какие-либо действия, связанные с публикациями или комментариями (Создать, Обновить, Нравится, Не нравится, Удалить, Убрать, Отменить), оно Уведомляет об этом своих подписчикам. В связи с этим, Уведомление создаётся как действие , и принимается как объект активности. Таким образом, следующие экземпляры будут в курсе любых действий в сообществах, за которыми они следят.
|
||||||
|
|
Loading…
Reference in a new issue