3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-10 22:19:31 +01:00
ergo/README.md

145 lines
5.2 KiB
Markdown
Raw Normal View History

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.
Oragono is a fork of the [Ergonomadic](https://github.com/edmund-huber/ergonomadic) IRC daemon <3
2016-06-28 08:37:58 +02:00
---
2017-06-14 20:16:25 +02:00
[![Go Report Card](https://goreportcard.com/badge/github.com/oragono/oragono)](https://goreportcard.com/report/github.com/oragono/oragono)
[![Download Latest Release](https://img.shields.io/badge/downloads-latest%20release-green.svg)](https://github.com/oragono/oragono/releases/latest)
[![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
---
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
2017-01-13 23:02:24 +01:00
* UTF-8 nick and channel names with rfc7613
* [yaml](http://yaml.org/) configuration
* native TLS/SSL support
* server password (`PASS` command)
* an extensible privilege system for IRC operators
* ident lookups for usernames
2016-10-23 17:07:04 +02:00
* automated client connection limits
* on-the-fly updating server config and TLS certificates (rehashing)
2016-09-07 13:35:43 +02:00
* client accounts and SASL
* 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)
* a heavy focus on developing with [specifications](http://oragono.io/specs.html)
* integrated (alpha) REST API and web interface
2016-06-28 08:37:58 +02:00
## Installation
2014-02-10 00:15:02 +01:00
2017-06-14 20:16:25 +02:00
Download the latest release from this page: https://github.com/oragono/oragono/releases/latest
2017-04-30 05:21:48 +02:00
Extract it into a folder, then run the following commands:
2014-02-10 00:15:02 +01:00
```sh
cp oragono.yaml ircd.yaml
vim ircd.yaml # modify the config file to your liking
oragono initdb
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.
2017-06-11 15:52:55 +02:00
For real certs, look into [Let's Encrypt](https://letsencrypt.org/)!
### From Source
You can also install this repo and use that instead! However, keep some things in mind if you go that way:
`devel` branches are intentionally unstable, containing fixes that may not work, and they may be rebased or reworked extensively.
The `master` branch _should_ usually be stable, but may contain database changes that either have not been finalised or not had database upgrade code written yet. Don't run `master` on a live production network. If you'd like to, run the latest tagged version in production instead.
2017-06-24 21:41:11 +02:00
from the root folder, run make (for all target systems/release)
```
make
```
or restrict to a specific target system
```
# for windows
make windows
# for linux
make linux
# for osx
make osx
# for arm6
make arm6
```
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
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
oragono run
```
2014-02-27 20:07:21 +01:00
2017-05-17 21:25:34 +02:00
### How to register a channel
1. Register your account with `/quote ACC REGISTER <username> * passphrase :<password>`
2. Join the channel with `/join #channel`
3. Register the channel with `/msg ChanServ REGISTER #channel`
After this, your channel will remember the fact that you're the owner, the topic, and any modes set on it!
Make sure to setup [SASL](https://freenode.net/kb/answer/sasl) in your client to automatically login to your account when you next join the server.
2017-05-17 21:25:34 +02: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.
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
* 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>
* Daniel Oakley, maintainer of Oragono, <https://github.com/DanielOaks>
2015-06-24 06:35:14 +02:00
* apologies to anyone I forgot.