Prerequisites
- Debian 12 Server with root access.
- Domain/Subdomains pointed to your server:
ncat.example.com
(NCAT Dashboard)s3.example.com
(MinIO API)s3-console.example.com
(MinIO Web UI)
- Apache2 installed with
mod_ssl
,mod_proxy
, andmod_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
- Create MinIO Bucket:
- Access
https://s3-console.example.com
- Log in with
MINIO_ROOT_USER
andMINIO_ROOT_PASSWORD
- Create a bucket named
ncat-prod
.
- Access
- Access NCAT Dashboard:
- Visit
https://ncat.example.com
- Use the
API_KEY
from.env
for authentication.
- Visit
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