OpenCloud 8.0.0のシングルバイナリがなかなか動かせなかった

先日OpenCloud 8.0.0がリリースされました.
ハイライトにリアルタイムコラボレーション編集機能がエディター機能に実装されたとのことでMarkdownや.ocnote形式のファイルが複数人でリアルタイム編集できるようになったようです.

Highlights
📝 Real-time collaborative editing in the Editor

Etherpadと同じようなものかもしれないと久々にOpenCloudを動かしてみたら数カ所嵌ったのでメモしておきます.

OpenCloudはGo言語で書き直されているownCloud Infinite Scale(oCIS)のフォークです.PHPベースのownCloudやNextcloudに比べて軽量と言われています.

ハードウェア要件を見ると10人くらいまでの最低要件でこんな感じでRaspberry Pi 3でも大丈夫みたいです.GitHub releasesのバイナリにはamd64やarm64なんかの他にもレガシーなi386やarm(32bit)もあります.

Minimum (Minimal bare-metal Deployment – Up to 10 Users)

  • eg. Raspberry Pi 3
  • 1 GHz (Single-core)
  • 512 MB Ram
  • Storage: depends on data usage

OpenCloudシングルバイナリの導入

導入はDockerがありますが,GitHub Releasesのリングルバイナリを利用するのがおてがるそうです.以前もそれで試していたので今回もこれを使うことに.

$ wget -c https://github.com/opencloud-eu/opencloud/releases/download/v8.0.1/opencloud-8.0.1-linux-amd64 \
          https://github.com/opencloud-eu/opencloud/releases/download/v8.0.1/opencloud-8.0.1-linux-amd64.sha256
$ sha256sum --check opencloud-8.0.1-linux-amd64.sha256
opencloud-8.0.1-linux-amd64: OK
$ chmod u+x opencloud-8.0.1-linux-amd64

以前試していた設定があるので設定のdiffを確認します.

$ ./opencloud-8.0.1-linux-amd64 init --diff
Do you want to configure OpenCloud with certificate checking disabled?
 This is not recommended for public instances! [yes | no = default]
running in diff mode
diff -u /home/matoken/.opencloud/config/opencloud.yaml /home/matoken/.opencloud/config/opencloud.yaml.tmp

  :

差分が多いしテストでしか使ってなかったので --force-overwrite で設定を上書きすることにします.

$ ./opencloud-8.0.1-linux-amd64 init --force-overwrite

OpenCloud serverが起動しない?

これで起動しようとするとコケます.

$ ./opencloud-8.0.1-linux-amd64 server
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x1b0 pc=0x7f404a03b157]

Linux armhf環境だと起動します.
リリースから数日経ってもIssueにも上がっていないし自分の環境だけそうです.

なんだろうと思いながら何度か実行するとタイミングによりメッセージが変わります.

{"level":"error","service":"opencloud","event":"opencloud: Failed service 'sharing' (1.000000 failures of 5.000000), restarting: true, error: listen tcp 127.0.0.1:9150: bind: address already in use","service":"sharing","supervisor":"opencloud","restarting":true,"failures":1,"threshold":5,"error":"listen tcp 127.0.0.1:9150: bind: address already in use","time":"2026-09-16T06:17:45+09:00","message":"service terminated"}
{"level":"error","service":"opencloud","event":"opencloud: Failed service 'sharing' (1.629878 failures of 5.000000), restarting: true, error: listen tcp 127.0.0.1:9150: bind: address already in use","service":"sharing","supervisor":"opencloud","restarting":true,"failures":1.6298778555015767,"threshold":5,"error":"listen tcp 127.0.0.1:9150: bind: address already in use","time":"2026-09-16T06:18:05+09:00","message":"service terminated"}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x1b0 pc=0x7f843683b157]

tcp 9150が当たっていそう.torがすでに使っているようです.

$ sudo ss -ltnp 'sport = :9150'
State                 Recv-Q                Send-Q                               Local Address:Port                               Peer Address:Port               Process
LISTEN                0                     4096                                     127.0.0.1:9150                                    0.0.0.0:*                   users:(("tor",pid=3949956,fd=11))
$ sudo service tor stop

