https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_b964594d3d957944241961017b9eb19bf02834de44cce93d8e67dd306852dbe346167181e455e33d5268ea01d973d77bb056848546f31794f31a4c31a9da5aa3.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_09f62869dbd00446535ebe8e270406331e6f0ae459deba58094caeadc22d58825ffc99f8c217b496ec112cbb1da8b662d77b0f52eae24cc5631f95695e40d87b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_e6b7e0bf68aa4a61d5c6a0065ec42e38a0cc53e39a4fbee057b72d4b2297b37c01e716e1e61bac7f240b5a0edbb178d37b62f7ed4ea4ea3d10e46dbe7429f326.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_bfff9e63e857e9ee612e292d4a6edf3ced64d6a756925c953a9d8f77845ff601eca64d73dfa48756b1a9f4a4d6de6127a273bcde16ddeb71a22383460f4e94b0.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f4dd7e1d73ae5eda35ed5ad6aa965b612dbf483ece3ca50c1e8e30ad8dff1c66a160ed75e958e2db399661d229874783e0834ad813a479437035666b8e9e3386.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4fce0769137d4cd096989b0349bc3c2bbfca79ac311fdf714c41ab24d87551c7b49b756c8a8de090b0714a0ad0560e49fa532ba5a88875ea4afd78efac464df6.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_85cec8b07d60426b11040e471babca0d2f9c8dc87a9b56e06cad39828f7f67179e29609100f282a574872c9a93fb635b25416300eb4c97bc5a653d00cf6f8dbf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_6768e5a27d4d357347338621c0d20bd269b126d30eec796193390f2f530fbaea60af84130c46f9786114be65149e661e87d55c339219c90aa76396d7e5b734ef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_2acd6bdff3b680341e8c727da5169a647123eb8fd0a90253161b4c3af272c15d293bf9bb217008bb13f84d1910b0e166798001f8603b6c026d5c20a76c41d47c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4826282b73c2908d216eb9e2afe00e360ecfe7a6e079f4cc297431588cf53053bfe0e29f5c2b51548ae3116af081dacea0e61229c698f06f6d02ec78c962d113.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_268c9bba6ba649318f0da28c37b09a9bbfa371210f9b6b52faa7fd8ae94abf6b3c3bfeb5df5705c93495ce1152ca58aeabc435d6c6c1bd959025165c3f50e086.js
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • Home
  • Featured
    • Advanced Python Topics
    • AWS Learning Roadmap
    • JWT Complete Guide
    • Git CheatSheet
  • Explore
    • Programming
    • Development
      • microservices
      • Front End
    • Database
    • DevOps
    • Productivity
    • Tutorial Series
      • C# LinQ Tutorials
      • PHP Tutorials
  • Dev Tools
    • JSON Formatter
    • Diff Checker
    • JWT Decoder
    • JWT Generator
    • Base64 Converter
    • Data Format Converter
    • QR Code Generator
    • Javascript Minifier
    • CSS Minifier
    • Text Analyzer
  • About
  • Contact
CodeSamplez.com

CodeSamplez.com

Programming And Development Resources

You are here: Home / DevOps / Self-Hosted Git Server: A Complete Guide

Self-Hosted Git Server: A Complete Guide

Updated May 15, 2025 by Rana Ahsan Leave a Comment ⏰ 11 minutes

Self Hosted Git Server

Services like GitHub and GitLab are fantastic, and already satisfies the need of most as git hosting service. And let me be clear from the start, setting up a self-hosted git server is not for beginners. However, if you have the right need to do so, it can give you TOTAL control over your code, your deployment process, and your infrastructure.

I had the opportunity to work on setting up an custom git based source control server in the past, that would let me push code and deploy it automatically. No complicated CI/CD pipelines, no third-party services, just Git doing what Git does best – managing code.

In this guide, I’ll walk you through the entire process of setting up a self-hosted Git server with automated deployment using Git hooks. Trust me, this will revolutionize your workflow, especially if your use case demands it!

What You’ll Learn

  • Setting up a rock-solid Git server on your own VPS
  • Configuring Git repositories for both development and production environments
  • Creating automated deployment workflows using Git hooks
  • Solving common permission issues that trip up most developers
  • Advanced techniques for managing multiple environments

Let’s dive in!

Prerequisites

