See gochan.example.json for an example gochan.json.
ListenIP
and UseFastCGI
based on your system’s setup. For an example nginx configuration, see gochan-fastcgi.nginx for FastCGI and gochan-http.nginx for passing through HTTP.DocumentRoot
refers to the root directory on your filesystem where gochan will look for requested files.TemplateDir
refers to the directory where gochan will load the templates from.LogDir
refers to the directory where gochan will write the logs to.Make sure gochan has read-write permission for DocumentRoot
and LogDir
and read permission for TemplateDir
Valid DBtype
values are “mysql” and “postgres” (sqlite3 is no longer supported for stability reasons, though that may or may not come back).
DBhost
to “x.x.x.x:3306” (replacing x.x.x.x with your database server’s IP or domain) or a different port, if necessary. You can also use a UNIX socket if you have it set up, like “unix(/var/run/mysqld/mysqld.sock)”.DBhost
to the IP address or hostname. Using a UNIX socket may work as well, but it is currently untested.SiteDomain
, since these are necessary in order to post and log in as a staff member.DBprefix
is set (not required), all gochan table names will be prefixed with the DBprefix
value. Once you run gochan for the first time, you really shouldn’t edit this value, since gochan will assume the tables are missing.SiteName
is used for the name displayed on the home page.SiteSlogan
is used for the slogan (if set) on the home page.SiteDomain
is used for links throughout the site.WebRoot
is used as the prefix for boards, files, and pretty much everything on the site. If it isn’t set, “/” will be used.EnableGeoIP
specifies whether or not GeoIP will be used. It can be set in the global configuration file or in a board configuration.GeoIPType
specifies the GeoIP handler. If it is blank or unset, GeoIP will not be used. Gochan has built-in support for MaxMind GeoIP2/GeoLite2 databases by setting the value to “mmdb”, “geoip2”, or “geolite2”.GeoIPOptions
is an object with keys and values for configuring the specified GeoIP handler. Not all GeoIP receivers may need it. Example:
"GeoIPType": "mmdb",
"GeoIPOptions": {
"dbLocation": "/usr/share/geoip/GeoIP2.mmdb",
"isoCode": "en" // optional
}
CustomFlags
is an array with custom flags, selectable via dropdown. The Flag
value is assumed to be in /static/flags/. Example:
"CustomFlags": [
{"Flag":"california.png", "Name": "California"},
{"Flag":"cia.png", "Name": "CIA"},
{"Flag":"lgbtq.png", "Name": "LGBTQ"},
{"Flag":"ms-dos.png", "Name": "MS-DOS"},
{"Flag":"stallman.png", "Name": "Stallman"},
{"Flag":"templeos.png", "Name": "TempleOS"},
{"Flag":"tux.png", "Name": "Linux"},
{"Flag":"windows9x.png", "Name": "Windows 9x"}
]
EnableNoFlag
is only relevant if another flag option is used, and allows the user to not have a flag shown on their post on a flag board.By default, only images are fingerprinted, but if FingerprintVideoThumbnails
is set to true, the thumbnails of videos will also be checked.
Styles
is an array, with each element representing a theme selectable by the user from the frontend settings screen. Each element should have Name
string value and a Filename
string value. Example:
"Styles": [
{ "Name": "Pipes", "Filename": "pipes.css" }
]
DefaultStyle
is not set, the first element in Styles
will be used.ReservedTrips
is used for reserving secure tripcodes. It should be an array of strings. For example, if you have abcd##ABCD
and someone posts with the name ##abcd, their name will instead show up as !!ABCD on the site.BanColors
is used for the color of the text set by BanMessage
, and can be used for setting per-user colors, if desired. It should be a string array, with each element being of the form "username:color"
, where color is a valid HTML color (#000A0, green, etc) and username is the staff member who set the ban. If a color isn’t set for the user, the style will be used to set the color.