umgeher's changelog

OpenBSD - client OpenVPN

OpenVPN is a free and open-source virtual private network (VPN).


Let’s install the openvpn client.

pkg_add openvpn


Config file

Assuming that you have an openvpn settings file, calling here as setup.ovpn.

cat setup.ovpn

proto tcp-client
remote 1194
dev tun
resolv-retry infinite
remote-cert-tls server
verify-x509-name server_lBklUYL2BA98l9B3 name
auth SHA256
cipher AES-128-GCM
tls-version-min 1.2
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
# 2048 bit OpenVPN static key
-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN Static key V1-----


Let’s create a directory to ours opvn files, as root:

mkdir -p /etc/openvpn

Store your opvn files in /etc/openvpn.


To connect use:

/usr/local/sbin/openvpn --config /etc/openvpn/setup.ovpn

If you need to provide a password, use --askpass flag.

/usr/local/sbin/openvpn --askpass --config /etc/openvpn/setup.ovpn


Create a hostname file to your new network interface.

touch /etc/hostname.tun0

Edit the hostname.tun0 file.

!/usr/local/sbin/openvpn --daemon --config /etc/openvpn/setup.ovpn

Now you can setup your interface.

ifconfig tun0 up

git - how?


Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

“Talk is cheap. Show me the code.”

– Linus Torvalds


On 3 April 2005, Linus Torvalds began the development of git, after many Linux kernel developers gave up access to BitKeeper. Just 3 days after, on 6 April, Torvalds announced the project. And the next day, it became self-hosting.

On 26 July 2005, Linus Torvalds turned over git’s project maintenance to Junio Hamano. Hamano is the project’s core maintainer since.


The basic/usual git workflow is the following:

  • Create/clone a git repository, all your work is done in this Working Directory.
  • Once your work reaches your goal, your changes are added to the Staging Area.
  • Now your Staging Area contains everything you want to commit, you can save changes to the git repository.


working directorycreate, edit and delete files
staging areachanges that you made in working directory
git repositorywhere all changes are storaged


Before you use git, you need to setup your name and email.

Setting up name and email

git config --global "Liz Umgeher"
git config --global ""

Create a repository

git init

Clone a repository

git clone [url/path]

Add a file

git add file

Remove a file

git rm file

Checking status

git status

Commit changes

git commit 

Resume: basic commands

git addadd files to the staging area
git diffshow the difference between the working directory and the staging area
git initcreate a repository
git logdisplay a list of all previus commits
git statusshow contents of the staging area

sfeed-news v1.1.0


  • using $BROWSER env variable
  • news is reading $1 argument as a filter, example: news "r\/openbsd"
git clone



Years using newsboat without any issue at all, but in the past two OpenBSD’s releases I saw some errors and ui lag. I want something fast and simple and I found! Sfeed!

Sfeed is an Atom/RSS parser. Has a simple (but useful) TUI1, a fetch solution to update yours feeds and a group of data transformation utils. You can choose your output as HTML, plain text, gopher, mbox and others.

The Sfeed’s webpage has an useful example to integrate it to dmenu.


You need to populate your feed’s urls in sfeedrc file, so create the sfeed’s directory in yours $HOME.

mkdir -p ~/.sfeed

Create the sfeedrc in that directory. You can use my sfeedrc as example:

feeds() {
    feed "xkcd" "" ""
    feed "unixporn" ""
    feed "openbsd" ""
    feed "plan9" ""
    feed "monero" ""
    feed "erlang" ""
    feed "luke's videos" ""
    feed "luke's blog" ""
    feed "drew devault" ""
    feed "lucas moreira" ""
    feed "solene" ""
    feed "christine" ""
    feed "openbsd zine" ""

In a nutshell, it’s a function called feeds, in this function you need to set each feed as:

feed <name> <feedurl>

Where and are the feed’s name and rss/atom url respectively.

Now you can run sfeed_update in your shell. And done, you have yours feeds downloaded and ready to read.

Want to use the curse solution? Sure, just type:

sfeed_curses ~/.sfeed/feeds/*

Maybe, you want to try the sfeed’s official example:

url=$(sfeed_plain "$HOME/.sfeed/feeds/"* | dmenu -l 35 -i | \
	sed -n 's@^.* \([a-zA-Z]*://\)\(.*\)$@\1\2@p')
test -n "${url}" && $BROWSER "${url}"

Or if you want to use in my way…


I created two small scripts to manage what I already read and what is unread yet.

You can clone the repository with:

git clone

There are two scripts in that repository, news and news-update. I use news-update to update my feeds and news to show them. Ah, I use rofi, not dmenu.

Here a screen-shot of the final result:

sfeed and rofi

  1. TUI: text-based user interface ↩︎

quote: Hayao Miyazaki - Talented people

“Talented people are always in short supply. We are forced to create our work with insufficient resources, and that weakness becomes our very strength”

-— Hayao Miyazaki