]> Untitled Git - lemmy.git/commitdiff
Merge pull request #1529 from LemmyNet/show_score_setting
authorNutomic <me@nutomic.com>
Tue, 6 Apr 2021 11:47:31 +0000 (11:47 +0000)
committerGitHub <noreply@github.com>
Tue, 6 Apr 2021 11:47:31 +0000 (11:47 +0000)
Adding a setting to show / hide scores. Fixes #1503

15 files changed:
.drone.yml
README.md
RELEASES.md
ansible/VERSION
ansible/templates/config.hjson
config/config.hjson
config/defaults.hjson [deleted file]
crates/utils/src/settings/mod.rs
crates/utils/src/version.rs
docker/dev/docker-compose.yml
docker/federation/docker-compose.yml
docker/prod/deploy.sh
docker/prod/docker-compose.yml
readmes/README.es.md [new file with mode: 0644]
scripts/test.sh

index bb27984f904515424f6fb179a30fb9b082cc2e5c..7dd4d3e79e23eec5bb4d3b581788d07dabd2cb91 100644 (file)
@@ -29,6 +29,7 @@ steps:
     image: ekidd/rust-musl-builder:1.50.0
     environment:
       LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
+      LEMMY_CONFIG_LOCATION: ../../config/config.hjson
       RUST_BACKTRACE: 1
       RUST_TEST_THREADS: 1
     commands:
@@ -107,6 +108,7 @@ steps:
     image: rust:1.50-slim-buster
     environment:
       LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
+      LEMMY_CONFIG_LOCATION: ../../config/config.hjson
       RUST_BACKTRACE: 1
       RUST_TEST_THREADS: 1
     commands:
