Install No Code Architects Toolkit with Docker & MinIO on Debian 12

by | May 13, 2025 | Linux, MinIO, Tutorials | 0 comments




Prerequisites

  1. Debian 12 Server with root access.
  2. Domain/Subdomains pointed to your server:
    • ncat.example.com (NCAT Dashboard)
    • s3.example.com (MinIO API)
    • s3-console.example.com (MinIO Web UI)
  3. Apache2 installed with mod_ssl, mod_proxy, and mod_headers enabled.

Part 1: Install Docker on Debian 12

1.1 Update System

sudo apt update && sudo apt upgrade -y

1.2 Install Docker

# Add Docker’s GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Add Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list

# Install Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.3 Verify Docker

sudo docker run hello-world

Part 2: Install & Configure MinIO

2.1 Install MinIO

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20250422221226.0.0_amd64.deb
sudo dpkg -i minio_20250422221226.0.0_amd64.deb

2.2 Configure MinIO

# Create system user and data directory
sudo groupadd -r minio-user
sudo useradd -M -r -g minio-user minio-user
sudo mkdir /mnt/minio-data
sudo chown -R minio-user:minio-user /mnt/minio-data

# Edit MinIO environment config
sudo nano /etc/default/minio

Add these settings:

MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=YourSecurePassword123!
MINIO_VOLUMES="/mnt/minio-data"
MINIO_OPTS="--console-address :9001"
MINIO_SERVER_URL="https://s3.example.com"
MINIO_BROWSER_REDIRECT_URL="https://s3-console.example.com"

2.3 Start MinIO Service

sudo systemctl enable minio
sudo systemctl start minio

Part 3: Configure Apache Reverse Proxy for MinIO

3.1 Configure s3.example.com (API Endpoint)

<VirtualHost *:80>
  ServerName s3.example.com
  Redirect permanent / https://s3.example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName s3.example.com

  # SSL Configuration (Use Let’s Encrypt Certificates)
  SSLEngine on
  SSLCertificateFile /path/to/ssl/cert.pem
  SSLCertificateKeyFile /path/to/ssl/privkey.pem

  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
  RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>

3.2 Configure s3-console.example.com (Web UI)

<VirtualHost *:80>
  ServerName s3-console.example.com
  Redirect permanent / https://s3-console.example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName s3-console.example.com

  # SSL Configuration
  SSLEngine on
  SSLCertificateFile /path/to/ssl/cert.pem
  SSLCertificateKeyFile /path/to/ssl/privkey.pem

  RewriteEngine On
  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:9001/
  ProxyPassReverse / http://127.0.0.1:9001/

  # WebSocket Support
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteCond %{HTTP:Connection} upgrade [NC]
  RewriteRule ^/?(.*) "ws://127.0.0.1:9001/$1" [P,L]
</VirtualHost>

3.3 Enable Sites & Reload Apache

sudo a2ensite s3.example.com s3-console.example.com
sudo systemctl reload apache2

Part 4: Deploy NCAT with Docker

4.1 Create Project Directory

mkdir ~/ncat && cd ~/ncat

4.2 Create docker-compose.yml

version: '3.8'
services:
  ncat:
    image: stephengpope/no-code-architects-toolkit:latest
    env_file: .env
    ports:
      - "8585:8080"

4.3 Configure .env File

# NCAT
APP_NAME=NCAT
APP_DEBUG=false
APP_DOMAIN=ncat.example.com
APP_URL=https://ncat.example.com
API_KEY=YourSecureAPIKey123!

# MinIO S3
S3_ACCESS_KEY=admin
S3_SECRET_KEY=YourSecurePassword123!
S3_ENDPOINT_URL=https://s3.example.com
S3_REGION=us-east-1
S3_BUCKET_NAME=ncat-prod

4.4 Start NCAT

docker compose up -d

Part 5: Configure Apache for NCAT

<VirtualHost *:80>
  ServerName ncat.example.com
  Redirect permanent / https://ncat.example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName ncat.example.com

  # SSL Configuration
  SSLEngine on
  SSLCertificateFile /path/to/ssl/cert.pem
  SSLCertificateKeyFile /path/to/ssl/privkey.pem

  ProxyPreserveHost On
  ProxyPass / http://localhost:8585/
  ProxyPassReverse / http://localhost:8585/

  # WebSocket Support
  RewriteEngine On
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteCond %{HTTP:Connection} upgrade [NC]
  RewriteRule ^/?(.*) "ws://localhost:8585/$1" [P,L]
</VirtualHost>

Enable the Site

sudo a2ensite ncat.example.com
sudo systemctl reload apache2

Final Steps

  1. Create MinIO Bucket:
    • Access https://s3-console.example.com
    • Log in with MINIO_ROOT_USER and MINIO_ROOT_PASSWORD
    • Create a bucket named ncat-prod.
  2. Access NCAT Dashboard:
    • Visit https://ncat.example.com
    • Use the API_KEY from .env for authentication.

Troubleshooting Tips

  • Verify DNS propagation with dig ncat.example.com.
  • Check Docker logs: docker compose logs -f.
  • Confirm Apache proxy modules are enabled:
    sudo a2enmod proxy proxy_http ssl rewrite headers

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

avatart

About

I’m a System Administrator and a developer with 10+ years of experience.