單一租戶,自行託管分析,於 SQLite 上執行
AI 翻譯
Single tenant, self-hosted analytics that runs on SQLite
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Self-hosted web analytics in one SQLite file.
See who visits, where they come from, and what they click.
No cookies, no fingerprinting, no third parties. Your data never leaves your server.
The real dashboard for fusionaly.com. Open it live .
Runs on a Raspberry Pi or a $5 VPS, on your own domain. One command installs it, and it updates itself every night.
Ask it questions from Claude, Codex, Cursor, or Gemini.
It installs Chasen (and Docker, when the server has none) and runs Fusionaly: HTTPS, live backups of the database, and an update each night. Run it again to update now.檢視完整 README ↗Self-hosted web analytics in one SQLite file.
See who visits, where they come from, and what they click. No cookies, no fingerprinting, no third parties. Fusionaly runs on a Raspberry Pi or a $5 VPS, on your own domain: one command installs it, and it updates itself every night. Ask it questions from Claude, Codex, Cursor, or Gemini.
Website · Docs · Live dashboard
On your server, as root:
curl -fsSL https://fusionaly.com/install | sudo bash -s data.example.com
It installs Chasen (and Docker, when the server has none) and runs Fusionaly: HTTPS, live backups of the database, and an update each night. Run it again to update now.
From your computer instead:
curl -fsSL https://chasenhq.com/cli | sh
chasen deploy karloscodes/fusionaly --server [email protected] --domain data.example.com --auto-update
Or run the image yourself: karloscodes/fusionaly on Docker Hub, or ghcr.io/karloscodes/fusionaly. Servers that the older installer set up keep working; to move one to Chasen, see Move to Chasen. The full setup is in the installation guide.
Don't host it on an
analytics.*subdomain: ad blockers (uBlock Origin, EasyPrivacy) block hostnames like that and drop your tracking requests. Use a neutral subdomain such asdata.example.com.
Add the script to your site:
<script defer src="https://your-domain.com/y/api/v1/sdk.js"></script>
Page views and clicks are tracked automatically. For a named event, add one attribute to any element:
<button data-fusionaly-event-name="signup_clicked">Sign up</button>
<a href="/pricing" data-fusionaly-event-name="pricing_viewed">Pricing</a>
<form data-fusionaly-event-name="contact_submitted">...</form>
<section data-fusionaly-event-name="testimonials_seen">...</section>
The SDK picks the right trigger for each element: click, submit, sendBeacon, or scroll into view. Read the docs.
Ask "where did my traffic come from this week?" in the AI client you already use. Fusionaly answers the Model Context Protocol at /mcp with four read-only tools, and the plugin adds a skill that turns questions into the right queries.
/plugin marketplace add karloscodes/fusionaly-oss
/plugin install fusionaly
/fusionaly:connect
That is Claude Code. Codex, Gemini CLI, Cursor, Claude Desktop, and others are one command each: see the plugin README. Get the agent key from Administration > Agents. Your client asks your server, and only the answer reaches your AI provider. The tools can't write, and they can't read accounts, settings, or keys.
FUSIONALY_DOMAIN and FUSIONALY_PRIVATE_KEY (at least 32 characters: openssl rand -hex 32). Chasen gives the key as PRIVATE_KEY, which Fusionaly reads too. SDK configuration has the tracking options.Requirements: Go (the version in go.mod), Node.js 22 or later.
make install # dependencies
make db-migrate # migrations
make dev # the dev server with hot reload, at http://localhost:3000
make test # the unit tests
make test-e2e # the Playwright end-to-end tests
make lint # the linters
make build # the production binaries
The code: cmd/fusionaly is the server, cmd/fnctl the admin CLI (migrations, accounts), and cmd/manager the older installer. internal/ holds the core logic in Phoenix contexts, api/v1/ the public tracking API and the SDK, web/ the React frontend (Inertia.js, Tailwind), and e2e/ the Playwright tests. Open an issue before a large change, and run make lint, make test, and make test-e2e before a pull request.
MIT. See LICENSE.