テクノロジーガイド

CentOS 7 に Restyaboard をインストールする手順

3 min read インフラ 更新されました 16 Oct 2025
CentOS7でRestyaboardを自己ホスト導入(詳細ガイド)
CentOS7でRestyaboardを自己ホスト導入(詳細ガイド)

TL;DR

このガイドでは CentOS 7 上に Restyaboard(自己ホスト型のオープンソース Kanban)を、Nginx + PHP-FPM(Unix ソケット)+ PostgreSQL 環境でセットアップする手順を詳述します。主要な手順は: パッケージ更新、Nginx インストール、PHP 7.0 と PHP-FPM 設定、PostgreSQL の導入とデータベース作成、Restyaboard のダウンロードと設定、Nginx サーバーブロック調整、パーミッション・cron・SELinux の対応です。最後にトラブルシューティング、バックアップ、運用チェックリストを掲載しています。

目的と適用範囲

このドキュメントは、CentOS 7(最小インストール)サーバー上で Restyaboard を自己ホストで稼働させる手順です。対象はシステム管理者や DevOps エンジニア向けで、root 権限を前提とします。必要に応じて SSL 設定やファイアウォール、LDAP 認証、定期バックアップなどの追加項目も解説します。

重要: Restyaboard の配布や依存は変わる可能性があります。常に公式リリースページやパッケージの署名を確認してください。


前提条件

  • 最小の CentOS 7 インストール
  • root 権限(sudo でも可)
  • 基本的な Linux コマンドの理解

重要ノート: 本チュートリアルは元ソースの手順に準拠しています。OS やパッケージのバージョンによっては、代替リポジトリやパッケージ名が変わる場合があります。

準備: パッケージ更新

まずシステムパッケージを最新にします。

yum -y update

更新後に再起動が必要なカーネルやサービスがある場合は適宜再起動してください。

ステップ 1 - Nginx のインストール

Nginx はデフォルトの CentOS YUM リポジトリに無い場合があります。EPEL リポジトリを入れてからインストールします。

yum -y install epel-release
yum -y install nginx

インストール後、Nginx を起動し自動起動を有効化します。

systemctl start nginx
systemctl enable nginx

動作確認:

systemctl status nginx
ss -ltnp | grep nginx

重要: ファイアウォール(firewalld)を使っている場合は 80/tcp(HTTP)や 443/tcp(HTTPS)を開放してください。

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

ステップ 2 - PHP-FPM と mbstring の導入と設定

Restyaboard は記事作成時点で PHP 7.0 を想定しています(配布版に依存)。PHP のバージョンやサポート状況は変化します。可能であれば、Restyaboard がサポートする最新の PHP バージョンを使用してください。

Webtatic リポジトリから PHP 7.0 を導入します。

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

必要な PHP パッケージをインストールします。

yum -y install php70w php70w-fpm php70w-devel php70w-cli php70w-curl php70w-pgsql php70w-mbstring php70w-ldap php70w-pear php70w-imap php70w-xml php70w-pecl-imagick ImageMagick

PHP-FPM の既定設定は Apache 用ユーザー(apache)になっている場合があります。Nginx で動かすために /etc/php-fpm.d/www.conf を編集してユーザー・グループを nginx に変更します。ここでは nano を使います。

yum -y install nano
nano /etc/php-fpm.d/www.conf

www.conf で次の行を確認して変更します(ファイル内のコメントはそのまま残ります)。

; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

リッスン方法はポートではなく Unix ソケットを使うのが推奨です。次の行を置き換えます。

listen = 127.0.0.1:9000

listen = /run/php-fpm/php7.0-fpm.sock

さらにソケットの所有者とパーミッションを設定します。

;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

php.ini のタイムゾーンを設定します(システムやアプリのログ整合のため)。

nano /etc/php.ini

例:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
date.timezone = Asia/Tokyo

cgi.fix_pathinfo はセキュリティ目的で 0 にします。

cgi.fix_pathinfo=0

GeoIP を使う場合はライブラリを導入し php.ini に拡張を追加します。

yum -y install GeoIP-devel

/etc/php.ini の末尾に次を追加:

extension=geoip.so

