Skip to main content

Production Deployment & Containerization Guide

This document details deploying Membuss in production environments using Docker, multi-node clusters, reverse proxies, and systemd daemons.


1. Single-Node Docker Deployment

Membuss provides a multi-stage Docker build producing a distroless container image executing as non-root user membuss:10001.

# docker-compose.yml
version: '3.8'

services:
membuss-node:
image: nnlgsakib/membuss:latest
container_name: membuss-node
restart: unless-stopped
ports:
- "4001:4001/tcp"
- "4001:4001/udp"
- "8080:8080"
- "5001:5001"
- "50051:50051"
volumes:
- ./data:/app/data
- ./membuss.yaml:/app/membuss.yaml:ro
environment:
- MEMBUSS_LOG_LEVEL=info

Run container:

docker compose up -d

2. Multi-Node Anchor Cluster Setup

For high-availability infrastructure, deploy a cluster with Anchor Nodes enabled:

# docker-compose.multi.yml
version: '3.8'

services:
node1-anchor:
image: nnlgsakib/membuss:latest
container_name: membuss-anchor1
environment:
- MEMBUSS_ANCHOR_MODE=true
volumes:
- ./anchor1-data:/app/data

node2-worker:
image: nnlgsakib/membuss:latest
container_name: membuss-worker2
volumes:
- ./worker2-data:/app/data

node3-gateway:
image: nnlgsakib/membuss:latest
container_name: membuss-gateway3
ports:
- "80:8080"
volumes:
- ./gateway3-data:/app/data

3. Reverse Proxy Nginx Configuration (TLS & Gateway)

To front the Mem-Gate HTTP CDN layer with TLS/SSL:

server {
listen 443 ssl http2;
server_name gateway.membuss.io;

ssl_certificate /etc/letsencrypt/live/gateway.membuss.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gateway.membuss.io/privkey.pem;

location / {
proxy_pass http://127.0.0.1:8080;
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-Proto $scheme;

# Disable proxy buffering for streaming byte responses
proxy_buffering off;
proxy_read_timeout 3600s;
}
}