Skip to content

horkruxes/hkxserver

Repository files navigation

HORKRUXES

A decentralized social network based on a distributed authentication system.

Installation

Unlike Mastodont, the horkrux installation on a linux server is DEAD SIMPLE.

Basic installation, 30s chrono

mkdir horkruxes && cd horkruxes
wget https://github.com/horkruxes/hkxserver/releases/latest/download/hkxserver_linux_amd64.tar.gz
tar -xzvf horkruxes_linux_amd64.tar.gz #insert version or use auto-completion
./horkruxes version
./horkruxes

HTTPS with nginx installed

Copy this to /etc/nginx/sites-available/horkruxes

server {
    server_name your.server.name; # Use your domain name
    location / {
        proxy_pass http://localhost:80; # You can change the port in hkxconfig.toml
    }
}

Then run

sudo ln -s /etc/nginx/sites-available/horkruxes /etc/nginx/sites-enabled/horkruxes
sudo systemctl restart nginx
sudo certbot --nginx #For HTTPS

And that's all folks

What is signed ?

A list of bytes generated from strings with different encodings, in this order:

  • The message (utf-8)
  • The public key (base64)
  • The Displayed Name (utf-8)

Development

I like to use air to run my projects.

go generate ./... # Generates Tailwind styles
go run . # Or use `air`

Project structure

  • /api: the API routes and definitions
  • /client: a Golang client for Horkruxes. This is the base for the web client and the cli, and must not depend on service.Service (stateless)
  • /docs: Swagger generated documentation
  • /exceptions: explicit
  • /model: models, independant from anything
  • /query: database-related operations given a provided service.Service
  • /service: contain some server state (db and server config)
  • /static: static resources for the web client
  • /templates: templates for the web client
  • /views: web client (mostly Go SSR)