Install, configure and launch your crypto investment platform - on a live Virtualmin / Webmin server, or locally on XAMPP.
pdo_mysql extension.api.coingecko.com for the live price widgets (CLI curl to api.coingecko.com or allow_url_fopen=On). If the API is unreachable the site shows safe fallback prices, so this is optional but recommended.file://.https://YOUR-SERVER:10000 (Webmin login).invest.example.com) has a DNS A record pointing at your server's IP.~/public_html/ (some setups)
~/domains/domain.com/public_html/ (others)You can see the exact path under the virtual server → Server Configuration → Website for domain ("Document root").
crypto-invest folder directly into the document root so that index.php sits at the top (cleaner URLs):
~/domains/domain.com/public_html/index.php(Alternatively upload the
crypto-invest folder itself; your URLs then carry a /crypto-invest prefix.)
invest) and folders are 755 / files 644:
chown -R invest:invest ~/domains/domain.com/public_html
find ~/domains/domain.com/public_html -type d -exec chmod 755 {} \;
find ~/domains/domain.com/public_html -type f -exec chmod 644 {} \;
pdo, pdo_mysql, session, mysqli, openssl, json, mbstring. For live prices also enable curl (or allow_url_fopen).apt install php-mysql php-mbstring php-curl php-xml systemctl restart apache2
invest_db), and let Virtualmin generate a database user and password (e.g. user invest_user). Note them down.config.php in the project and set the values Virtualmin gave you:
<?php
define('DB_HOST', 'localhost');
define('DB_PORT', 3306);
define('DB_NAME', 'invest_db');
define('DB_USER', 'invest_user');
define('DB_PASS', 'the_generated_password');
date_default_timezone_set('UTC');
crypto_invest in Virtualmin so it matches the default, but it is not required.config.php if you edited it on your PC.https://domain.com/install.php (or https://domain.com/crypto-invest/install.php if you kept the subfolder)
https://domain.com/ and confirm the landing page renders.setup.sql via MySQL Databases → Manage (phpMyAdmin). Running install.php is simpler.
install.php reports a database connection error, double-check the values in config.php, that the database really exists under MySQL Databases, and that the DB user has all privileges on it. Hostname is almost always localhost.
https://domain.com/admin/ and sign in with the credentials shown by the installer (default admin / admin12345).The file cron/daily_interest.php must run once per day so clients earn interest automatically. It also sends the daily notifications and marks matured plans completed.
01:00 (crontab syntax 0 1 * * *).php /home/USER/domains/domain.com/public_html/cron/daily_interest.phpIf PHP is not in PATH, use its full path (e.g.
/usr/bin/php8.1 ...) - find it by running which php in a terminal.
https://domain.com/cron/daily_interest.php in a browser to run it once immediately. The scheduler is what keeps it running every day.
register.php - create a client account.profile.php (country, ID details, wallet).deposit.php shows live BTC/ETH/USDT/TRX prices).admin/users.php → open a client → Approve/Reject their verification.admin/announcements.php publishes a notice to every client's dashboard and bell.admin/export.php downloads clients/transactions/deposits/withdrawals as CSV.C:\xampp).htdocs folder.crypto-invest project folder into htdocs, so the result is:
C:\xampp\htdocs\crypto-invest\index.php
http://localhost/crypto-invest/install.php
crypto_invest database, all tables, the 5 default plans and the admin account.setup.sql via
phpMyAdmin (http://localhost/phpmyadmin → Import). Running install.php is simpler.
http://localhost/crypto-invest/admin/index.phpadmin / admin12345).bc1qexample...) with your real deposit wallets.The file cron/daily_interest.php must run once per day. It credits each active plan's daily interest, then marks matured plans completed.
Crypto Interest. Trigger: Daily, e.g. 01:00 AM.C:\xampp\php\php.exeC:\xampp\htdocs\crypto-invest\cron\daily_interest.phphttp://localhost/crypto-invest/cron/daily_interest.php in a browser to run it once immediately.
register.php - create a client account.| Page | URL (Virtualmin example) |
|---|---|
| Public website | https://domain.com/ |
| Installer | https://domain.com/install.php |
| Client login | https://domain.com/login.php |
| Client notifications | https://domain.com/notifications.php |
| Referral / affiliate | https://domain.com/referral.php |
| Admin login | https://domain.com/admin/ |
| Admin announcements | https://domain.com/admin/announcements.php |
| Admin CSV exports | https://domain.com/admin/export.php |
| Interest engine | cron/daily_interest.php |
| Virtualmin panel | https://YOUR-SERVER:10000 |
| phpMyAdmin (Virtualmin) | virtual server → MySQL Databases → Manage |
https://domain.com/admin/adminadmin@example.comadmin12345Public pages, the client dashboard and the admin console show live crypto prices from the CoinGecko API. Prices are fetched at most every 90 seconds (cached in the price_cache table), and the browser auto-refreshes them every 30 seconds.
includes/prices.php via cURL (or file_get_contents if enabled).crypto-invest/ ├─ config.php DB credentials (edit on Virtualmin!) ├─ install.php One-click setup (DB + seed data) ├─ setup.sql Manual SQL schema + seed data ├─ setup.html This tutorial ├─ index.php Landing page / 5 plans / live ticker ├─ register.php / login.php / logout.php ├─ dashboard.php Client portfolio dashboard + live prices ├─ invest.php Activate a plan from balance ├─ deposit.php Deposit request + live coin prices ├─ withdraw.php Twice-monthly payout request ├─ history.php Transaction history ├─ notifications.php Client notification inbox ├─ referral.php Referral link + stats ├─ profile.php Profile / KYC / wallet / password ├─ prices_json.php JSON endpoint used by the price widgets ├─ includes/ Headers, db, helpers (functions, prices) ├─ admin/ Console (login, dashboard + analytics, │ users + KYC review, deposits, │ withdrawals, investments, packages, │ announcements, exports, settings) ├─ cron/daily_interest.php Daily interest engine (cron job) └─ assets/ CSS + JS
High-yield "daily return" products that are not backed by real, lawful business activities can be illegal in many jurisdictions and are frequently used in fraudulent schemes. Before launching publicly you should: