mirror of
https://example.com
synced 2024-11-23 05:06:41 +09:00
225 lines
9.7 KiB
Markdown
225 lines
9.7 KiB
Markdown
|
# インストール方法
|
|||
|
|
|||
|
## サーバーに直接インストールする
|
|||
|
|
|||
|
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 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. PGroonga を有効化する
|
|||
|
|
|||
|
```bash
|
|||
|
sudo -u postgres psql --dbname="${POSTGRES_DB}" --command='CREATE EXTENSION pgroonga;'
|
|||
|
```
|
|||
|
|
|||
|
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 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. データベースのコンテナのみを起動する
|
|||
|
|
|||
|
```bash
|
|||
|
podman-compose up db --detach
|
|||
|
```
|
|||
|
|
|||
|
7. PGroonga を有効にする(`firefish` と `firefish_db` はそれぞれ自分が決めたユーザー名とデータベース名に変えて実行する)
|
|||
|
|
|||
|
```bash
|
|||
|
podman-compose exec db psql --user=firefish --dbname=firefish_db --command='CREATE EXTENSION pgroonga;'
|
|||
|
```
|
|||
|
|
|||
|
8. 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#私にコマンドの実行ログを送る)。
|