Installation
Build docker images and run guide for Mega
Clone Repository and Run with Docker
To get started, you can clone the mega repository directly from GitHub.
Step 1: Clone the Mega Repository
Begin by cloning the Mega repository from GitHub:
git clone https://github.com/web3infra-foundation/mega.git
Step 2: Access the Project Directory and Build Docker Images
After cloning, navigate into the project directory to building the Docker images:
cd mega
git submodule update --init --recursive
docker buildx build -t mega:mono-pg-0.1-pre-release -f ./docker/mono-pg-dockerfile .
docker buildx build -t mega:mono-engine-0.1-pre-release -f ./docker/mono-engine-dockerfile .
docker buildx build -t mega:mono-ui-0.1-pre-release -f ./docker/mono-ui-dockerfile .
Step 3: Initialize for mono-engine and PostgreSQL
Initialize the configuration for the mono-engine
and PostgreSQL:
Warning:
After initializing the configuration, you need to edit the config.toml
file to set the correct values for your environment.
for Linux or MacOS:
./docker/init-volume.sh /mnt/data ./docker/config.toml
for Windows:
.\init-volume.ps1 -baseDir "D:\" -configFile ".\config.toml"
Step 4: Start Whole Mono Engine Stack on local or server with domain
Start whole mono engine stack on local for testing
# create network
docker network create mono-network
# run postgres
docker run --rm -it -d --name mono-pg --network mono-network -v /tmp/data/mono/pg-data:/var/lib/postgresql/data -p 5432:5432 mega:mono-pg-0.1-pre-release
docker run --rm -it -d --name mono-engine --network mono-network -v /tmp/data/mono/mono-data:/opt/mega -p 8000:8000 mega:mono-engine-0.1-pre-release
docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=http://localhost:8000 -p 3000:3000 mega:mono-ui-0.1-pre-release
Start whole mono engine stack on server with domain
# create network
docker network create mono-network
# run postgres
docker run --rm -it -d --name mono-pg --network mono-network --memory=4g -v /mnt/data/mono/pg-data:/var/lib/postgresql/data -p 5432:5432 mega:mono-pg-0.1-pre-release
docker run --rm -it -d --name mono-engine --network mono-network --memory=8g -v /mnt/data/mono/mono-data:/opt/mega -p 8000:8000 -p 22:9000 mega:mono-engine-0.1-pre-release
docker run --rm -it -d --name mono-ui --network mono-network --memory=1g -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=https://git.gitmega.dev -p 3000:3000 mega:mono-ui-0.1-pre-release
Option: Nginx Configuration for Mono
server {
listen 80;
listen [::]:80;
server_name git.gitmega.dev;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name git.gitmega.org;
ssl_certificate /etc/letsencrypt/live/git.gitmega.dev/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/git.gitmega.dev/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000" always;
client_max_body_size 5G;
access_log /var/log/nginx/git.gitmega.access.log;
error_log /var/log/nginx/git.gitmega.error.log;
location / {
proxy_pass http://127.0.0.1:8000;
}
}
server {
listen 80;
listen [::]:80;
server_name console.gitmega.dev;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name console.gitmega.dev;
ssl_certificate /etc/letsencrypt/live/console.gitmega.dev/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/console.gitmega.dev/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000" always;
access_log /var/log/nginx/console.gitmega.access.log;
error_log /var/log/nginx/console.gitmega.error.log;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Origin $scheme://$host;
}
}
Quick Setup with Docker Hub
For a faster setup, pull images from the Docker Hub in one step:
docker pull genedna/mega:mono-pg-0.1-pre-release
docker pull genedna/mega:mono-engine-0.1-pre-release
docker pull genedna/mega:mono-ui-0.1-pre-release
Warning:
Befor run with the following commands, you must initialize the volume and configuration files for mono-engine and PostgreSQL.
# create network
$ docker network create mono-network
# run postgres
$ docker run --rm -it -d --name mono-pg --network mono-network -v /tmp/data/mono/pg-data:/var/lib/postgresql/data -p 5432:5432 genedna/mega:mono-pg-0.1-pre-release
$ docker run --rm -it -d --name mono-engine --network mono-network -v /tmp/data/mono/mono-data:/opt/mega -p 8000:8000 genedna/mega:mono-engine-0.1-pre-release
$ docker run --rm -it -d --name mono-ui --network mono-network -e MEGA_INTERNAL_HOST=http://mono-engine:8000 -e MEGA_HOST=http://console.gitmega.dev -p 3000:3000 genedna/mega:mono-ui-0.1-pre-release