• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H14-Nov-2021-7064

distrib/H14-Nov-2021-640490

docs/H03-May-2022-1,347830

irc/H14-Nov-2021-35,68628,283

irctest/H14-Nov-2021-

languages/H14-Nov-2021-4,5854,379

vendor/H03-May-2022-335,181277,279

.check-gofmt.shH A D14-Nov-2021263 159

.gitattributesH A D14-Nov-202160 32

.gitignoreH A D14-Nov-20211.4 KiB11386

.gitmodulesH A D14-Nov-202180 43

.goreleaser.ymlH A D14-Nov-20211.1 KiB5856

CHANGELOG.mdH A D14-Nov-2021124 KiB1,4591,153

DEVELOPING.mdH A D14-Nov-202111.6 KiB201125

DockerfileH A D14-Nov-20211.4 KiB4936

LICENSEH A D14-Nov-20211.2 KiB2520

MakefileH A D14-Nov-20211.3 KiB5038

READMEH A D14-Nov-20211.9 KiB6342

README.mdH A D14-Nov-20217.4 KiB12781

crowdin.ymlH A D14-Nov-20211.3 KiB5351

default.yamlH A D14-Nov-202141.9 KiB984823

ergo.goH A D14-Nov-20215.6 KiB204177

ergo.motdH A D14-Nov-20211.7 KiB3625

gencapdefs.pyH A D14-Nov-20217.2 KiB250231

go.modH A D14-Nov-20211.7 KiB4438

go.sumH A D14-Nov-20219.8 KiB109108

traditional.yamlH A D14-Nov-202140.2 KiB957796

updatetranslations.pyH A D14-Nov-20217.3 KiB196133

README

1   ___ _ __ __ _  ___
2  / _ \ '__/ _` |/ _ \
3 |  __/ | | (_| | (_) |
4  \___|_|  \__, |\___/
5            __/ |
6           |___/
7-----------------------------------------------------------------------------------------------
8
9Ergo is a modern IRC server written in Go. Its core design principles are:
10
11* Being simple to set up and use
12* Combining the features of an ircd, a services framework, and a bouncer:
13  * Integrated account management
14  * History storage
15  * Bouncer functionality
16* Bleeding-edge IRCv3 support
17* High customizability via a rehashable (i.e., reloadable at runtime) YAML config
18
19                                     https://ergo.chat/
20                              https://github.com/ergochat/ergo
21                          #ergo on irc.ergo.chat or irc.libera.chat
22
23-----------------------------------------------------------------------------------------------
24
25
26=== Installing ===
27
28Copy the example config file to ircd.yaml with a command like:
29
30    $ cp default.yaml ircd.yaml
31
32Modify the config file as needed (the recommendations at the top may be helpful).
33
34To generate passwords for opers and connect passwords, you can use this command:
35
36    $ ergo genpasswd
37
38If you need to generate self-signed TLS certificates, use this command:
39
40    $ ergo mkcerts
41
42You are now ready to start Ergo!
43
44    $ ergo run
45
46For further instructions, consult the manual. A copy of the manual should be
47included in your release under `docs/MANUAL.md`. Or you can view it on the
48Web: https://ergo.chat/manual.html
49
50=== Updating ===
51
52If you're updating from a previous version of Ergo, check out the CHANGELOG for a list
53of important changes you'll want to take a look at. The change log details config changes,
54fixes, new features and anything else you'll want to be aware of!
55
56=== Credits ===
57
58* Jeremy Latt (2012-2014)
59* Edmund Huber (2014-2015)
60* Daniel Oaks (2016-present)
61* Shivaram Lingamneni (2017-present)
62* Many other contributors and friends of the project <3
63

README.md

