Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate config docs from code #1786

Merged
merged 5 commits into from
Oct 8, 2021
Merged

Generate config docs from code #1786

merged 5 commits into from
Oct 8, 2021

Conversation

Nutomic
Copy link
Member

@Nutomic Nutomic commented Sep 20, 2021

This is pretty much ready to merge now, only waiting for upstream to make a new release. Output looks like the following, which we can include directly in the documentation. It is json (which is also valid hjson), but I plan to rewrite it to the same format used in our config.hjson (remove commas and quotes, change comments to # etc).

{
// 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
},
// 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, in seconds
"message_per_second": 60,
// Maximum number of posts created in interval
"post": 6,
// Interval length for post limit, in seconds
"post_per_second": 600,
// Maximum number of registrations in interval
"register": 3,
// Interval length for registration limit, in seconds
"register_per_second": 3600,
// Maximum number of image uploads in interval
"image": 6,
// Interval length for image uploads, in seconds
"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.org/docs/en/federation/administration.html///instance-allowlist-and-blocklist
// 
// list of instances with which federation is allowed
"allowed_instances": ["instance1.tld","instance2.tld"],
// Instances which we never federate anything with (but previously federated objects are unaffected)
"blocked_instances": [
"string",
/* ... */
],
// If true, only federate with instances on the allowlist and block everything else. If false,
// use allowlist only for remote communities, and posts/comments in local communities
// (meaning remote communities will show content from arbitrary instances).
"strict_allowlist": true
},
"captcha": {
// Whether captcha is required for signup
"enabled": false,
// Can be easy, medium, or hard
"difficulty": "medium"
},
// Email sending configuration. All options except login/password are mandatory
"email": {
// Hostname and port of the smtp server
"smtp_server": "localhost:25",
// Login name for smtp server
"smtp_login": "string",
// Password to login to the smtp server
"smtp_password": "string",
// Address to send emails from, eg "noreply@your-instance.com"
"smtp_from_address": "noreply@example.com",
// Whether or not smtp connections should use tls
"use_tls": true
},
// Parameters for automatic configuration of new instance (only used at first start)
"setup": {
// Username for the admin user
"admin_username": "admin",
// Password for the admin user
"admin_password": "my_passwd",
// Name of the site (can be changed later)
"site_name": "My Lemmy Instance",
// Email for the admin user (optional, can be omitted and set later through the website)
"admin_email": "string",
"sidebar": "string",
"description": "string",
"icon": "string",
"banner": "string",
"enable_downvotes": true,
"open_registration": true,
"enable_nsfw": true,
"community_creation_admin_only": true
},
// the domain name of your instance (mandatory)
"hostname": "unset",
// Address where lemmy should listen for incoming requests
"bind": "0.0.0.0",
// Port where lemmy should listen for incoming requests
"port": 8536,
// Whether the site is available over TLS. Needs to be true for federation to work.
"tls_enabled": true,
"jwt_secret": "changeme",
// Address where pictrs is available (for image hosting)
"pictrs_url": "http://localhost:8080",
// Regex for slurs which are prohibited. Example: `(\bThis\b)|(\bis\b)|(\bsample\b)`
"additional_slurs": "string",
// Maximum length of local community and user names
"actor_name_max_length": 20
}

@dessalines
Copy link
Member

Nice, this is a good idea. So this would replace us directly linking to config.hjson?

@Nutomic
Copy link
Member Author

Nutomic commented Sep 22, 2021

My plan is to auto-generate this config documentation as part of the lemmy-docs build, and include it there. Then we can remove all the values and comments from config/config.hjson in the repo root, only leaving whats necessary to make cargo run work.

@Nutomic Nutomic marked this pull request as ready for review October 5, 2021 10:33
@Nutomic
Copy link
Member Author

Nutomic commented Oct 5, 2021

Upstream release 0.10 is out, so this is ready to merge now.

Edit: CI failed because of this: anixe/doku#11

Cargo.toml Outdated Show resolved Hide resolved
crates/utils/Cargo.toml Outdated Show resolved Hide resolved
crates/utils/src/settings/structs.rs Show resolved Hide resolved
use tokio::sync::Mutex;

embed_migrations!();

#[actix_web::main]
async fn main() -> Result<(), LemmyError> {
let args: Vec<String> = env::args().collect();
if args.len() == 2 && args[1] == "--print-config-docs" {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's pry better than -h. these aren't command line things anyway.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you mean?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nm

@Nutomic
Copy link
Member Author

Nutomic commented Oct 8, 2021

Updated, builds fine on stable locally.

@dessalines dessalines merged commit 454d398 into main Oct 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants