We advice you to use power of docker and peatio-workbench as local development environment
Follow this guide for container-based development environmetnt setup
- Install Ruby
- Install MySQL
- Install Redis
- Install RabbitMQ
- Install Bitcoind
- Install PhantomJS
- Install JavaScript Runtime
- Install ImageMagick
- Configure Peatio
- Configure peatio-trading-ui
- Setup the nginx reverse-proxy
Install the ruby build dependencies:
sudo apt-get install git curl zlib1g-dev build-essential \
libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 \
libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev
Install rvm:
gpg --keyserver hkp://keys.gnupg.net \
--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \
7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable --ruby=2.5.0 --gems=rails
If you want to skip fetching documentation when installing gems, do the following:
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
Login to mysql and set the password for the root user
Add the environement variable (ideally in .bashrc, and don't forget to $ source ~/.bashrc
after editing the file)
export DATABASE_HOST=<host of your sql>
export DATABASE_USER=<username for root usually>
export DATABASE_PASS=<pwd for root>
Be sure to install the latest stable Redis, as the package, the distro one can be outdated:
sudo apt-add-repository -y ppa:rwky/redis
sudo apt-get update
sudo apt-get install redis-server
Please follow instructions here:
# add rabbitmq debian repo
sudo apt-add-repository 'deb http://www.rabbitmq.com/debian/ testing main'
curl http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt-key add -
# install rabbitmq
sudo apt-get update
sudo apt-get install rabbitmq-server
# start the rabbitmq serveer
sudo rabbitmq-plugins enable rabbitmq_management
sudo service rabbitmq-server restart
# download and install rabbitmqadmin
wget http://localhost:15672/cli/rabbitmqadmin
chmod +x rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/sbin
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install bitcoind
Prepare config files:
mkdir -p ~/.bitcoin
touch ~/.bitcoin/bitcoin.conf
vim ~/.bitcoin/bitcoin.conf
Insert the following lines into bitcoin.conf
,
and replce with your username
and password
.
server=1
daemon=1
# If run on the test network instead of the real bitcoin network
testnet=1
# You must set rpcuser and rpcpassword to secure the JSON-RPC api
# Please make rpcpassword to something secure, `5gKAgrJv8CQr2CGUhjVbBFLSj29HnE6YGXvfykHJzS3k` for example.
# Listen for JSON-RPC connections on <port> (default: 8332 or testnet: 18332)
rpcuser=USERNAME
rpcpassword=PASSWORD
rpcport=18332
# Notify when receiving coins
walletnotify=/usr/local/sbin/rabbitmqadmin publish routing_key=peatio.deposit.coin payload='{"txid":"%s", "currency":"btc"}'
Start bitcoin daemon:
bitcoind
Peatio uses Capybara with PhantomJS to do the feature tests, so if you want to run the tests. Install the PhantomJS is neccessary.
sudo apt-get update
sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
cd /usr/local/share
PHANTOMJS_VERISON=1.9.8
sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$PHANTOMJS_VERISON-linux-x86_64.tar.bz2
sudo tar xjf phantomjs-$PHANTOMJS_VERISON-linux-x86_64.tar.bz2
sudo ln -s /usr/local/share/phantomjs-$PHANTOMJS_VERISON-linux-x86_64/bin/phantomjs /usr/local/share/phantomjs
sudo ln -s /usr/local/share/phantomjs-$PHANTOMJS_VERISON-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
sudo ln -s /usr/local/share/phantomjs-$PHANTOMJS_VERISON-linux-x86_64/bin/phantomjs /usr/bin/phantomjs
A JavaScript Runtime is needed for Asset Pipeline to work. Any runtime will do but Node.js is recommended.
curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
sudo apt-get install nodejs
sudo apt-get install imagemagick
Clone the project:
mkdir code
cd code
git clone https://github.com/rubykube/peatio.git
cd peatio
git checkout 1-5-stable // Choose your version, but make sure you'll install the same version for peatio-trading-ui
bundle install
Prepare configuration files:
bin/init_config
Then install and run yarn:
$ npm install -g yarn
$ bundle exec rake tmp:create yarn:install assets:precompile
Peatio depends on pusher.
A development key/secret pair for development/test
is provided in config/application.yml
.
PLEASE USE IT IN DEVELOPMENT/TEST ENVIRONMENT ONLY!
Set pusher-related settings in config/application.yml
.
You can always find more details about pusher configuration at pusher website
Edit config/seed/currencies.yml
.
Replace username:password
and port
.
username
and password
should only contain letters and numbers,
do not use email as username
.
bundle exec rake db:setup
Make sure you are in /peatio directory
Run $ god -c lib/daemons/daemons.god
to start the deamon
More info about Peatio daemons at Peatio daemons.
To generate liability proof run:
bundle exec rake solvency:liability_proof
Otherwise you will get an exception at the "Solvency" page.
- By default, it ask for Google Authentication. This parameter can be changed in
/config/application.yml
->OAUTH2_SIGN_IN_PROVIDER: google
- Setup a new Web application on https://console.developers.google.com
- Configure the Google Id, Secret and callback in
/config/application.yml
- Note: Make sure your host ISN'T an IP in the callback config. Looks like Google auth expect a callback to a DNS only
GOOGLE_CLIENT_ID: <Google id>
GOOGLE_CLIENT_SECRET: <Google secret>
GOOGLE_OAUTH2_REDIRECT_URL: http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com:3000/auth/google_oauth2/callback
Finalize the config; open /config/application.yml
Set the DNS of your host (IP won't work if you use Google Authentication)
URL_HOST: ec2-34-xxx-xxx-xx.compute-1.amazonaws.com:3000
Start the server:
$ bundle exec rails server
If you setup peatio-workbench on a server (like AWS ec2)
- Make sure the port 3000 is open your server
- Start the server by passing the ip in parameter
$ bundle exec rails server -b 0.0.0.0
Validate the server is working:
visit http://localhost:3000 or the public DNS of your server
Sign in with Google SSO
NOTE: At this point, the "trade" screen isn't working as you need to setup the trading server. See next step.
Clone the repo and setup the Trading UI
cd ~/code
git clone https://github.com/rubykube/peatio-trading-ui.git
cd peatio-trading-ui
bundle install
bin/init_config
Edit the /config/application.yml
and set your app DNS. Ex:
PLATFORM_ROOT_URL: http://ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com
Refer to the release note here : https://github.com/rubykube/peatio/blob/master/docs/releases/1.5.0.md
sudo apt-get update
sudo apt-get install nginx
sudo ufw allow 'Nginx HTTP'
systemctl status nginx
At this point you should see nginx running
But you need to edit the default config to setup the reverse proxy.
Open /etc/nginx/sites-available/default
in your favorite editor
Replace the content of the file by the following
server {
server_name http://peatio.local;
listen 80 default_server;
location ~ ^/(?:trading|trading-ui-assets)\/ {
proxy_pass http://127.0.0.1:4000;
}
location / {
proxy_pass http://127.0.0.1:3000;
}
}
Make sure to replace http://peatio.local
with your actual server DNS
Verify that the syntax of the config file is valid : $ sudo nginx -t
Restart nginx by running sudo systemctl restart nginx