1![Ergo logo](docs/logo.png)
2
3Ergo (formerly known as Oragono) is a modern IRC server written in Go. Its core design principles are:
4
5* Being simple to set up and use
6* Combining the features of an ircd, a services framework, and a bouncer (integrated account management, history storage, and bouncer functionality)
7* Bleeding-edge [IRCv3 support](https://ircv3.net/software/servers.html), suitable for use as an IRCv3 reference implementation
8* High customizability via a rehashable (i.e., reloadable at runtime) YAML config
9
10Ergo is a fork of the [Ergonomadic](https://github.com/jlatt/ergonomadic) IRC daemon <3
11
12---
13
14[![Go Report Card](https://goreportcard.com/badge/github.com/ergochat/ergo)](https://goreportcard.com/report/github.com/ergochat/ergo)
15[![build](https://github.com/ergochat/ergo/actions/workflows/build.yml/badge.svg)](https://github.com/ergochat/ergo/actions/workflows/build.yml)
16[![Download Latest Release](https://img.shields.io/badge/downloads-latest%20release-green.svg)](https://github.com/ergochat/ergo/releases/latest)
17[![Crowdin](https://d322cqt584bo4o.cloudfront.net/ergochat/localized.svg)](https://crowdin.com/project/ergochat)
18
19If you want to take a look at a running Ergo instance or test some client code, feel free to play with [testnet.ergo.chat](https://testnet.ergo.chat/) (TLS on port 6697 or plaintext on port 6667).
20
21---
22
23
24## Features
25
26* integrated services: NickServ for user accounts, ChanServ for channel registration, and HostServ for vanity hosts
27* bouncer-like features: storing and replaying history, allowing multiple clients to use the same nickname
28* UTF-8 nick and channel names with rfc7613 (PRECIS)
29* native TLS/SSL support, including support for client certificates
30* [yaml](https://yaml.org/) configuration
31* updating server config and TLS certificates on-the-fly (rehashing)
32* SASL authentication
33* LDAP support
34* supports [multiple languages](https://crowdin.com/project/ergochat) (you can also set a default language for your network)
35* advanced security and privacy features (support for requiring SASL for all logins, cloaking IPs, and running as a Tor hidden service)
36* an extensible privilege system for IRC operators
37* ident lookups for usernames
38* automated client connection limits
39* passwords stored with [bcrypt](https://godoc.org/golang.org/x/crypto)
40* `UBAN`, a unified ban system that can target IPs, networks, masks, and registered accounts (`KLINE` and `DLINE` are also supported)
41* [IRCv3 support](https://ircv3.net/software/servers.html)
42* a focus on developing with [specifications](https://ergo.chat/specs.html)
43
44For more detailed information on Ergo's functionality, see:
45
46* [MANUAL.md, the operator manual](https://github.com/ergochat/ergo/blob/stable/docs/MANUAL.md)
47* [USERGUIDE.md, the guide for end users](https://github.com/ergochat/ergo/blob/stable/docs/USERGUIDE.md)
48
49## Quick start guide
50
51Download the latest release from this page: https://github.com/ergochat/ergo/releases/latest
52
53Extract it into a folder, then run the following commands:
54
55```sh
56cp default.yaml ircd.yaml
57vim ircd.yaml   # modify the config file to your liking
58ergo mkcerts
59ergo run     # server should be ready to go!
60```
61
62**Note:** See the [productionizing guide in our manual](https://github.com/ergochat/ergo/blob/stable/docs/MANUAL.md#productionizing-with-systemd) for recommendations on how to run a production network, including obtaining valid TLS certificates.
63
64### Platform Packages
65
66Some platforms/distros also have Ergo packages maintained for them:
67
68* Arch Linux [AUR](https://aur.archlinux.org/packages/ergochat/) - Maintained by [Jason Papakostas (@vith)](https://github.com/vith).
69
70### Using Docker
71
72A Dockerfile and example docker-compose recipe are available in the `distrib/docker` directory. Ergo is automatically published
73to Docker Hub at [ergochat/ergo](https://hub.docker.com/r/ergochat/ergo). For more information, see the distrib/docker
74[README file](https://github.com/ergochat/ergo/blob/master/distrib/docker/README.md).
75
76### From Source
77
78You can also clone this repository and build from source. Typical deployments should use the `stable` branch, which points to the latest stable release. In general, `stable` should coincide with the latest published tag that is not designated as a beta or release candidate (for example, `v2.7.0-rc1` was an unstable release candidate and `v2.7.0` was the corresponding stable release), so you can also identify the latest stable release tag on the [releases page](https://github.com/ergochat/ergo/releases) and build that.
79
80The `master` branch is not recommended for production use since it may contain bugs, and because the forwards compatibility guarantees for the config file and the database that apply to releases do not apply to master. That is to say, running master may result in changes to your database that end up being incompatible with future versions of Ergo.
81
82For information on contributing to Ergo, see [DEVELOPING.md](https://github.com/ergochat/ergo/blob/master/DEVELOPING.md).
83
84#### Building
85
86You'll need an [up-to-date distribution of the Go language for your OS and architecture](https://golang.org/dl/). Once you have that, just clone the repository and run `make build`. If everything goes well, you should now have an executable named `ergo` in the base directory of the project.
87
88## Configuration
89
90The default config file [`default.yaml`](default.yaml) helps walk you through what each option means and changes.
91
92You can use the `--conf` parameter when launching Ergo to control where it looks for the config file. For instance: `ergo run --conf /path/to/ircd.yaml`. The configuration file also stores where the log, database, certificate, and other files are opened. Normally, all these files use relative paths, but you can change them to be absolute (such as `/var/log/ircd.log`) when running Ergo as a service.
93
94### Logs
95
96By default, logs go to stderr only. They can be configured to go to a file, or you can use systemd to direct the stderr to the system journal (see the manual for details). The configuration format of logs is designed to be easily pluggable, and is inspired by the logging config provided by InspIRCd.
97
98### Passwords
99
100Passwords (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:
101
102```sh
103ergo genpasswd
104```
105
106With this, you receive a blob of text which you can plug into your configuration file.
107
108### Nickname and channel registration
109
110Ergo relies heavily on user accounts to enable its distinctive features (such as allowing multiple clients per nickname). As a user, you can register your current nickname as an account using `/msg NickServ register <password>`. Once you have done so, you should [enable SASL in your clients](https://libera.chat/guides/sasl), ensuring that you will be automatically logged into your account on each connection. This will prevent [problems claiming your registered nickname](https://github.com/ergochat/ergo/blob/master/docs/MANUAL.md#nick-equals-account).
111
112Once you have registered your nickname, you can use it to register channels:
113
1141. Join the channel with `/join #channel`
1152. Register the channel with `/CS REGISTER #channel`
116
117After this, your channel will remember the fact that you're the owner, the topic, and any modes set on it!
118
119
120# Credits
121
122* Jeremy Latt (2012-2014)
123* Edmund Huber (2014-2015)
124* Daniel Oaks (2016-present)
125* Shivaram Lingamneni (2017-present)
126* [Many other contributors and friends of the project <3](https://github.com/ergochat/ergo/blob/master/CHANGELOG.md)
127