firefish/docs/install.md

212 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# インストール方法
## サーバーに直接インストールする
1. サーバーに git, Nodejs, npm, PostgreSQL, PGroonga, Redis, Rust をインストールします。Arch Linux にインストールする場合には[私のブログ](https://blog.naskya.net/post/6kic0tebueju/)が参考になるかもしれません。
Ubuntu や Debian にインストールする場合には、例えば以下のようになります。
```bash
# 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. このリポジトリを複製し、リポジトリのディレクトリに移る
```bash
git clone --branch=main https://code.naskya.net/naskya/firefish
cd firefish
```
3. 設定ファイルのテンプレートを複製する
```bash
cp .config/example.yml .config/default.yml
```
4. PostgreSQL のユーザー名・データベース名・パスワードを決める(決めるだけでこの工程にコマンドの操作は無い)
5. `./config/default.yml` を編集する
```bash
vim .config/default.yml
```
`url` という項目を `example.com` から使いたいドメイン名に変更する
```yaml
# Final accessible URL seen by a user.
url: https://example.com/
```
データベースの設定を変える(データベース名・ユーザー名・パスワードはそれぞれさっき自分で決めたもの)
```yaml
db:
host: localhost # 変えない
port: 5432 # 変えない
db: firefish_db # ここをデータベース名に変える
user: firefish # ここをデータベースのユーザー名に変える
pass: very_strong_password # ここをデータベースのパスワードに変える
```
6. PostgreSQL のユーザーとデータベースを作る
```bash
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. データベースに変更を加える
```bash
sudo -u postgres psql --dbname="${POSTGRES_DB}" --file=neko/install.sql
```
8. Firefish をビルドする
```bash
./update.sh --install --native
```
9. Firefish を起動するための systemd サービスを作る
`/etc/systemd/system/firefish.service` というテキストファイルを作り、Firefish をインストールしたディレクトリで `pnpm run start` を実行させるようにします。[私のブログ](https://blog.naskya.net/post/6kic0tebueju/#firefish-%E3%82%92%E8%B5%B7%E5%8B%95)や [systemd サービスに関する記事](https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB)などを参考にしてください。
以下の設定を行えば大丈夫なはずです。
- 実行するユーザーをグループを指定する
- `which pnpm``pnpm` コマンドの場所(例えば `/usr/bin/pnpm`)を探し、`ExecStart` で `pnpm run start` を実行させる
- 例えば `ExecStart=/usr/bin/pnpm run start`
- リポジトリのディレクトリを `WorkingDirectory` に設定する
- `Environment="NODE_ENV=production"`
```bash
sudo vim /etc/systemd/system/firefish.service
```
10. Firefish のサービスを有効化・起動する
```bash
sudo systemctl enable --now firefish
```
これで `http://localhost:3000` で Web クライアントが動くので、リバースプロキシやファイヤーウォールを設定して外部からアクセス可能にすればよいです。その設定には[私のブログ](https://blog.naskya.net/post/6kic0tebueju/)や[本家 Firefish の README](https://git.joinfirefish.org/firefish/firefish#-getting-started)が参考になるかもしれません。
正常にインストールできなかった場合には自力で解決しようとせず、[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。
## コンテナイメージを用いる
実行環境として [Podman](https://podman.io/) と [Docker](https://www.docker.com/) をサポートしています。Docker を使う場合には以下の `podman`, `podman-compose`, `--podman` をそれぞれ `docker`, `docker-compose`, `--docker` に読み替えてください。
x86_64 アーキテクチャの Linux のマシン上では、[`registry.code.naskya.net/naskya/firefish`](https://view.registry.code.naskya.net/naskya/firefish) に上げられている [OCI コンテナイメージ](https://opencontainers.org/)を利用できます。それ以外の環境で使うには、自分でコンテナイメージをビルドする必要があります。
1. このリポジトリを複製し、リポジトリのディレクトリに移る
```bash
git clone --branch=main https://code.naskya.net/naskya/firefish
cd firefish
```
2. 設定ファイルのテンプレートを複製する
```bash
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` に書く
```bash
vim .config/docker.env
```
4. `.config/default.yml` を編集する
```bash
vim .config/default.yml
```
`url` という項目を `example.com` から使いたいドメイン名に変更する
```yaml
# Final accessible URL seen by a user.
url: https://example.com/
```
データベースの設定を変える(データベース名・ユーザー名・パスワードはそれぞれさっき `.config/docker.env` に書いた `POSTGRES_DB`, `POSTGRES_USER`, `POSTGRES_PASSWORD`
```yaml
db:
host: localhost # ここを firefish_db に変える
port: 5432 # 変えない
db: firefish_db # ここをデータベース名に変える
user: firefish # ここをデータベースのユーザー名に変える
pass: very_strong_password # ここをデータベースのパスワードに変える
```
Redis の設定を変える
```yaml
redis:
host: localhost # ここを firefish_redis に変える
```
5. コンテナイメージをダウンロードまたはビルドする
```bash
./update.sh --install --podman
```
6. Firefish を起動する
```bash
podman-compose up --detach
```
これで `http://localhost:3000` で Web クライアントが動くので、リバースプロキシやファイヤーウォールを設定して外部からアクセス可能にすればよいです。その設定には[私のブログ](https://blog.naskya.net/post/6kic0tebueju/)や[本家 Firefish の README](https://git.joinfirefish.org/firefish/firefish#-getting-started)が参考になるかもしれません。
正常にインストールできなかった場合には自力で解決しようとせず、[私にコマンドの実行ログを送ってください](https://code.naskya.net/naskya/firefish/source-by/main/docs/trouble_shooting.md#私にコマンドの実行ログを送る)。