prosodyinstallbattle on RockyLinux8
最終的にはRockyLinux9になった
powertoolの有効化をする
$ cat /etc/yum.repos.d/Rocky-PowerTools.repo | sed 's/enabled=0/enabled=1/' | sudo tee /etc/yum.repos.d/Rocky-PowerTools.repo >/dev/null
こんなかんじ?
えーっと、dnf installする
$ dnf intall -y prosody
バックアップを作成する
muc.jabber.eniehack.netとjabber.eniehack.netをtarにまとめる
scpで転送する
えーと、vimdiffでファイルをマージする
cp /etc/prosody/prosody.cfg.lua{,.orig}
mv ~/prosody.cfg.lua /etc/prosody/prosody.cfg.lua
vim -d /etc/prosody/prosody.cfg.lua{,.orig}
えーとなんだっけな、VirtualHostごとにファイルを分ける
/etc/prosody/conf.d/{{FQDN}}.cfg.luaみたいな感じにする
別にFQDMじゃなくてもいいんだけどねえ
httpdの設定をする
certbotで証明書を入手する
prosodyctl --root cert import jabber.eniehack.net /etc/letsencrypt/liveする
dnf install lua-event
module installerの導入
dnf install luarocks
EPELのprosodyがv0.11.xだっただるい
ArchLinuxではv0.12だったのでダウングレードするのはだるい
module installerが提供されているのが0.12だったのもある
sourceを展開して、インストールすることにしよう
lua 5.4を提供しているのがRocky Linux 9だったのでRocky Linux9に更新 $ rm -rf /usr/share/redhat-release
$ dnf distro-sync
transactionでエラーが出るけど、そのまま続行でok
更新が終わったので、prosodyのinstallに着手
libicu-developenssl-devellua-develを導入、こんなかんじ↓
$ sudo dnf --enablerepo=crb install lua-devel libicu-devel openssl-devel
cd prosody-0.12.1
./configure
ok、キター!
make
command not found←えっ?
$ dnf install make
再度make
gcc: no such file or directory←えっ?
$ dnf install gcc
再々度make
通ったぞ!
なんかopensslで証明書生成してて謎だなあ
configure --helpしてみるか
configure --help
--no-example-certsを入れるとよさそう
困ったときのArch
prosody http serverのリバースプロキシをなんとかしてやる必要がある
http_tにはjabber_interserver_port_t:tcp_socketに対し、name_connectを持たないのでモジュールを読ませる必要がある
http_file_shareと戦う
XMPPにはHTTP File Uploadという規格がある これを使うのにはhttp_file_shareというmoduleを使う
うまく動かなくて数ヶ月放置していた
HTTPサーバのComponent/VirtualHost上で、http_pathsを定義する code:lua
http_paths = {
invites_page = "/invite";
files = "/media"; -- mod_http_filesを配置する場所
file_share = "/upload"; -- mod_http_file_shareを配置する場所
}
table内の命名規則はこんな感じ
ちなみにcomponentの名前形式(FQDN)はDNS上に存在しなくとも(必ずしもhostするFQDNとcomponent名が一致する必要がない)問題がないらしい
その場合はhttp_hostにhostするFQDNを記述する
https://jabber.eniehack.net/みたいに
$ sudo /usr/local/bin/prosodyctl shell module info http_file_share
で、こんな感じになればok
provides:
- HTTP services (1 item)
dependsにmod_httpが入っていればよい
logを/var/log/prosodyに流したい
rsyslogdを介して流す