服务器管理手册
我需要运行服务器吗?
不。您不需要运行服务器。您可以使用内置目录中列出的服务器,并且无需自己运行服务器即可使用 Jamulus 。如果您知道其互联网地址,您还可以使用未列出的服务器。或者您可以使用第三方托管服务,例如melomax 或 KOORD。可能在您附近有一个服务器,您和您的朋友可以在足够低的延迟下使用,以满足大多数需求。
使用公共服务器可能会让您接触到陌生人。如果您想要一个不受干扰的会话,您可以使用 技巧和窍门页面 中描述的独奏技术。您不会听到连接到服务器的陌生人的声音,但如果他们愿意,他们可以听到您的声音。
要求
速度和延迟
服务器本身的能力(以及它所在的网络)不是 Jamulus 会话质量的主要决定因素!
通常,问题在 Client 端,应该在那里解决。如果需要,请查看 疑难解答页面。
但是,在设置服务器时也会出现各种问题——尤其是在低带宽家庭连接上运行时。在较慢的家庭连接(例如 10 Mbit/s 下行和 1 Mbit/s 上行)上拥有少于 5 个玩家通常是可以的。您可以在 这里的不同质量设置 阅读有关网络要求的更多信息。
如果您遇到问题,请考虑使用云主机而不是您的家庭互联网连接来获得更好的 ping 时间。
一般说明
- 任何服务器都应具有至少 1.6GHz 的 CPU 频率和 1GB 的 RAM
- 运行服务器可能需要您调整在您的机器或云主机之上或之外运行的任何防火墙。
- 您必须在路由器上设置端口转发,才能在家里运行未注册服务器。在大多数情况下,运行已注册服务器时通常不需要这样做。然而,某些家庭网络可能需要为已注册服务器进行端口转发。
- Jamulus 提供有限的 IPv6 支持,您可以从命令行针对客户端或服务器开启。
安装
大多数人在第三方/云主机上运行 Jamulus,将其作为”无头”服务器(无视频显示或键盘)运行在无音频的 Linux 硬件上**。您也可以在桌面环境中运行服务器。
注意 以下步骤将导致您运行 “未注册” 服务器。有关更多信息,请参阅下面的 服务器模式部分。
要在 Linux 上运行无头服务器,以下步骤假定您熟悉命令行以及使用 systemd 的 Debian/Ubuntu 或类似发行版。
下载安装脚本:
curl https://raw.githubusercontent.com/jamulussoftware/jamulus/main/linux/setup_repo.sh > setup_repo.sh
使脚本可执行:
chmod +x setup_repo.sh
运行脚本并安装无头服务器:
sudo ./setup_repo.sh && sudo apt install jamulus-headless
启用无头服务器进程:
sudo systemctl enable jamulus-headless
将您期望的 命令行选项 添加到 systemd 服务文件中的
ExecStart
行:sudo systemctl edit --full jamulus-headless
重新加载 systemd 文件并重新启动无头服务器:
sudo systemctl daemon-reload && sudo systemctl restart jamulus-headless
要编辑您的服务器配置,只需重复上面的最后两个步骤。
服务器模式
服务器可以根据您的需求以三种模式之一运行(无论是在家中还是在第三方主机上)。
未注册模式
这是首次启动服务器时的默认模式。未注册的服务器不会被目录列出,因此只有知道您服务器地址的音乐家才能连接到它。
有关运行未注册服务器的信息请参阅本指南.**。
已注册模式
在此模式下,您的服务器将出现在由目录提供的服务器列表中。Jamulus 客户端内置了一系列目录。如果您在其中一个目录中注册您的服务器,任何人都可以发现并连接到它。
或者,您可以在自定义目录中列出您的服务器(见下文)。只有当客户端输入自定义目录的互联网地址时,他们才能找到您的服务器。
请注意,目录最多只能注册 150 个服务器。如果您看到一条消息说由于目录已满而无法注册您的服务器,您可以尝试在不同的目录中注册。
目录模式
如果您想运行多个服务器,也可能在防火墙后面或 LAN 上,您可能希望将您的服务器作为目录运行。示例包括在线活动、音乐协会、部分排练或学校的音乐课。
有关信息 请参阅目录指南
配置选项
根据您的操作系统以及您运行服务器的方式,您可以按照以下步骤设置服务器选项并使其在重新加载之间保持不变:
对于 Linux 无头服务器 (使用 systemd 的 Debian/Ubuntu)
通过运行 sudo systemctl edit --full jamulus-headless
,将您期望的命令行选项添加到 systemd 服务文件的 ExecStart
行中(您需要重新加载或重新启动以使更改生效。请参阅 安装文档)。
对于图形界面 (适用于所有平台)
使用图形界面所做的任何设置都将存储在Jamulusserver.ini
文件中。( 切勿 手动编辑此文件!)然而,有些选项在图形用户界面中不可用,需要使用命令行进行设置。更多信息,请参阅桌面服务器。
在注册模式下运行的最低设置
您可以在 Linux 上使用 systemd (通过 systemctl
) 运行无头服务器,这在其他部分有所介绍。您也可以直接从命令行运行服务器。输入以下命令以运行注册服务器:
jamulus-headless --nogui --server \
--directoryaddress hostname:port \
--serverinfo "[name];[city];[country as two-letter ISO country code or Qt5 Locale]"
有关 hostname:port
的值,请参见下表。
注意:--serverinfo
参数中的 [name]
和 [city]
不允许使用分号和换行符。有关国家代码的更多信息,请参阅服务器模式相关选项。
服务器模式相关选项
-e 或 --directoryaddress
对于 已注册服务器 是必需的。对于将 Jamulus 作为 目录 运行也是必需的。
此选项采用以下格式:
--directoryaddress hostname:port
,其中 hostname
是类型目录主机名,port
是其端口号。
要在 Jamulus 客户端内置的目录之一中进行注册,请将 hostname:port
替换为以下选项之一:
类型 | 主机名:端口 |
---|---|
任意类型 1 | anygenre1.jamulus.io:22124 |
任意类型 2 | anygenre2.jamulus.io:22224 |
任意类型 3 | anygenre3.jamulus.io:22624 |
摇滚类型 | rock.jamulus.io:22424 |
爵士类型 | jazz.jamulus.io:22324 |
古典/民谣类型 | classical.jamulus.io:22524 |
合唱/理发店四重唱类型 | choral.jamulus.io:22724 |
-o 或 --serverinfo
当您在目录中注册服务器时,这允许您提供服务器名称和位置详细信息,以便用户随后可以从他们的客户端搜索这些值。
此选项采用以下格式:
[name];[city];[country as two-letter ISO country code]
请看 two-letter ISO country codes (英文维基百科)
注意:name
和 city
值中不允许使用分号和换行符。
-L 或 --licence
在用户连接之前显示协议窗口。要显示的协议文本应作为 --welcomemessage
提供(见下文)。
-w 或 --welcomemessage
连接时在客户端聊天窗口中显示的 “欢迎消息”。可以作为字符串或文件名给出,并且可以包含 HTML。使用路径时,运行 Jamulus 的用户帐户必须可以访问该文件。(在大多数 Linux 安装中,默认使用用户 jamulus
。)如果无法访问,则将显示文字路径(而不是其内容)。
--serverpublicip
如果连接到同一 NAT 后面的目录,则为服务器的公共 IP 地址。有关更多信息,请参阅 目录指南。
--directoryfile
仅限目录: 即使目录重新启动,也会记住已注册的服务器。有关详细信息,请参阅 目录指南。
-f 或 --listfilter
仅目录: 指定哪些服务器可以在目录服务器上注册。有关详细信息,请参阅 目录指南。
常规服务器选项
无论您的服务器运行在何种模式下,都可以使用这些选项(尽管某些选项可能与目录无关)。
-d 或 --discononquit
通常,当服务器停止或重新启动时,任何未按下 断开连接 按钮的客户端在服务器恢复时将自动重新建立连接。此选项在这种情况下强制客户端手动重新建立与服务器的连接。
-F 或 --fastupdate
如果客户端使用 小型网络缓冲区 选项连接,则可减少延迟。需要更快的 CPU 以避免掉线,并为启用的客户端提供更多带宽。
-l 或 --log
启用日志记录,设置路径和文件名
-m 或 --htmlstatus
启用 HTML 状态文件,设置路径和文件名
注意: 此功能已弃用,可能会在未来的版本中消失。
-P 或 --delaypan
启用延迟声像起始。此选项利用声音到达两只耳朵的微小时间差。与普通的 “音量” 声像相比,它产生类似于人类自然听觉的立体声音效。
-s
或 --server
以服务器模式启动 Jamulus
--serverbindip
指定 Jamulus 进程将绑定的 IP 地址。
通常,Jamulus 会监听主机上的所有 IP 地址。当主机有多个网络地址时,此选项允许选择其中一个地址。
-T 或 --multithreading
使用多线程以更好地利用多核 CPU。此设置可能有助于服务器支持更多客户端。另请参阅 --numchannels
-u 或 --numchannels
最大通道数(客户端数)
-z 或 --startminimized
以最小化窗口状态启动 Jamulus 服务器图形界面。
其他选项
-h
者--help
显示帮助文本-i
或--inifile
设置初始化文件的位置(覆盖默认值。在 macOS 上只需提供文件名,因为配置文件只能从/Users/<username>/Library/Containers/app.jamulussoftware.Jamulus/Data/
读取。对于服务器,将app.jamulussoftware.Jamulus
替换为app.jamulussoftware.JamulusServer
。在 Finder 的“显示视图选项”中打开“显示库文件夹”以查看此文件夹。)-n
或--nogui
禁用 GUI(用于 headless 模式)-p
或--port
设置本地 UDP 端口号。默认为 22124--jsonrpcport
启用 JSON-RPC API 服务器来控制应用程序,设置 TCP 端口号(实验性,API 可能会更改;只能从 localhost 访问)。请参阅 JSON-RPC API 文档文件。--jsonrpcsecretfile
使用--jsonrpcport
时需要。设置包含用于访问 JSON-RPC API 的身份验证字符串的文本文件的路径。--jsonrpcbindip
JSON-RPC 服务器应绑定到的 IP 地址。(可选,默认为 127.0.0.1)-Q
或--qos
设置服务质量 DS 字段字节。默认值为 128 (DSCP/CS4)。 QoS 被 Windows 忽略。要启用它,查看此页面-t
或--notranslation
禁用 UI 语言翻译-6
或--enableipv6
启用 IPv6 寻址(始终启用 IPv4)-v
或--version
输出版本信息并退出
通过 API 控制服务器
Jamulus 可以通过一个实验性的、可能会发生变化的 API 进行控制。您可以在主存储库中找到记录的 JSON-RPC API。JSON-RPC 允许您控制一些功能,例如更改欢迎消息或从经过身份验证的外部应用程序以无头模式启动录音。它在服务器运行时起作用。
录音
-R 或 --recording
设置服务器的录音目录。默认情况下,当会话处于活动状态时,服务器将进行录音。
注意: 您需要将录音内容保存到 Jamulus 主目录之外的路径,或者从您的 systemd 单元文件中删除 ProtectHome=true
,但请注意,这样做可能存在安全风险。
录音内容为每条音轨的 Audacity.lof
格式和 REAPER.rpp
格式。在相应的应用程序中打开这些文件以播放它们。
注意: 当您的服务器正在录音时,客户端会显示一条红色横幅消息,表明会话正在录音。
--norecord
在配置录音时,默认设置服务器不进行录音。
控制录音
录音在第一个人连接到服务器时开始,并在最后一个人离开时停止。
如果服务器在录音过程中收到 SIGUSR1 信号,它将在新目录中开始新的录音。SIGUSR2 将切换录音的开/关。如果启用了 JSON-RPC ,您还能够以类似于图形用户界面的方式管理服务器。请参阅(实验性的)关于录音器的 JSON-RPC 文档。
要使用 systemd 发送这些信号,请在 /etc/systemd/system
中创建以下两个 .service
文件,将它们命名为适当的名称(例如 jamulusTogglerec.service
)。
要打开或关闭录音(取决于当前状态):
[Unit]
Description=Toggle recording state of Jamulus Server
Requisite=Jamulus-Server
[Service]
Type=oneshot
ExecStart=/bin/systemctl kill -s SIGUSR2 jamulus-headless
要开始新的录音:
[Unit]
Description=Start a new recording on Jamulus Server
Requisite=Jamulus-Server
[Service]
Type=oneshot
ExecStart=/bin/systemctl kill -s SIGUSR1 jamulus-headless
_注意:ExecStart
行中的 Jamulus 服务名称需要与 systemd 用于控制您的 Jamulus 服务器的 .service
文件名相同。默认情况下,如果您使用存储库中的 .deb
文件,它是 jamulus-headless
,如本例所示。
运行 sudo systemctl daemon-reload
以注册它们以供首次使用。
现在您可以使用 systemctl
命令运行这些命令,例如:
sudo systemctl start jamulusTogglerec
如果您运行 systemctl status jamulus-headless
(或者您手动指定的相应服务名称),您可以看到这些命令的结果。您还可以查看您的(系统)日志。
向服务器添加元数据
您可以向服务器的欢迎消息中添加元数据,以添加额外的隐藏信息,如联系信息或对机器人的策略请求(这类似于 robots.txt) (英文维基百科)。有关更多信息,请参阅 关于元数据的社区知识库条目。
桌面上的服务器
Jamulus 可以在计算机的图形环境中以服务器模式运行。这为您提供了一个图形用户界面来控制大多数设置。要做到这一点,首先为您的平台安装 Jamulus ,然后执行以下操作之一:
Windows 用户 - 使用 Windows 开始菜单中的 “Jamulus 服务器” 图标。如果您希望服务器在 Windows 启动时自动启动,请勾选此选项的复选框。
macOS 用户 - 双击应用程序中的 “Jamulus 服务器” 图标。
Linux 用户 - 启动“Jamulus 服务器”快捷方式。或者你可以打开一个终端窗口(Debian 和相关发行版上的
CTRL+ALT+t
),输入jamulus -s
然后回车。
虽然 Jamulus 中的大多数常见功能可以使用图形界面(GUI)进行设置,但其他一些功能只能在服务器启动时在终端窗口中使用给定的选项进行设置。具体的操作方式将取决于您的操作系统。
例如在 Windows 上,要使用特定的设置文件,请右键单击 Jamulus 快捷方式并选择属性>目标。将必要的参数添加到 Jamulus.exe:
"C:\Program Files\Jamulus\Jamulus.exe" --serverbindip 192.168.0.100
对于 macOS,启动终端窗口并使用所需的选项运行 Jamulus,如下所示:
/Applications/Jamulus.app/Contents/MacOS/Jamulus --serverbindip 192.168.0.100
注意 命令行选项将在启动时设置服务器的默认值。在服务器运行时,您可以使用其相应的图形用户界面控件覆盖它们。
服务器状态图标
当服务器在图形用户界面模式下运行时,操作系统将在系统托盘或状态栏中显示一个图标,指示服务器是否有连接:
服务器为空
服务器被占用
备份服务器
安装并运行后,您可能需要保留设置的副本。备份总是一个好主意,并且设置文件在 Jamulus 版本之间不向后兼容。所以如果你想回到以前的版本,你需要恢复你的设置。
要在 Windows 上查找您的设置文件,请在搜索栏中键入“%APPDATA%”并查找名为“Jamulus”的文件夹。此文件夹中将有一个或多个 .ini
文件。现在备份 Jamulus 的设置。
对于所有其他平台,请从命令行运行以下命令以查找其所在的位置并将文件复制到其他位置:
find ~ -name Jamulus.ini -ls
如果您使用 --inifile
参数将 inifile 保存到其他位置,请不要忘记同时备份这些文件。 注意事项
- 在 Jamulus 运行时不要备份或恢复设置文件。
- 不建议手动编辑设置文件(它们不是为此而设计的)。
您可以通过删除设置文件(关闭 Jamulus 后)将所有设置恢复为默认值。
- 无头服务器不使用
.ini
文件。所有配置都作为命令行选项给出。如果您以图形用户界面模式运行服务器,在启动时读取任何命令行选项后,它将把配置存储在Jamulusserver.ini
文件中。
故障排除
如果您遇到其他问题,请参阅本指南。