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. 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) |
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 |
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 |