projects / ekisde-dev

ekisde.dev

Live

My personal website, self-hosted on a Debian VPS. Projects, docs and files live here, managed from a private admin panel.

overview

ekisde.dev

Problem

I wanted a place to put what I build, and I wanted to run every part of it myself, from the design down to the server. A static site was fine until I got tired of editing files every time I added something.

Approach

So I moved it to Flask and SQLite and wrote a private admin panel for projects, docs and files. The admin has a markdown editor with a preview, which I use more than I expected. The public pages come in English and Spanish.

The look is dark and loosely based on NieR:Automata, done with CSS and JavaScript only. No video files.

The site runs under Gunicorn on my own VPS and reaches the internet through Cloudflare Tunnel. The same VPS also hosts my mail server: Postfix, Dovecot, OpenDKIM and Roundcube.

Releases go through deploy.sh, which does these steps in order:

  1. Contrast check on the text colours.
  2. Unit tests.
  3. git pull.
  4. Install the systemd units for the threat collector and the SSH tarpit.
  5. Update the database schema.
  6. Restart the site.
  7. Smoke test against the live site.

If a test fails, it stops before the restart, which is the point.

Results

It's live. Along with projects, docs and files there's a CV page and a threat weather page (/en/threats/) that shows attack attempts, with the IPs masked. I haven't measured anything on it yet, so I won't put a number here.

Stack

Python, Flask, SQLite, Gunicorn, HTML, CSS, JavaScript, Cloudflare Tunnel, systemd, Bash.