firefish/docs/install.md

9.4 KiB
Raw Blame History

インストール方法

サーバーに直接インストールする

  1. サーバーに git, Nodejs, npm, PostgreSQL, PGroonga, Redis, Rust をインストールします。Arch Linux にインストールする場合には私のブログが参考になるかもしれません。

    Ubuntu や Debian にインストールする場合には、例えば以下のようになります。

    # Rust のインストール
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
    # Nodejs v21 のインストールの準備
    NODE_MAJOR=21
    sudo apt install --no-install-recommends curl ca-certificates gnupg
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
      | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
    echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] "https://deb.nodesource.com/node_${NODE_MAJOR}.x" nodistro main" \
      | sudo tee /etc/apt/sources.list.d/nodesource.list
    
    # PostgreSQL のインストールの準備
    echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
    curl -s https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    
    # PGroonga のインストールの準備
    sudo apt install --no-install-recommends software-properties-common wget
    sudo add-apt-repository -y universe
    sudo add-apt-repository -y ppa:groonga/ppa
    wget https://packages.groonga.org/ubuntu/groonga-apt-source-latest-$(lsb_release --codename --short).deb
    sudo apt install --no-install-recommends ./groonga-apt-source-latest-$(lsb_release --codename --short).deb
    echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release --codename --short)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    
    # Redis のインストールの準備
    curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
    
    # 各ソフトウェアのインストール
    sudo apt update
    sudo apt install --no-install-recommends git nodejs postgresql-16 postgresql-16-pgdg-pgroonga redis-server
    
    # pnpm を有効化
    sudo corepack enable
    
    # PostgreSQL, Redis を起動
    systemctl enable --now postgresql redis-server
    
  2. このリポジトリを複製し、リポジトリのディレクトリに移る

    git clone --branch=main https://code.naskya.net/naskya/firefish
    cd firefish
    
  3. 設定ファイルのテンプレートを複製する

    cp .config/example.yml .config/default.yml
    
  4. PostgreSQL のユーザー名・データベース名・パスワードを決める(決めるだけでこの工程にコマンドの操作は無い)

  5. ./config/default.yml を編集する

    vim .config/default.yml
    

    url という項目を example.com から使いたいドメイン名に変更する

    # Final accessible URL seen by a user.
    url: https://example.com/
    

    データベースの設定を変える(データベース名・ユーザー名・パスワードはそれぞれさっき自分で決めたもの)

    db:
      host: localhost  # 変えない
      port: 5432       # 変えない
    
      db: firefish_db  # ここをデータベース名に変える
    
      user: firefish   # ここをデータベースのユーザー名に変える
      pass: very_strong_password  # ここをデータベースのパスワードに変える
    
  6. PostgreSQL のユーザーとデータベースを作る

    POSTGRES_DB='データベース名'
    POSTGRES_USER='ユーザー名'
    POSTGRES_PASSWORD='パスワード'
    
    sudo -u postgres psql --command="CREATE ROLE ${POSTGRES_USER} LOGIN PASSWORD '${POSTGRES_PASSWORD}';"
    sudo -u postgres psql --command="CREATE DATABASE ${POSTGRES_DB} OWNER ${POSTGRES_USER} encoding = 'UTF8';"
    
  7. データベースに変更を加える

    sudo -u postgres psql --dbname="${POSTGRES_DB}" --file=neko/install.sql
    
  8. Firefish をビルドする

    ./update.sh --install --native
    
  9. Firefish を起動するための systemd サービスを作る

    /etc/systemd/system/firefish.service というテキストファイルを作り、Firefish をインストールしたディレクトリで pnpm run start を実行させるようにします。私のブログsystemd サービスに関する記事などを参考にしてください。

    以下の設定を行えば大丈夫なはずです。

    • 実行するユーザーをグループを指定する
    • which pnpmpnpm コマンドの場所(例えば /usr/bin/pnpm)を探し、ExecStartpnpm run start を実行させる
      • 例えば ExecStart=/usr/bin/pnpm run start
    • リポジトリのディレクトリを WorkingDirectory に設定する
    • Environment="NODE_ENV=production"
    sudo vim /etc/systemd/system/firefish.service
    
  10. Firefish のサービスを有効化・起動する

    sudo systemctl enable --now firefish
    

これで http://localhost:3000 で Web クライアントが動くので、リバースプロキシやファイヤーウォールを設定して外部からアクセス可能にすればよいです。その設定には私のブログ本家 Firefish の READMEが参考になるかもしれません。

正常にインストールできなかった場合には自力で解決しようとせず、私にコマンドの実行ログを送ってください

コンテナイメージを用いる

実行環境として PodmanDocker をサポートしています。Docker を使う場合には以下の podman, podman-compose, --podman をそれぞれ docker, docker-compose, --docker に読み替えてください。

x86_64 アーキテクチャの Linux のマシン上では、registry.code.naskya.net/naskya/firefish に上げられている OCI コンテナイメージを利用できます。それ以外の環境で使うには、自分でコンテナイメージをビルドする必要があります。

  1. このリポジトリを複製し、リポジトリのディレクトリに移る

    git clone --branch=main https://code.naskya.net/naskya/firefish
    cd firefish
    
  2. 設定ファイルのテンプレートを複製する

    cp docker-compose.example.yml docker-compose.yml
    cp .config/docker.example.env .config/docker.env
    cp .config/example.yml .config/default.yml
    
  3. PostgreSQL のユーザー名・データベース名・パスワードを決めて ./config/docker.env に書く

    vim .config/docker.env
    
  4. .config/default.yml を編集する

    vim .config/default.yml
    

    url という項目を example.com から使いたいドメイン名に変更する

    # Final accessible URL seen by a user.
    url: https://example.com/
    

    データベースの設定を変える(データベース名・ユーザー名・パスワードはそれぞれさっき .config/docker.env に書いた POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD

    db:
      host: localhost  # ここを firefish_db に変える
      port: 5432       # 変えない
    
      db: firefish_db  # ここをデータベース名に変える
    
      user: firefish   # ここをデータベースのユーザー名に変える
      pass: very_strong_password  # ここをデータベースのパスワードに変える
    

    Redis の設定を変える

    redis:
      host: localhost  # ここを firefish_redis に変える
    
  5. コンテナイメージをダウンロードまたはビルドする

    ./update.sh --install --podman
    
  6. データベースのコンテナのみを起動する

    podman-compose up db --detach
    
  7. Firefish を起動する

    podman-compose up --detach
    

これで http://localhost:3000 で Web クライアントが動くので、リバースプロキシやファイヤーウォールを設定して外部からアクセス可能にすればよいです。その設定には私のブログ本家 Firefish の READMEが参考になるかもしれません。

正常にインストールできなかった場合には自力で解決しようとせず、私にコマンドの実行ログを送ってください