How to install your own git server?
Because i use jigsaw for this blog, i want to share with you how i setup the deployment of my blog.
The problem with the static site is, we does not have an editor that we can use on the fly. Like wordpress for example they have admin dashboard we can compose out blog post from the admin and click button publish when we are ready.
Using git for static site is perfect and i think it is really easy. So this is the step by step how i setup git server for this blog. Server
This blog post i post to my $5 private server on vultr. And i have full control over my server. So this is how i setup my application.
Git
The first one will always to install a git. By the way i use ubuntu on my server.
sudo apt install git
Add git user
And then next add new git user on my server.
sudo adduser git
And then create ssh folder.
su git
cd
mkdir .ssh
touch .ssh/authorized_keys
And then go to local computer and copy public ssh keys.
cat .ssh/id_rsa.pub
Then paste into the .ssh/authorized_keys
.
And now let's verify if the configuration was running successfully.
ssh git@ahmadrosid.com
Create Repository
Now we already completed server configuration let's create the repository.
mkdir blog.git
cd blog.git
git init --bare
And one more thing we need to create hooks to extract the file from the git repository in our server. Save into hooks/post-receive.
#!/bin/sh
git --work-tree=/var/www/blog --git-dir=/home/git/blog.git checkout -f master
And make it executable.
chmod +x hooks/post-receive
Add remote deploy to local.
git remote add deploy git@ahmadrosid.com:/home/git/blog.git
And then just push the code.
git push deploy
Nginx Configuration
One last thing we need to config static server configuration. The config it's really simple. Just create file /etc/nginx/config/blog.conf
.
And the config is look like this.
server {
listen 80;
server_name ahmadrosid.com;
root /var/www/blog/public;
index index.html;
}
And then activate the server.
sudo nginx -s reload
Make it https
And this is also important don't forget to make it secure with ssl. Luckily it so easy to install ssl to nginx server.
Let's install certbot.
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx -y
And then install the ssl.
sudo certbot --nginx -d ahmadrosid.com
This is will need you to add your email and agreement. After that we are done.