Bitbucket, Jira, and PostgreSQL Setup with Azure Bitbucket-MPC + Crawl4AI RAG Integration

Deploy Bitbucket & Jira on Azure(Docker)

This guide helps you deploy Bitbucket and Jira on Azure using Docker, with a shared PostgreSQL database.

1️⃣ Set Up Azure Resources

Create an Azure Resource Group and provision two virtual machines:

2️⃣ Configure PostgreSQL Database

Set up a managed PostgreSQL database on Azure and create separate databases for Bitbucket and Jira.

Once connected to PostgreSQL, create two separate databases:

    CREATE DATABASE bitbucket_db;
    CREATE DATABASE jira_db;
Then, create a dedicated user for each application:

    CREATE USER bitbucket_user WITH PASSWORD 'StrongBitbucketPassword';
    CREATE USER jira_user WITH PASSWORD 'StrongJiraPassword';
Grant permissions so each user can only access its respective database:

    GRANT ALL PRIVILEGES ON DATABASE bitbucket_db TO bitbucket_user;
    GRANT ALL PRIVILEGES ON DATABASE jira_db TO jira_user;

3️⃣ Install Docker on Both VMs

Ensure Docker and Docker Compose are installed on both virtual machines.

Enable Git LFS to handle large file repositories:
    sudo apt update && sudo apt upgrade -y
    sudo apt install -y docker.io docker-compose
    sudo systemctl enable docker && sudo systemctl start docker
    # Install Git LFS
    sudo apt update
    sudo apt install git-lfs -y
    # Enable Git LFS
    git lfs install
    mkdir -p /opt/atlassian/bitbucket /opt/atlassian/jira
    chown -R 2001:2001 /opt/atlassian/bitbucket # For Bitbucket
    chown -R 2002:2002 /opt/atlassian/jira # For Jira

4️⃣ Deploy Bitbucket on Bitbucket VM

On the Bitbucket VM, configure and deploy Bitbucket using Docker Compose:

Inside /opt/atlassian/, create docker-compose.yml:
version: '3'
    services:
      bitbucket:
        image: atlassian/bitbucket:latest
        ports:
          - "7990:7990"
          - "7999:7999"
        environment:
          - 'JDBC_URL=jdbc:postgresql://my-postgres-db.postgres.database.azure.com:5432/bitbucket_db'
          - 'JDBC_USER=bitbucket_user'
          - 'JDBC_PASSWORD=StrongBitbucketPassword'
          - 'BITBUCKET_LFS_ENABLED=true' # Enable Git LFS
          volumes:
          - /opt/atlassian/bitbucket:/var/atlassian/application-data/bitbucket
          restart: unless-stopped
        networks:
          - atlassian
    networks:
      atlassian:

5️⃣ Deploy Jira on Jira VM

On the Jira VM, configure and deploy Jira using Docker Compose:

Inside /opt/atlassian/, create docker-compose.yml:
version: '3'
    services:
      jira:
        image: atlassian/jira-software:latest
        ports:
          - "8080:8080"
        environment:
          - 'JDBC_URL=jdbc:postgresql://my-postgres-db.postgres.database.azure.com:5432/jira_db'
          - 'JDBC_USER=jira_user'
          - 'JDBC_PASSWORD=StrongJiraPassword'
        volumes:
          - /opt/atlassian/jira:/var/atlassian/application-data/jira
        restart: unless-stopped
        networks:
          - atlassian
    networks:
      atlassian:

6️⃣ Access Your Applications

cd /opt/atlassian
    docker-compose up -d

✅ Bitbucket → http://your-azure-ip:7990

✅ Jira → http://your-azure-ip:8080

7️⃣ Secure Your Setup

Ensure that only trusted IPs can access your services by configuring firewall rules.

8️⃣ Configure Bitbucket & Jira

Go to the web interface and complete the setup:

9️⃣ Link Bitbucket & Jira

In Bitbucket, go to Administration → Jira Integration and add your Jira server URL.

Now, Jira issues will be linked to commits, branches, and pull requests! 🎯

✅ Done!

Your Bitbucket & Jira are now running on separate VMs with a shared PostgreSQL database on Azure! 🎉

