部署开源的团队协作工具

简介

Zulip 是一个开源的团队协作工具,拥有独特的基于主题的线程功能,结合了电子邮件和聊天的优点,使远程工作更加高效和愉快。它是唯一设计用于实时和异步对话的现代团队聊天应用程序。其核心优势包括:

  • 适用于大型企业、领先的开源项目以及数千家其他组织;

  • 提供易读性强、经过深思熟虑测试并易于修改代码以及超过 150K 字节文档;

  • 支持非编码贡献如报告问题、将 Zulip 转化为您所使用语言或给予反馈等多种方式。

准备

服务器:192.168.168.111

安装好docker ,docker compose

安装

1.创建目录

mkdir -p /opt/docker-zulip

进入目录

cd /opt/docker-zulip

 

2.编写docker-compse.yml

version: "2"
services:database:image: "zulip/zulip-postgresql:14"restart: unless-stoppedenvironment:POSTGRES_DB: "zulip"POSTGRES_USER: "zulip"# Note that you need to do a manual `ALTER ROLE` query if you# change this on a system after booting the postgres container# the first time on a host.  Instructions are available in README.md.POSTGRES_PASSWORD: "REPLACE_WITH_SECURE_POSTGRES_PASSWORD"volumes:- "postgresql-14:/var/lib/postgresql/data:rw"memcached:image: "memcached:alpine"restart: unless-stoppedcommand:- "sh"- "-euc"- |echo 'mech_list: plain' > "$$SASL_CONF_PATH"echo "zulip@$$HOSTNAME:$$MEMCACHED_PASSWORD" > "$$MEMCACHED_SASL_PWDB"echo "zulip@localhost:$$MEMCACHED_PASSWORD" >> "$$MEMCACHED_SASL_PWDB"exec memcached -Senvironment:SASL_CONF_PATH: "/home/memcache/memcached.conf"MEMCACHED_SASL_PWDB: "/home/memcache/memcached-sasl-db"MEMCACHED_PASSWORD: "REPLACE_WITH_SECURE_MEMCACHED_PASSWORD"rabbitmq:image: "rabbitmq:3.7.7"restart: unless-stoppedenvironment:RABBITMQ_DEFAULT_USER: "zulip"RABBITMQ_DEFAULT_PASS: "REPLACE_WITH_SECURE_RABBITMQ_PASSWORD"volumes:- "rabbitmq:/var/lib/rabbitmq:rw"redis:image: "redis:alpine"restart: unless-stoppedcommand:- "sh"- "-euc"- |echo "requirepass '$$REDIS_PASSWORD'" > /etc/redis.confexec redis-server /etc/redis.confenvironment:REDIS_PASSWORD: "REPLACE_WITH_SECURE_REDIS_PASSWORD"volumes:- "redis:/data:rw"zulip:image: "zulip/docker-zulip:8.0-0"restart: unless-stoppedbuild:context: .args:# Change these if you want to build zulip from a different repo/branchZULIP_GIT_URL: https://github.com/zulip/zulip.gitZULIP_GIT_REF: "8.0"# Set this up if you plan to use your own CA certificate bundle for building# CUSTOM_CA_CERTIFICATES:ports:- "80:80"- "443:443"environment:DB_HOST: "database"DB_HOST_PORT: "5432"DB_USER: "zulip"SSL_CERTIFICATE_GENERATION: "self-signed"SETTING_MEMCACHED_LOCATION: "memcached:11211"SETTING_RABBITMQ_HOST: "rabbitmq"SETTING_REDIS_HOST: "redis"SECRETS_email_password: "123456789"# These should match RABBITMQ_DEFAULT_PASS, POSTGRES_PASSWORD,# MEMCACHED_PASSWORD, and REDIS_PASSWORD above.SECRETS_rabbitmq_password: "REPLACE_WITH_SECURE_RABBITMQ_PASSWORD"SECRETS_postgres_password: "REPLACE_WITH_SECURE_POSTGRES_PASSWORD"SECRETS_memcached_password: "REPLACE_WITH_SECURE_MEMCACHED_PASSWORD"SECRETS_redis_password: "REPLACE_WITH_SECURE_REDIS_PASSWORD"SECRETS_secret_key: "REPLACE_WITH_SECURE_SECRET_KEY"SETTING_EXTERNAL_HOST: "192.168.168.111"SETTING_ZULIP_ADMINISTRATOR: "192.168.168.111"SETTING_EMAIL_HOST: "" # e.g. smtp.example.comSETTING_EMAIL_HOST_USER: "wangwenzhe163@163.com"SETTING_EMAIL_PORT: "587"# It seems that the email server needs to use ssl or tls and can't be used without itSETTING_EMAIL_USE_SSL: "False"SETTING_EMAIL_USE_TLS: "True"ZULIP_AUTH_BACKENDS: "EmailAuthBackend"# Uncomment this when configuring the mobile push notifications service# SETTING_PUSH_NOTIFICATION_BOUNCER_URL: 'https://push.zulipchat.com'volumes:- "zulip:/data:rw"ulimits:nofile:soft: 1000000hard: 1048576
volumes:zulip:postgresql-14:rabbitmq:redis:

