The faucet for Duino-Coin (DUCO) with support for Magi (XMG). Users can claim a small amount of coins once every 12 hours, gated by a Cloudflare Turnstile captcha and per-username / per-IP rate limiting.
Official deployment: the official, project-endorsed instance runs at faucet.duinocoin.com. This source is published so the community can audit and self-host it - forks and self-hosted instances are not affiliated with or endorsed by the Duino-Coin project (see Trademark).
- DUCO and XMG faucets with a shared transaction history and 30-day stats charts
- Cloudflare Turnstile (invisible captcha) with fail-closed server-side verification
- Rate limiting per wallet username and per (hashed) IP, every 12 hours
- SQLite storage - no database server required
- Sends payouts via the official Duino-Coin / Magi transaction API
- PHP 7.x or newer with the
sqlite3andcurlextensions - A web server (Apache with
.htaccesssupport, or nginx with equivalent rewrites) - A Cloudflare Turnstile site key + secret key
- Funded faucet wallet(s) for DUCO and/or XMG
-
Clone and configure
git clone https://github.com/Tech1k/duinofaucet.git cd duinofaucet cp config.example.php config.phpEdit
config.phpand set the wallet credentials, payout amounts, and your Turnstile keys ($turnstile_sitekeyand$turnstile_secret).config.phpis git-ignored and must never be committed. -
Create the database with the helper script (run from the web root):
python3 db/create_db.py
It creates everything the app needs:
duco_payouts,magi_payouts- raw payout rows (id,payout_amount,payout_address,transaction_id,ip_address,timestamp) + indexescounters- cumulative per-coin totals (the homepage/stat boxes read these)daily_stats- per-day rollup that powers the 30-day chartpf_ban_list- optional IP ban list
The pages require
countersanddaily_statsto exist, so run this before first load. On a fresh install they start empty and fill as claims happen. -
Serve it behind your web server. If you front it with Cloudflare, firewall the origin to Cloudflare's IP ranges - otherwise the
CF-Connecting-IPheader used for rate limiting can be spoofed by hitting the origin directly. -
(Optional) Data retention - to purge old rows on a schedule, add a cron for
db/purge.php(CLI only). See the comments at the top of that file.
This software moves real funds. Please read SECURITY.md before
deploying, and report vulnerabilities privately. Never commit config.php or the
contents of db/ - the database stores user wallet usernames and IP hashes.
Licensed under the GNU Affero General Public License v3.0 - see LICENSE.
The AGPL is deliberate: if you run a modified version of this faucet as a network service, you must make your modified source available to its users.
The DuinoFaucet and Duino-Coin names and logos are not licensed for use by forks or self-hosted instances. The AGPL covers the code, not the branding - if you deploy your own instance, you must rename it and remove the official branding to avoid implying affiliation or endorsement.
Copyright © 2020-2026 Tech1k