やっぱり駄目です.

$ pstree -Aps 3949956
systemd(1)---firefox.real(3948785)---tor(3949956)-+-lyrebird(3950548)-+-{lyrebird}(3950549)
                                                  |                   |-{lyrebird}(3950550)
                                                  |                   |-{lyrebird}(3950551)
                                                  |                   |-{lyrebird}(3950552)
                                                  |                   |-{lyrebird}(3950553)
                                                  |                   |-{lyrebird}(3950554)
                                                  |                   |-{lyrebird}(3950555)
                                                  |                   |-{lyrebird}(3950650)
                                                  |                   |-{lyrebird}(3950651)
                                                  |                   |-{lyrebird}(3950652)
                                                  |                   |-{lyrebird}(3950653)
                                                  |                   |-{lyrebird}(3950654)
                                                  |                   |-{lyrebird}(3950655)
                                                  |                   |-{lyrebird}(3950656)
                                                  |                   |-{lyrebird}(3950657)
                                                  |                   |-{lyrebird}(3950658)
                                                  |                   |-{lyrebird}(3950659)
                                                  |                   |-{lyrebird}(3950660)
                                                  |                   |-{lyrebird}(3950661)
                                                  |                   `-{lyrebird}(625816)
                                                  |-{tor}(3950480)
                                                  |-{tor}(3950481)
                                                  |-{tor}(3950482)
                                                  |-{tor}(3950483)
                                                  |-{tor}(3950484)
                                                  |-{tor}(3950485)
                                                  |-{tor}(3950486)
                                                  `-{tor}(3950487)

tor daemonではなくTor Browserのtorが当たっていたようでTor Browserを終了するとOpenCloudが起動するようになりました.

OpenCloud側のポートの変更方法はよくわからないしTor Browserの方の設定変更も about:config をいじらないといけないようです.とりあえずTor Browserを停止してOpenCloudを試すことにします.

OpenCloud ログイン画面で500エラー

OpenCloud Serverを起動します.

$ ./opencloud-8.0.1-linux-amd64 server

これでOpenCloudを起動した状態でウェブブラウザで https://localhost:9200/ に接続するとログイン画面になりますが,ログイン画面で500エラーになります.

opencloud login ng

関連しそうなIssueがありました.
すでにOpenCloudを動かしたことがある状態で設定を上書き(init –force-overwrite)するとこういったことが起こるようです.
OpenCloudディレクトリごと一旦削除してからinitを動かすといいようです.OpenCloudのディレクトリは既定値では ~/.opencloud です.このディレクトリごと消してからinitを叩くと動くようになりました.

$ rm -rf ~/.opencloud
$ ./opencloud-8.0.1-linux-amd64 init
$ ./opencloud-8.0.1-linux-amd64 server
    :

ログイン画面( https://localhost:9200/ )でUsername「admin」, Password「(init時に表示)」でログインします.これでOpenCloudが利用できるようになりました.

opencloud login
pencloud file01
opencloud upmenu

テキストエディタ共同編集機能

OpenCloud 8.0.0からの共同編集機能を試そうと,Markdownや.ocnoteを共有して複数のユーザ,複数のウェブブラウザで試してみたが,それぞれ編集は可能なのですが,lockもなく最後に編集したものが反映される動作です.
Dockerだと動くようなので何かが足りないようです.

少し調べると共同編集機能にはYjsというJavaScript製のCRDT(Conflict-free Replicated Data Type)ライブラリが必要らしいです.

シングルバイナリのOpenCloudにはYjsは含まれておらず別途Yjsを用意して起動する必要があるようです.
DockerだとYjsは同梱されていてすぐ動かせるようです.

ということで今回は一旦ここまで.
以前はさくっとと動かせましたが今回はポートが競合したり,古い設定が悪さをしたりライブラリが足りなかったりとDockerで動かせば引っかからずに動いたんだろうなという感じでした.

Reposts

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)