# getwtxt  [![Go Report Card](https://goreportcard.com/badge/github.com/getwtxt/getwtxt)](https://goreportcard.com/report/github.com/getwtxt/getwtxt)  [![Build Status](https://travis-ci.com/getwtxt/getwtxt.svg?branch=master)](https://travis-ci.com/getwtxt/getwtxt)  ![GitHub last commit](https://img.shields.io/github/last-commit/getwtxt/getwtxt.svg?color=blue&logoColor=blue) twtxt registry written in Go! [twtxt](https://github.com/buckket/twtxt) is a decentralized microblogging platform "for hackers" based on text files. The user is "followed" and "mentioned" by referencing the URL to their `twtxt.txt` file and a nickname. Registries are designed to aggregate several users' statuses into a single location, facilitating the discovery of new users to follow and allowing the search of statuses for tags and key words.           \[ [Installation](#installation) \]     \[ [Configuration](#configuration) \]     \[ [Using the Registry](#using-the-registry) \]     \[ [Benchmarks](#benchmarks) \]     \[ [Other Documentation](#other-documentation) \]     \[ [Notes](#notes) \] ## Features * Easy to set up and maintain * Uses an in-memory cache to serve requests * Pushes to `LevelDB` at a configurable interval for data storage * Back-ends for other databases currently in development * Run directly facing the internet or behind `Caddy` / `nginx` A public instance is currently available: * [twtxt.tilde.institute](https://twtxt.tilde.institute) ## Installation While I've included macOS builds in Travis CI, I have only personally tested getwtxt on Linux, specifically: * `Debian 9, 10/Testing, Sid` * `Ubuntu Server 18.04LTS, 18.10, 19.04` Build dependencies are minimal, and only include: * `gnu make` * `go >= 1.11` `git` is not required if you download the sources via the [`Releases`](https://github.com/getwtxt/getwtxt/releases) tab Now, on with the directions. First, fetch the sources using `git` and jump into the directory. ``` $ git clone git://github.com/getwtxt/getwtxt.git ... $ cd getwtxt ``` Optionally, use the `go` tool to test and benchmark the files in `svc`. If you choose to run the tests, be sure to return to the main directory afterwards. ``` $ cd svc && go test -v -bench . -benchmem ... ... PASS $ cd .. ``` Use `make` to initiate the build and install process. ``` $ make ... $ sudo make install ``` ## Configuration \[ [Proxying](#proxying) \]   \[ [Starting getwtxt](#starting-getwtxt) \] To configure getwtxt, you'll first need to open `/usr/local/getwtxt/getwtxt.yml` in your favorite editor and modify any values necessary. There are comments in the file explaining each option. If you desire, you may additionally modify the template in `/usr/local/getwtxt/assets/tmpl/index.html` to customize the page users will see when they pull up your registry instance in a web browser. The values in the configuration file under `Instance:` are used to replace text `{{.Like This}}` in the template. ### Proxying Though getwtxt will run perfectly fine facing the internet directly, it does not understand virtual hosts, nor does it use TLS (yet). You'll probably want to proxy it behind `Caddy` or `nginx` for this reason. `Caddy` is ludicrously easy to set up, and automatically handles `TLS` certificates. Here's the config: ```caddyfile twtxt.example.com proxy / example.com:9001 ``` If you're using `nginx`, here's a skeleton config to get you started. Don't forget to change the 5 instances of `twtxt.example.com` to the (sub)domain you'll be using to access the registry, generate SSL/TLS certificates using `letsencrypt`, and change the port in `proxy_pass` to whichever port you specified when modifying the configuration file. Currently, it's set to the default port `9001` ```nginx server { server_name twtxt.example.com; listen [::]:443 ssl http2; listen 0.0.0.0:443 ssl http2;
Some apps written in SubX and Mu. Check out:

* `tile`: [An experimental live-updating postfix shell environment](https://mastodon.social/@akkartik/105108305362341204)
  that updates as you type. Prototype. Look at this to see what is currently
  possible, not how I recommend b