2016-09-13 14:44:59 +02:00
![Oragono logo ](docs/logo.png )
2016-06-28 08:37:58 +02:00
2017-03-08 13:19:40 +01: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 12:39:02 +02:00
Oragono is a fork of the [Ergonomadic ](https://github.com/edmund-huber/ergonomadic ) IRC daemon < 3
2016-08-14 06:27:33 +02:00
2016-06-28 08:37:58 +02:00
---
[![Go Report Card ](https://goreportcard.com/badge/github.com/DanielOaks/oragono )](https://goreportcard.com/report/github.com/DanielOaks/oragono)
2017-01-20 06:23:22 +01: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 08:37:58 +02:00
---
2016-04-14 07:31:51 +02: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 14:04:30 +01:00
# Oragono
2016-06-28 08:37:58 +02:00
## Features
2014-02-24 18:41:09 +01:00
2017-01-13 23:02:24 +01:00
* UTF-8 nick and channel names with rfc7613
2016-04-12 15:00:09 +02:00
* [yaml ](http://yaml.org/ ) configuration
2016-08-14 06:27:33 +02:00
* native TLS/SSL support
* server password (`PASS` command)
2016-10-23 17:36:55 +02:00
* an extensible privilege system for IRC operators
2016-08-14 06:27:33 +02:00
* ident lookups for usernames
2016-10-23 17:07:04 +02:00
* automated client connection limits
2016-10-23 17:36:55 +02:00
* on-the-fly updating server config and TLS certificates (rehashing)
2016-09-07 13:35:43 +02:00
* client accounts and SASL
2016-10-23 17:36:55 +02:00
* passwords stored with [bcrypt ](https://godoc.org/golang.org/x/crypto ) (client account passwords also salted)
2017-01-11 13:52:15 +01:00
* banning ips/nets and masks with `KLINE` and `DLINE`
2016-10-23 17:07:04 +02:00
* [IRCv3 support ](http://ircv3.net/software/servers.html )
2016-10-23 17:36:55 +02:00
* a heavy focus on developing with [specifications ](http://oragono.io/specs.html )
2016-11-16 03:09:32 +01:00
* integrated (alpha) REST API and web interface
2014-02-24 18:41:09 +01:00
2016-06-28 08:37:58 +02:00
## Installation
2014-02-10 00:15:02 +01:00
```sh
2016-11-06 14:04:30 +01:00
go build oragono.go
2016-04-13 00:55:37 +02:00
cp oragono.yaml ircd.yaml
2016-04-12 15:00:09 +02:00
vim ircd.yaml # modify the config file to your liking
2016-04-13 00:55:37 +02:00
oragono initdb
2016-08-13 10:17:40 +02:00
oragono mkcerts
2014-02-27 07:25:10 +01:00
```
2017-03-08 13:19:40 +01: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 06:27:33 +02:00
2016-06-28 08:37:58 +02:00
## Configuration
2014-02-27 07:25:10 +01:00
2017-03-08 13:19:40 +01: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-27 07:25:10 +01:00
```sh
2016-04-13 00:55:37 +02:00
oragono genpasswd
2014-02-27 07:25:10 +01:00
```
2017-03-08 13:19:40 +01:00
With this, you receive a blob of text which you can plug into your configuration file.
2016-11-06 14:04:30 +01:00
## Running
2014-02-27 07:25:10 +01:00
2017-03-08 13:19:40 +01: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-27 07:25:10 +01:00
```sh
2016-04-13 00:55:37 +02:00
oragono run
2013-05-25 06:39:53 +02:00
```
2014-02-27 20:07:21 +01:00
2017-03-08 13:19:40 +01:00
<!-- # Web interface
2016-11-06 14:04:30 +01: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 03:09:32 +01: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 14:04:30 +01: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 13:19:40 +01:00
```-->
2016-11-06 14:04:30 +01:00
# Credits
2014-03-18 23:29:31 +01:00
2016-04-13 00:55:37 +02: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 11:40:25 +02:00
* Daniel Oakley, maintainer of Oragono, < https: // github . com / DanielOaks >
2015-06-24 06:35:14 +02:00
* apologies to anyone I forgot.