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
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. | 
None | 
tls_key_path | 
TLS private key path. If supplied with tls_cert_path, requests will be served on port 443. | 
None | 
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) | 
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 | 
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 | 
private | 
Whether or not the entire instance is private. Right now, this sets a private flag in NodeInfo; in the future, this will probably affect discoverability, access to blogs, etc. | 
false | 
These fields can always be set, but only apply to multi-user instances.
| Field | Description | Example value | 
|---|---|---|
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 |