Before we start, make sure you have:

  • A VPS running Ubuntu (We will be using Ubuntu 20.04 in this guide, but this should work on other versions too)
  • Basic knowledge of Linux commands
  • SSH access to your server
  • Basic understanding of Git

Part 1: Setting Up Your Self-Hosted Git Server

Installing Git on Your Server

First things first, let’s get Git installed on your server. SSH into your VPS and run:

sudo apt update
sudo apt install git

Nothing fancy here, just the standard Git installation. Once it’s installed, let’s verify:

git --version

You should see something like git version 2.25.1 or newer.

Creating a Git User

For security and organization, we’ll create a dedicated Git user:

sudo adduser git

Follow the prompts to create the user. This user will own all our Git repositories and handle all Git-related operations.

Setting Up SSH Keys for Authentication

Rather than using passwords, we’ll use SSH keys for authentication – it’s more secure and makes automation much easier.

  1. On your local machine, generate an SSH key pair if you don’t already have one:
ssh-keygen -t rsa -b 4096 -C "[email protected]"Code language: JavaScript (javascript)
  1. Copy your public key to the server:
ssh-copy-id git@your_server_ipCode language: CSS (css)
  1. Test the connection:
ssh git@your_server_ipCode language: CSS (css)

If everything’s set up correctly, you should be able to log in without a password.

Installing Gitolite for Repository Management

While it’s technically optional, I STRONGLY recommend installing Gitolite. It makes managing Git repositories and user access so much easier.

  1. Switch to the git user:
sudo su - git
  1. Clone the Gitolite repository:
git clone https://github.com/sitaramc/gitoliteCode language: PHP (php)
  1. Install Gitolite:
mkdir -p $HOME/bin
gitolite/install -to $HOME/binCode language: PHP (php)
  1. Create a public key for the gitolite admin:
mkdir -p $HOME/.ssh
touch $HOME/.ssh/authorized_keysCode language: PHP (php)
  1. From your local machine, copy your public key to the server (if you haven’t already):
scp ~/.ssh/id_rsa.pub git@your_server_ip:~/admin.pubCode language: JavaScript (javascript)
  1. Set up Gitolite with the admin key:
$HOME/bin/gitolite setup -pk admin.pubCode language: PHP (php)

Now, Gitolite is installed and configured with your key as the admin key.

Cloning the Gitolite Admin Repository

On your local machine, clone the gitolite-admin repository:

git clone git@your_server_ip:gitolite-adminCode language: PHP (php)

This repository is where you’ll manage repositories and users.

Part 2: Managing Repositories and Users

Creating a New Repository

To create a new repository, you’ll need to modify the gitolite configuration:

  1. Edit the gitolite-admin/conf/gitolite.conf file:
repo gitolite-admin
    RW+     =   admin

repo testing
    RW+     =   @all

# Add your new repository
repo myproject
    RW+     =   admin
    RW      =   developerCode language: PHP (php)
  1. Commit and push the changes:
cd gitolite-admin
git add conf/gitolite.conf
git commit -m "Added myproject repository"
git pushCode language: JavaScript (javascript)

Gitolite will automatically create the repository on the server.

Adding Users

To add a new user:

  1. Get their public SSH key and save it to gitolite-admin/keydir/username.pub
  2. Update the gitolite.conf file to give them access to repositories
  3. Commit and push the changes

For example:

# Add a new developer
repo myproject
    RW+     =   admin
    RW      =   developer @developersCode language: PHP (php)

And in gitolite-admin/keydir, add the new user’s public key as newuser.pub.

Part 3: Setting Up Multi-Environment Deployment with Git Hooks

This is where the magic happens. We’ll set up a single Git repository that deploys to both development and production environments based on the branch being pushed.

Creating the Deployment Directory Structure

  1. Create directories for your application:
sudo mkdir -p /var/www/dev/myproject
sudo mkdir -p /var/www/prod/myprojectCode language: JavaScript (javascript)
  1. Set the proper ownership:
sudo chown git:www-data /var/www/dev/myproject
sudo chown git:www-data /var/www/prod/myprojectCode language: JavaScript (javascript)
  1. Set the proper permissions:
sudo chmod 775 /var/www/dev/myproject
sudo chmod 775 /var/www/prod/myprojectCode language: JavaScript (javascript)

Creating the Post-Receive Hook

