如何在 Debian 11 上安装 Zulip 聊天服务器
Zulip 是一个开源聊天服务器,类似于 Microsoft Teams、Rocket Chat 或 Slack。它是用 Python 编写的,并使用 Django、PostgreSQL 和 JavaScript。它与 90 多个第三方插件集成,包括 Github、Jira、Stripe、Zendesk、Sentry 等。您可以通过将它们与 Zapier 和 IFTTT 连接来扩展集成。它具有私人消息、群聊、线程对话、自定义频道、视频通话、拖放文件上传、自定义表情符号、Giphy 集成、图像和推文预览等功能。 Zulip 为每个平台提供了桌面和移动应用程序,使其与平台无关。
在本教程中,您将学习如何在基于 Debian 11 的服务器上安装和配置 Zulip Chat。
先决条件
运行 Debian 11 的服务器。
如果您预计用户数量少于 100 个,则至少需要 2GB RAM。对于 100 名以上的用户,请获取 4GB RAM 和 2 个 CPU 的服务器。
具有 sudo 权限的非 root 用户。
配置为指向服务器 zulip.example.com
的域名。
一切都更新了。
$ sudo apt update && sudo apt upgrade
您的系统需要的软件包很少。
$ sudo apt install wget curl nano ufw software-properties-common apt-transport-https gnupg2 ca-certificates debian-archive-keyring -y
其中一些软件包可能已经安装在您的系统上。
第 1 步 - 配置防火墙
第一步是配置防火墙。 Debian 附带 ufw(简单防火墙)。
检查防火墙是否正在运行。
$ sudo ufw status
您应该得到以下输出。
Status: inactive
允许 SSH 端口,以便防火墙在启用它时不会中断当前连接。
$ sudo ufw allow OpenSSH
还允许 HTTP 和 HTTPS 端口。
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
启用防火墙
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
再次检查防火墙的状态。
$ sudo ufw status
您应该看到类似的输出。
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
第 2 步 - 安装 Zulip
Zulip 附带一个安装程序脚本,该脚本执行以下操作:
- 创建用户
zulip
来运行 Zulip 服务器。 - 使用
zulip
用户创建一个主目录,其中包含目录/home/zulip/deployments
下的所有公共代码。 - 安装 Zulip 需要的所有依赖项。
- 安装 PostgreSQL 数据库、Nginx Web 服务器、RabbitMQ、Redis 缓存和 Memcached。
- 初始化 Zulip 的数据库。
使用 mktemp
命令创建一个临时目录,下载 Zulip 的安装程序并切换到该目录。
$ cd $(mktemp -d)
下载最新版本的 Zulip。
$ wget https://download.zulip.com/server/zulip-server-latest.tar.gz
提取所有文件。
$ tar -xf zulip-server-latest.tar.gz
运行安装程序脚本。
$ sudo ./zulip-server-*/scripts/setup/install --certbot \
--email=YOUR_EMAIL --hostname=YOUR_HOSTNAME
--certbot
标志使安装程序自动下载 Certbot 并安装 SSL 证书。将 YOUR_EMAIL
替换为您的电子邮件 ID,将 YOUR_HOSTNAME
替换为 Zulip 的域名 (zulip.example.com
)。
第 3 步 - 访问 Zulip 界面
安装程序脚本完成后,您将获得一个唯一的 URL。复制此网址。
.......
zulip-workers:zulip_deliver_scheduled_messages: started
+ set +x
+ su zulip -c '/home/zulip/deployments/current/manage.py generate_realm_creation_link'
Please visit the following secure single-use link to register your
new Zulip organization:
https://zulip.example.com/new/il5dsewnhugjarbnlxf5nc46
在浏览器中访问https://zulip.example.com/new/il5dsewnhugjarbnlxf5nc46
,将出现以下屏幕。
输入您的电子邮件 ID 以开始创建您的组织。系统将要求您在下一个屏幕上设置帐户。
输入您的组织名称和您的姓名,选择登录密码,然后单击注册按钮继续。
完成后,Zulip 仪表板将打开,您可以开始使用它。
第 4 步 - 配置外发电子邮件
Zulip服务器需要定期发送电子邮件。为此,您应该为其设置外发邮件。对于我们的示例,我们将使用 Amazon 的 SES 服务。所有邮件均从您在步骤 3 中创建组织时使用的电子邮件 ID 发送。
Zulip 将其所有设置存储在 /etc/zulip/settings.py
文件中。打开它进行编辑。
$ sudo nano /etc/zulip/settings.py
通过删除变量前面的 # 并输入相应的值来取消注释以下变量。
## EMAIL_HOST and EMAIL_HOST_USER are generally required.
EMAIL_HOST = 'email-smtp.us-west-2.amazonaws.com'
EMAIL_HOST_USER = 'yoursmpt_username'
## Passwords and secrets are not stored in this file. The password
## for user EMAIL_HOST_USER goes in `/etc/zulip/zulip-secrets.conf`.
## In that file, set `email_password`. For example:
# email_password = abcd1234
## EMAIL_USE_TLS and EMAIL_PORT are required for most SMTP providers.
EMAIL_USE_TLS = True
EMAIL_PORT = 587
填写以下附加变量。第一个删除无回复电子邮件地址的任何随机令牌,第二个为您的邮件配置无回复电子邮件发件人。
ADD_TOKENS_TO_NOREPLY_ADDRESS = False
# TOKENIZED_NOREPLY_EMAIL_ADDRESS = "noreply-{token}@example.com"
## NOREPLY_EMAIL_ADDRESS is the sender for noreply emails that don't
## contain confirmation links (where the security problem fixed by
## ADD_TOKENS_TO_NOREPLY_ADDRESS does not exist), as well as for
## confirmation emails when ADD_TOKENS_TO_NOREPLY_ADDRESS=False.
NOREPLY_EMAIL_ADDRESS = '[email '
完成后,按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
Zulip 将电子邮件密码保存在不同的文件中。打开文件 /etc/zulip/zulip-secrets.conf
进行编辑。
$ sudo nano /etc/zulip/zulip-secrets.conf
将以下行粘贴到文件末尾。
email_password = yoursmtp_password
按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
要测试您的外发电子邮件配置,您可以使用以下命令发送测试邮件。
$ sudo -u zulip /home/zulip/deployments/current/manage.py send_test_email [email
If you run into any trouble, read:
https://zulip.readthedocs.io/en/latest/production/email.html#troubleshooting
The most common error is not setting `ADD_TOKENS_TO_NOREPLY_ADDRESS=False` when
using an email provider that doesn't support that feature.
Sending 2 test emails from:
* [email
* [email
Successfully sent 2 emails to [email
重新启动服务器。
$ sudo -u zulip /home/zulip/deployments/current/scripts/restart-server
请注意,您只能以 zulip
用户身份启动或停止 Zulip 服务器。
第 5 步 - Zulip 服务器命令
要停止 Zulip 服务器,请使用以下命令。
$ sudo -u zulip /home/zulip/deployments/current/scripts/stop-server
要再次启动服务器,请使用以下命令。
$ sudo -u zulip /home/zulip/deployments/current/scripts/start-server
以类似的方式重新启动服务器。
$ sudo -u zulip /home/zulip/deployments/current/scripts/restart-server
您可以使用 Zulip 附带的 manage.py
脚本来完成许多管理任务。
您可以使用以下命令运行该脚本。我们将使用 help
子命令列出可以执行的所有可能的操作。
$ sudo -u zulip /home/zulip/deployments/current/manage.py help
Type 'manage.py help <subcommand>' for help on a specific subcommand.
Available subcommands:
[analytics]
check_analytics_state
clear_analytics_tables
clear_single_stat
populate_analytics_db
stream_stats
update_analytics_counts
[auth]
changepassword
createsuperuser
[contenttypes]
remove_stale_contenttypes
[django]
check
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemigrations
migrate
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
[otp_static]
addstatictoken
[sessions]
clearsessions
[social_django]
clearsocial
[staticfiles]
collectstatic
findstatic
runserver
[two_factor]
two_factor_disable
two_factor_status
[zerver]
add_users_to_streams
archive_messages
audit_fts_indexes
backup
bulk_change_user_name
change_password
change_realm_subdomain
change_user_email
change_user_role
check_redis
checkconfig
compilemessages
convert_gitter_data
convert_mattermost_data
convert_slack_data
create_default_stream_groups
create_large_indexes
create_realm_internal_bots
create_stream
create_user
deactivate_realm
deactivate_user
delete_old_unclaimed_attachments
delete_realm
delete_user
deliver_scheduled_emails
deliver_scheduled_messages
dump_messages
edit_linkifiers
email_mirror
enqueue_digest_emails
enqueue_file
export
export_single_user
export_usermessage_batch
fill_memcached_caches
fix_unreads
generate_invite_links
generate_multiuse_invite_link
generate_realm_creation_link
get_migration_status
import
list_realms
logout_all_users
makemessages
merge_streams
print_email_delivery_backlog
process_queue
purge_queue
query_ldap
rate_limit
reactivate_realm
realm_domain
register_server
remove_users_from_stream
rename_stream
reset_authentication_attempt_count
restore_messages
runtornado
scrub_realm
send_custom_email
send_password_reset_email
send_realm_reactivation_email
send_stats
send_test_email
send_to_email_mirror
send_webhook_fixture_message
set_message_flags
show_admins
soft_deactivate_users
sync_ldap_user_data
transfer_uploads_to_s3
turn_off_digests
第 6 步 - 升级 Zulip
要升级 Zulip,请从服务器下载最新版本。
$ curl -fLO https://download.zulip.com/server/zulip-server-latest.tar.gz
运行以下命令来执行升级。
$ sudo /home/zulip/deployments/current/scripts/upgrade-zulip ~/zulip-server-latest.tar.gz
该脚本将执行以下功能。
- 运行
apt update
来升级系统。 - 安装新版本的 Zulip 依赖项。
- 关闭 Zulip 服务器。
- 运行
puppet apply
命令。 - 如果需要,执行数据库迁移。
- 重新启动 Zulip 服务器。
第 7 步 - 备份和恢复 Zulip
由于内置脚本可以处理所有事情,因此支持和恢复 Zulip 非常简单。
要对 Zulip 进行完整备份,请运行以下命令。
$ sudo -u zulip /home/zulip/deployments/current/manage.py backup --output=~/backups/zulip-backup.tar.gz
上述命令将在 ~/backups
目录中创建一个 zulip-backup.tar.gz
文件。其中包含传输或恢复 Zulip 所需的一切。
要恢复现有备份,请执行步骤 2 安装 Zulip。
完成后,运行以下命令完成恢复。
$ sudo -u zulip /home/zulip/deployments/current/scripts/setup/restore-backup ~/backups/zulip-backup.tar.gz
如果要更改域,可以更改文件 /etc/zulip/settings.py
中的变量 EXTERNAL_HOST
,然后使用以下命令重新启动服务器。
$ sudo -u zulip /home/zulip/deployments/current/scripts/restart-server
结论
关于在基于 Debian 11 的系统上安装和配置 Zulip Chat 服务器的教程到此结束。您可以按照Zulip的官方文档进行详细探索。如果您有任何疑问,请在下面的评论中发表。