# oragono IRCd config # network configuration network: # name of the network name: OragonoTest # server configuration server: # server name name: oragono.test # addresses to listen on listen: - ":6667" - "127.0.0.1:6668" - "[::1]:6668" - ":6697" # ssl port # Unix domain socket for proxying: # - "/tmp/oragono_sock" # sets the permissions for Unix listen sockets. on a typical Linux system, # the default is 0775 or 0755, which prevents other users/groups from connecting # to the socket. With 0777, it behaves like a normal TCP socket # where anyone can connect. unix-bind-mode: 0777 # tls listeners tls-listeners: # listener on ":6697" ":6697": key: tls.key cert: tls.crt # strict transport security, to get clients to automagically use TLS sts: # whether to advertise STS # # to stop advertising STS, leave this enabled and set 'duration' below to "0". this will # advertise to connecting users that the STS policy they have saved is no longer valid enabled: false # how long clients should be forced to use TLS for. # setting this to a too-long time will mean bad things if you later remove your TLS. # the default duration below is 1 month, 2 days and 5 minutes. duration: 1mo2d5m # tls port - you should be listening on this port above port: 6697 # should clients include this STS policy when they ship their inbuilt preload lists? preload: false # use ident protocol to get usernames check-ident: true # password to login to the server # generated using "oragono genpasswd" #password: "" # motd filename # if you change the motd, you should move it to ircd.motd motd: oragono.motd # motd formatting codes # if this is true, the motd is escaped using formatting codes like $c, $b, and $i motd-formatting: true # addresses/hostnames the PROXY command can be used from # this should be restricted to 127.0.0.1/8 and localhost at most # you should also add these addresses to the connection limits and throttling exemption lists proxy-allowed-from: # - localhost # - "127.0.0.1" # - "127.0.0.1/8" # controls the use of the WEBIRC command (by IRC<->web interfaces, bouncers and similar) webirc: # one webirc block -- should correspond to one set of gateways - # tls fingerprint the gateway must connect with to use this webirc block fingerprint: 938dd33f4b76dcaf7ce5eb25c852369cb4b8fb47ba22fc235aa29c6623a5f182 # password the gateway uses to connect, made with oragono genpasswd password: "$2a$04$sLEFDpIOyUp55e6gTMKbOeroT6tMXTjPFvA0eGvwvImVR9pkwv7ee" # hosts that can use this webirc command # you should also add these addresses to the connection limits and throttling exemption lists hosts: # - localhost # - "127.0.0.1" # - "127.0.0.1/8" # - "0::1" # allow use of the RESUME extension over plaintext connections: # do not enable this unless the ircd is only accessible over internal networks allow-plaintext-resume: false # maximum length of clients' sendQ in bytes # this should be big enough to hold /LIST and HELP replies max-sendq: 16k # maximum number of connections per subnet connection-limits: # whether to enforce connection limits or not enabled: true # how wide the cidr should be for IPv4 cidr-len-ipv4: 32 # how wide the cidr should be for IPv6 cidr-len-ipv6: 64 # maximum concurrent connections per subnet (defined above by the cidr length) connections-per-subnet: 16 # IPs/networks which are exempted from connection limits exempted: - "127.0.0.1" - "127.0.0.1/8" - "::1/128" # automated connection throttling connection-throttling: # whether to throttle connections or not enabled: true # how wide the cidr should be for IPv4 cidr-len-ipv4: 32 # how wide the cidr should be for IPv6 cidr-len-ipv6: 64 # how long to keep track of connections for duration: 10m # maximum number of connections, per subnet, within the given duration max-connections: 32 # how long to ban offenders for, and the message to use # after banning them, the number of connections is reset (which lets you use UNDLINE to unban people) ban-duration: 10m ban-message: You have attempted to connect too many times within a short duration. Wait a while, and you will be able to connect. # IPs/networks which are exempted from connection limits exempted: - "127.0.0.1" - "127.0.0.1/8" - "::1/128" # account options accounts: # account registration registration: # can users register new accounts? enabled: true # this is the bcrypt cost we'll use for account passwords bcrypt-cost: 12 # length of time a user has to verify their account before it can be re-registered verify-timeout: "32h" # callbacks to allow enabled-callbacks: - none # no verification needed, will instantly register successfully # example configuration for sending verification emails via a local mail relay # callbacks: # mailto: # server: localhost # port: 25 # tls: # enabled: false # username: "" # password: "" # sender: "admin@my.network" # is account authentication enabled? authentication-enabled: true # throttle account login attempts (to prevent either password guessing, or DoS # attacks on the server aimed at forcing repeated expensive bcrypt computations) login-throttling: enabled: true # window duration: 1m # number of attempts allowed within the window max-attempts: 3 # some clients (notably Pidgin and Hexchat) offer only a single password field, # which makes it impossible to specify a separate server password (for the PASS # command) and SASL password. if this option is set to true, a client that # successfully authenticates with SASL will not be required to send # PASS as well, so it can be configured to authenticate with SASL only. skip-server-password: false # nick-reservation controls how, and whether, nicknames are linked to accounts nick-reservation: # is there any enforcement of reserved nicknames? enabled: false # how many nicknames, in addition to the account name, can be reserved? additional-nick-limit: 2 # method describes how nickname reservation is handled # timeout: let the user change to the registered nickname, give them X seconds # to login and then rename them if they haven't done so # strict: don't let the user change to the registered nickname unless they're # already logged-in using SASL or NickServ method: timeout # rename-timeout - this is how long users have 'til they're renamed rename-timeout: 30s # rename-prefix - this is the prefix to use when renaming clients (e.g. Guest-AB54U31) rename-prefix: Guest- # vhosts controls the assignment of vhosts (strings displayed in place of the user's # hostname/IP) by the HostServ service vhosts: # are vhosts enabled at all? enabled: true # maximum length of a vhost max-length: 64 # regexp for testing the validity of a vhost # (make sure any changes you make here are RFC-compliant) valid-regexp: '^[0-9A-Za-z.\-_/]+$' # options controlling users requesting vhosts: user-requests: # can users request vhosts at all? if this is false, operators with the # 'vhosts' capability can still assign vhosts manually enabled: false # if uncommented, all new vhost requests will be dumped into the given # channel, so opers can review them as they are sent in. ensure that you # have registered and restricted the channel appropriately before you # uncomment this. #channel: "#vhosts" # after a user's vhost has been approved or rejected, they need to wait # this long (starting from the time of their original request) # before they can request a new one. cooldown: 168h # channel options channels: # modes that are set when new channels are created # +n is no-external-messages and +t is op-only-topic # see /QUOTE HELP cmodes for more channel modes default-modes: +nt # channel registration - requires an account registration: # can users register new channels? enabled: true # operator classes oper-classes: # local operator "local-oper": # title shown in WHOIS title: Local Operator # capability names capabilities: - "oper:local_kill" - "oper:local_ban" - "oper:local_unban" - "nofakelag" # network operator "network-oper": # title shown in WHOIS title: Network Operator # oper class this extends from extends: "local-oper" # capability names capabilities: - "oper:remote_kill" - "oper:remote_ban" - "oper:remote_unban" # server admin "server-admin": # title shown in WHOIS title: Server Admin # oper class this extends from extends: "local-oper" # capability names capabilities: - "oper:rehash" - "oper:die" - "accreg" - "sajoin" - "samode" - "vhosts" - "chanreg" # ircd operators opers: # operator named 'dan' dan: # which capabilities this oper has access to class: "server-admin" # custom whois line whois-line: is a cool dude # custom hostname vhost: "n" # modes are the modes to auto-set upon opering-up modes: +is acjknoqtux # password to login with /OPER command # generated using "oragono genpasswd" password: "$2a$04$LiytCxaY0lI.guDj2pBN4eLRD5cdM2OLDwqmGAgB6M2OPirbF5Jcu" # logging, takes inspiration from Insp logging: - # how to log these messages # # file log to given target filename # stdout log to stdout # stderr log to stderr method: file stderr # filename to log to, if file method is selected filename: ircd.log # type(s) of logs to keep here. you can use - to exclude those types # # exclusions take precedent over inclusions, so if you exclude a type it will NEVER # be logged, even if you explicitly include it # # useful types include: # * everything (usually used with exclusing some types below) # accounts account registration and authentication # channels channel creation and operations # commands command calling and operations # opers oper actions, authentication, etc # password password hashing and comparing # userinput raw lines sent by users # useroutput raw lines sent to users type: "* -userinput -useroutput -localconnect -localconnect-ip" # one of: debug info warn error level: info - # avoid logging IP addresses to file method: stderr type: localconnect localconnect-ip level: debug # debug options debug: # when enabled, oragono will attempt to recover from certain kinds of # client-triggered runtime errors that would normally crash the server. # this makes the server more resilient to DoS, but could result in incorrect # behavior. deployments that would prefer to "start from scratch", e.g., by # letting the process crash and auto-restarting it with systemd, can set # this to false. recover-from-errors: true # optionally expose a pprof http endpoint: https://golang.org/pkg/net/http/pprof/ # it is strongly recommended that you don't expose this on a public interface; # if you need to access it remotely, you can use an SSH tunnel. # set to `null`, "", leave blank, or omit to disable # pprof-listener: "localhost:6060" # datastore configuration datastore: # path to the datastore path: ircd.db # if the database schema requires an upgrade, `autoupgrade` will attempt to # perform it automatically on startup. the database will be backed # up, and if the upgrade fails, the original database will be restored. autoupgrade: true # languages config languages: # whether to load languages enabled: true # default language to use for new clients # 'en' is the default English language in the code default: en # which directory contains our language files path: languages # limits - these need to be the same across the network limits: # nicklen is the max nick length allowed nicklen: 32 # channellen is the max channel length allowed channellen: 64 # awaylen is the maximum length of an away message awaylen: 500 # kicklen is the maximum length of a kick message kicklen: 1000 # topiclen is the maximum length of a channel topic topiclen: 1000 # maximum number of monitor entries a client can have monitor-entries: 100 # whowas entries to store whowas-entries: 100 # maximum length of channel lists (beI modes) chan-list-modes: 60 # maximum length of IRC lines # this should generally be 1024-2048, and will only apply when negotiated by clients linelen: # tags section tags: 2048 # rest of the message rest: 2048 # fakelag: prevents clients from spamming commands too rapidly fakelag: # whether to enforce fakelag enabled: false # time unit for counting command rates window: 1s # clients can send this many commands without fakelag being imposed burst-limit: 5 # once clients have exceeded their burst allowance, they can send only # this many commands per `window`: messages-per-window: 2 # client status resets to the default state if they go this long without # sending any commands: cooldown: 2s # message history tracking, for the RESUME extension and possibly other uses in future history: # should we store messages for later playback? enabled: true # how many channel-specific events (messages, joins, parts) should be tracked per channel? channel-length: 256 # how many direct messages and notices should be tracked per user? client-length: 64 # number of messages to automatically play back on channel join (0 to disable): autoreplay-on-join: 0