On a local machine where you use Git, initialize and track large files:
# Initialize Git LFS
    git lfs install
    
    # Track specific file types for Unreal Engine 3 development
    git lfs track "*.ico" "*.upk" "*.umap" "*.psa" "*.psk" "*.abs" "*.fxa" "*.fbx" "*.png" "*.psd" "*.wav" "*.mp4" \
    "*.bik" "*.tga" "*.bmp" "*.dds" "*.jpg" "*.jpeg" "*.ogg" "*.mp3" "*.usx" "*.utx" "*.uax" "*.ukx" "*.unr" "*.uc" "*.u" \
    "*.swf" "*.bin" "*.pak" "*.iso" "*.zip" "*.rar" "*.dll" "*.lib" "*.pdb" "*.exe" "*.sln" "*.vcproj" "*.vcxproj" "*.ncb" \
    "*.sdf" "*.log" "*.t3d" "*.udk" "*.chtml"
    
    # Track additional 3D model formats
    git lfs track "*.max" "*.3ds" "*.mb" "*.ma" "*.blend" "*.ztl" "*.ztb" "*.tbx" "*.mtl" "*.obj" "*.stl" "*.bgeo" "*.abc" \
    "*.ply" "*.gltf" "*.glb" "*.igs" "*.step" "*.stp" "*.x3d" "*.bsp" "*.vox"
    
    # Track texture, material, and shader files
    git lfs track "*.tiff" "*.tif" "*.exr" "*.hdr" "*.pfm" "*.raw" "*.ies" "*.sbsar" "*.sbs" "*.sppr" "*.tx" "*.xcf" "*.mat"
    \
    "*.cg" "*.cgfx" "*.sma" "*.smi" "*.ptx"
    
    # Track animation, rigging, and physics files
    git lfs track "*.bvh" "*.c3d" "*.anim" "*.skel" "*.rig" "*.mc" "*.mcx" "*.phy"
    
    # Track Unreal Engine and game asset files
    git lfs track "*.udk" "*.ukx" "*.uax" "*.utx" "*.usx" "*.fxa" "*.fxp" "*.bik" "*.swf" "*.gtl" "*.gma" "*.pak"
    "*.pakchunk*" \
    "*.pak.info" "*.umx" "*.uplugin" "*.uproject" "*.uasset" "*.uexp" "*.ubulk"
    
    # Track audio and video files
    git lfs track "*.wav" "*.mp3" "*.ogg" "*.flac" "*.m4a" "*.aac" "*.ac3" "*.mov" "*.avi" "*.wmv" "*.flv" "*.mkv" "*.m4v"
    "*.mxf" \
    "*.r3d"
    
    # Track compression and archive formats
    git lfs track "*.7z" "*.tar" "*.gz" "*.lz4" "*.lzma" "*.xz" "*.cab" "*.msi"
    
    # Track Visual Studio and development files
    git lfs track "*.vcxproj.user" "*.vsconfig" "*.props" "*.targets" "*.filters" "*.hlsl" "*.glsl" "*.fx" "*.fxc" "*.bat"
    "*.sh" \
    "*.cmd" "*.patch" "*.diff" "*.cmake" "*.mak" "*.vssettings"
    
    # Verify tracked files
    cat .gitattributes
    
    # Commit the changes
    git add .gitattributes
    git commit -m "Enable Git LFS tracking"
    git push origin main
    
    

🔹 Why Do You Need a Database?

Without a database, Bitbucket and Jira cannot function because they rely on PostgreSQL to store and retrieve data dynamically.

Think of PostgreSQL as the "brain" that remembers everything—without it, your Bitbucket repositories and Jira issues wouldn't persist after a restart.

🔹 What Does the Database Do?

For Bitbucket:

For Jira:

🚀 Summary

Service Azure VM CPU/RAM SSD Ports Open
Bitbucket bitbucket-vm 4 vCPU / 16GB RAM 1TB 7990, 7999, 22
Jira jira-vm 4 vCPU / 16GB RAM 500GB 8080, 22
PostgreSQL Azure Managed DB Cloud Cloud 5432

🔹 Configure DNS (Point Domain to Azure VMs)

  1. Go to your DNS provider (GoDaddy, Namecheap, Cloudflare, etc.).
  2. Create an A Record for each service:
Service Record Type Host Value (VM Public IP)
Bitbucket A bitbucket.yourcompany.com <Bitbucket_VM_Public_IP>
Jira A jira.yourcompany.com <Jira_VM_Public_IP>

💡 Save changes and wait for DNS propagation (can take a few minutes to hours).

3️⃣ Install Nginx as a Reverse Proxy (For SSL & Routing)

Run these steps on each VM (Bitbucket & Jira):

sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginx

4️⃣ Configure Nginx for SSL (Let’s Encrypt)

Open the Nginx config file:

sudo nano /etc/nginx/sites-available/default

Replace the content with this (Bitbucket example):

server {
      listen 80;
      server_name bitbucket.yourcompany.com;
        
    location / {
      proxy_pass http://127.0.0.1:7990;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;
      }
    }
        

For Jira, replace 7990 with 8080 and use jira.yourcompany.com.

Save and exit (CTRL + X, then Y, then ENTER).

Restart Nginx:

sudo systemctl restart nginx

