Code Monkey home page Code Monkey logo

casino-laravel-vue's Introduction

Runeruby-casino

Screenshot_1

Installation

WebSockets Setup

Private Keys & WS Encryption

Recaptcha

Recaptcha is required to authorize on the website.

Steps to enable Recaptcha:

  1. Create Recaptcha v2 token
  2. Create file /storage/recaptcha.key and put token in it
  3. Run npm run dev to activate Recaptcha
  4. Set recaptcha_secret_key in admin panel settings

WebPush

Generate vapid keys: php artisan webpush:vapid

.env file

Copy .env.example file and rename it to .env, afterwards run php artisan key:generate.

Change APP_URL to your website URL (Important for webhooks!)

Private keys

Our Client <-> Server WS implementation requires RSA public key & server key to prevent access token stealing.

Generation process is simple: run php artisan win5x:keys.

If you intend to use BitGo service, backup BITGO_PASSPHRASE from .env to somewhere so you won't lose access to BitGo wallet by some accident.

Note: you need to execute npm run dev to include RSA public key in js source. If you test website straight after w/o compiling it won't authenticate you to WS server.

Scheduler

Configure scheduler:

crontab -e

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

WS Server Installation

laravel-echo-server init  # When asked, use port 2096 and setup SSL if you want to use it

Modify laravel-echo-server.json

"databaseConfig": {
	"redis": {
		"password": "redis password (set "redis" to {} if none)"
	},
	"sqlite": {
		"databasePath": "/database/laravel-echo-server.sqlite"
	},
	"listenWhishper": true,
	"prefixWhishper": "whisper"
},

Finally, run win5x:subscribe:

php artisan win5x:subscribe

Bots

To create fake presence of users, you can start a bot to do that. Navigate to /admin/bot, modify settings to suit your needs and click at "Start".

If you wish to stop bot spawning, use php artisan queue:clear.

Note: this command clears every job in the queue. After that you must restart multiplayer game queue with php artisan game:chain all.

Bet value is hardcoded to be random from 1$ to 25$ (determined from current CoinGecko price), where higher bets are less common.

Wallet installation

We support two ways to provide wallets on your website. You can configure available currencies in admin panel.

BitGo

3rd-party Bitcoin wallet provider. This method is quicker to install than local nodes, also you won't have to waste server resources.

1. Install BitGoJS:

cd BitGoJS/modules/express
npm ci

Note: We do not recommend installing BitGo Express as root, but if you need to do so, you must run npm ci --unsafe-perm for the last step instead of npm ci.

Running BitGo Express

From the express module folder (modules/express), run this command:

npm run start

You should see BitGo Express start up in the default test environment:

BitGo-Express running
Environment: test
Base URI: http://localhost:3080

Running in production

When running BitGo Express against the BitGo production environment using real funds, you should make sure the NODE_ENV environment variable is set to production. This will turn off some debugging information which could leak information about the system which is running BitGo Express. If an unsafe configuration is detected, BitGo Express will emit a warning upon startup. In a future version of BitGo Express, this will turn into a hard error and BitGo Express will fail to start up.

Additionally, when running against the production env and listening on external interfaces, BitGo Express must be run with TLS enabled by setting the keyPath and crtPath configuration options, otherwise BitGo Express will error upon startup with the following message:

Fatal error: Must enable TLS when running against prod and listening on external interfaces!
Error: Must enable TLS when running against prod and listening on external interfaces!

We strongly recommend always enabling TLS when running against the BitGo production environment. However, if you must opt out of this requirement, you may do so by setting the disableSSL configuration option. Use at your own risk, as this may allow a man-in-the-middle to access sensitive information as it is sent over the wire in cleartext.

Webhook

