というわけで、最近Bonfireの構築にチャレンジしていましたが、うまくいかずすっかり灰になってしまっていましたが、せっかくサーバが余っている(OCI無料枠)ので、前々から使ってみたかったFriendicaを建ててみました。

環境

Oracle Linux 8.3
Docker
メールはSendGrid

Dockerのインストール

Dockerのインストールは基本的にDocument通りにやれば大丈夫ですが、ハマった点もあるのでメモがてら書いておこうと思います。

sudo dnf config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

dnfだとconfig-managerがそのまま使えます。

あと、rootレスですが新しくユーザを作っている場合先にコマンド実行が必要だったりします。

loginctl enable-linger $(whoami)
export XDG_RUNTIME_DIR=/run/user/$(id -u $(whoami))

これを実行しとかないとユーザモードでsystemctl使えないです。
(最初からあるユーザだったら大丈夫)

あとは手筈通り進めますが、さっきのやつとインストール後の案内にあるものは.bashrcなりに追加が必要です。

ついでに現在のドキュメントだとdocker compose pluginが最初から入れるようになっていて、これを使うとコマンドがdocker composeになってしまってややこしいのでエイリアスを追加しておきました。

alias docker-compose='docker compose'

Friendicaのインストール

今回はDocker Composeを使っていきたいのでこのリポジトリを参考にします。

なにやらいろいろ書かれているんですが、普通にapacheのやつを使用します。

version: '2'

services:
  db:
    image: mariadb
    restart: always
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_USER=friendica
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=friendica
      - MYSQL_RANDOM_ROOT_PASSWORD=yes

  app:
    image: friendica
    restart: always
    volumes:
      - ./app/:/var/www/html
    ports:
      - "8080:80"
    environment:
      - MYSQL_HOST=db
      - MYSQL_USER=friendica
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=friendica
      - FRIENDICA_ADMIN_MAIL=あどみんでつかうめあど
      - SMTP=smtp.sendgrid.net
      - SMTP_PORT=587
      - SMTP_DOMAIN=どめいん
      - SMTP_TLS=true
      - SMTP_STARTTLS=true
      - SMTP_FROM=ふろむ
      - SMTP_AUTH_USER=apikey
      - SMTP_AUTH_PASS=はっこうしたやつ
    depends_on:
      - db

  cron:
    image: friendica
    restart: always
    volumes:
      - ./app/:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - db
    environment:
      - MYSQL_HOST=db
      - MYSQL_USER=friendica
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=friendica

まず、cronの設定がFriendicaだと必須なので追加します。
(これは同じリポジトリ内を見ると例が書かれてました)
あとSMTPの追加ですね。私の例だとSendGridですがこれでうまくいきました。
volumesは私の場合だとまとめてバックアップ取ったりするのでこっちのほうが都合がいいので変えてます。
まあどっちでもいいみたい?ですが、どうなんでしょう。

あとはnginxですね。

        location / {
                if ( $scheme != https ) {
                        # Force Redirect to HTTPS
                        return 302 https://$host$uri;
                }
                proxy_pass http://localhost:8080;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Forwarded "for=$proxy_add_x_forwarded_for; proto=$scheme";
        }

ここだけ例でのってました、ほかはまあいい感じでいいんでしょう。

ここまで来たら起動してみます。
(cronが失敗しててログがうざいですが)うまく立ち上がるはずです。

スクショとってないのであれですが、接続するとインストール画面に飛ばされます。

そこでデータベースの接続先、サイトの簡単な設定をして管理者ユーザの作成に移ります。

ちなみに、メール設定ができていなくてもブラウザ上で初期パスワードを教えてくれるので大丈夫です。

ちょっと使ってみた感想

直感的にわかりやすいUIで迷うことなく使えて結構いい感じです。
一応日本語にも対応していますし、普通にSNSとして使えます。

Mastodonの他、PeerTubeやLemmyのアカウントを覗いてみましたが普通にみれますし、フォローもできました。
また、Lemmyに至ってはFriendicaから投稿することもできるので結構面白いです。

ただちょっと不満点といえば、画像を添付するときにクリップボードから添付することが不可能ということですね。
この問題は放置されているようであまり重要視されてないんですかね。。。

ほかはまだ使い始めたばかりですが、結構気に入っていてMastodon飽きたらこっちでもいいかなとか思ってしまうくらいです。

というわけで今回はこのへんで。ではまた。