This guide helps you deploy Bitbucket and Jira on Azure using Docker, with a shared PostgreSQL database.
Create an Azure Resource Group and provision two virtual machines:
7990, 7999, 22, 80.8080, 22, 80.5432, 22, 80.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;
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
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:
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:
cd /opt/atlassian
docker-compose up -d
✅ Bitbucket → http://your-azure-ip:7990
✅ Jira → http://your-azure-ip:8080
Ensure that only trusted IPs can access your services by configuring firewall rules.
Go to the web interface and complete the setup:
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! 🎯
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
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.
| 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 |
| 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).
Run these steps on each VM (Bitbucket & Jira):
sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginx
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
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".
Check if SSL works by visiting:
Set up auto-renewal:
sudo systemctl enable certbot.timer
Your Bitbucket and Jira instances are now securely accessible over HTTPS with a domain. 🎉
| 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 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 | +-----------------------------------------------------+
perform_rag_query() to answer semantic queries
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]
}
# 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
# Connect to Azure PostgreSQL and run: psql "host=your-db.postgres.database.azure.com user=admin dbname=supabase" -f crawled_pages.sql
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
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())
| 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 |
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.
PlayExplosionEffect() defined and used?").
AIBehavior class?"RenderEngine.cpp?"#123?"PlayExplosionEffect().PlayExplosionEffect() defined?"AIBehavior class referenced in the project?"AIBehavior class and wants to know
where the class is used throughout the codebase. They ask the system:
AIBehavior used in the codebase?"PlayExplosionEffect() function. They
ask:
PlayExplosionEffect() introduced?"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?