Webhook (https://<url>/api/bitgoWebhook) is created automatically for BitGo wallets.

Native bitcoin nodes

If you wish to use local BTC nodes, then we provide 7 cryptocurrencies.

cd nodes/<node folder>/bin
./start.sh

Modify credentials in start.sh files.

Full synchronization may take up to 1 week with average of 3 days depending on server internet connection/CPU/etc.

Do not synchronize more than 2 nodes at same time, your performance will suffer!

Ethereum

./start.sh is located in geth folder.

Ethereum lightclient node needs peers to work properly.

Run web3.js in project root to process Ethereum payments.

cd <your website root>
npm install -g pm2
pm2 start web3.js

TRX

This wallet is working on a remote node. Note: deposits are not instant on it, it will require 1-10 minutes based on your/remote node server load.

ERC-20

ERC-20 is working on Ethereum protocol, so geth client is used.

You don't have to do anything, if Ethereum is working, then ERC-20 will work too.

RPC urls

This script uses node RPC to manage wallets.

Put these URLs in admin panel, "Currencies" page.

BTC - http://user:password@localhost:8445

BCH - http://user:password@localhost:8446

DOGE - http://user:password@localhost:22555

LTC - http://user:password@localhost:9332

Remote wallet server

Skip this step if you will run nodes and RuneRuby on same server.

It's possible to set up nodes on a separate server.

  • Copy node binaries and web3.js from main server to wallet server

  • Replace RPC urls:

Replace localhost in admin panel to your second server ip/domain.

  • Modify blocknotify.sh & walletnotify.sh:

In App\BlockNotify\<System>\walletnotify.<sh/bat> and App\WalletNotify\<System>\walletnotify.<sh/bat> change localhost to your wallet server ip/domain.

  • Run nodes on second server

Wallet Auto-setup

You can't change some wallet settings initially. That's because they are auto-generated.

Auto-setup requires every node to be running (Except ERC-20 and TRX)

Navigate /admin/wallet/autoSetup in your browser (authenticated as admin user) when all native nodes are working.

Wallet backups are located in /storage/app. Save them and remove them from your server to prevent leaks. Store ETH and TRX addresses/private keys in text file manually.

Multiplayer games

First step is to setup supervisor.

After setup is complete you should start the chain so the game would work infinitely (php artisan game:chain <game_id>).

Example:

php artisan queue:clear        # Clear queue so unexpected things wouldn't happen
php artisan game:chain all     # Start chain for all games

# Example (debugging)
php artisan game:chain crash   # Start chain for Crash only

Current multiplayer games identifiers:

  • crash
  • baccarat
  • slide
  • bullvsbear

Bull vs Bear game

Since this game uses Coinbase Pro API instead of default provably fair system, we are using NodeJS instance for pulling real-time data.

npm install -g pm2
pm2 start bullvsbear.js

Note: it's still a MultiplayerGame instance. You need to use php artisan game:chain command to launch this game!

Don't forget to edit SERVER_IP string in your .env file.

Troubleshooting

Website and client-side provably fair results are different

Float precision tends to work differently in PHP, so there will be slight float differences.

Difference is very small, but sometimes it will be enough to make result invalid.

To fix this, make this change in php.ini:

float_precision = -1

"Connecting to the server..."

Make sure that WS server (php artisan win5x:subscribe with laravel-echo-server) are running.

Post-install

Use this shell script to quickly launch WS server, Laravel queue and multiplayer games:

./start.sh

Notes

  • Never run php artisan win5x:subscribe twice. If you need to restart it, kill previous process, otherwise events will be processed twice - chat will duplicate messages, users could dupe their balance.
  • Never run php artisan game:chain twice. If you need to clear & restart queue chain, run php artisan queue:clear before.
  • Subscribe command uses cached php classes for games. If you've changed them - restart command so changes could take effect.
  • Some currencies are supported by BitGo and some are supported as native. While most of the currencies share user balances, we recommend to pick something once and never change it, because if you remove Bitcoin SV and switch to local nodes completely - your users will lose their funds.

casino-laravel-vue's People

Stargazers

 avatar

Watchers

Interesting Man! avatar

casino-laravel-vue's Issues

Hirring

Hello, do you take applications for a job? we could use your skills in building our iGaming Platform

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.