You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
4.5 KiB
Markdown

### Minimum File Structure
```
/home/
└── ~/
└── docker/
└── rocketchat/
├── .env
├── docker-compose.yml
```
### Add to Caddyfile (from ~/docker/caddy)
Remember to `docker exec -w /etc/caddy caddy caddy reload` after editing your Caddyfile.
```
subdomain.example.com {
reverse_proxy rocketchat:3000
}
```
### .env
Set your environment variables. SMTP service is needed if you want rocketchat to be able to send emails.
```
# General
MY_DOMAIN=example.com
DOCKER_MY_NETWORK=caddy_net
# Rocket Chat Specific
ROOT_URL=https://subdomain.example.com
SMTP_MAIL_URL=smtp.mailgun.org
ROCKETCHAT_BOT_PASSWORD=samplebotpassword
```
### docker-compose.yml
```
version: '2'
services:
rocketchat:
image: rocketchat/rocket.chat:latest
container_name: rocketchat
# ports:
# - 3000:3000
command: >
bash -c
"for i in `seq 1 30`; do
node main.js &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 secs...\";
sleep 5;
done; (exit $$s)"
restart: unless-stopped
volumes:
- ./uploads:/app/uploads
environment:
- PORT=3000
- ROOT_URL=${ROOT_URL}
- MONGO_URL=mongodb://rocketchat-db:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://rocketchat-db:27017/local
- MAIL_URL=${SMTP_MAIL_URL}
# - HTTP_PROXY=http://proxy.domain.com
# - HTTPS_PROXY=http://proxy.domain.com
depends_on:
- rocketchat-db
labels:
- "traefik.backend=rocketchat"
- "traefik.frontend.rule=Host: your.domain.tld"
rocketchat-db:
image: mongo:5.0.5
container_name: rocketchat-db
restart: unless-stopped
volumes:
- ./data/db:/data/db
#- ./data/dump:/dump
command: mongod --oplogSize 128 --replSet rs0
labels:
- "traefik.enable=false"
# this container's job is just run the command to initialize the replica set.
# it will run the command and remove himself (it will not stay running)
rocketchat-db-init-replica:
image: mongo:5.0.5
command: >
bash -c
"for i in `seq 1 30`; do
mongo rocketchat-db/rocketchat --eval \"
rs.initiate({
_id: 'rs0',
members: [ { _id: 0, host: 'localhost:27017' } ]})\" &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 secs...\";
sleep 5;
done; (exit $$s)"
depends_on:
- rocketchat-db
# hubot, the popular chatbot (add the bot user first and change the password before starting this image)
rocketchat-hubot:
image: rocketchat/hubot-rocketchat:latest
container_name: rocketchat-hubot
restart: unless-stopped
environment:
- ROCKETCHAT_URL=rocketchat:3000
- ROCKETCHAT_ROOM=GENERAL
- ROCKETCHAT_USER=bot
- ROCKETCHAT_PASSWORD=${ROCKETCHAT_BOT_PASSWORD}
- BOT_NAME=bot
# you can add more scripts as you'd like here, they need to be installable by npm
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics
depends_on:
- rocketchat
labels:
- "traefik.enable=false"
volumes:
- ./scripts:/home/hubot/scripts
# this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier
networks:
default:
external:
name: ${DOCKER_MY_NETWORK}
```
### docker-compose up -d
After you have the .env and docker-compose files set up in this directory. Do a ```docker-compose up -d``` to start the containers. It should take about 30-60 seconds to launch.
### Finalization - Hubot
After you can access your rocketchat server, you can stop the hubot errors for happening by creating a new bot user in Administration > Users > + New. Then create a bot with username bot, and email bot@yourdomain.com and password to match the password you used in the .env file. Lastly, for role choose bot and hit save. Now if you do a `docker logs rocketchat-hubot` you won't see any more errors and the container will stop restarting over and over again.
While you're at it you can set up your SMTP server if you choose to under Administration > Email > SMTP
### Upgrading from Mongo 4.0 to newer version
Disregard this if this is your first time running rocket.chat.
If you had a working rocket.chat instance running on mongo 4.0 and wanted to upgrade to a newer mongo
You will need to export your old database and import it into a new one.
Details can be found here: https://github.com/RocketChat/Rocket.Chat/issues/24160#issuecomment-1048290278