ahriman 3 years ago
commit 0381bce358
  1. 2
  2. 23
  3. 5
  4. 5
  5. BIN
  6. 6
  7. 15
  8. 67
  9. 43
  10. 63
  11. 81
  12. 76
  13. 72
  14. 112
  15. 36

.gitignore vendored

@ -0,0 +1,2 @@

@ -0,0 +1,23 @@
# wiki.tilde.institute
This repository holds the wiki data for tilde.institute
To contribute:
* Fork the repository
* Create a branch with an appropriate name:
* `git checkout -b mycoolpage`
* Add your page in the `pages/` directory
* Submit a PR
Don't forget to wrap lines at approximately 75 columns. If
you need to, use `fmt -w 75`. For example:
$ fmt -w 75 mypage.md | tee mypage.md
Then afterwards, check the page to fix anything that got
## Software
The wiki engine being used is [TildeWiki](https://github.com/gbmor/tildewiki), developed by ahriman

@ -0,0 +1,5 @@
# 404
## Not the area code
## I mean I can't find that :(

@ -0,0 +1,5 @@
# 500
## Oh noez
## Something went wrong!

Binary file not shown.


Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1,6 @@
body {
max-width: 38rem;
padding: 1.5rem;
margin: auto;
background-color: #b3b3cc;

@ -0,0 +1,15 @@
# ~institute wiki
Welcome to the [tilde.institute](https://tilde.institute) wiki!
If you are new here, you may want to check out the [IRC](/w/irc) page. Or, if you know your way around and want to contribute to the wiki, open a PR! tilde.institute uses [tildegit](https://tildegit.org) for all site-related version control.
Repository: [tildegit.org/institute/wiki](https://tildegit.org/institute/wiki)
### Pages
<br />
<br />
<br />
<span style="font-size: 0.9em">Powered by [tildewiki](https://github.com/gbmor/tildewiki)</span>

@ -0,0 +1,67 @@
author: ahriman
title: BCHS Guide
description: Introduction to the BCHS stack for web development
date: 2019-04-24
# BCHS Guide
This will be a quick-and-dirty guide to getting started with the BCHS
stack. More information can be found at:
* [Learn BCHS](https://learnbchs.org)
* [pledge(2)](http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/pledge.2)
* [unveil(2)](http://man.openbsd.org/unveil.2)
* [kcgi](https://kristaps.bsd.lv/kcgi/)
* [ksql](https://kristaps.bsd.lv/ksql/)
* [kwebapp](https://kristaps.bsd.lv/kwebapp)
tilde.institute is set up to process all files with the `.cgi` extension
via `slowcgi(8)`. This allows for a multitude of possibilities -
any compiled language can be used to develop web applications on an
OpenBSD server. It's advised to use `C` because of the `pledge(2)` and
`unveil(2)` system calls available, which allow for restricting privileges
and restricted filesystem access, respectively.
Keep in mind that if you don't use the previously listed
`kcgi`/`ksql`/`kwebapp` libraries, you will need to work with HTTP's
eccentricities manually. For an example, [here's the Hello World
code](https://tilde.institute/helloworld.c) from the LearnBCHS
site. And [here it is running](https://tilde.institute/helloworld.cgi)
as compiled CGI here at tilde.institute.
Once you've written your software to be served via CGI, be sure to
statically link the executables. Sure, there's a larger file size, but
the benefits outweigh that in this case - there's no relying on what
I may or may not have installed on tilde.institute. For example:
$ cc -static -g -W -Wall -o app.cgi app.c
When you've completed compilation, make sure to set permissions properly
(755) and move it to the public folder in your home directory. `httpd(8)`
is set to use `index.html` as the index file, however this can be changed
to `index.cgi` or what-have-you by contacting the admins.
~institute user `xvetrd` has written a more detailed example on
`kcgi` than is provided on the library's site. It includes an
example `makefile` as well. The KCGI Starter archive is [available
here](https://tilde.institute/kcgi-starter.tar.gz). Simply
curl -O https://tilde.institute/kcgi-starter.tar.gz
it to your home directory here on ~institute,
$ tar xzf kcgi-starter.tar.gz
$ cd kcgi-starter
$ make
$ make install
to test the compilation. It installs to `~/public_html` with the proper
ownership and permissions. View the `index.c` source and the `makefile`
to see what goes on under the hood! Feel free to adapt it your own projects!

@ -0,0 +1,43 @@
title: Dungeon Crawl Stone Soup
author: ahriman
description: Connecting to the Tildeverse DCSS instance
# Dungeon Crawl Stone Soup
`dcss` is a fun roguelike game that is now available on a tildeverse server
for your enjoyment. There are two ways to play: via `WebTiles` for simple
2d graphics and via `ssh` for a more traditional ascii interface.
* CTVO: [https://crawl.tildeverse.org](https://crawl.tildeverse.org)
If you already have an account on tilde.institute, you can play via the
ascii interface by issuing the command `dcss`. This will automatically
connect to the server and present the login/registration menu.
Some users prefer graphics. For `WebTiles`, it will be necessary to go to
[https://crawl.tildeverse.org](https://crawl.tildeverse.org). Click `PLAY`
to open the `WebTiles` interface.
## Recorded Games
All games on CTVO (the tildeverse crawl server) are recorded for later
playback. In order to review a previously recorded game, navigate to [the
ttyrec directory](https://crawl.tildeverse.org/ttyrec), select a username,
and download the `ttyrec` file. You'll need to have the `ttyrec` package
installed in order to review them. Issue: `ttyplay file.ttyrec` and watch
as your terminal automagically transforms into a recorded DCSS game.
`ttyplay` is installed on tilde.institute, so feel free to download a
game to your home directory and watch it from there.
## Morgue Files
Want to see the run-down of a game? Check out the `morgue`
file for it. They're sorted into username directories at:
Each `morgue` file contains information such as how you died, your stats,
an account of monsters vanquished, among other stuff.

@ -0,0 +1,63 @@
title: Finger
author: ahriman
description: Getting started with fingerd
# Finger
The finger protocol was created way back in 1977. its purpose was to
display information about the queried user of a system, or all the users
of a system.
It fell out of use in the 1990s due to various security concerns. the
old finger daemons were buggy and easily exploited, while the
information garnered from a query could be used for social engineering
attacks. nowadays, the finger daemons have been refined and are no longer
so vulnerable.
In the post-Facebook world, new types of social networks are
popping up. the latest in this movement is a resurgence of the finger
protocol. what follows is a rough guide for getting yourself up to speed
with finger on tilde.institute.
## Querying
The standard query for finger is simply
finger user@host
which displays login name, home directory, shell, real name, current login
time, idle time, whether or not the user has mail, and the contents of
the user's `~/.plan` file. Here is an example of the output:
Login: username Name: Bob Bobson XXII
Directory: /home/username Shell: /bin/bash
On since Wed Jan 2 04:04 (EST) on pts/94 from via mosh [6420]
8 minutes 26 seconds idle
Last login Wed Jan 2 04:33 (EST) on pts/91 from
No mail.
Plan: hey hey hey everybody!
## .plan
The `~/.plan` file displayed at the end of the finger query response
allows for some customization. You can put literally any text you want
there. Status updates, summaries, etc. This little file allows us to use
finger as a rudimentary social network.
For example, say you want to use it as a personal summary, like having
a blurb about what you're working on. Place the statement into `~/.plan`
and you're ready to go!
For a more traditional social network style format, put dated and timed
status updates as if you're tooting on a mastodon instance. The sky's
the limit! Well, actually, text is the limit. But you get the idea. Right?
Hope to see you on finger soon!

@ -0,0 +1,81 @@
title: Getting Started With Gopher
description: Using burrow to manage your gopher presence
author: tomasino
# Getting Started With Gopher
# Using `burrow`
To create a gopher hole on tilde.institute, a user can easily get started
by doing the following:
### Create the gopher directory
$ mkdir public_gopher
### Create a root gophermap
$ burrow gophermap
Gophernicus will interpret any text you add here as information lines unless they begin with one
of gophernicus' special characters or contains a tab. As a general rule,
don't use tabs unless you're intentionally linking something.
Add a cool header to the file (check out `figlet`!), then somewhere
near the top, paste:
==== Last Updated: February 19th, 2019 ====
The date doesn't matter, really. Whenever you "phlog" with `burrow`
it will update the date for you. How sweet is that?
Now lets add a link to your phlog that you're totally going to have:
That `[tab]` should be a literal tab, though. Make sure your editor
doesn't convert it to spaces. Now, save and quit the editor.
### Create a phlog directory
$ mkdir ~/public_gopher/phlog
### Now create a new phlog with burrow
$ burrow phlog
You'll be prompted for a title. If you hit enter and give no title then
burrow will abort.
Once you hit enter after giving your title a temporary file will open in
your default `$EDITOR`. Don't like that editor? Be sure to change your
environment var!
If you quit your phlog file without saving the post is aborted. If you save
and quit, it will create a new phlog entry, add it to your phlog gophermap
that now exists, and update the date on your root gophermap. That's it!
You have an RSS file sitting in the root of your gopher hole at
`rss.xml`. It will automatically generate when you phlog, like a
winner. You can edit your root `gophermap` at any time by using burrow's
`gophermap` action. If you create other folders and gophermaps in the
future you can use burrow's gophermap function to target them. For
instance, to open the phlog listings you would:
$ burrow gophermap /phlog
Editing gophermaps with `burrow` will ensure they're always
saved and formatted properly! Any other files are just text, so open them
directly with your editor of choice.
That's it! Happy gophering.

@ -0,0 +1,76 @@
title: GnuPG for SSH Authentication
Description: Using gpg-agent as an alternative to ssh-agent
author: ahriman
# Using GPG for SSH Authentication
It's a fairly simply process to have gpg-agent handle your SSH
authentication. To start off, you'll need to have a private GnuPG key
generated with an appropriate subkey for authentication. Once that's
taken care of, open up `~/.gnupg/gpg-agent.conf`
$ cat ~/.gnupg/gpg-agent.conf
default-cache-ttl 60
max-cache-ttl 120
Now you'll need to append the following to `~/.bashrc`, or the appropriate
rc file for your shell
$ cat ~/.bashrc
export GPG_TTY="$(tty)"
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpg-connect-agent updatestartuptty /bye > /dev/null
Once that's done, you'll need to let `gpg-agent` know which GnuPG subkey
to use for SSH authentication. Run the following and copy the keygrip
associated with the subkey you've generated specifically for authentication.
Don't use *my* keygrip, however. The output here is just for an example. `GnuPG`
computes the keygrips from the public key, so nothing here is sensitive
or private.
$ gpg --with-keygrip -k ben@gbmor.dev
pub rsa4096/0xEAB272409CD12FF0 2018-11-25 [SC]
Key fingerprint = 291A AFF7 A291 7DAB 0E01 6B9C EAB2 7240 9CD1 2FF0
Keygrip = DE06FAA273017BBD8778F94639611CEF53AB9EBC
uid [ultimate] Ben Morrison <ben@gbmor.dev>
sub rsa4096/0xF9C3B650612249D9 2018-11-25 [E]
Keygrip = 751ADAC109736316B6ABEBB3F2BDF4612F8A630C
sub rsa4096/0x4969E5731CFEB507 2018-11-25 [A]
Keygrip = 44D1BDC0C1931E2E018E7CE49CDE14BFB4EA11E3
sub rsa4096/0x8F192E4720BB0DAC 2018-11-25 [S]
Keygrip = 240966CBF2791D8C34D0DA646925435FED49F9BF
Now, open `~/.gnupg/sshcontrol` and paste the keygrip into that file.
It's the keygrip just below the key marked `[A]` for authentication.
Verify that the correct keygrip has been selected by running these two
and comparing the output:
$ ssh-add -L
KPCESGDyadvFAPDxtcTfOrxfqJLZx8CodkC7hzHT/QEy/xMgN18Q== cardno:000609861127
$ gpg --export-ssh-key <keyid>
KPCESGDyadvFAPDxtcTfOrxfqJLZx8CodkC7hzHT/QEy/xMgN18Q== openpgp:0x1CFEB507
The `ssh` output should match the `gpg` output (except maybe the little
trailing comment, like here). Also, I've removed most of the public key I'm using as
an example for brevity's sake. It should be quite a bit longer than this.
If `ssh` is correct, kill off `gpg-agent`
$ pkill gpg-agent
Then open up a new terminal and attempt to connect to a server!

@ -0,0 +1,72 @@
title: IRC
description: Introduction to our IRC network
author: ahriman
To connect to the [tildeverse IRC network](https://tilde.chat) and begin
chatting while logged on to tilde.institute, simply use the command
`chat`! If you prefer to use a different IRC client than the default,
such as `irssi`, the following server information will apply:
* institute.tilde.chat
* Port 6697
Don't forget to `/join #institute` and `/join #meta`
## Channels
There are quite a few channels on tilde.chat, however some have more
activity than others. Here's a few channels that you may be interested in.
* `#meta` - the general chat channel for all of the [tildeverse](https://tildeverse.org)
* `#institute`- for tilde.institute-related discussion
* `#tilderadio` - the channel for the [tildeverse radio station](https://tilderadio.org)
* `#cosmic` - discussions pertaining to [cosmic voyage](https://cosmic.voyage), a
`tilde` focusing on collaborative science fiction writing
* `#tildetel` - the channel for [tilde.tel](https://tilde.tel), the neighborhood SIP server
* `#security` - computer, software, and network security discussions
* `#uucp` - the [dataforge](https://uucp.dataforge.tk) UUCP-over-SSH project
* `#hamradio` - the channel for hams!
* `#cervezafria` - A place for our Spanish-speaking friends to relax
You can check the currently available channels any time by issuing `/list`
in your IRC client.
## Connecting Externally
Want to hang out on the tildeverse when you aren't connected to
tilde.institute? No problem! Just use these settings in your favorite
IRC client:
* irc.tilde.chat
* Port 6697
* TLS/SSL is required
The DNS round robin will connect you to one of the nodes in the network.
If you're using `weechat` the following will connect you:
/server add tilde irc.tilde.chat/6697 -ssl -autoconnect
/connect tilde
And if you're using `irssi`
/connect -tls -tls_verify irc.tilde.chat 6697
The tildeverse IRC network also runs an instance of `The Lounge`, a
web-based IRC client that allows you to stay connected even when you're
away. It's available at:
* [https://web.tilde.chat](https://web.tilde.chat)
Join us on the tildeverse IRC network and socialize with other tilde users!

@ -0,0 +1,112 @@
title: pass, the CLI Password Manager
author: erxeto
description: Usage guide for pass
# pass, the CLI Password Manager
`pass` is a command line utility to manage your passwords.
It creates a simple file/folder structure under your `$PASSWORD_STORE_DIR`
(by default `~/.password-store`) where every file is encrypted with your
gpg key.
You can organize that hierarchy as you see fit. For instance something like
`sites/tilde.news/myusername` is a common way of doing it.
Those files are not limited to contain simply a password, they can contain
anything. But is recommended that the password goes alone in the first
line, so you can benefit from the `-c` option which copies that to the
clipboard directly.
There is `bash`, `zsh` and `fish` command line completion available and
all can be tracked using `git`. So it's really convenient.
## Setup
This is simple, just one command (assuming you have your GnuPG key
ready). GPG-ID is the hex id of your key.
$ pass init GPG-ID
mkdir: created directory ‘/home/user/.password-store’
Password store initialized for GPG-ID
## Basic Usage
List all passwords "tree" style
$ pass Password Store
├── sites
│ ├── tilde.zone
│ │ ├── myUserName
│ │ ├── secondAccount ...
Find a password
$ pass find tilde.zone
Search Terms: tilde.zone
└── sites
└── tilde.zone
└── myUserName@tilde.zone
See the content of a file
$ pass email/tilde.institute/myAccount
Copy the first line to the clipboard. Clear time can be configured with
$ pass -c email/tilde.institute/myAccount
Copied email/tilde.institute/myAccount to clipboard.
Will clear in 45 seconds.
Insert a new password. It can be multiline with `-m`. Remember to put the
password on the first line if you want to use the clipboard function
$ pass insert sites/foo.com/blah
Enter password for sites/foo.com/blah:
Generate a 32 chars random password and store it. You can define the
default length with `$PASSWORD_STORE_GENERATED_LENGTH`. With `-n` the
password will not include symbols, but alphanumeric characters only. With
`-c` it gets copied to the clipboard as usual.
$ pass generate sites/foo.com/abcd 32
The generated password to sites/foo.com/abcd is:
take a look at the `--help` option or the complete documentation on
their website.
## Changing Keys
If you need to change the key being used for your password files,
simply navigate to the directory and re-issue `pass init`, but with
the ID of the new key to be used. Pass will prompt for the old key's
password, then automatically decrypt all keys and re-encrypt them
with the new key.
$ cd ~/.password-store
$ pass init NEWGPGKEYID
* [pass home page](https://passwordstore.org)

@ -0,0 +1,36 @@
title: UNIX ProTips
description: Handy tips for budding power users
author: xvetrd
# UNIX ProTips
I realized today I wasn't getting mail notifications, and I hadn't set
them up on this shell. So here are some things I do on my local machine
that work here:
To get the shell to tell you when you have new mail, after command
executions, add this to your `.profile` or your `.kshrc` files
(or other shell RC file) in your home directory.
export MAILCHECK=0
And, if you want, you can have a persistent notification when
you have un-incorporated mail, or more specifically, when your
`/var/mail/<username>` isn't empty.
PS1="\$([-s /var/mail/`whoami` ] && echo '* ')$PS1"
This works in `/bin/ksh`, I can't speak for other shells.
If anybody else has some quick tips they would like to share, I encorage
them to edit this page.
Happy Unixing!