forked from DECA/decasearch
commit
1fd95b2531
287
README.md
287
README.md
|
@ -1,3 +1,286 @@
|
|||
# DECASearch
|
||||
# DECA Search React App
|
||||
|
||||
DECA's Decentralized Carbon Credits Search Engine
|
||||
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
|
||||
|
||||
DECA's Decentralized Carbon Credits Search Engine.\
|
||||
Official Carbon credits database address ([orbitdb](https://github.com/orbitdb/orbit-db))
|
||||
**/orbitdb/zdpuAykPJ4qtBg2toS2vxr5eaPfGEBJmvGerM7V7x8qn5c8hW/decaCCDB**
|
||||
This project was bootstrapped with [Create React App](https://github.com/facebookincubator/create-react-app).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
## General Folder Structure
|
||||
|
||||
```sh
|
||||
├── package.json
|
||||
├── package-lock.json
|
||||
├── public
|
||||
│ ├── DC-1-Blanco.png
|
||||
│ ├── favicon.ico
|
||||
│ ├── index.html
|
||||
│ ├── logo192.png
|
||||
│ ├── logo512.png
|
||||
│ ├── manifest.json
|
||||
│ └── robots.txt
|
||||
├── README.md
|
||||
├── src
|
||||
│ ├── App.css
|
||||
│ ├── App.js
|
||||
│ ├── App.test.js
|
||||
│ ├── index.css
|
||||
│ ├── index.js
|
||||
│ ├── logo.svg
|
||||
│ ├── serviceWorker.js
|
||||
│ └── setupTests.js
|
||||
└── yarn.lock
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before you begin, ensure you have met the following requirements:
|
||||
|
||||
* Node.js >= 10
|
||||
|
||||
## Installation
|
||||
|
||||
**Download and install Node.js v10.x and npm.**
|
||||
|
||||
> Using Ubuntu
|
||||
|
||||
```sh
|
||||
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
|
||||
$ sudo apt-get install -y nodejs
|
||||
```
|
||||
|
||||
> Using Debian, as root
|
||||
|
||||
```sh
|
||||
$ curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
||||
$ apt-get install -y nodejs
|
||||
```
|
||||
|
||||
**Clone the repo, switch to decasearch and run npm install**
|
||||
|
||||
```sh
|
||||
$ git clone https://gitlab.com/deca-currency/decasearch.git
|
||||
$ cd decasearch
|
||||
$ npm install
|
||||
```
|
||||
|
||||
It's recommended to fix security vulnerabilities in dependencies using the command
|
||||
|
||||
```sh
|
||||
$ npm audit fix
|
||||
```
|
||||
|
||||
In the project directory, you can run:
|
||||
|
||||
```sh
|
||||
$ npm start
|
||||
```
|
||||
|
||||
Runs the app in the development mode.
|
||||
Open http://localhost:3000 to view it in the browser.
|
||||
|
||||
The page will reload if you make edits.
|
||||
You will also see any lint errors in the console.
|
||||
|
||||
```sh
|
||||
$ npm run build
|
||||
```
|
||||
|
||||
Builds the app for production to the build folder.
|
||||
It correctly bundles React in production mode and optimizes the build for the best performance.
|
||||
|
||||
The build is minified and the filenames include the hashes.
|
||||
Your app is ready to be deployed!
|
||||
|
||||
## Development
|
||||
|
||||
* js-ipfs >= 0.41
|
||||
|
||||
To be able to use the orbitdb database of the [carboncreditsbacklog](https://gitlab.com/deca-currency/carboncreditsbacklog) repository which is implemented in [go-ipfs](https://github.com/ipfs/go-ipfs) it is necessary to use circuit relay because react uses [js-ipfs](https://github.com/ipfs/js-ipfs) and add this configuration in the initialization of ipfs
|
||||
|
||||
```sh
|
||||
"relay": {
|
||||
"enabled": true,
|
||||
"hop": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
It is also necessary to enable the sending through WebSocket in the go-ipfs nodes to be able to make the connection and replicate the database. Once the WebSocket is enabled, the connection is made manually before connecting to the database.
|
||||
|
||||
## Deploy
|
||||
|
||||
### Prerequisites
|
||||
|
||||
* Nginx >= 1.14.0
|
||||
* Certbot >= 1.6
|
||||
* serve >= 11.3.2
|
||||
* pm2 >= 4.4.0
|
||||
|
||||
Install Nginx
|
||||
|
||||
```sh
|
||||
$ sudo apt update
|
||||
$ sudo apt install nginx
|
||||
```
|
||||
|
||||
Install Certbot
|
||||
|
||||
```sh
|
||||
$ sudo add-apt-repository ppa:certbot/certbot
|
||||
```
|
||||
|
||||
**clone the repo in /var/www/ and switch to decasearch directory:**
|
||||
|
||||
```sh
|
||||
$ cd /var/www/
|
||||
$ sudo https://gitlab.com/deca-currency/decasearch.git
|
||||
$ cd decasearch
|
||||
```
|
||||
|
||||
**install the react dependencies:**
|
||||
|
||||
```sh
|
||||
$ sudo npm install
|
||||
```
|
||||
|
||||
**Build project to deploy**
|
||||
|
||||
```sh
|
||||
$ sudo npm run build
|
||||
```
|
||||
|
||||
```sh
|
||||
> my-app@0.1.0 build /var/www/decasearch
|
||||
> react-scripts build
|
||||
|
||||
Creating an optimized production build...
|
||||
Compiled successfully.
|
||||
|
||||
File sizes after gzip:
|
||||
|
||||
929.36 KB build/static/js/2.42d485fa.chunk.js
|
||||
19.94 KB build/static/css/2.36020323.chunk.css
|
||||
3.18 KB build/static/js/main.a003ea06.chunk.js
|
||||
955 B build/static/css/main.08bc9497.chunk.css
|
||||
772 B build/static/js/runtime-main.83c3e0c4.js
|
||||
|
||||
The project was built assuming it is hosted at /.
|
||||
You can control this with the homepage field in your package.json.
|
||||
|
||||
The build folder is ready to be deployed.
|
||||
You may serve it with a static server:
|
||||
|
||||
yarn global add serve
|
||||
serve -s build
|
||||
|
||||
Find out more about deployment here:
|
||||
|
||||
bit.ly/CRA-deploy
|
||||
```
|
||||
|
||||
Startup pm2 in systemd
|
||||
|
||||
```sh
|
||||
$ pm2 startup systemd
|
||||
```
|
||||
|
||||
Run the command that was generated to set PM2 up to start on boot
|
||||
|
||||
```sh
|
||||
$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u your-username --hp /home/your-username
|
||||
```
|
||||
|
||||
In the directory run
|
||||
|
||||
```sh
|
||||
$ pm2 ecosystem
|
||||
```
|
||||
|
||||
Edit file with the next configuration
|
||||
|
||||
```sh
|
||||
apps:[
|
||||
{
|
||||
name : 'decasearch',
|
||||
script : 'npx',
|
||||
interpreter : 'none',
|
||||
args : 'serve build -s',
|
||||
env_production : {
|
||||
NODE_ENV: 'production'
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
Start the pm2 process
|
||||
|
||||
```sh
|
||||
$ pm2 start ecosystem.config.js
|
||||
```
|
||||
|
||||
Check status should show **status: online**
|
||||
|
||||
```sh
|
||||
$ pm2 show decasearch
|
||||
```
|
||||
|
||||
In the nginx config add the proxy pass
|
||||
|
||||
```sh
|
||||
// If serving from root, use / instead of /your-path
|
||||
location ^~ /your-path {
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
proxy_redirect off;
|
||||
}
|
||||
```
|
||||
|
||||
**Now restart up Nginx!**
|
||||
|
||||
**Remember to open the port in the firewall**
|
||||
|
||||
### Add SSL Certificate
|
||||
|
||||
```sh
|
||||
$ sudo certbot --nginx -d search.deca.green
|
||||
```
|
||||
|
||||
**It is recommended to redirect all http traffic to https**
|
||||
|
||||
|
||||
Finally renew the certificate with the following command and restart nginx
|
||||
|
||||
```sh
|
||||
$ sudo certbot renew --dry-run
|
||||
$ sudo service nginx restart
|
||||
```
|
||||
|
||||
If you changed up your repository or made any changes to the configuration, just do a pull in the repo and restart nginx:
|
||||
|
||||
```sh
|
||||
$ git pull
|
||||
$ npm install
|
||||
$ npm build
|
||||
$ pm2 restart decasearch
|
||||
$ sudo service nginx restart
|
||||
```
|
||||
|
||||
# License
|
||||
|
||||
[**GPLV3**](./LICENSE).
|
||||
|
||||
# Information and contacts.
|
||||
|
||||
***Developers***
|
||||
- Jose [jose@deca.eco](mailto:jose@deca.eco)
|
||||
- Osmar [osmar@deca.eco](mailto:osmar@deca.eco)
|
||||
|
|
Loading…
Reference in New Issue