Configuring WriteFreely

WriteFreely is configured through an .ini file. By default, WriteFreely will look for the configuration file config.ini in the current directory. However, you can supply a different file or location by running WriteFreely with the -c [filename] flag, for example:

writefreely -c /var/lib/writefreely/config.ini

Server

The following fields are valid in the [server] section of your configuration file. They affect how the application runs.

Field Description Default
port Port for the application to serve HTTP requests on None
bind Address to bind the application to localhost
tls_cert_path TLS certificate path. If supplied with tls_key_path, requests will be served on port 443. If autocert is true, certificates and keys will be stored in the given directory. None
tls_key_path TLS private key path. If supplied with tls_cert_path, requests will be served on port 443. None
autocert Enable automatic certificate generation with Let's Encrypt. Requires tls_cert_path and tls_key_path to not be empty, and running in standalone server mode, i.e. port set to 443. false
templates_parent_dir The parent directory containing the templates directory (current directory)
static_parent_dir The parent directory containing the static directory (current directory)
pages_parent_dir The parent directory containing the pages directory (current directory)
keys_parent_dir The parent directory containing the keys directory (current directory)

Database

The following fields are valid in the [database] section of your configuration file. They affect how the application stores and retrieves data.

Field Description Default
type Database driver type. Valid choices: mysql or sqlite3 None

These fields only apply to instances using MySQL.

Field Description Default
username Database username None
password Database password None
database Database name None
host Database hostname to connect to localhost
port Database host port to connect to 3306

These fields only apply to instances using SQLite.

Field Description Default
filename Database file None

App

The following fields are valid in the [app] section of your configuration file. They affect how the application functions, especially in user-facing ways.

Field Description Example value
site_name Name of the website, publicly shown in several places Our Community
site_description Site description, shown in NodeInfo A place to write freely.
host Full hostname (including scheme) users will see https://pencil.writefree.ly
single_user Whether or not the instance is for one blog false
min_username_len Minimum required length of usernames 3
federation Whether or not federation via ActivityPub is enabled true
public_stats Whether or not usage stats are made public via NodeInfo true

These fields can always be set, but only apply to multi-user instances.

Field Description Example value
private When enabled, all blogs and posts will only be readable by other authenticated users on the instance. false
landing The default landing route for an unauthenticated user /login
open_registration Whether or not anyone can register via the landing page true
max_blogs Maximum number of blogs a single user can create under one account 5
local_timeline Whether or not the instance reader (and the Public option on blogs) is enabled true
user_invites Who is allowed to send user invites, if anyone. A blank value disables invites for all users. Valid choices: empty, user, or admin user
default_visibility The default visibility setting for newly-created blogs. Valid choices: unlisted (default), public, or private public