静看光阴荏苒
不管不顾不问不说也不念

HAVEN:自托管私密聊天,Discord的替代品

Haven是一个开源并且可以self-host的Discord替代方案。无需邮箱注册,不追踪用户,并宣称永久免费。

Haven目前还是一个很新的项目,正在大力开发中,但功能其实已经非常完善了。我部署测试了一下,个人觉得比较亮眼的功能有:

  • DM(私聊)端到端加密(E2EE)
  • 完善的权限控制功能
  • 语音通话以及屏幕共享(需额外配置coturn)
  • 完整的文件上传功能,且支持设置最大文件上传大小
  • 消息清理,超过一定时间的消息可自动删除
  • URL网址预览,且可以直接识别Youtube等网站的视频
  • 自定义emoji表情包
  • 超多漂亮的主题供用户选择

看下效果,Channel(群聊):

DM(私聊):

以下是部署步骤,安装Docker:

apt -y update
apt -y install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

新建compose文件:

mkdir -p /opt/haven && cd /opt/haven && nano docker-compose.yml

写入如下内容:

services:
  haven:
    image: ghcr.io/ancsemi/haven:latest
    container_name: haven
    restart: unless-stopped
    env_file: .env
    ports:
      - "61005:61005"
    volumes:
      - ./haven-data:/data

  turn:
    container_name: coturn-server
    image: docker.io/coturn/coturn
    restart: unless-stopped
    network_mode: "host"
    volumes:
      - ./coturn.conf:/etc/coturn/turnserver.conf

创建coturn配置文件:

nano coturn.conf

写入如下内容:

use-auth-secret
static-auth-secret=E6Hk8mbrQobSp49Slgen6cYNNGuYx8NjVXh7GV8gWebNQMXY8xUTMjMjnSiMxu32 # 配置coturn密钥
realm=coturn.example.com # 配置你的域名
fingerprint
min-port=61200
max-port=61500

创建.env文件:

nano .env

写入如下内容:

# Server Config
PORT=61005
HOST=0.0.0.0
# Display name for this server (shown in multi-server sidebar)
SERVER_NAME=Haven
# Secret key for JWT tokens — CHANGE THIS to a long random string!
# (Auto-generated on first boot if left as default)
JWT_SECRET=G1hp3yQW4ZNPz1aMNwXwC8wOUFPlQBS0UVdx0BjOSg5NGFtBzSuiHPdcOju4QuPt
# Your admin username (register with this name first to get admin powers)
ADMIN_USERNAME=imlala
# Optional: HTTPS (required for voice chat over the internet)
# Paths are relative to the data directory:
#   Windows: %APPDATA%\Haven\
#   Linux/macOS: ~/.haven/
# SSL_CERT_PATH=./certs/cert.pem
# SSL_KEY_PATH=./certs/key.pem
# Force HTTP mode (useful behind a reverse proxy like Caddy, nginx, etc.)
# Set to true to skip SSL even if certificates exist.
FORCE_HTTP=true
# Optional: Override the data directory location
# HAVEN_DATA_DIR=
# Optional: TURN server for voice/screen sharing across the internet.
# Without TURN, voice only works on the same network (LAN).
# Recommended: run coturn on the same box or a cheap VPS.
#
# Option A — Shared secret (coturn --use-auth-secret, recommended):
TURN_URL=turn:coturn.example.com:3478
TURN_SECRET=E6Hk8mbrQobSp49Slgen6cYNNGuYx8NjVXh7GV8gWebNQMXY8xUTMjMjnSiMxu32
#
# Option B — Static credentials:
# TURN_URL=turn:your-server.com:3478
# TURN_USERNAME=haven
# TURN_PASSWORD=your-password
# Optional: GIPHY API key (free — get one at https://developers.giphy.com/dashboard/)
# GIPHY_API_KEY=

启动haven和coturn:

docker compose up -d

配置Ferron反向代理:

nano /etc/ferron.kdl

写入如下内容:

haven.example.com {
   proxy "http://127.0.0.1:61005/"
   proxy_request_header_replace "Host" "{header:Host}"
}

重载Ferron:

systemctl reload ferron

如果正常,现在访问haven.example.com可以浏览到登录与注册的页面:

请注意注册的用户名,务必与之前在.env内设置的ADMIN_USERNAME=一致,只有匹配到这个用户名,你注册的账号才拥有管理员权限。

赞(0)
未经允许不得转载:荒岛 » HAVEN:自托管私密聊天,Discord的替代品
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