The post-receive hook is the secret sauce that makes automated deployment possible. When you push to your repository, this hook will automatically deploy your code to the right environment.

  1. Find the hooks directory in your repository:
cd /home/git/repositories/myproject.git/hooks
  1. Create a new file called post-receive:
sudo nano post-receive
  1. Add the following content:
#!/bin/bash
while read oldrev newrev ref
do
    branch=$(echo $ref | cut -d/ -f3)
    
    if [ "$branch" == "dev" ]; then
        echo "Deploying to development environment..."
        WORK_PATH="/var/www/dev/myproject"
    elif [ "$branch" == "master" ]; then
        echo "Deploying to production environment..."
        WORK_PATH="/var/www/prod/myproject"
    else
        echo "Not deploying branch $branch"
        exit 0
    fi
    
    <em># Check if work path exists</em>
    if [ ! -d "$WORK_PATH" ]; then
        echo "Creating $WORK_PATH..."
        mkdir -p $WORK_PATH
        cd $WORK_PATH
        git clone /home/git/repositories/myproject.git .
        git checkout $branch
    else
        cd $WORK_PATH
        unset GIT_DIR
        git reset --hard
        git checkout $branch
        git pull origin $branch
    fi
    
    <em># Run any additional deployment tasks</em>
    echo "Running deployment tasks..."
    <em># Example: composer install, npm install, etc.</em>
    <em># composer install --no-dev</em>
    <em># npm install --production</em>
    
    <em># Fix permissions</em>
    find $WORK_PATH -type f -exec chmod 664 {} \;
    find $WORK_PATH -type d -exec chmod 775 {} \;
    
    echo "Deployment of $branch completed!"
doneCode language: PHP (php)
  1. Make the hook executable:
sudo chmod +x post-receive

This hook will:

  • Identify which branch was pushed
  • Deploy to the correct environment based on the branch
  • Reset any local changes to ensure a clean deployment
  • Run any additional deployment tasks
  • Fix permissions to ensure your web server can read the files

Part 4: Solving Common Permission Issues

One of the trickiest parts of setting up automated deployment is dealing with permissions. Here are some approaches to solve common issues:

Method 1: Add Web Server User to Git Group

This is a clean approach that works well in most scenarios:

sudo usermod -aG git www-data

Then, make sure group permissions are properly set:

sudo chmod g+s /var/www/dev/myproject
sudo chmod g+s /var/www/prod/myprojectCode language: JavaScript (javascript)

This ensures new files inherit the group permissions.

Method 2: Run Web Server as Git User

If you have control over your web server configuration, you can run it as the git user:

For Nginx:

sudo nano /etc/nginx/nginx.conf

Change the user at the top:

user git;

For Apache:

sudo nano /etc/apache2/envvars

Change the following lines:

export APACHE_RUN_USER=git
export APACHE_RUN_GROUP=gitCode language: JavaScript (javascript)

Restart your web server after making these changes.

Method 3: Use ACLs for Fine-Grained Permissions

If you need more complex permission management:

sudo apt install acl
sudo setfacl -R -m u:git:rwX,u:www-data:rwX /var/www/dev/myproject
sudo setfacl -R -d -m u:git:rwX,u:www-data:rwX /var/www/dev/myprojectCode language: JavaScript (javascript)

This gives both users full access to the directory.

Part 5: Advanced Configuration and Optimization

Setting Up Branch-Specific Deployment Rules

You can extend the post-receive hook to handle more complex scenarios, like deploying specific branches to specific subdomains:

if [ "$branch" == "feature-x" ]; then
    echo "Deploying feature-x to its dedicated environment..."
    WORK_PATH="/var/www/features/feature-x"
fiCode language: PHP (php)

Implementing Deployment Notifications

Add notification functionality to your post-receive hook:

# Send deployment notification
notify() {
    local branch=$1
    local env=$2
    local message="Deployment of $branch to $env completed!"
    
    <em># Send email notification</em>
    echo "$message" | mail -s "Deployment Notification" [email protected]
    
    <em># Or send Slack notification</em>
    curl -X POST -H 'Content-type: application/json' \
    --data "{\"text\":\"$message\"}" \
    https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
}

# Call the function after deployment
notify $branch "production"Code language: PHP (php)

Setting Up Rollback Mechanism

Add a simple rollback capability:

