我无法让 ejabberd 在安装在 Proxmox Linux 容器内的 Ubuntu 18.04 服务器上启动。
在安装过程中我收到此错误:
Setting up ejabberd (18.01-2) ...
Job for ejabberd.service failed because the control process exited with error code.
See "systemctl status ejabberd.service" and "journalctl -xe" for details.
invoke-rc.d: initscript ejabberd, action "start" failed.
* ejabberd.service - A distributed, fault-tolerant Jabber/XMPP server
Loaded: loaded (/lib/systemd/system/ejabberd.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Mon 2019-04-22 18:41:58 UTC; 8ms ago
Docs: https://www.process-one.net/en/ejabberd/docs/
Process: 1442 ExecStart=/bin/sh -c /usr/sbin/ejabberdctl start && /usr/sbin/ejabberdctl started (code=exited, status=1/FAILURE)
Main PID: 190 (code=exited, status=1/FAILURE)
dpkg: error processing package ejabberd (--configure):
installed ejabberd package post-installation script subprocess returned error exit status 1
Processing triggers for systemd (237-3ubuntu10.20) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Errors were encountered while processing:
ejabberd
E: Sub-process /usr/bin/dpkg returned an error code (1)
我阅读了一份错误报告,该报告表明该问题与使用 systemd 配置 Ejabberd 的方式有关:
https://bugs.launchpad.net/ubuntu/+source/ejabberd/+bug/1815699
该人士表示,该问题与以下 3 个设置有关:
- PrivateTmp=true
- 保护首页=true
- 保护系统=完整
但他没有说在哪里可以找到它们或如何更改它们。
我在这里找到它们:nano /lib/systemd/system/ejabberd.service
我尝试将它们设置为 false,将它们注释掉,等等。在尝试每次更改后,我都会重新启动容器并尝试测试聊天是否正常工作。事实并非如此。
我对 systemd 或 ejabberd 不太了解。我过去已经成功安装过几次 ejabberd,但我不知道如何解决这个问题。
答案1
从https://salsa.debian.org/ejabberd-packaging-team/ejabberd/blob/master/debian/README.Debian#L161-168,或者在/usr/share/doc/ejabberd/README.Debian.gz
您的系统上:
使用 systemd >= 218 您可以简单地创建一个覆盖
systemctl edit ejabberd.service
并放置[Service] PrivateDevices= PrivateDevices=false NoNewPrivileges= NoNewPrivileges=false
在那里。