PHP-FPM を起動して自動起動を有効化します。

systemctl start php-fpm
systemctl enable php-fpm

Nginx を再起動して PHP-FPM ソケットとの接続を反映します。

systemctl restart nginx

注意: unix ソケットパスは配布やディストリの設定により /run/php-fpm/php7.0-fpm.sock のように異なる場合があります。Nginx 設定と一致させてください。

ステップ 3 - PostgreSQL のインストールと設定

Restyaboard は PostgreSQL を使用します。この記事では PostgreSQL 9.6 のリポジトリとインストール手順を示します。

rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
yum -y install postgresql96-server postgresql96-contrib

初期化:

/usr/pgsql-9.6/bin/postgresql96-setup initdb

接続方式の設定: /var/lib/pgsql/9.6/data/pg_hba.conf を編集して md5 認証を有効にします。

nano /var/lib/pgsql/9.6/data/pg_hba.conf

元の設定例(編集前):

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

変更後(ローカル接続を md5 にする例):

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

PostgreSQL を起動して自動起動を有効化します。

systemctl start postgresql-9.6
systemctl enable postgresql-9.6

postgres ユーザーのパスワードを設定します。

passwd postgres

postgres ユーザーに切り替え、Restyaboard 用データベースとユーザーを作成します。

su - postgres
createuser rb_user
psql

psql 内でパスワード設定とデータベース作成:

ALTER USER rb_user WITH ENCRYPTED password 'StrongPassword';
CREATE DATABASE rb_data OWNER rb_user ENCODING 'UTF8' TEMPLATE template0;
\q

注意: ‘StrongPassword’ は実運用ではより強固な生成済みパスワードに変更してください。パスワードは安全に管理してください。

ステップ 4 - Restyaboard のダウンロードと初期導入

ダウンロード先は元記事の配布バージョン v0.4.2 の例です。最新のリリースは公式 GitHub を確認してください。

cd /usr/share/nginx/html
wget https://github.com/RestyaPlatform/board/releases/download/v0.4.2/board-v0.4.2.zip

unzip が無ければ導入して展開します。

yum -y install unzip
unzip board-v0.4.2.zip -d board

データベースにスキーマをインポートします。

psql -d rb_data -f "/usr/share/nginx/html/board/sql/restyaboard_with_empty_data.sql" -U rb_user

設定ファイルに DB 情報を反映します。

nano /usr/share/nginx/html/board/server/php/config.inc.php

元の設定例:

define('R_DB_HOST', 'localhost');
define('R_DB_USER', 'restya');
define('R_DB_PASSWORD', 'hjVl2!rGd');
define('R_DB_NAME', 'restyaboard');
define('R_DB_PORT', 5432);

編集後:

define('R_DB_HOST', 'localhost');
define('R_DB_USER', 'rb_user');
define('R_DB_PASSWORD', 'StrongPassword');
define('R_DB_NAME', 'rb_data');
define('R_DB_PORT', 5432);

セキュリティ注意: config.inc.php 内に平文でパスワードがあるため、ファイルのパーミッションを制限し、Web サーバー以外から読めないようにしてください。

chown nginx:nginx /usr/share/nginx/html/board/server/php/config.inc.php
chmod 640 /usr/share/nginx/html/board/server/php/config.inc.php

ステップ 5 - Nginx サーバーブロックの設定

zip に同梱の restyaboard.conf を /etc/nginx/conf.d にコピーし、ドメインと root パスを修正します。

cp /usr/share/nginx/html/board/restyaboard.conf /etc/nginx/conf.d
nano /etc/nginx/conf.d/restyaboard.conf

server ブロックの最初の部分を変更します(default_server を削除し、実際のドメインを指定)。