# Create a rollback function
rollback() {
    local branch=$1
    local work_path=$2
    
    cd $work_path
    git reset --hard HEAD~1
    
    echo "Rolled back $branch to previous commit"
}

# You can call this function manually or add logic to trigger it automaticallyCode language: PHP (php)

Part 6: Securing Your Self-Hosted Git Server

Security is crucial when hosting your own Git server. Here are some essential steps:

Restricting SSH Access

Edit the SSH config to restrict git user access to Git commands only:

sudo nano /etc/ssh/sshd_config

Add the following lines:

Match User git
    ForceCommand /usr/bin/gitolite-shell
    PasswordAuthentication no
    AllowTcpForwarding no
    X11Forwarding no

Restart SSH:

sudo systemctl restart sshd

Setting Up Firewall Rules

Install and configure UFW (Uncomplicated Firewall):

sudo apt install ufw
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

Enabling HTTPS for Git Operations

For secure Git operations, set up HTTPS:

  1. Install Apache or Nginx
  2. Install Let’s Encrypt certificates
  3. Configure your web server to use HTTPS
  4. Update your Git remote URLs to use HTTPS

Part 7: Best Practices for Self-Hosted Git Servers

Regular Backups

Set up regular backups of your Git repositories:

# Create a backup script
sudo nano /usr/local/bin/backup-git.shCode language: PHP (php)

Add the following content:

#!/bin/bash
DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/var/backups/git/$DATE"

mkdir -p $BACKUP_DIR

# Backup repositories
tar -czf $BACKUP_DIR/git-repos.tar.gz /home/git/repositories

# Keep backups for 30 days
find /var/backups/git -type d -mtime +30 -exec rm -rf {} \;Code language: PHP (php)

Make it executable and add a cron job:

sudo chmod +x /usr/local/bin/backup-git.sh
sudo crontab -e

Add the following line:

0 2 * * * /usr/local/bin/backup-git.shCode language: JavaScript (javascript)

Monitoring Your Git Server

Install basic monitoring tools:

sudo apt install htop iotop

For more comprehensive monitoring, consider setting up Prometheus and Grafana.

Maintaining Your Git Server

Regular maintenance is essential:

# Update system packages
sudo apt update && sudo apt upgrade -y

# Clean up old Git objects
cd /home/git/repositories/myproject.git
git gc --aggressiveCode language: PHP (php)

Conclusion: The Power of Self-Hosted Git with Automated Deployment

Setting up a self-hosted Git server with automated deployment might seem like a lot of work at first, but the benefits are ENORMOUS. You get:

  1. Complete control over your code and infrastructure
  2. Automated deployment without depending on third-party services
  3. Custom workflows tailored to your specific needs
  4. Enhanced security with SSH key authentication
  5. Significant cost savings over paid Git hosting services

The ability to push code and have it automatically deployed to the right environment without any manual intervention is incredibly powerful. Taking control of your Git infrastructure gives you flexibility and power that’s hard to match with third-party services.

So, what use case you are trying to solve for with your own self-hosted Git server? Let me know in the comments.

Frequently Asked Questions

Can I use this setup with Windows servers?

While this guide focuses on Linux-based servers, you can adapt the concepts to Windows servers using Git for Windows and PowerShell scripts instead of bash.

Is self-hosting Git secure?

Yes, with proper configuration. The key is to use SSH keys for authentication, restrict access appropriately, and keep your server updated.

How do I handle database migrations during deployment?

You can add database migration commands to your post-receive hook, but be careful with production databases. Consider using a migration framework that supports versioning and rollbacks.

Can I use this approach with containers or Kubernetes?

Absolutely! The post-receive hook can trigger container builds and deployments. You’d modify the hook to build and deploy containers instead of directly updating files.

How do I scale this setup for larger teams?

For larger teams, consider adding more structure to your gitolite configuration, implementing code review processes, and potentially using additional tools like Gerrit or GitLab for merge request management.

Additional Resources:

  • Setting Up Git Server
  • Creating SSH Key pair

Share if liked!

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on Pinterest (Opens in new window) Pinterest
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to share on Tumblr (Opens in new window) Tumblr
  • Click to share on Pocket (Opens in new window) Pocket

You may also like


Discover more from CodeSamplez.com

Subscribe to get the latest posts sent to your email.

First Published On: August 24, 2014 Filed Under: DevOps Tagged With: deployment, git, server