5️⃣ Get a Free SSL Certificate (Let's Encrypt)

Run this command on each VM:

sudo certbot --nginx -d bitbucket.yourcompany.com

For Jira, run:

sudo certbot --nginx -d jira.yourcompany.com

Follow the prompts and choose "redirect HTTP to HTTPS".

6️⃣ Test and Auto-Renew SSL

Check if SSL works by visiting:

Set up auto-renewal:

sudo systemctl enable certbot.timer

✅ Done!

Your Bitbucket and Jira instances are now securely accessible over HTTPS with a domain. 🎉

Unreal Engine 3 development files and Visual Studio 2008 project files

File Extension Description
.sln Visual Studio Solution file, used to manage multiple projects.
.vcproj Visual Studio 2008 project file, contains project configurations.
.vcxproj Visual Studio 2010+ project file (if upgrading from VS2008).
.ncb Visual Studio IntelliSense database, stores code autocomplete data.
.sdf Visual Studio database file for IntelliSense and project data.
.user User-specific settings for Visual Studio projects.
.pdb Program Database file, contains debugging symbols for compiled binaries.
.exe Executable file, the compiled game or tools used in development.
.dll Dynamic Link Library, contains compiled code for game logic or engine functions.
.lib Static library file, used for linking compiled code into an application.
.obj Compiled object file, intermediate step before linking into an executable.
.exp Export file generated during DLL compilation, contains function addresses.
.bsp Unreal Engine 3 level geometry file, used for map compilation.
.t3d Unreal text-based 3D scene format, used for exporting/importing level geometry.
.udk Unreal Development Kit map file, used in later versions of Unreal Engine 3.
.uplugin Unreal Engine plugin descriptor file, used for managing plugins.
.pak Unreal Engine package file, stores compressed game assets.
.int Localization file, used for storing internationalized text.
.uproj Unreal Project file, stores game project information.
.log Log file generated by Unreal Engine for debugging purposes.
.dump Crash dump file, used for diagnosing engine crashes.
.tif/.tiff High-quality image format, sometimes used for textures.
.svg Scalable vector graphics, used for UI elements.
.ani Animation file, possibly used for animated textures or icons.
.pfm Performance data file, used for performance analysis.
.rc Resource script file, used for defining UI elements in Windows applications.
.res Compiled resource file, contains icons, menus, and other UI assets.
.manifest Application manifest file, used for specifying runtime dependencies.
.upk Unreal Package file containing assets like textures, models, and sounds.
.umap Unreal Engine 3 map file, used for storing level data.
.psa Unreal skeletal animation file. Stores bone animation data for characters and objects.
.psk Unreal skeletal mesh file. Stores 3D model data for characters and objects.
.abs Nvidia Apex Physx Destruction format
.fxa FaceFX facial animation format.
.fbx Autodesk FBX format, used for 3D model and animation imports.
.png Image format for textures and UI elements.
.psd Photoshop file, used for texture and material creation.
.wav Waveform audio file, commonly used for sound effects and voiceovers.
.mp4 Video file format, possibly used for cutscenes or in-game cinematics.
.bik Bink video file, a common format for in-game cinematics in Unreal Engine 3.
.tga Targa image format, often used for high-quality textures.
.bmp Bitmap image format, sometimes used for textures.
.dds DirectDraw Surface format, optimized for GPU texture storage.
.jpg/.jpeg Compressed image format, used for textures and UI elements.
.ogg Ogg Vorbis audio format, used for music and sound effects.
.mp3 Compressed audio format, sometimes used for music or voiceovers.
.usx Unreal Static Mesh Package, stores static 3D models.
.utx Unreal Texture Package, stores texture assets.
.uax Unreal Audio Package, contains sound effects and music.
.ukx Unreal Skeletal Mesh Package, contains rigged 3D models.
.unr Unreal Engine level file (older versions, might still be used in UE3).
.uc UnrealScript source file, used for game logic and programming.
.u Compiled UnrealScript file, used to execute game logic.
.swf Adobe Flash file, potentially used for UI or animated textures.
.sfk Sony Sound Forge peak file, possibly used for audio editing metadata.
.ini Configuration file, used for game settings and parameters.
.txt Plain text file, could store logs, readme files, or metadata.
.csv Comma-separated values file, used for data storage such as localization or statistics.
.json JavaScript Object Notation file, used for storing structured data.
.xml Extensible Markup Language file, often used for config or data files.
.bin Binary file, may store compiled data or game assets.
.pak Unreal Engine package file, used to store compressed game assets.
.iso Disk image file, possibly used for distribution or backups.
.zip/.rar Compressed archive files, used for packaging game files or mods.

🔧 Azure Bitbucket-MPC + Crawl4AI RAG Integration

📦 Architecture

+-----------------------------------------------------+
|                 Azure Infrastructure                |
|                                                     |
|  +--------------+   +------------------+            |
|  | Bitbucket VM |   | Jira VM          |            |
|  | Docker, Git  |   | Docker, Tickets  |            |
|  | Git LFS      |   | Agile Workflows  |            |
|  +--------------+   +------------------+            |
|       ↘                  ↙                         |
|   Azure PostgreSQL (pgvector enabled)              |
|       ↙                  ↘                         |
| +------------------------------------------------+ |
| | Bitbucket-MPC + RAG Layer                      | |
| | - Connects to Bitbucket/Jira APIs              | |
| | - Stores metadata, embeddings in PostgreSQL    | |
| | - Uses Crawl4AI RAG MCP Server (Docker)        | |
| | - Optional local LLM via Ollama                | |
| +------------------------------------------------+ |
|         ↘                          ↙              |
|  Dockerized MCP Server          Supabase Schema   |
+-----------------------------------------------------+
  

🧩 Crawl4AI RAG Integration

🛠 Terraform (Azure)

module "mcp_rag" {
  source = "./modules/container-app"
  name   = "mcp-rag"
  image  = "youracr.azurecr.io/mcp-rag:latest"

  env = {
    OPENAI_API_KEY         = var.openai_key
    SUPABASE_URL           = var.supabase_url
    SUPABASE_SERVICE_KEY   = var.supabase_key
    HOST                   = "0.0.0.0"
    PORT                   = "8051"
    TRANSPORT              = "sse"
  }

  ports = [8051]
}
  

🐳 Docker Build & Push to Azure

# Clone the repo
git clone https://github.com/coleam00/mcp-crawl4ai-rag.git
cd mcp-crawl4ai-rag

# Build Docker image
docker build -t youracr.azurecr.io/mcp-rag:latest .

# Login & push to ACR
az acr login --name youracr
docker push youracr.azurecr.io/mcp-rag:latest
  

📂 PostgreSQL Schema (Supabase-Compatible)

# Connect to Azure PostgreSQL and run:
psql "host=your-db.postgres.database.azure.com user=admin dbname=supabase" -f crawled_pages.sql
  

📋 .env Configuration

HOST=0.0.0.0
PORT=8051
TRANSPORT=sse
OPENAI_API_KEY=your_openai_key
SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_KEY=your_supabase_service_key
  

💡 Sample Query

import requests

res = requests.post("http://mcp-rag-server:8051/perform_rag_query", json={
  "query": "Which PR added PlayExplosionEffect()?",
  "filters": { "source": "bitbucket" }
})

print(res.json())
  

🚀 AI + RAG Use Cases

Cost Summary for Bitbucket, Jira, PostgreSQL Setup with RAG Integration

Resource Details Cost (Approx.)
Bitbucket VM Ubuntu 22.04 LTS, 4 vCPUs, 16GB RAM, 1TB SSD, Ports 7990, 7999, 22 $120/month
Jira VM Ubuntu 22.04 LTS, 4 vCPUs, 16GB RAM, 500GB SSD, Ports 8080, 22 $100/month
PostgreSQL Managed DB 2 vCPUs, 8GB RAM, 128GB SSD, Port 5432 $60/month
Data Transfer (5GB/month) Bandwidth charges for data transfer between services $10/month
Storage (Backups, etc.) Additional storage for backups or data persistence $20/month
Crawl4AI RAG Integration Docker container for RAG queries, OpenAI API, and Supabase for storage $150/month
Acr (Azure Container Registry) For pushing and managing Docker images for RAG $30/month
Total Monthly Cost Bitbucket, Jira, PostgreSQL, RAG Integration, Data Transfer, and Storage $490/month

🔧 Crawl4AI RAG + UE3 Game Development

For a team working on an Unreal Engine 3 (UE3) game with Windows, Visual Studio 2008, and the UE3 source code, integrating the Crawl4AI RAG system you’ve outlined would significantly enhance their ability to efficiently search, trace, and extend the codebase. The core benefit would be facilitating a more intuitive way to access and search the source code, pull relevant data from commits and pull requests, trace ticket and code relationships, and even collaborate on improving the game’s knowledge base.

1. Integration of Crawl4AI RAG with UE3 Codebase

System Setup:

2. Workflow with Crawl4AI RAG in the Context of UE3 Development

A) Knowledge Base Creation & Expansion:

B) Searching for Information:

C) Trace Code and Tickets Across Systems:

D) Handling UnrealScript & C++ Codebase:

E) Team Collaboration and Offline Syncing:

F) Example Scenario in UE3 Development:

3. Summary of the Workflow

Final Thoughts:

By integrating the Crawl4AI RAG system with the UE3 source code, Bitbucket, and Jira, you will streamline the development workflow, making it easier for your team to track changes, search the codebase, and collaborate on fixing bugs and adding new features. Developers will spend less time searching through the code and tickets manually, and more time actually coding and improving the game. The added benefit of offline syncing and versioning will allow your team to work seamlessly even when working in different locations or environments.

Would you like help with specific technical details or steps to implement this system?