2016-09-13 22:44:59 +10:00
![Oragono logo ](docs/logo.png )
2016-06-28 16:37:58 +10:00
2017-03-08 22:19:40 +10:00
Oragono is a modern, experimental IRC server written in Go. It's designed to be simple to setup and use, and it includes features such as UTF-8 nicks / channel names, client accounts with SASL, and other assorted IRCv3 support.
2016-10-16 20:39:02 +10:00
Oragono is a fork of the [Ergonomadic ](https://github.com/edmund-huber/ergonomadic ) IRC daemon < 3
2016-08-14 14:27:33 +10:00
2016-06-28 16:37:58 +10:00
---
[![Go Report Card ](https://goreportcard.com/badge/github.com/DanielOaks/oragono )](https://goreportcard.com/report/github.com/DanielOaks/oragono)
2017-01-20 15:23:22 +10:00
[![Freenode #oragono ](https://img.shields.io/badge/Freenode-%23oragono-1e72ff.svg?style=flat )](https://www.irccloud.com/invite?channel=%23oragono& hostname=irc.freenode.net& port=6697& ssl=1)
2016-06-28 16:37:58 +10:00
---
2016-04-14 15:31:51 +10:00
This project adheres to [Semantic Versioning ](http://semver.org/ ). For the purposes of versioning, we consider the "public API" to refer to the configuration files, CLI interface and database format.
2016-11-06 23:04:30 +10:00
# Oragono
2016-06-28 16:37:58 +10:00
## Features
2014-02-24 09:41:09 -08:00
2017-01-14 08:02:24 +10:00
* UTF-8 nick and channel names with rfc7613
2016-04-12 23:00:09 +10:00
* [yaml ](http://yaml.org/ ) configuration
2016-08-14 14:27:33 +10:00
* native TLS/SSL support
* server password (`PASS` command)
2016-10-24 01:36:55 +10:00
* an extensible privilege system for IRC operators
2016-08-14 14:27:33 +10:00
* ident lookups for usernames
2016-10-24 01:07:04 +10:00
* automated client connection limits
2016-10-24 01:36:55 +10:00
* on-the-fly updating server config and TLS certificates (rehashing)
2016-09-07 21:35:43 +10:00
* client accounts and SASL
2016-10-24 01:36:55 +10:00
* passwords stored with [bcrypt ](https://godoc.org/golang.org/x/crypto ) (client account passwords also salted)
2017-01-11 22:52:15 +10:00
* banning ips/nets and masks with `KLINE` and `DLINE`
2016-10-24 01:07:04 +10:00
* [IRCv3 support ](http://ircv3.net/software/servers.html )
2016-10-24 01:36:55 +10:00
* a heavy focus on developing with [specifications ](http://oragono.io/specs.html )
2016-11-16 12:09:32 +10:00
* integrated (alpha) REST API and web interface
2014-02-24 09:41:09 -08:00
2016-06-28 16:37:58 +10:00
## Installation
2014-02-09 15:15:02 -08:00
```sh
2016-11-06 23:04:30 +10:00
go build oragono.go
2016-04-13 08:55:37 +10:00
cp oragono.yaml ircd.yaml
2016-04-12 23:00:09 +10:00
vim ircd.yaml # modify the config file to your liking
2016-04-13 08:55:37 +10:00
oragono initdb
2016-08-13 18:17:40 +10:00
oragono mkcerts
2014-02-26 22:25:10 -08:00
```
2017-03-08 22:19:40 +10:00
**Note:** This installation will give you unsigned certificates suitable for testing purposes.
For real crets, look into [Let's Encrypt ](https://letsencrypt.org/ )!
2016-08-14 14:27:33 +10:00
2016-06-28 16:37:58 +10:00
## Configuration
2014-02-26 22:25:10 -08:00
2017-03-08 22:19:40 +10:00
The default config file [`oragono.yaml` ](oragono.yaml ) helps walk you through what each option means and changes. The configuration's intended to be sparse, so if there are options missing it's either because that feature isn't written/configurable yet or because we don't think it should be configurable.
### Logs
By default, logs are stored in the file `ircd.log` . The configuration format of logs is designed to be easily pluggable, and is inspired by the logging config provided by InspIRCd.
### Passwords
Passwords (for both `PASS` and oper logins) are stored using bcrypt. To generate encrypted strings for use in the config, use the `genpasswd` subcommand as such:
2014-02-26 22:25:10 -08:00
```sh
2016-04-13 08:55:37 +10:00
oragono genpasswd
2014-02-26 22:25:10 -08:00
```
2017-03-08 22:19:40 +10:00
With this, you receive a blob of text which you can plug into your configuration file.
2016-11-06 23:04:30 +10:00
## Running
2014-02-26 22:25:10 -08:00
2017-03-08 22:19:40 +10:00
After this, running the server is easy! Simply run the below command and you should see the relevant startup information pop up.
2014-02-26 22:25:10 -08:00
```sh
2016-04-13 08:55:37 +10:00
oragono run
2013-05-24 21:39:53 -07:00
```
2014-02-27 11:07:21 -08:00
2017-03-08 22:19:40 +10:00
<!-- # Web interface
2016-11-06 23:04:30 +10:00
Oragono also includes a web interface, which works with the REST API to provide a way to manage user accounts and bans.
2016-11-16 12:09:32 +10:00
This interface is an early alpha, is in no way secure and will not be in a final release for a while. Requires the alpha REST API to be enabled (check your server config to enable that if you really want to).
2016-11-06 23:04:30 +10:00
## Installation
```sh
go build oragono-web.go
cp oragono-web.yaml web.yaml
vim web.yaml # modify the config file to your liking
oragono-web mkcerts
```
## Running
```sh
oragono-web run
2017-03-08 22:19:40 +10:00
```-->
2016-11-06 23:04:30 +10:00
# Credits
2014-03-18 15:29:31 -07:00
2016-04-13 08:55:37 +10:00
* Jeremy Latt, creator of Ergonomadic, < https: // github . com / jlatt >
* Edmund Huber, maintainer of Ergonomadic, < https: // github . com / edmund-huber >
* Niels Freier, added WebSocket support to Ergonomadic, < https: // github . com / stumpyfr >
2016-06-16 19:40:25 +10:00
* Daniel Oakley, maintainer of Oragono, < https: // github . com / DanielOaks >
2015-06-23 21:35:14 -07:00
* apologies to anyone I forgot.