サーバーで動かす
Celerp は常にお客様自身のハードウェアで動きます。デスクトップアプリなら、ワンクリックでお手元のコンピューターがそのままサーバーになります。このガイドでは、代わりに常時稼働の独立した Linux サーバー(VPS や自宅サーバー)で動かし、オフィス全体から24時間アクセスできるようにする方法を説明します。デスクトップで使うのと同じ pip install celerp の手順が、どの Linux サーバーでも使えます。
要件
- Python 3.11+
- Postgres 14 以上(稼働中でアクセスできること)
sudo権限を持つユーザー(celerp initが Postgres のユーザーとデータベースを作成するために必要です)
インストールと初期化
pip install celerp
celerp init
celerp init は対話式です。次の処理を行います。
- Postgres の接続 URL を尋ねられます(既定値
postgresql+asyncpg://celerp:celerp@localhost:5432/celerpをそのまま使うこともできます) - Postgres のユーザーとデータベースを作成します(
sudo -u postgres psql経由) - JWT シークレットを生成します
- マイグレーションを実行します
- 設定ファイル(
~/.celerp/config.toml)を書き出します
サーバーの起動
celerp start
これにより 2つのプロセスが起動します。
- ポート
8000の API サーバー - ポート
8080の UI サーバー
ブラウザで http://your-server-ip:8080 を開くと Celerp にアクセスできます。
systemd サービスとして動かす
ログアウト後も Celerp を動かし続け、再起動時に自動起動させるには、次のようにします。
sudo tee /etc/systemd/system/celerp.service <<EOF
[Unit]
Description=Celerp ERP
After=network.target postgresql.service
[Service]
Type=simple
User=$USER
ExecStart=$(which celerp) start
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now celerp
リバースプロキシ(nginx + HTTPS)
Celerp を独自ドメインで HTTPS 公開するには、UI と API の両方を nginx でプロキシします。
server {
server_name erp.yourdomain.com;
# UI
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
# API
location /api/ {
proxy_pass http://localhost:8000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/erp.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/erp.yourdomain.com/privkey.pem;
}
無料の SSL 証明書は Certbot で取得できます。
アップグレード
celerp upgrade
このコマンドは pip install --upgrade celerp を実行し、未適用のマイグレーションを自動で適用します。
LAN での複数人利用
ローカルネットワーク上のマシンで Celerp を動かしている場合、同じネットワーク上の利用者はブラウザから http://your-machine-ip:8080 にアクセスできます。ファイアウォールがポート 8000 と 8080 への着信接続を許可しているか確認してください。