index 1032ce4080f147f7a2b50d35af806400268b3db2..4b70e70f9497121d6e095c6057a5a51ee59c44a6 100644 (file)
--- a/README.md
+++ b/README.md
 [![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech)
 </div>
 
+<p align="center">
+  <span>English</span> |
+  <a href="readmes/README.es.md">Español</a>
+</p>
+
 <p align="center">
   <a href="https://join.lemmy.ml/" rel="noopener">
  <img width=200px height=200px src="https://raw.githubusercontent.com/LemmyNet/lemmy-ui/main/src/assets/icons/favicon.svg"></a>
index e64c7e92a8f73a029fd0bc2243eba3873b66234c..95b458240e081c542506bfdebcdbbd39214ec59f 100644 (file)
@@ -1,3 +1,95 @@
+# Lemmy v0.10.2 Release (2021-04-05)
+
+- Forcing a crash if config.hjson fails to load. Should show errors easier.
+
+# Lemmy v0.10.0 Release (2021-04-05)
+
+## Changes
+
+Since our last release in February, we've had [~150](https://github.com/LemmyNet/lemmy/compare/0.9.9...main) commits to Lemmy. The biggest changes, as we'll outline below, are a split of Lemmy's user tables into federated and local tables, necessitating a `v3` of Lemmy's API, federated moderation, i18n support in join.lemmy.ml, and lots of back-end cleanup.
+
+### Lemmy Server
+
+#### General
+
+- Rewrote config implementation, finally allowing us to use newer Rust versions.
+- Removed categories. 
+- Various refactors.
+
+#### API
+
+- A full list of the API changes can be seen on this diff of [lemmy-js-client: 0.9.9 -> 0.10.0](https://github.com/LemmyNet/lemmy-js-client/compare/0.9.9...0.10.0-rc.13) .
+- Login invalidation on password change, thanks to @Mart-Bogdan
+
+#### Federation
+
+- It is now possible to add users from other instances as community mods.
+- Federating Matrix ID.
+- Many changes for better compatibility with ActivityPub standard.
+
+#### Database 
+
+- Split the `user_` into `person` and `local_user` tables.
+- Strictly typed commonly used ID columns, to prevent DB errors using `i32` as ids.
+- Strictly typed URL fields, thanks to ajyoon.
+- Created default DB forms, now used in all the unit tests.
+
+### Lemmy UI
+
+- Now using utf-8 emojis.
+- Support for all the above changes to Lemmy.
+- Typescript-safe i18n strings, thanks to @shilangyu.
+- Added expandable post text (click on open book icon).
+- Prettier cross-posting, which does smart quoting.
+- Bugfixes for restoring scroll position on post page, custom site favicons, and autocomplete for login fields.
+
+### Lemmy Docs
+
+- Gazconroy built an [Async API spec for Lemmy](https://join.lemmy.ml/api/index.html), that now serves as our main API docs.
+
+### join.lemmy.ml
+
+- Rewrote in inferno isomorphic, added i18n support via [weblate](https://weblate.yerbamate.ml/projects/lemmy/joinlemmy/).
+- Added a section on the support page thanking contributors.
+- Changed some page urls / titles
+
+## Upgrade notes
+
+**Important**: there are multiple breaking changes:
+
+- Configuration via environment variables is not supported anymore, you must have all your config in the [lemmy.hjson](https://github.com/LemmyNet/lemmy/blob/main/ansible/templates/config.hjson) file ( except for `LEMMY_CONFIG_LOCATION` ).
+- The config format for `allowed_instances` and `blocked_instances` has changed, and you need to adjust your config file manually:
+    - before: `allowed_instances: ds9.lemmy.ml,enterprise.lemmy.ml`
+    - now: `allowed_instances: ["ds9.lemmy.ml", "enterprise.lemmy.ml"]` , and only one of the `allowed_instances` or `blocked_instances` blocks can be set.
+- The API has been upgraded from `v2` to `v3`, so all clients need to be updated: [lemmy-js-client: 0.9.9 -> 0.10.0](https://github.com/LemmyNet/lemmy-js-client/compare/0.9.9...0.10.0-rc.13) .
+
+If you'd like to make a DB backup before upgrading, follow [this guide](https://join.lemmy.ml/docs/en/administration/backup_and_restore.html).
+
+To upgrade your instance to `v0.10.0`, simply follow the instructions in the documentation:
+
+- [Upgrade with manual Docker installation](https://join.lemmy.ml/docs/en/administration/install_docker.html#updating)
+- [Upgrade with Ansible installation](https://join.lemmy.ml/docs/en/administration/install_ansible.html)
+
+
+## Compilation time
+
+|| v0.9.0 (Rust 1.47) | v0.10.0 (Rust 1.47) | v0.10.0 (Rust 1.51) |
+|-| -------- | -------- | -------- |
+|Clean | 140s     | 146s     | 119s     |
+| Incremental | 28s | 22s | 19s |
+
+Despite ongoing efforts to speed up compilation, it has actually gotten slower when comparing with the same Rust version. Only thanks to improvements in newer Rust versions has our build process gotten faster. This could be simply because we added more code, while Lemmy v0.9.0 had 22.4k lines of Rust, v0.10.0 has 23.8k (an increase of 6%).
+
+v0.9.0 build graph:
+![](https://lemmy.ml/pictrs/image/GVBqFnrLqG.jpg)
+
+v0.10.0 build graph:
+![](https://lemmy.ml/pictrs/image/NllzjVEyNK.jpg)
+
+We extracted the crates `lemmy_api_crud` and `lemmy_apub_receive` from `lemmy_api` and `lemmy_apub`, respectively, and renamed `lemmy_structs` to `lemmy_api_common`. In the second graph you can see how parts of the api and apub crates are now built nicely in parallel, speeding up builds on multi-core systems.
+
+On the other hand, some crates have gotten much slower to compile, in particular `lemmy_db_queries` (6.5s slower), `lemmy_apub` (6.5s slower if we include `lemmy_apub_receive`). And `lemmy_db_views` is quite slow, just as before.
+
 # Lemmy v0.9.9 Release (2021-02-19)
 
 ## Changes
index 7e310bae19960a3c44b9f9095f1f95b1e4c49ad9..5eef0f10e8cd5cac36342fc9b6dc9855e024361f 100644 (file)
@@ -1 +1 @@
-0.9.9
+0.10.2
index 55537ca50ca944114ab2d2b8b30b69f6c7b9ec59..51d25e77f8cb6340bcc51221f924497a9dc574e8 100644 (file)
@@ -4,15 +4,22 @@
 
   # settings related to the postgresql database
   database: {
+    database: lemmy
+    user: lemmy
+    host: postgres
+    port: 5432
+    pool_size: 5
     # password to connect to postgres
     password: "{{ postgres_password }}"
-    # host where postgres is running
-    host: "postgres"
   }
   # the domain name of your instance (eg "lemmy.ml")
   hostname: "{{ domain }}"
+  # the port where lemmy should listen for incoming requests
+  port: 8536
   # json web token for authorization between server and client
   jwt_secret: "{{ jwt_password }}"
+  # whether tls is required for activitypub. only disable this for debugging, never for producion.
+  tls_enabled: true
   # email sending configuration
   email: {
     # hostname of the smtp server
index 286b1c031b1c89cb378bad04ecd6604c7f2813a3..1ab231c2ff1288c2ff120333407d4da95d6b2f7c 100644 (file)
@@ -1,3 +1,91 @@
 {
-  hostname: "localhost:8536"
+#  # optional: parameters for automatic configuration of new instance (only used at first start)
+#  setup: {
+#    # username for the admin user
+#    admin_username: ""
+#    # password for the admin user
+#    admin_password: ""
+#    # optional: email for the admin user (can be omitted and set later through the website)
+#    admin_email: ""
+#    # name of the site (can be changed later)
+#    site_name: ""
+#  }
+  # settings related to the postgresql database
+  database: {
+    # username to connect to postgres
+    user: "lemmy"
+    # password to connect to postgres
+    password: "password"
+    # host where postgres is running
+    host: "localhost"
+    # port where postgres can be accessed
+    port: 5432
+    # name of the postgres database for lemmy
+    database: "lemmy"
+    # maximum number of active sql connections
+    pool_size: 5
+  }
+  # the domain name of your instance (eg "lemmy.ml")
+  hostname: lemmy-alpha
+  # address where lemmy should listen for incoming requests
+  bind: "0.0.0.0"
+  # port where lemmy should listen for incoming requests
+  port: 8536
+  # whether tls is required for activitypub. only disable this for debugging, never for producion.
+  tls_enabled: true
+  # json web token for authorization between server and client
+  jwt_secret: "changeme"
+  # address where pictrs is available
+  pictrs_url: "http://pictrs:8080"
+  # address where iframely is available
+  iframely_url: "http://iframely"
+  # rate limits for various user actions, by user ip
+  rate_limit: {
+    # maximum number of messages created in interval
+    message: 180
+    # interval length for message limit
+    message_per_second: 60
+    # maximum number of posts created in interval
+    post: 6
+    # interval length for post limit
+    post_per_second: 600
+    # maximum number of registrations in interval
+    register: 3
+    # interval length for registration limit
+    register_per_second: 3600
+    # maximum number of image uploads in interval
+    image: 6
+    # interval length for image uploads
+    image_per_second: 3600
+  }
+  # settings related to activitypub federation
+  federation: {
+    # whether to enable activitypub federation.
+    enabled: false
+    # Allows and blocks are described here:
+    # https://join.lemmy.ml/docs/en/federation/administration.html#instance-allowlist-and-blocklist
+    #
+    # comma separated list of instances with which federation is allowed
+    # Only one of these blocks should be uncommented
+    # allowed_instances: ["instance1.tld","instance2.tld"]
+    # comma separated list of instances which are blocked from federating
+    # blocked_instances: []
+  }
+  captcha: {
+    enabled: true
+    difficulty: medium # Can be easy, medium, or hard
+  }
+#  # email sending configuration
+#  email: {
+#    # hostname and port of the smtp server
+#    smtp_server: ""
+#    # login name for smtp server
+#    smtp_login: ""
+#    # password to login to the smtp server
+#    smtp_password: ""
+#    # address to send emails from, eg "noreply@your-instance.com"
+#    smtp_from_address: ""
+#    # whether or not smtp connections should use tls
+#    use_tls: true
+#  }
 }
diff --git a/config/defaults.hjson b/config/defaults.hjson
deleted file mode 100644 (file)
index c3eaba6..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-{
-#  # optional: parameters for automatic configuration of new instance (only used at first start)
-#  setup: {
-#    # username for the admin user
-#    admin_username: ""
-#    # password for the admin user
-#    admin_password: ""
-#    # optional: email for the admin user (can be omitted and set later through the website)
-#    admin_email: ""
-#    # name of the site (can be changed later)
-#    site_name: ""
-#  }
-  # settings related to the postgresql database
-  database: {
-    # username to connect to postgres
-    user: "lemmy"
-    # password to connect to postgres
-    password: "password"
-    # host where postgres is running
-    host: "localhost"
-    # port where postgres can be accessed
-    port: 5432
-    # name of the postgres database for lemmy
-    database: "lemmy"
-    # maximum number of active sql connections
-    pool_size: 5
-  }
-  # the domain name of your instance (eg "lemmy.ml")
-  hostname: null
-  # address where lemmy should listen for incoming requests
-  bind: "0.0.0.0"
-  # port where lemmy should listen for incoming requests
-  port: 8536
-  # whether tls is required for activitypub. only disable this for debugging, never for producion.
-  tls_enabled: true
-  # json web token for authorization between server and client
-  jwt_secret: "changeme"
-  # address where pictrs is available
-  pictrs_url: "http://pictrs:8080"
-  # address where iframely is available
-  iframely_url: "http://iframely"
-  # rate limits for various user actions, by user ip
-  rate_limit: {
-    # maximum number of messages created in interval
-    message: 180
-    # interval length for message limit
-    message_per_second: 60
-    # maximum number of posts created in interval
-    post: 6
-    # interval length for post limit
-    post_per_second: 600
-    # maximum number of registrations in interval
-    register: 3
-    # interval length for registration limit
-    register_per_second: 3600
-    # maximum number of image uploads in interval
-    image: 6
-    # interval length for image uploads
-    image_per_second: 3600
-  }
-  # settings related to activitypub federation
-  federation: {
-    # whether to enable activitypub federation. 
-    enabled: false
-    # Allows and blocks are described here:
-    # https://join.lemmy.ml/docs/en/federation/administration.html#instance-allowlist-and-blocklist
-    #
-    # comma separated list of instances with which federation is allowed
-    # Only one of these blocks should be uncommented
-    # allowed_instances: ["instance1.tld","instance2.tld"]
-    # comma separated list of instances which are blocked from federating
-    # blocked_instances: []
-  }
-  captcha: {
-    enabled: true
-    difficulty: medium # Can be easy, medium, or hard
-  }
-#  # email sending configuration
-#  email: {
-#    # hostname and port of the smtp server
-#    smtp_server: ""
-#    # login name for smtp server
-#    smtp_login: ""
-#    # password to login to the smtp server
-#    smtp_password: ""
-#    # address to send emails from, eg "noreply@your-instance.com"
-#    smtp_from_address: ""
-#    # whether or not smtp connections should use tls
-#    use_tls: true
-#  }
-}
index 0990a43ded26e66d9713a6d6d22a7e0c7f914abf..d052fec6c665c5db8dbef5c0eb9eca9f7041e6e8 100644 (file)
@@ -13,7 +13,6 @@ use crate::{
 };
 use anyhow::{anyhow, Context};
 use deser_hjson::from_str;
-use log::warn;
 use merge::Merge;
 use std::{env, fs, io::Error, net::IpAddr, sync::RwLock};
 
@@ -23,16 +22,8 @@ pub mod structs;
 static CONFIG_FILE: &str = "config/config.hjson";
 
 lazy_static! {
-  static ref SETTINGS: RwLock<Settings> = RwLock::new(match Settings::init() {
-    Ok(c) => c,
-    Err(e) => {
-      warn!(
-        "Couldn't load settings file, using default settings.\n{}",
-        e
-      );
-      Settings::default()
-    }
-  });
+  static ref SETTINGS: RwLock<Settings> =
+    RwLock::new(Settings::init().expect("Failed to load settings file"));
 }
 
 impl Settings {
index 133ba6080028c6cbf4225b47b00911c4cbc8756b..476a14bd49cdae5460c762548ead8d4a6630d6b4 100644 (file)
@@ -1 +1 @@
-pub const VERSION: &str = "0.10.0-rc.13";
+pub const VERSION: &str = "0.10.2";
index d16a9331c7c84e09f31ae87331dbe737d2fe422c..2df7f28cf10990e99205c99fc218a51e1cc7e089 100644 (file)
@@ -17,7 +17,7 @@ services:
       - iframely
 
   lemmy-ui:
-    image: dessalines/lemmy-ui:0.10.0-rc.13
+    image: dessalines/lemmy-ui:0.10.2
     ports:
       - "1235:1234"
     restart: always
index d683f7764db5a03e926c49faede9956ad6c2a3aa..ee6e2d27d41fdf4ee79d3a0e9f6a238fa270287c 100644 (file)
@@ -29,7 +29,7 @@ services:
       - ./volumes/pictrs_alpha:/mnt
 
   lemmy-alpha-ui:
-    image: dessalines/lemmy-ui:0.10.0-rc.13
+    image: dessalines/lemmy-ui:0.10.2
     environment:
       - LEMMY_INTERNAL_HOST=lemmy-alpha:8541
       - LEMMY_EXTERNAL_HOST=localhost:8541
@@ -58,7 +58,7 @@ services:
       - ./volumes/postgres_alpha:/var/lib/postgresql/data
 
   lemmy-beta-ui:
-    image: dessalines/lemmy-ui:0.10.0-rc.13
+    image: dessalines/lemmy-ui:0.10.2
     environment:
       - LEMMY_INTERNAL_HOST=lemmy-beta:8551
       - LEMMY_EXTERNAL_HOST=localhost:8551
@@ -87,7 +87,7 @@ services:
       - ./volumes/postgres_beta:/var/lib/postgresql/data
 
   lemmy-gamma-ui:
-    image: dessalines/lemmy-ui:0.10.0-rc.13
+    image: dessalines/lemmy-ui:0.10.2
     environment:
       - LEMMY_INTERNAL_HOST=lemmy-gamma:8561
       - LEMMY_EXTERNAL_HOST=localhost:8561
@@ -117,7 +117,7 @@ services:
 
   # An instance with only an allowlist for beta
   lemmy-delta-ui:
-    image: dessalines/lemmy-ui:0.10.0-rc.13
+    image: dessalines/lemmy-ui:0.10.2
     environment:
       - LEMMY_INTERNAL_HOST=lemmy-delta:8571
       - LEMMY_EXTERNAL_HOST=localhost:8571
@@ -147,7 +147,7 @@ services:
 
   # An instance who has a blocklist, with lemmy-alpha blocked
   lemmy-epsilon-ui:
-    image: dessalines/lemmy-ui:0.10.0-rc.13
+    image: dessalines/lemmy-ui:0.10.2
     environment:
       - LEMMY_INTERNAL_HOST=lemmy-epsilon:8581
       - LEMMY_EXTERNAL_HOST=localhost:8581
index bd99fdb09ced98db2b4b2ff58faa89c52459517d..b2ee16635d095bbd86af9c31054179f7610fae9a 100755 (executable)
@@ -13,7 +13,9 @@ git add "crates/utils/src/version.rs"
 popd
 
 # Changing various references to the Lemmy version
+sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../dev/docker-compose.yml
 sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../dev/docker-compose.yml
+sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../federation/docker-compose.yml
 sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../federation/docker-compose.yml
 git add ../dev/docker-compose.yml
 git add ../federation/docker-compose.yml
@@ -22,6 +24,7 @@ git add ../federation/docker-compose.yml
 # IE, when the third semver is a number, not '2-rc'
 if [ ! -z "${third_semver##*[!0-9]*}" ]; then
   sed -i "s/dessalines\/lemmy:.*/dessalines\/lemmy:$new_tag/" ../prod/docker-compose.yml
+  sed -i "s/dessalines\/lemmy-ui:.*/dessalines\/lemmy-ui:$new_tag/" ../prod/docker-compose.yml
   git add ../prod/docker-compose.yml
 
   # Setting the version for Ansible
index a508269a5e72ac6731247af5efe3091f39e953af..5e617c6cc941981f8f25352f0db7410acd23551c 100644 (file)
@@ -12,7 +12,7 @@ services:
     restart: always
 
   lemmy:
-    image: dessalines/lemmy:0.9.9
+    image: dessalines/lemmy:0.10.2
     ports:
       - "127.0.0.1:8536:8536"
     restart: always
@@ -26,7 +26,7 @@ services:
       - iframely
 
   lemmy-ui:
-    image: dessalines/lemmy-ui:0.9.9
+    image: dessalines/lemmy-ui:0.10.2
     ports:
       - "127.0.0.1:1235:1234"
     restart: always
diff --git a/readmes/README.es.md b/readmes/README.es.md
new file mode 100644 (file)
index 0000000..7b63714
--- /dev/null
@@ -0,0 +1,168 @@
+<div align="center">
+
+![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/LemmyNet/lemmy.svg)
+[![Build Status](https://cloud.drone.io/api/badges/LemmyNet/lemmy/status.svg)](https://cloud.drone.io/LemmyNet/lemmy/)
+[![GitHub issues](https://img.shields.io/github/issues-raw/LemmyNet/lemmy.svg)](https://github.com/LemmyNet/lemmy/issues)
+[![Docker Pulls](https://img.shields.io/docker/pulls/dessalines/lemmy.svg)](https://cloud.docker.com/repository/docker/dessalines/lemmy/)
+[![Translation status](http://weblate.yerbamate.ml/widgets/lemmy/-/lemmy/svg-badge.svg)](http://weblate.yerbamate.ml/engage/lemmy/)
+[![License](https://img.shields.io/github/license/LemmyNet/lemmy.svg)](LICENSE)
+![GitHub stars](https://img.shields.io/github/stars/LemmyNet/lemmy?style=social)
+[![Awesome Humane Tech](https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true)](https://github.com/humanetech-community/awesome-humane-tech)
+</div>
+
+<p align="center">
+  <a href="../README.md">English</a> |
+  <span>Español</span>
+</p>
+
+<p align="center">
+  <a href="https://join.lemmy.ml/" rel="noopener">
+ <img width=200px height=200px src="https://raw.githubusercontent.com/LemmyNet/lemmy-ui/main/src/assets/icons/favicon.svg"></a>
+
+ <h3 align="center"><a href="https://join.lemmy.ml">Lemmy</a></h3>
+  <p align="center">
+    Un agregador de enlaces / alternativa a Menéame - Reddit para el fediverso. 
+    <br />
+    <br />
+    <a href="https://join.lemmy.ml">Unirse a Lemmy</a>
+    ·
+    <a href="https://join.lemmy.ml/docs/es/index.html">Documentación</a>
+    ·
+    <a href="https://github.com/LemmyNet/lemmy/issues">Reportar Errores (bugs)</a>
+    ·
+    <a href="https://github.com/LemmyNet/lemmy/issues">Solicitar Características</a>
+    ·
+    <a href="https://github.com/LemmyNet/lemmy/blob/main/RELEASES.md">Lanzamientos</a>
+    ·
+    <a href="https://join.lemmy.ml/docs/es/code_of_conduct.html">Código de Conducta</a>
+  </p>
+</p>
+
+## Sobre El Proyecto
+
+Escritorio|Móvil
+---|---
+![desktop](https://raw.githubusercontent.com/LemmyNet/joinlemmy-site/main/src/assets/images/main_img.webp)|![mobile](https://raw.githubusercontent.com/LemmyNet/joinlemmy-site/main/src/assets/images/mobile_pic.webp)
+
+[Lemmy](https://github.com/LemmyNet/lemmy) es similar a sitios como [Menéame](https://www.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, y puede mantener discusiones con usuarios registrados en otros lugares. 
+
+El objetivo general es crear una alternativa a reddit y otros agregadores de enlaces, fácilmente auto-hospedada, descentralizada, fuera de su control e intromisión corporativa.
+
+Cada servidor lemmy puede establecer su propia política de moderación; nombrando a los administradores del sitio y a los moderadores de la comunidad para mantener alejados a los trolls, y fomentar un entorno saludable y no tóxico en el que puedan sentirse cómodos contribuyendo.
+
+*Nota: Las APIs WebSocket y HTTP actualmente son inestables*
+
+### ¿Por qué se llama Lemmy?
+
+- Cantante principal de [Motörhead](https://invidio.us/watch?v=pWB5JZRGl0U).
+- El [videojuego de la vieja escuela](<https://es.wikipedia.org/wiki/Lemmings>).
+- El [Koopa de Super Mario](https://www.mariowiki.com/Lemmy_Koopa).
+- Los [roedores peludos](http://sunchild.fpwc.org/lemming-the-little-giant-of-the-north/).
+
+### Creado Con
+
+- [Rust](https://www.rust-lang.org)
+- [Actix](https://actix.rs/)
+- [Diesel](http://diesel.rs/)
+- [Inferno](https://infernojs.org)
+- [Typescript](https://www.typescriptlang.org/)
+
+# Características
+
+- Código abierto, [Licencia AGPL](/LICENSE).
+- Auto-hospedado, fácil de desplegar (deploy).
+  - Viene con [Docker](#docker) y [Ansible](#ansible).
+- Interfaz limpia y fácil de usar. Apta para dispositivos móviles.
+  - Sólo se requiere como mínimo un nombre de usuario y una contraseñar para inscribirse!
+  - Soporte de avatar de usuario.
+  - Hilos de comentarios actualizados en directo.
+  - Puntuaciones completas de los votos `(+/-)` como en el antiguo reddit.
+  - Temas, incluidos los claros, los oscuros, y los solarizados.
+  - Emojis con soporte de autocompletado. Empieza tecleando `:`
+    - *Ejemplo* `miau :cat:` => `miau 🐈`
+  - Etiquetado de Usuarios con `@`, etiquetado de Comunidades con `!`.
+    - *Ejemplo* `@miguel@lemmy.ml me invitó a la comunidad !gaming@lemmy.ml`
+  - Carga de imágenes integrada tanto en las publicaciones como en los comentarios.
+  - Una publicación puede consistir en un título y cualquier combinación de texto propio, una URL o nada más.
+  - Notificaciones, sobre las respuestas a los comentarios y cuando te etiquetan.
+    - Las notificaciones se pueden enviar por correo electrónico.
+    - Soporte para mensajes privados.
+  - Soporte de i18n / internacionalización.
+  - Fuentes RSS / Atom para Todo `All`, Suscrito `Subscribed`, Bandeja de entrada `inbox`, Usuario `User`, y Comunidad `Community`.
+- Soporte para la publicación cruzada (cross-posting).
+  - **búsqueda de publicaciones similares** al crear una nueva. Ideal para comunidades de preguntas y respuestas.
+- Capacidades de moderación.
+  - Registros públicos de moderación.
+  - Puedes pegar las publicaciones a la parte superior de las comunidades.
+  - Tanto los administradores del sitio, como los moderadores de la comunidad, pueden nombrar a otros moderadores.
+  - Puedes bloquear, eliminar y restaurar publicaciones y comentarios.
+  - Puedes banear y desbanear usuarios de las comunidades y del sitio.
+  - Puedes transferir el sitio y las comunidades a otros.
+- Puedes borrar completamente tus datos, reemplazando todas las publicaciones y comentarios.
+- Soporte para publicaciones y comunidades NSFW.
+- Alto rendimiento.
+  - El servidor está escrito en rust.
+  - El front end está comprimido (gzipped) en `~80kB`.
+  - El front end funciona sin javascript (sólo lectura).
+  - Soporta arm64 / Raspberry Pi.
+
+## Instalación
+
+- [Docker](https://join.lemmy.ml/docs/es/administration/install_docker.html)
+- [Ansible](https://join.lemmy.ml/docs/es/administration/install_ansible.html)
+
+## Proyectos de Lemmy
+
+### Aplicaciones
+
+- [lemmy-ui - La aplicación web oficial para lemmy](https://github.com/LemmyNet/lemmy-ui)
+- [Lemmur - Un cliente móvil para Lemmy (Android, Linux, Windows)](https://github.com/krawieck/lemmur)
+- [Remmel - Una aplicación IOS nativa](https://github.com/uuttff8/Lemmy-iOS)
+
+### Librerías
+
+- [lemmy-js-client](https://github.com/LemmyNet/lemmy-js-client)
+- [Kotlin API ( en desarrollo )](https://github.com/eiknat/lemmy-client)
+- [Dart API client ( en desarrollo )](https://github.com/krawieck/lemmy_api_client)
+
+## Apoyo / Donación
+
+Lemmy es un software libre y de código abierto, lo que significa que no hay publicidad, monetización o capital de riesgo, nunca. Tus donaciones apoyan directamente el desarrollo a tiempo completo del proyecto.
+
+- [Apoya en Liberapay](https://liberapay.com/Lemmy).
+- [Apoya en Patreon](https://www.patreon.com/dessalines).
+- [Apoya en OpenCollective](https://opencollective.com/lemmy).
+- [Lista de patrocinadores](https://join.lemmy.ml/sponsors).
+
+### Crypto
+
+- bitcoin: `1Hefs7miXS5ff5Ck5xvmjKjXf5242KzRtK`
+- ethereum: `0x400c96c96acbC6E7B3B43B1dc1BB446540a88A01`
+- monero: `41taVyY6e1xApqKyMVDRVxJ76sPkfZhALLTjRvVKpaAh2pBd4wv9RgYj1tSPrx8wc6iE1uWUfjtQdTmTy2FGMeChGVKPQuV`
+
+## Contribuir
+
+- [Instrucciones para contribuir](https://join.lemmy.ml/docs/es/contributing/contributing.html)
+- [Desarrollo por Docker](https://join.lemmy.ml/docs/es/contributing/docker_development.html)
+- [Desarrollo Local](https://join.lemmy.ml/docs/es/contributing/local_development.html)
+
+### Traducciones
+
+Si quieres ayudar con la traducción, echa un vistazo a [Weblate](https://weblate.yerbamate.ml/projects/lemmy/). También puedes ayudar [traduciendo la documentación](https://github.com/LemmyNet/lemmy-docs#adding-a-new-language).
+
+## Contacto
+
+- [Mastodon](https://mastodon.social/@LemmyDev)
+- [Matrix](https://matrix.to/#/#lemmy:matrix.org)
+
+## Repositorios del código
+
+- [GitHub](https://github.com/LemmyNet/lemmy)
+- [Gitea](https://yerbamate.ml/LemmyNet/lemmy)
+- [Codeberg](https://codeberg.org/LemmyNet/lemmy)
+
+## Creditos
+
+Logo hecho por Andy Cuccaro (@andycuccaro) bajo la licencia CC-BY-SA 4.0.
index 251e6a74a70e9ac05a2f2ad5502cbb6741ccb520..0a3fa90fc6ce383d00ebe568063afd32d5478eb7 100755 (executable)
@@ -5,5 +5,8 @@ psql -U lemmy -d postgres -c "DROP DATABASE lemmy;"
 psql -U lemmy -d postgres -c "CREATE DATABASE lemmy;"
 
 export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
+# tests are executed in working directory crates/api (or similar),
+# so to load the config we need to traverse to the repo root
+export LEMMY_CONFIG_LOCATION=../../config/config.hjson
 RUST_BACKTRACE=1 \
   cargo test --workspace --no-fail-fast