3.启动

docker compose up -d

访问

浏览器打开

192.168.168.111:10013

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS的浮动(float)布局效果

<!DOCTYPE html> <html> <head> <meta charset"UTF-8" /> <title>浮动(float)布局效果</title> <style> *{ margin: 0; padding: 0; box-sizing: border-box; } /*.box1{ width: 300px; height: 300px; background-colo…

react后端开发:如何根据特定ID创建新的用户信息?

以音乐app开发为例&#xff0c;我们想要在想要创建新的唱片库&#xff0c;就需要使用Post连接服务器端新建唱片ID&#xff0c;并在该ID处插入唱片信息。怎么做呢&#xff1f; 使用create同时创建id和唱片信息 existingAlbum await Album.create({ _id: albumId, ...albumDat…

Django入门,十分钟学会登录网页

我们假定你已经阅读了 安装 Django。你能知道 Django 已被安装&#xff0c;且安装的是哪个版本&#xff0c;通过在命令提示行输入命令 cmd黑窗口运行&#xff0c;不懂cmd百度一下 python -m django --version 如果没出现版本&#xff0c;就是没安装&#xff0c;那么用pip安装…

《WebKit 技术内幕》学习之十(2): 插件与JavaScript扩展

2 Chromium PPAPI插件 2.1 原理 插件其实是一种统称&#xff0c;表示一些动态库&#xff0c;这些动态库根据定义的一些标准接口可以跟浏览器进行交互&#xff0c;至于这个标准接口是什么都可以&#xff0c;重要的是大家都遵循它们&#xff0c;NPAPI接口标准只是其中的一种&a…

C语言第六弹---分支语句(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 分支语句 1、 逻辑操作符&#xff1a;&& , || , &#xff01;4.1、 逻辑取反运算符 &#xff01;4.2、 与运算符4.3、 或运算符4.4、 练习&#xff1a;闰…

vue3.0规范学习记录

组合式函数使用usename进行命名&#xff0c;例如useMouse&#xff1b; 自定义指令使用v name进行命名&#xff0c;例如vFocus&#xff1b; 在组件使用v-model实现“双向绑定”时&#xff0c;子组件默认通过emits(‘update:modelValue’, params)触发更新&#xff1b; setup…

灵眸边缘计算产品学习

EASY EAI灵眸科技 | 让边缘AI落地更简单 (easy-eai.com) 产品简介 支持4路1080P30fps视频流采集&#xff0c;四核CPU1.5GHz与2Tops AI边缘算力能力。集成有以太网、Wi-Fi、4G等网络通信外设&#xff1b;RS232、RS485、UART等本地通信接口。HDMI显示屏接口、音频输入输出等交互…

[计算机网络]基本概念

目录 1.ip地址和端口号 1.1IP地址 1.2端口号 2.认识协议 2.1概念&#xff1a; 2.2知名协议的默认端口 3.五元组 4.协议分层 4.1分层的作用 4.2OSI七层模型 4.3TCP/IP五层&#xff08;四层&#xff09;模型 ​编辑4.4网络设备对应的分层&#xff1a; ​编辑以下为跨…

TestNG中的@AfterSuite注释

目录 什么是AfterSuite annotation&#xff1f; 代码示例 是时候来点头脑风暴了 我们可以在一个类中使用多个AfterSuite注释方法吗&#xff1f; AfterSuite放在超类上时如何工作&#xff1f; TestNG是Java中广泛使用的测试框架&#xff0c;用于进行单元&#xff0c;功能和…

大数据开发之Spark(入门)

第 1 章&#xff1a;Spark概述 1.1 什么是spark 回顾&#xff1a;hadoop主要解决&#xff0c;海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚&#xff…

CSS实现文本和图片无限滚动动画

Demo图如下&#xff1a; <style>* {margin: 0;padding: 0;box-sizing: border-box;font-family: Poppins, sans-serif;}body {min-height: 100vh;background-color: rgb(11, 11, 11);color: #fff;display: flex;flex-direction: column;justify-content: center;align-i…

Python无人系统

Python无人系统全方位自动坦克在现代军事中具有重要性。以下是几个重要原因&#xff1a; 自动化作战能力&#xff1a;Python无人系统全方位自动坦克能够在没有人类干预的情况下进行作战。它可以通过计算机视觉、传感器和算法来自主地感知环境、分析情报&#xff0c;制定战术和执…

Vision Mamba:将Mamba应用于计算机视觉任务的新模型

Mamba是LLM的一种新架构&#xff0c;与Transformers等传统模型相比&#xff0c;它能够更有效地处理长序列。就像VIT一样现在已经有人将他应用到了计算机视觉领域&#xff0c;让我们来看看最近的这篇论文“Vision Mamba: Efficient Visual Representation Learning with Bidirec…

Kubernetes operator(一)client-go篇【更新中】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列第一篇&#xff0c;主要对client-go进行学习&#xff0c;从源码阅读角度&#xff0c;学习client-go各个组件的实现原理、如何协同工作等参考视频&#xff1a;Bilibili 2022年最新k…

程序员裁员潮:技术变革下的职业危机

程序员裁员潮&#xff1a;技术变革下的职业危机 一对来自中国的工程师夫妻在美身亡&#xff0c;疑因谷歌裁员致悲剧发生。在技术变革下&#xff0c;裁员对于程序员的影响到底有多大&#xff1f;快来和我们分享一下你的看法吧~ 哎&#xff0c;这是悲哀&#xff0c;让我又想起来…

pod的亲和性和反亲和性

pod的亲和性和反亲和性 调度策略&#xff1a; 匹配标签 操作符 拓扑域 调度目标 node的亲和性 主机标签 In Notin exists doesexists Gt Lt 不支持 指定主机 pod的亲和性 pod的标签 In Notin exists doesexists 支持 pod和指…

【无标题】JavaScript 高阶 Promise篇

1、什么是Promise Promise 是异步编程的一种解决方案&#xff0c;其实是一个构造函数&#xff0c;自己身上有all、reject、resolve这几个方法&#xff0c;原型上有then、catch等方法。&#xff08;ps:关于原型&#xff1a;JavaScript高级 构造函数与原型篇&#xff09; Promi…

什么是 Web3.0

什么是Web3.0 对于 Web3.0 的解释网上有很多&#xff0c;目前来说 Web3.0 是一个趋势&#xff0c;尚未有明确的定义。我们今天讨论下几个核心的点&#xff0c;就能很好的理解 Web3.0 要解决哪些问题 谁创造数据&#xff0c;这里的数据可以是一篇博客&#xff0c;一段视频&…

Oracle Linux 8.9 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演示环境下进行的&#xff0c;演示环境中没有任何有价值的数据&#xff0c;但这并不代表摆在你面前的环境也是如此。生产环境…

在Vue.js中,什么是mixins?它们的作用是什么?

目录 一、Vue.js介绍 二、什么是mixins 三、mixins的应用场景 四、mixins的优势和作用 一、Vue.js介绍 Vue.js是一种流行的JavaScript前端框架,用于构建交互式的Web界面。它被设计为易于理解和集成的框架,使开发者能够快速构建可复用的组件化应用程序。Vue.js采用了MVVM&a…