server {
        listen 80;
        server_name board.yourdomain.com;

root と location を Restyaboard 配置場所に合わせて修正します。

root /usr/share/nginx/html/board;

location / {
    root /usr/share/nginx/html/board/client;
}

# また別箇所にある root 指定も /usr/share/nginx/html/board/client に合わせてください

fastcgi_pass の Unix ソケットパスも合わせます。

fastcgi_pass    unix:/run/php-fpm/php7.0-fpm.sock;

ファイルを保存したら、Nginx を検証して再起動します。

nginx -t
systemctl restart nginx

パーミッション設定(必須):

chown -R nginx:nginx /usr/share/nginx/html/board/
chmod -R go+w "/usr/share/nginx/html/board/media"
chmod -R go+w "/usr/share/nginx/html/board/client/img"
chmod -R go+w "/usr/share/nginx/html/board/tmp/cache"
chmod -R 0755 /usr/share/nginx/html/board/server/php/shell/*.sh

cron で定期ジョブを追加します。

echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/instant_email_notification.sh" >> /var/spool/cron/root
echo "0 * * * * /usr/share/nginx/html/board/server/php/shell/periodic_email_notification.sh" >> /var/spool/cron/root
echo "*/30 * * * * /usr/share/nginx/html/board/server/php/shell/imap.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/webhook.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/card_due_notification.sh" >> /var/spool/cron/root

SELinux について

元手順では SELinux を無効化する手順が示されています。SELinux を永続的に無効化する前に影響範囲を評価してください。可能であれば、SELinux の許可を追加して必要なポリシーだけ許可する方が安全です。即時に無効化するコマンド:

setenforce 0

恒久的に無効にするには /etc/selinux/config を編集します。

nano /etc/selinux/config
# SELINUX=enforcing を SELINUX=disabled に変更

注意: SELinux を無効化することはセキュリティリスクを高めます。代替として fcontext と semanage、setsebool を使用して必要なポリシーを開放することを検討してください。

動作確認と初回ログイン

ブラウザで次の URL にアクセスします(board.yourdomain.com は実際のホスト名に置き換え)。

http://board.yourdomain.com

以下のログイン画面が表示されます。

Restyaboard ログイン画面

デフォルトのログイン: ユーザー admin / パスワード restya(初回ログイン後にパスワードを変更してください)。ログイン後のダッシュボード画面例:

Restyaboard ダッシュボード画面

ボード作成は画面左上の矢印メニューから「Add Board」または「Organization」を選びます。

新しいボードを作成

テンプレート選択画面例:

ボードテンプレートを選択

新規ボードの表示例:

新しいボード表示

管理パネルへは画面右下の Admin ボタンから Settings に入れます。

管理パネルにアクセス


運用と保守のチェックリスト(ロール別)

  • システム管理者

    • Nginx, PHP-FPM, PostgreSQL の自動起動確認
    • OS セキュリティ更新の定期適用
    • バックアップスクリプトのスケジュール
    • SSL 証明書更新の自動化 (Let’s Encrypt 等)
  • アプリケーション管理者

    • Restyaboard のログ監視(エラー/例外)
    • 定期的な DB バックアップと復元テスト
    • cron ジョブが想定どおり実行されているか確認
  • 開発/運用担当

    • カスタムプラグインや統合の互換性確認
    • アップグレード前のステージング環境での検証

バックアップと復元のミニ・メソドロジー

  • PostgreSQL ダンプ(毎日/重要時間帯):
pg_dump -U rb_user -Fc rb_data > /var/backups/rb_data_$(date +%F).dump
  • Restyaboard メディアと設定の同期:
rsync -a --delete /usr/share/nginx/html/board/media/ /backups/restyaboard/media/
rsync -a --delete /usr/share/nginx/html/board/server/php/config.inc.php /backups/restyaboard/config.inc.php
  • 復元手順(要テスト):
  1. DB を停止
  2. pg_restore でダンプを復元
  3. ファイルを所定ディレクトリへ復元
  4. パーミッション確認・再起動

常に定期的に復元テストを行い、バックアップの整合性を検証してください。

セキュリティ強化のヒント

  • SSL/TLS を必須にする(Let’s Encrypt + certbot)
  • PHP 設定で display_errors をオフにし、本番でエラーメッセージを公開しない
  • Web サーバーで適切なヘッダーを追加(HSTS, X-Frame-Options など)
  • DB ユーザーには最低限の権限しか与えない
  • cfg ファイルやバックアップに平文パスワードを置かない
  • SELinux を無効にする代わりに必要なポリシーを付与する

よくあるトラブルと対処法

  • Nginx が 502 Bad Gateway を返す

    • nginx エラーログ (/var/log/nginx/error.log) を確認
    • PHP-FPM が起動しているか確認: systemctl status php-fpm
    • fastcgi_pass のソケットパスが一致しているか確認
    • ソケットの所有権とパーミッションを確認
  • PostgreSQL 接続エラー

    • pg_hba.conf の認証方式を確認(md5 か peer)
    • DB ユーザー名/パスワード、データベース名が config.inc.php と一致しているか確認
    • psql コマンドで手動接続テストを実行
  • パーミッションエラーで画像や添付がアップロードできない

    • /usr/share/nginx/html/board/media や tmp ディレクトリの書き込み権限を確認

アップグレードとマイグレーションの注意点

  • 事前に完全バックアップを取得する
  • 本番アップグレード前にステージング環境で検証
  • データベース変更がある場合はマイグレーションスクリプトを確認
  • カスタムプラグインやテーマの互換性を確認

互換性と代替アプローチ

  • PHP の代替: Docker コンテナ内で新しい PHP バージョンを使う方法(ホストと分離)
  • DB の代替: Restyaboard は PostgreSQL を使うため、切替は容易ではありません。既存の RDBMS を移行する場合は変換・検証が必要。

テストケース(受入基準)

  • ブラウザでホームページにアクセスし、ログイン画面が表示される
  • 管理者 admin でログインし、ボード作成ができる
  • カード作成と添付ファイルのアップロードが成功する
  • cron ジョブが定期実行され、メール通知(有効時)が送信される
  • DB バックアップを復元してアプリケーションが正常に動作する

運用リスクと軽減策

  • リスク: PHP/OS の脆弱性。軽減策: パッチ適用と隔離(コンテナ化)
  • リスク: バックアップの欠如。軽減策: 定期バックアップと復元テスト
  • リスク: 平文パスワード。軽減策: シークレットマネージャや権限管理

FAQ

Q: デフォルト admin/restya のパスワードはそのまま使えますか?

A: 初回ログインは可能ですが、必ずログイン後に管理者パスワードを強固なものに変更してください。

Q: SELinux を無効化しても良いですか?

A: 開発環境では一時的に無効化して検証できますが、本番では SELinux を無効化するよりポリシーを調整する方が安全です。

Q: SSL 証明書はどう設定しますか?

A: certbot(Let’s Encrypt)を使って自動で証明書を取得し、Nginx の server ブロックに 443 の設定を追加するのが一般的です。


まとめ

  • CentOS 7 上で Restyaboard を動かすには Nginx + PHP-FPM + PostgreSQL が必要です。
  • PHP-FPM は Unix ソケットを使い、Nginx 側の fastcgi_pass と一致させることが重要です。
  • DB 設定とパーミッション、cron、SELinux の扱いは導入時に確認するポイントです。

主要ポイントの要約は次のとおりです。

  • パッケージ更新を行い、依存リポジトリを追加してインストールする
  • PHP-FPM のユーザー/ソケット/タイムゾーンを適切に設定する
  • PostgreSQL の認証方式と DB ユーザーを作成する
  • Restyaboard の設定ファイルに DB 情報を正しく書き込む
  • Nginx 設定とパーミッションを確認し、cron を登録する

これで Restyaboard が利用可能になりました。運用項目(バックアップ、ログ監視、セキュリティ更新)を運用フローに組み込み、定期的な検証を行ってください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

WiKIDで認証ドメインを作成する方法
認証

WiKIDで認証ドメインを作成する方法

ブラウザでODTを開く方法とサービス比較
生産性

ブラウザでODTを開く方法とサービス比較

Start11でWindows11をChromeOS風にカスタマイズ
カスタマイズ

Start11でWindows11をChromeOS風にカスタマイズ

CentOS 5.4 で MySQL レプリケーションを SSL 化する方法
データベース

CentOS 5.4 で MySQL レプリケーションを SSL 化する方法

LinuxでAppImageを開く方法と対処ガイド
ハウツー

LinuxでAppImageを開く方法と対処ガイド

ブラウザでのDo Not Track設定と限界
プライバシー

ブラウザでのDo Not Track設定と限界