GoatCounter
個人サイト向けの軽量アクセス解析。追跡なし
オープンソース代替:Google Analytics
自分のサーバーで動かすなら:メモリ 256MB 以上の VPS で、月額 588円〜(目安) 導入方法と VPS の比較を見る ↓
- Docker対応
- クラウド版あり
- セルフホスト可
- 日本語UI
GoatCounter は個人を追跡せずにページビューを数えることに絞ったアクセス解析です。単一バイナリと SQLite で動き、非常に軽量です。個人ブログや小規模サイト向けで、非商用ならホスティング版を無料で使えます。
日本語対応
※ 日本語の翻訳ファイルの有無はリポジトリを自動で確認しています(翻訳の割合は、ファイルの形式によって計測できないため表示していません)。最終確認:2026/10/22
最近の更新
-
リリースノート(原文)
2025-12-15 v2.7.0 ----------------- This release contains a number of incremental improvements and fixes. Nothing especially major. Also available on DockerHub: https://hub.docker.com/r/arp242/goatcounter ### Features - The `-geodb` flag now accepts `-geodb=maxmind:account_id:license` to automatically download updates. See `goatcounter help serve` for the full documentation. - Automatically detect `secure` and `sameSite` cookie attributes. Previously this relied on the correct usage of the `-tls` flag, which people often got wrong. Now it's detected from the client connection. This depends on the proxy to set the `Scheme: https` or `X-Forwarded-Proto: https` header, which most should already do by default. - WebSocket support is now detected automatically, without the…
-
リリースノート(原文)
This release changes a number of default values. In most cases this shouldn't break anything, but be sure to read the section. Compiling GoatCounter requires Go 1.21 or newer. ### Changes in defaults - The default values for the `-listen` and `-tls` flags have changed from `-listen=:443 -tls=tls,rdr,acme` to `-listen=:8080 -tls=none`. The previous defaults were "production ready", but in practice many people don't use the built-in TLS and ACME certificate generation but a proxy like nginx or Caddy. In addition, it's also easier to get started with the new defaults. - The default SQLite database location changed from `./db/goatcounter.sqlite3` to `./goatcounter-data/db.sqlite3`. The old file will still be used as a default if it exists, so this shouldn't break any existing …
-
リリースノート(原文)
This release requires Go 1.21. Features: - Quite a few tables are rewritten to a more efficient format. For small to medium instances this will take a few minutes at the most, but if you have very large instances this may take a few hours. It also requires enough free disk space to rewrite the `hits` table. If you want to run steps manually then you can view the migration with: % goatcounter db migrate -show 2023-05-16-1-hits Or if you use PostgreSQL: % goatcounter db migrate -show -db postgresql+dbname=goatcounter 2023-05-16-1-hits - The `User-Agent` header is no longer stored; only the browser and system parsed out of there. It's pretty reliable, and especially mobile browser User-Agents are ridiculously unique. It was always stored only "in case the …
導入方法(セルフホスト)
compose.yaml
name: 'goatcounter'
volumes:
postgres-data: {}
goatcounter-data: {}
services:
# PostgreSQL, suitable for running the tests or GoatCounter.
postgres:
image: 'postgres:18-alpine'
ports: ['127.0.0.1:5432:5432']
volumes: ['postgres-data:/var/lib/postgresql']
shm_size: '1gb'
healthcheck: {test: ['CMD-SHELL', 'pg_isready -U goatcounter -d goatcounter'], start_period: '30s', start_interval: '1s'}
environment:
'POSTGRES_USER': 'goatcounter'
'POSTGRES_PASSWORD': 'goatcounter'
'POSTGRES_DATABASE': 'goatcounter'
command: [
'-c', 'shared_preload_libraries=pg_stat_statements',
'-c', 'default_statistics_target=1000',
'-c', 'wal_level=minimal', # WAL
'-c', 'max_wal_senders=0',
'-c', 'min_wal_size=256MB',
'-c', 'max_wal_size=4GB',
'-c', 'shared_buffers=1GB', # Memory settings
'-c', 'effective_cache_size=10GB',
'-c', 'maintenance_work_mem=500MB',
'-c', 'work_mem=200MB',
'-c', 'max_parallel_workers_per_gather=4', # Run queries in parallel
'-c', 'max_parallel_maintenance_workers=4',
'-c', 'max_worker_processes=8',
'-c', 'max_parallel_workers=8',
'-c', 'random_page_cost=1.5', # Most people use an SSD, and random page access is faster than HDDs.
'-c', 'effective_io_concurrency=256', # SSDs are better at concurrent access.
'-c', 'jit=off', # Almost always slower.
]
# Don't start GoatCounter by default, but only if asked for with:
# …(続きは compose.yaml)
- VPSを契約する ― ConoHa VPS 1GBを選び、OSは Ubuntu を推奨
- Docker を入れる ― 多くのVPSはアプリテンプレートから1クリック。無ければ
curl -fsSL https://get.docker.com | sh - GoatCounter を起動 ― 上の compose ファイルを置いて
docker compose up -d - ドメインとHTTPS ― Caddy か Nginx Proxy Manager でリバースプロキシ(Let's Encrypt 自動)。独自ドメインが無ければ XServer ドメイン
で取得(PR)
このソフトが動く VPS プラン(必要メモリ 256MB 以上)
| サービス | プラン | 月額(目安) | |
|---|---|---|---|
| ConoHa VPS 最安 | 1GB | 588円〜 | 公式サイト ↗ |
| シンVPS | 1GB | 671円〜 | 公式サイト ↗ |
| XServer VPS クラウド | 4GB | 2,068円〜 | 公式サイト ↗ |
※ 月額は12か月契約の通常価格(税込・月額換算)の目安です。キャンペーン価格・初期費用は各社の公式サイトで確認してください。PR
自分で入れるのが難しいときは
GoatCounter のセルフホストは、VPS の契約・Docker・ドメインと HTTPS・バックアップと、決めることが少なくありません。OSSMatch を運営する合同会社Edel Hearts では、サーバーの用意から初期設定・日本語化・バックアップと更新の仕組みづくりまでをまとめて代行しています。掲載している OSS は、実際に自社のサーバーで動かして確認しています。
GoatCounter の導入を相談する ↗相談は無料です。内容を伺ってから、費用と期間の目安をお伝えします。
アクセス解析の他のOSSと比較
| ソフト | ★ Stars | 最終更新 | 日本語UI | 必要RAM | 難易度 | ライセンス |
|---|---|---|---|---|---|---|
| GoatCounter(このページ) | 6,084 | 4週間前 | あり | 256MB | かんたん | EUPL-1.2 |
| PostHog | 40,386 | 11時間前 | 未検出 | 8GB | むずかしい | MIT |
| Umami | 39,538 | 2日前 | 97% | 512MB | かんたん | MIT |
| Plausible Analytics | 29,604 | 15時間前 | 未検出 | 2GB | ふつう | AGPL-3.0 |
よくある質問
GoatCounter は無料で使えますか?
GoatCounter はオープンソースで、ソフト自体は無料です。自分のサーバー(VPSなど)で動かす場合はサーバー代(月額数百円〜)がかかります。公式のクラウド版(有料プラン)も提供されています。
GoatCounter は日本語で使えますか?
UIの日本語化は「あり」です(翻訳ファイル i18n/ja-JP.toml)。
GoatCounter を商用利用できますか?
ライセンスは EUPL-1.2 です。ライセンス条文で商用利用の条件を確認してください。
Google Analytics から GoatCounter に移行できますか?
Google Analytics のエクスポート機能でデータを書き出し、GoatCounter 側のインポート機能で取り込むのが基本です。対応形式はバージョンによって異なるため、公式ドキュメントで確認してください。Google Analytics の他の代替は「Google Analytics のオープンソース代替」ページで比較できます。
GoatCounter を動かすのに必要なサーバースペックは?
メモリ 256MB 以上が目安です。Docker に対応しているので、Docker が動く環境ならOSを問いません。