Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I spent 7 hours or so yesterday installing Zulip. It was a huge pain; for one, it wants to own an entire server and the only supported installation method is this mega-script that clobbers everything, so I had to try to use the Docker container. Documentation on installation is scarce; other than telling you to use the script, and the fact that a docker container exists (though the GitHub repo it linked me to was no longer accurate, and I had to find the updated image name elsewhere), there's practically no information on how it works or how to use it, or what it depends on or how to configure it.

- Had to use ChatGPT to help generate me a docker-compose.yml, except it forgot about memcached, set the wrong environment variables and just generally did a sloppy job.

- Once it was running it was a huge pain to set up reverse proxying properly, because Zulip apparently doesn't even pay attention to proxy headers if you're talking to it on port 80, even if X-Forwarded-Proto says https. It would get stuck in an endless redirect loop trying to redirect https to https. I could only properly debug this with tcpdump. The only solution I could find was to expose port 443 of the container and then have the reverse proxy talk to that, but Zulip still won't respect X-Forwarded-For, and login emails still show the Docker network address for whatever reason. No idea how to fix this as I couldn't find documentation on how to do it for Docker; the doc for reverse proxying without Docker says to edit zulip.conf, which is impossible (or I don't know how, as again, I couldn't find documentation on any way to do it for Docker.)

- Even once I could access Zulip it was a huge pain to get it to access the databases it needs, because again, I couldn't find documentation on how to do this for Docker. This was after it was a pain to figure out how to generate an org creation link because I don't think I could find documentation for that either, I had to find the script and read the source to figure it out.

- Even once it could access the databases it needs, and I could get it to use the right passwords (which was annoying as it generated SOME of own secrets, but not others, and started ignoring the corresponding settings, like the email host password), I tried to set up push notifications but that required a setting I didn't know how to set because I couldn't find documentation on how to do that for Docker; I eventually figured it out but it was annoying.

It was so awful and took up practically my entire day. Once I could finally get it to work, it works pretty well, but it's not an experience I would recommend until the docs start supporting this use case.

I'm sure it would've been easier if I read the entire documentation, the entire source code, the entire build script of the Docker container, etc. but I just wanted something to work...





I typed "Zulip docker compose" into DuckDuckGo, the first result was https://github.com/zulip/docker-zulip which has commits from today, so doesn't seem out-of-date.

> Had to use ChatGPT to help generate me a docker-compose.yml, except it forgot about memcached, set the wrong environment variables and just generally did a sloppy job.

It has a docker-compose file in it, has memcached in it.

> [...] X-Forwarded-Proto [...]

Does https://zulip.readthedocs.io/projects/docker/en/latest/how-t... help?

> access the databases it needs

The official docker compose has databases set up already, I guess you were missing those from your ChatGPT created compose file.

____

It kind of seems like you were linked to the wrong place for documentation about Zulip with docker in the beginning and then went from that.

A quick click-through seems to suggest you landed on https://zulip.readthedocs.io/en/stable/production/install.ht... and then clicked on the prominent "Docker image" link on top which leads to a random location on the page. (at least on Firefox)

That's very understandably annoying. If can you confirm that that is what happens, a bug report either with Zulip or ReadTheDocs (not sure which) might be in order.


> I typed "Zulip docker compose" into DuckDuckGo, the first result was https://github.com/zulip/docker-zulip which has commits from today, so doesn't seem out-of-date.

Of course, that's where I started as well. However, when I tried to pull as described in the README:

    $ docker pull ghcr.io/zulip/zulip-server:11.5-0
    Error response from daemon: failed to resolve reference "ghcr.io/zulip/zulip-server:11.5-0": ghcr.io/zulip/zulip-server:11.5-0: not found
So I had to pull from `zulip/docker-zulip` instead, because that one actually does exist.

> Does https://zulip.readthedocs.io/projects/docker/en/latest/how-t... help?

It almost did, but Zulip's port 80 still would try to redirect to HTTPS, even when X-Forwarded-Proto said https.

Today (after I had made the comment you replied to), I tried setting `CONFIG_application_server__http_only: "true"` as should work according to https://github.com/zulip/docker-zulip/blob/add4339a92d3073d5... , but it appears the image I actually have is different, as /sbin/entrypoint.sh reads:

    if [ "$DISABLE_HTTPS" == "True" ]; then
        echo "Disabling https in nginx."
        crudini --set /etc/zulip/zulip.conf application_server http_only true
    fi
So I set DISABLE_HTTPS instead and that worked. It appears this has been removed according to https://github.com/zulip/docker-zulip/blob/add4339a92d3073d5... first committed two days ago, but that change seemingly hasn't reached the image I'm using? Either way I wasn't even upgrading so how would I find those docs?

> The official docker compose has databases set up already, I guess you were missing those from your ChatGPT created compose file.

I didn't even know how / to use the official docker compose because I didn't find documentation that explained what to do. I didn't see information in the repository on what to do and assumed its compose files were for development/testing.

> A quick click-through seems to suggest you landed on https://zulip.readthedocs.io/en/stable/production/install.ht... and then clicked on the prominent "Docker image" link on top which leads to a random location on the page. (at least on Firefox)

Using Safari; for me it leads to the "Zulip in Docker" section on the "Deployment options" page. It says only that the Docker image exists, and that using it increases the effort required (obviously). I followed the link to the Docker image and only read the README because that's usually where installation instructions are. I found none. At the bottom it says "See our main documentation" which I didn't follow because I thought it was just a link to Zulip's documentation which I had already established was near useless. Following it now, apparently it's Docker-unique documentation. Would've been helpful to have known that or for it even to have been indicated anywhere. But some of it still doesn't apply to the image I'm using since the ghcr.io one seemingly disappeared for some reason.


That is strange. `docker pull ghcr.io/zulip/zulip-server:11.5-0` works fine for me. So something seems off with your setup in general.

Hey -- Zulip developer who works on the Docker images here. I'm sorry you had so much trouble; that sounds like a really frustrating experience!

We were in the middle of a transition to a new Docker image when this news dropped. There was a short period where the new ghcr.io/zulip/zulip-server:11.5-0 image was broken (https://chat.zulip.org/#narrow/channel/31-production-help/to...) due to an overzealous Github Action which "helpfully" cleaned up the sub-images (see https://github.com/zulip/docker-zulip/pull/600). That's almost certainly what bit you when you first tried to pull. The image has been repaired and repushed, which is why pulls of it are working now.

The HTTP/HTPS complications you ran into are frustrations which we were specifically trying to address with the new image; and the documentation in https://zulip.readthedocs.io/projects/docker/ is specifically about the new image because we didn't expect new users to be starting fresh there but with the old image. For instance, the new image defaults to HTTP-only, since that's a much more common deployment mechanism with Docker these days. See https://zulip.readthedocs.io/projects/docker/en/latest/how-t...

It sounds like we need to do a better job of:

- Clarifying on the documentation it is for the ghcr.io/zulip/zulip-server images

- Updating the documentation link from the repo's README to be more explicitly the Docker Zulip documentation, and placing it more prominently

- Updating the links in the standard Zulip documentation to go to the new Docker documentation, and not to the repo's README.

I'll push those changes today.

We've got some instructions on moving to the new images (https://zulip.readthedocs.io/projects/docker/en/latest/how-t...), but because you don't have a lot of configuration set, this will mostly just be switching to our provided compose file.

If you have other questions or feedback, please drop by https://chat.zulip.org -- we're friendly, and happy to help out. :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: