Self hosting part 3

 2020-08-31

Introduction

Hello, hello and welcome back to this series This was a long time in the works. A lot has happened. I guess I could say the three step plan is over! but at the same time this is the start of something a lot longer. At some point I might get a twitter to announce down times and such

Well what happened

To start with I automated the whole process of updating my public IP on cloudflare. This is mainly what delayed me like crazy. I first tried to use a "official" python API wrapper. its community maintained and the docs well to be real are why to complex and aimed at a different audience. Then I found this GitHub repo https://github.com/yulewang/cloudflare-api-v4-ddns when I found it. The script only supported ipv4 but it now supports IPv6. I wrote my own script to do the same in python. You can get it from pypi https://pypi.org/project/simple-cloudflare-ddns/.

Auto updating the blog

When I used netlify the blog would auto update and publish the blog. I wanted to recreate this in my setup. I began researching what I could do. I made a flask server that gets a key and runs a bunch of commands when it gets a post request.

from flask import Flask, request
import os
import threading

app = Flask(__name__)

def update_static():
source = "/home/nullrequest/myblog"
os.chdir(source)
os.system("git pull")
os.system("hugo --gc --minify -b https://nullrequest.com/")
os.system("echo 'finshed running thread'")

@app.route("/", methods=["GET", "POST"])
def update():
    if request.method == "GET":
        return "Your not supposed to be here"
    elif request.method == "POST":
        key = request.form["key"]
        if key == os.environ.get("key"):
            update_thread = threading.Thread(target=update_static)
            update_thread.start()
    return "Hello Octocat"

As you can see its pretty sleek. Using a web hook you can get GitHub to send you a update post request with any value to your server. Its pretty effective at replicating what happened in netlify setup except there they used git hubs API. Honestly if I wasn't so confused by docs I would have used the API.

With that I end the dev part of this series. I may add more stuff as time goes on. One thing for sure I am going to be writing is about why you should/shouldn't try this. For some people its really simpler to use a hosting provider due to the benefits they have.

— This is nullrequest signing off