Sign inSign up

ipernet/zulip

By ipernet

Updated almost 11 years ago

Zulip server

Image
1

2.1K

ipernet/zulip repository overview

What

A Docker container for running a Zulip server instance.

Differences with upstream

**Couple of fixes: **

How to install

  • Ensure to run the container using a consistent hostname.
  • Mount the SSL certificate and key of your domain as Docker volumes (Zulip HTTPS).
  • Map container port 443 or 80 to a port on your host.
docker run -name zulip-server \
    --hostname my-zulip \
    -v /etc/ssl/private/myZulipCert.key:/etc/ssl/private/zulip.key \
    -v /etc/ssl/private/myZulipCert-chain.crt:/etc/ssl/certs/zulip.combined-chain.crt \
    -p 443 \
    -it -d \
    ipernet/zulip 

  • Enter your container:
# docker exec -it zulip-server /bin/bash```
---
- Generate new secrets:

```bash
# cd /root/zulip
# ./scripts/setup/generate_secrets.py```
---
- Reconfigure rabbitmq:

*Because your container hostname is NOT the one of the image.*

*Note: rabbitmq-server conf provided by zulip makes rabbbitmq listens on 127.0.0.1 and so require your host name to resolve to 127.0.0.1, not any other IP (see /etc/hosts). Purging the package will remove this conf and rabbitmq will thus listen on all interfaces, including the docker one currently resolving for your host name*

```bash
# rm -r /var/lib/rabbitmq/
# apt-get update && apt-get purge rabbitmq-server && apt-get install rabbitmq-server
# /usr/bin/epmd -daemon
# service rabbitmq-server start
# ./scripts/setup/configure-rabbitmq```
---
- Edit zulip settings in ```/etc/zulip/settings.py```

- Start  Zulip required services:

```bash
# service nginx start && \
    service redis-server start && \
    service memcached start && \
    service postgresql start ```
---
- Initialize Zulip DB from the settings (ignore supervisor error):

```bash
# su zulip -c /home/zulip/deployments/current/scripts/setup/initialize-database```
---
- Finally, start Zulip:

```bash
# service supervisor start```
---
- Exit your container

# Zulip HTTP

If you want to run Zulip using HTTP and perform the SSL termination upstream, edit ```/etc/nginx/sites-enabled/zulip-enterprise``` as follow:

listen 80;

#ssl on;
#ssl_certificate /etc/ssl/certs/zulip.combined-chain.crt;
#ssl_certificate_key /etc/ssl/private/zulip.key;```

then restart nginx:

service nginx restart

Don't forget to map port 80.

Dockerfile

FROM ubuntu:trusty

ENV ZULIP_DIR="/root/zulip"

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y wget puppet git python

RUN git clone https://github.com/zulip/zulip.git "$ZULIP_DIR" && \
    cd "$ZULIP_DIR" && \
    wget "https://github.com/zulip/zulip/compare/master...ipernet:staging.patch" -O the.patch && \
    patch -f -p1 < the.patch && \ 
    locale-gen en_US.UTF-8 && \
    echo "127.0.0.1 localhost $(hostname)" > /etc/hosts && \
    ./scripts/setup/install && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

EXPOSE 80 443

CMD ["tail", "-f", "/dev/null"]```

Tag summary

Content type

Image

Digest

sha256:5048ade8f

Size

449.8 MB

Last updated

almost 11 years ago

docker pull ipernet/zulip