About Rana Ahsan

Rana Ahsan is a seasoned software engineer and technology leader specialized in distributed systems and software architecture. With a Master’s in Software Engineering from Concordia University, his experience spans leading scalable architecture at Coursera and TopHat, contributing to open-source projects. This blog, CodeSamplez.com, showcases his passion for sharing practical insights on programming and distributed systems concepts and help educate others.
Github | X | LinkedIn

Reader Interactions

Leave a ReplyCancel reply

Primary Sidebar

  • Facebook
  • X
  • Pinterest
  • Tumblr

Subscribe via Email

Top Picks

python local environment setup

Python Local Development Environment: Complete Setup Guide

In-Depth JWT Tutorial Guide For Beginners

JSON Web Tokens (JWT): A Complete In-Depth Beginners Tutorial

The Ultimate Git Commands CheatSheet

Git Commands Cheatsheet: The Ultimate Git Reference

web development architecture case studies

Web Development Architecture Case Studies: Lessons From Titans

static website deployment s3 cloudfront

Host Static Website With AWS S3 And CloudFront – Step By Step

Featured Dev Tools

  • JSON Formatter
  • JWT Decoder

Recently Published

python file handling

Python File Handling: A Beginner’s Complete Guide

service worker best practices

Service Worker Best Practices: Security & Debugging Guide

advanced service worker features

Advanced Service Worker Features: Push Beyond the Basics

service worker framework integration

Service Workers in React: Framework Integration Guide

service worker caching strategies

Service Worker Caching Strategies: Performance & Offline Apps

Footer

Subscribe via Email

Follow Us

  • Facebook
  • X
  • Pinterest
  • Tumblr

Demos

  • Demo.CodeSamplez.com

Explore By Topics

Python | AWS | PHP | C# | Javascript

Copyright © 2025

