画像背景除去AI「withoutbg」をセルフホストで

高性能な画像背景除去AI「withoutbg」がセルフホストで動作するようなので試してみました。初回処理: 5〜10秒(モデル初期化)、以降: 2〜5秒で生成されます。

何度も実行出来るのは便利ですね。

sudo bash -c '
# ── withoutbg セットアップスクリプト ──────────────────────────────
set -e
INSTALL_DIR="/opt/docker/withoutbg"
PORT=8080   # 変更したい場合はここを編集

echo "[1/3] ディレクトリ作成: $INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
cd "$INSTALL_DIR"

echo "[2/3] docker-compose.yml を生成"
cat > docker-compose.yml <<EOF
services:
  withoutbg:
    image: withoutbg/app:latest
    container_name: withoutbg
    ports:
      - "${PORT}:80"
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s
EOF

echo "[3/3] コンテナ起動"
docker compose up -d

echo ""
echo "✅ 起動完了!"
echo "   URL: http://$(hostname -I | awk "{print \$1}"):${PORT}"
echo ""
echo "ログ確認:  docker compose -f $INSTALL_DIR/docker-compose.yml logs -f"
echo "停止:      docker compose -f $INSTALL_DIR/docker-compose.yml down"
echo "更新:      docker compose -f $INSTALL_DIR/docker-compose.yml pull && docker compose -f $INSTALL_DIR/docker-compose.yml up -d"
'

デフォルトは 8080:80(ホスト8080 → コンテナ80)。80番を直接使いたい場合はスクリプト冒頭の PORT=8080PORT=80 に変更してください。

生成される /opt/docker/withoutbg/docker-compose.yml

services:
  withoutbg:
    image: withoutbg/app:latest
    container_name: withoutbg
    ports:
      - "8080:80"
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 20s