mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-10 22:19:31 +01:00
Merge pull request #674 from csmith/merge-docker
Merge docker files from oragono-docker repository
This commit is contained in:
commit
d1615da7f1
@ -56,9 +56,11 @@ Some platforms/distros also have Oragono packages maintained for them:
|
||||
|
||||
* Arch Linux [AUR](https://aur.archlinux.org/packages/oragono/) - Maintained by [Sean Enck (@enckse)](https://github.com/enckse).
|
||||
|
||||
### Using Docker (BETA)
|
||||
### Using Docker
|
||||
|
||||
A Dockerfile and docker-compose recipe are available in the [oragono-docker](https://github.com/oragono/oragono-docker) repository.
|
||||
A Dockerfile and example docker-compose recipe are available in the `distrib/docker` directory. Oragono is automatically published
|
||||
to Docker Hub at [oragono/oragono](https://hub.docker.com/r/oragono/oragono). For more information, see the distrib/docker
|
||||
[README file](https://github.com/oragono/oragono/blob/master/distrib/docker/README.md).
|
||||
|
||||
### From Source
|
||||
|
||||
|
55
distrib/docker/Dockerfile
Normal file
55
distrib/docker/Dockerfile
Normal file
@ -0,0 +1,55 @@
|
||||
## build Oragono
|
||||
FROM golang:rc-alpine AS build-env
|
||||
|
||||
RUN apk add --no-cache git make curl
|
||||
|
||||
# copy oragono
|
||||
RUN mkdir -p /go/src/github.com/oragono/oragono
|
||||
WORKDIR /go/src/github.com/oragono/oragono
|
||||
ADD . /go/src/github.com/oragono/oragono/
|
||||
|
||||
# make sure submodules are up-to-date
|
||||
RUN git submodule update --init
|
||||
|
||||
# compile
|
||||
RUN make
|
||||
|
||||
|
||||
|
||||
## run Oragono
|
||||
FROM alpine:3.9
|
||||
|
||||
# metadata
|
||||
LABEL maintainer="daniel@danieloaks.net"
|
||||
LABEL description="Oragono is a modern, experimental IRC server written in Go"
|
||||
|
||||
# install latest updates and configure alpine
|
||||
RUN apk update
|
||||
RUN apk upgrade
|
||||
RUN mkdir /lib/modules
|
||||
|
||||
# standard ports listened on
|
||||
EXPOSE 6667/tcp 6697/tcp
|
||||
|
||||
# oragono itself
|
||||
RUN mkdir -p /ircd-bin
|
||||
COPY --from=build-env /go/bin/oragono /ircd-bin
|
||||
COPY --from=build-env /go/src/github.com/oragono/oragono/languages /ircd-bin/languages/
|
||||
COPY --from=build-env /go/src/github.com/oragono/oragono/oragono.yaml /ircd-bin/oragono.yaml
|
||||
COPY distrib/docker/run.sh /ircd-bin/run.sh
|
||||
RUN chmod +x /ircd-bin/run.sh
|
||||
|
||||
# running volume holding config file, db, certs
|
||||
VOLUME /ircd
|
||||
WORKDIR /ircd
|
||||
|
||||
# default motd
|
||||
COPY --from=build-env /go/src/github.com/oragono/oragono/oragono.motd /ircd/oragono.motd
|
||||
|
||||
# launch
|
||||
ENTRYPOINT ["/ircd-bin/run.sh"]
|
||||
|
||||
# # uncomment to debug
|
||||
# RUN apk add --no-cache bash
|
||||
# RUN apk add --no-cache vim
|
||||
# CMD /bin/bash
|
109
distrib/docker/README.md
Normal file
109
distrib/docker/README.md
Normal file
@ -0,0 +1,109 @@
|
||||
# Oragono Docker
|
||||
|
||||
This folder holds Oragono's Dockerfile and related materials. Oragono
|
||||
is published iautomatically to Docker Hub at
|
||||
[oragono/oragano](https://hub.docker.com/r/oragono/oragono).
|
||||
|
||||
The `latest` tag tracks the `stable` branch of Oragono, which contains
|
||||
the latest stable release. The `dev` tag tracks the master branch, which
|
||||
may by unstable and is not recommended for production.
|
||||
|
||||
You can see other tags [on Docker Hub](https://hub.docker.com/r/oragono/oragono/tags)
|
||||
if you wish to run a specific version of Oragono.
|
||||
|
||||
## Quick start
|
||||
|
||||
The Oragono docker image is designed to work out of the box - it comes with a
|
||||
usable default config and will automatically generate self-signed TLS
|
||||
certificates. To get a working ircd, all you need to do is run the image and
|
||||
expose the ports:
|
||||
|
||||
```shell
|
||||
docker run --name oragono -d -p 6667:6667 -p 6697:6697 oragono/oragono:tag
|
||||
```
|
||||
|
||||
This will start Oragono and listen on ports 6667 (plain text) and 6697 (TLS).
|
||||
The first time Oragono runs it will create a config file with a randomised
|
||||
oper password. This is output to stdout, and you can view it with the docker
|
||||
logs command:
|
||||
|
||||
```shell
|
||||
# Assuming your container is named `oragono`; use `docker container ls` to
|
||||
# find the name if you're not sure.
|
||||
docker logs oragono
|
||||
```
|
||||
|
||||
You should see a line similar to:
|
||||
|
||||
```
|
||||
Oper username:password is dan:cnn2tm9TP3GeI4vLaEMS
|
||||
```
|
||||
|
||||
## Persisting data
|
||||
|
||||
Oragono has a persistent data store, used to keep account details, channel
|
||||
registrations, and so on. To persist this data across restarts, you can mount
|
||||
a volume at /ircd.
|
||||
|
||||
For example, to create a new docker volume and then mount it:
|
||||
|
||||
```shell
|
||||
docker volume create oragono-data
|
||||
docker run -d -v oragono-data:/ircd -p 6667:6667 -p 6697:6697 oragono/oragono:tag
|
||||
```
|
||||
|
||||
Or to mount a folder from your host machine:
|
||||
|
||||
```shell
|
||||
mkdir oragono-data
|
||||
docker run -d -v $(PWD)/oragono-data:/ircd -p 6667:6667 -p 6697:6697 oragono/oragono:tag
|
||||
```
|
||||
|
||||
## Customising the config
|
||||
|
||||
Oragono's config file is stored at /ircd/ircd.yaml. If the file does not
|
||||
exist, the default config will be written out. You can copy the config from
|
||||
the container, edit it, and then copy it back:
|
||||
|
||||
```shell
|
||||
# Assuming that your container is named `oragono`, as above.
|
||||
docker cp oragono:/ircd/ircd.yaml .
|
||||
vim ircd.yaml # edit the config to your liking
|
||||
docker cp ircd.yaml oragono:/ircd/ircd.yaml
|
||||
```
|
||||
|
||||
You can use the `/rehash` command to make Oragono reload its config, or
|
||||
send it the HUP signal:
|
||||
|
||||
```shell
|
||||
docker kill -HUP oragono
|
||||
```
|
||||
|
||||
## Using custom TLS certificates
|
||||
|
||||
TLS certs will by default be read from /ircd/tls.crt, with a private key
|
||||
in /ircd/tls.key. You can customise this path in the ircd.yaml file if
|
||||
you wish to mount the certificates from another volume. For information
|
||||
on using Let's Encrypt certificates, see
|
||||
[this manual entry](https://github.com/oragono/oragono/blob/master/docs/MANUAL.md#how-do-i-use-lets-encrypt-certificates).
|
||||
|
||||
## Using docker-compose
|
||||
|
||||
This folder contains a sample docker-compose file which can be used
|
||||
to start an Oragono instance with ports exposed and data persisted in
|
||||
a docker volume. Simply download the file and then bring it up:
|
||||
|
||||
```shell
|
||||
curl -O https://raw.githubusercontent.com/oragono/oragono/master/distrib/docker/docker-compose.yml
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
If you wish to manually build the docker image, you need to do so from
|
||||
the root of the Oragono repository (not the `distrib/docker` directory):
|
||||
|
||||
```shell
|
||||
docker build -f distrib/docker/Dockerfile .
|
||||
```
|
||||
|
20
distrib/docker/docker-compose.yml
Normal file
20
distrib/docker/docker-compose.yml
Normal file
@ -0,0 +1,20 @@
|
||||
version: "3.2"
|
||||
|
||||
services:
|
||||
oragono:
|
||||
image: oragono/oragono:latest
|
||||
ports:
|
||||
- "6667:6667/tcp"
|
||||
- "6697:6697/tcp"
|
||||
volumes:
|
||||
- data:/ircd
|
||||
deploy:
|
||||
placement:
|
||||
constraints:
|
||||
- "node.role == manager"
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
replicas: 1
|
||||
|
||||
volumes:
|
||||
data:
|
29
distrib/docker/run.sh
Normal file
29
distrib/docker/run.sh
Normal file
@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# start in right dir
|
||||
cd /ircd
|
||||
|
||||
# make config file
|
||||
if [ ! -f "/ircd/ircd.yaml" ]; then
|
||||
awk '{gsub(/path: languages/,"path: /ircd-bin/languages")}1' /ircd-bin/oragono.yaml > /tmp/ircd.yaml
|
||||
|
||||
# change default oper passwd
|
||||
OPERPASS=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c20)
|
||||
echo "Oper username:password is dan:$OPERPASS"
|
||||
ENCRYPTEDPASS=$(echo "$OPERPASS" | /ircd-bin/oragono genpasswd)
|
||||
ORIGINALPASS='\$2a\$04\$LiytCxaY0lI.guDj2pBN4eLRD5cdM2OLDwqmGAgB6M2OPirbF5Jcu'
|
||||
|
||||
awk "{gsub(/password: \\\"$ORIGINALPASS\\\"/,\"password: \\\"$ENCRYPTEDPASS\\\"\")}1" /tmp/ircd.yaml > /tmp/ircd2.yaml
|
||||
|
||||
unset OPERPASS
|
||||
unset ENCRYPTEDPASS
|
||||
unset ORIGINALPASS
|
||||
|
||||
mv /tmp/ircd2.yaml /ircd/ircd.yaml
|
||||
fi
|
||||
|
||||
# make self-signed certs if they don't already exist
|
||||
/ircd-bin/oragono mkcerts
|
||||
|
||||
# run!
|
||||
exec /ircd-bin/oragono run
|
@ -124,6 +124,15 @@ To start the server, type `./oragono run` and hit enter, and the server should b
|
||||
If you're using Arch Linux, you can also install the [`oragono` package](https://aur.archlinux.org/packages/oragono/) from the AUR.
|
||||
|
||||
|
||||
## Docker
|
||||
|
||||
1. Pull the latest version of Oragono: `docker pull oragono/oragono:latest`
|
||||
1. Create a volume for persistent data: `docker volume create oragono-data`
|
||||
1. Run the container, exposing the default ports: `docker run -d --name oragono -v oragono-data:/ircd-data -p 6667:6667 -p 6697:6697 oragono/oragono:latest`
|
||||
|
||||
For further information and a sample docker-compose file see the separate [Docker documentation](https://github.com/oragono/oragono/blog/master/distrib/docker/README.md).
|
||||
|
||||
|
||||
## Running oragono as a service on Linux
|
||||
|
||||
The recommended way to operate oragono as a service on Linux is via systemd. This provides a standard interface for starting, stopping, and rehashing (via `systemctl reload`) the service. It also captures oragono's loglines (sent to stderr in the default configuration) and writes them to the system journal.
|
||||
|
Loading…
Reference in New Issue
Block a user