https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_1db716fe91a7270905ce50f6674e41f09bd7558662c073ae4d67217006b2dd607e39c4d3de4adec05e6570b3baca3aa4282931893f7f3a23364c4803ca322f08.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_c402e38f1879c18090377fb6b73b15ac158be453ecda3a54456494fe8aba42b990c293bae5424e5643d52515ffc2067e0819995be8d07d5bba9107a96780775c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_ffc3511227531cc335353c54c3cbbaa11d0b80e5cb117478e144436c13cd05495b67af2e8950480ed54dbdabcdcef497c90fdb9814e88fe5978e1d56ce09f2cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_d57da9abfef16337e5bc44c4fc6488de258896ce8a4d42e1b53467f701a60ad499eb48d8ae790779e6b4b29bd016713138cd7ba352bce5724e2d3fe05d638b27.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_d286e50977f467ebee8fecdcb44e6a6b9a29f2b911dfe58b30ff4f0545aa2b19bca73246e23de9a6d2380bf20e6b8a001b5ba2051042d104c6d411b474fd3368.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_556272a5f9c5e1b26dcf93c48dd6c60d2107db888f97b70498f312c9052331e10005db30e1259f325d650689883af8e7250f282b512037503c7b7dcf03bef034.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_dccc492dbbfdac33d1411f9df909e849c7268fcf99b43007f278cde3a0adc0ae00e8cae5ec81cf255b9a6eae74e239ba1fa935572af77173219cb081f7d2327d.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_00bacf9e36181aac2b666d110cd9d82257f846766e7041b2d7b3c909b458982931ccc9b203e37098fbdfcf43ca359cf04e3824a724a6789fc204196d3a72ad29.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_c1c18b8baf8ed2aa84a8022e80b5422016646101cc3549c023473f24ad731189d3f4e279527a58a60bef61e6f749d51f280c52a82dfdab5075e6bc20bf21b240.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_68b6d1949e90b6a37c5195ae17874e7c2455352144f28a76be0f68f7a941e6d664fa3c931485f2c5463521acdac05ff6642f0c94fa557a087caa9478d162f085.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_bb8058a9e234a7ffaa98891b1df7f6b8e67410e6984568b151daa05113b8c7f89d7b5918ae73f020998a16f7f5a087a13d6a9a5e5d7c301e2ca12fd9d1f8d177.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_647fb67570c6108fb10ae6785a1abdbecac99ffcf80351d0bef17c3cf783dce497b1895fcdaae997dacc72c359fbfb128cc1540dd7df56deb4961e1cd4b22636.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f7a298a0f1f754623fe3b30f6910ce2c1373f715450750bd7a391571812b00df1917e2be90df6c4efc54dbdfda8616278a574dea02ba2c7a31992768df8db334.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_df30604d5842ef29888c3c1881220dc6d3f8854666d94f0680c5f38aa643c5fb79b10eb9f10998d8856eb24ca265783195937434fd6c2bb8e4846df0277a7fb7.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f17fe6fb0993f1703181d7ae9e9ea570f3d33a43afd6f2a4567daa1a6745698c7b8193dc72d50991d2dd87cd3dcf663959206607d193a9b57926d061a1f50aef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_945dcbab2c2a131f3c90f4fb91776b76066d589f84fb55bff25cd5d79a56218000616bfca1f0af9a74f32348693707af49e8fe624de8aa34f1e1c5b6a25709cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_65820d252e1b93596de6697fd5f02483f3e2524a0696c7d698b64745edb32bf5831a90e556842f5f88c8209766cc78ca3a41cf783d20236a9f90d4a7ea7b3e72.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_7286884797a1210857e2a36f8ab46604b0034b6abf512380447a5763c873db6a72b8547f660053de0ea69faef1eb64878f39ff4b0ea86c963efab95764a3bf5b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_cbcf6c279ac6c6a25ae138bf964e64a5fd90d22dcdf8a53b6fe7b72cefa51063bfb0181a6e50dd2acdcae2795619887d1d83b10461e44e5103be756f2588d837.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_47965bc586b95810c925b9df3314e0c9a5cd121e70ca0831f87df0bc034695de4f83ecf2def86f737e14614ee138794473cf32cd3082a5d38db9dec0c1f266fa.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_12aa201cea075846d266536aa222d64d4088b851d87f55dac5e611b77add6826c8ebc6e82650fcd1a9e88a05a0072dedd195719c5f64cd4580a0acd8aee05d92.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_80a4a4c808f46b20177fec8ee1a931010e5d14047c467a7f976cb5b2529b569eeb61558804f2f1a2d2a2347a1e2041500c1b275b1b4c31bbb4b36d8b4183b2b6.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4d628446c1f32717e42bd9fc66856d6e8de0d8e35b1e48085f3afa1b79b5e1bcb958fb342eea411fc366debe334ff2c5425ec8b1523aa29244ae54b7300afb92.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_d87ea86dd0e7ecdd5fe7a5bb67becf943e57c3add866b456034d51663d099031bd563e12f61fdccc044969adf938a8584ed22ccd401ab8b669e20e4f92fb54e8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_35311c3d71a3605fad4e1d6b50f3911311cdcc46418bdf56d6d0308a75a69585269ee7582a335e29989adf308fa1a81a10a2c2d4e257e9d680447a4996f6269e.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f4fc182ef03c12e9dcadd6febc3dbaa4a29134469057ca9e8ec0be2f2de29a494514ff4b59798e74debf26f78b2df2b3e2665c69b77035761fb463b783202915.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_85c0f2769456e60153b0fd8364b82a035da53384f62de342d9bdca806f3f1ea56486919a00497a18d457949c82bf8bfacc4423fc332074ddf71a49a8fe628fff.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_1b7e49e98f5960d71636812e807832cc98a24f48bc493652ddb2f9c4ce08bc89a8fd5d9550a8e2887d1d8887ce02924a878361c296d21ceba18a56f3ace130bd.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_09eecfdd96206ed13830b4b93cfb2cc75cd38083671a34194437b5734b5bb38712209dc335b07e3266ceb3c3a44a155b9bbe5f3e0e1105b19dd45d3def76f020.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4c089fbdb88e3b624a6f884d3ba1bf606f003bfcd3742376d0d353cd62181dc663aa3811a56361c3100de488fc4d6595a50de2b26f058921ba74f5f2c1b5be00.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_897ff6ac314c5f5e0f496c6af624bd9abf296a02cb5aeb850b9220b6dc3ce2fc4004cb02ed8b59d59d4b9c9d90f050d6eebc1d08ecaebab2f671f7d9367e6410.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_67d1e619e71d36ae00ddcf85ee18628bb4eb64fcb3d6119b463e75cb987013420a21136d19cd03e6634ccc01cfa9af4a357930e4cf6900953b7812efb4f249fb.js