• Distributions updated: Fedora 29 and Arch Linux netboot installer

    Tue, 13 Nov 2018 10:00:00 -0800 - Chris Brannon

    We made two new additions to our distribution images and netboot installers:

    • Fedora 29
    • Arch Linux 2018.11.01 (netboot installer only, HVM only)

    Several years ago, we tried adding an Arch Linux netboot installer. At the time it started sshd on boot and allowed root login without a password. A test VPS running the installer was compromised and starting sending spam. After this incident we removed the Arch netboot installer.

    Arch has since fixed their install media. It does not start sshd by default at boot, and if sshd is started manually while the installer is booted, root login is not allowed until root sets a password.

    We really appreciate Arch Linux for taking these steps. In addition to the netboot installer, a pre-built image that can be automatically installed is also in the works. We’ll post an update when it is done.

    We are not deploying these to our legacy systems, so if you are on a legacy system (one whose management console lacks the “install new OS image” option) please write support@ to have your VPS moved.

  • Running a Gopher Server in 2018

    Fri, 09 Nov 2018 07:00:00 -0800 - Paul Scott

    If you read the History of Gopher then you might want to make your own server. The process isn’t complicated, thanks to an application called Pygopherd. You will need a Linux machine or virtual machine (this article uses Ubuntu) with Python installed (default on most modern distros). There are just a few steps to follow.

    Step 1: Make sure that pygopherd is in your repositories.

    $ apt-cache search pygopherd

    Step 2: Install pygopherd

    $ sudo apt-get install pygopherd

    Step 3: Configure pygopherd

    Open /etc/pygopherd/pygopherd.conf in your favorite editor. The config file is well-commented and mostly self-explanatory. The most critical change is the name of your server, which allows a gopher client to find your server. In your text editor find “servername” and configure:

    servername = <IP or Domain>

    Your IP address is available in /etc/network/interfaces.

    Step 4: Set up the server

    Stop, start, and restart your gopher server

    Your gopher server is up by default. Start/stop/restart the service using:

    $ sudo /etc/init.d/pygopherd start
    $ sudo /etc/init.d/pygopherd stop
    $ sudo /etc/init.d/pygopherd restart

    Change your default gopher directory

    By default, the directory where your gopher-related files are stored is /var/gopher. To change this directory open up pygopherd.config and edit the setting root=/var/gopher (located around line 120 in the config file) to your desired directory. Don’t forget to add a gophermap to the new directory. (For more about gophermaps, see next.)

    Step 5: Configure the gophermap and Add Content

    Your gophermap is an index for each folder in your gopherhole.

    Technically, a folder doesn’t need a gophermap. However the gophermap file can be quite useful. It gives you more control over the structure of your gopherhole, lets you add links and text to your pages.

    With a gophermap your server will appear as a list of files and links, with comments and other information that you might choose to add. Without the gophermap your server will appear as a raw list of files and folders, navigable in a gopher client but with less information for your users.

    If you choose NOT to use a gophermap then you must delete the default gophermap file. A gopher client will look for the gophermap by default and if it’s there then it will override the other content in your folder. If you do use a gophermap then you will have to update it every time you add or delete content from the folder.

    Gophermap file syntax

    In a Gopher menu’s source code, a one-character code indicates what kind of content the client should expect. This code may either be a digit or a letter of the alphabet; letters are case-sensitive.

    RFC 1436, the Gopher technical spec, defines 14 item types. Type 3 is an error code for exception handling. Gopher client authors improvised item types h (HTML), i (informational message), and s (sound file) after the publication of RFC 1436.

    Canonical Types  
    0 Text File
    1 Gopher submenu or link to another gopher server
    2 CCSO Nameserver
    3 Error code returned by a Gopher server to indicate failure
    4 BinHex-encoded file (primarily for Macintosh computers)
    5 DOS file
    6 uuencoded file
    7 Gopher full-text search
    8 Telnet
    9 Binary file
    + Mirror or alternate server (for load balancing or in case of primary server downtime)
    g GIF file
    I Image file
    T Telnet 3270
    Non-Canonical Types  
    h HTML file
    i Informational message
    s Sound file

    To set up a very basic gopherhole, you need only three item types: i (informational message), 1 (link or subdirectory), and 0 (text file). Edit the gophermap file at


    A gophermap is formatted as a set of lines, one for each item, using tab-delimited fields with the following syntax:

    T The item type code (e.g. 1, 0, i)
    label A human-readable label for this item (e.g. Books, Movies)
    path The relative path to the target file
    host The hostname of the target gopher server
    port The port that the gopher server is listening on (usually 70)
    A literal tab character (ASCII character 9)

    Note that there is no space or tab between the item type and the label.

    You can omit the host and port fields if your items are on the same server as the gophermap. You can omit everything but the item type and label for informational items.

    So suppose you use the default setup of /var/gopher as your home folder for content and your main gophermap. In that folder you have the gophermap; an “AboutMe” file and three subfolders for a blog, movie reviews and vacation photos.

    The main gophermap might look like this, with informational items to explain each folder.

    		iWelcome to my Gopherhole!
    		0A little bit about me.<tab>about.txt
    		iHere's my Blog, "The Technical Technical Writer".
    		iReviews of some of my favorite movies.
    		iPics from my vacation in San Diego
    		1Vacation Photos<tab>vacation

    Each of the subfolders (blog, movies, and vacation) will have its own gophermap. The blog and movie reviews will be text files (item type 0), while the vacation photos will be image files (item type I).

    Add content

    This is the simplest part of setting up your gopherhole. To add content just add files and folders to your gopher home folder and/or subfolders. Update your gophermaps (if you have them) and you’re off!

  • Distributions updated

    Mon, 29 Oct 2018 09:30:00 -0700 - Chris Brannon

    We have updated our distribution images and netboot installers with some new releases.

    • NixOS 18.09 (netboot installer, HVM only)
    • OpenBSD 6.4 (netboot installer, HVM only)
    • Ubuntu 18.10 AKA “Cosmic Cuttlefish”

    We also had a report that our netboot images for Debian Jessie and Debian Stretch were stale. The kernel available with the netboot image was older than the one used by the installer. These have also been updated to the latest version.

    These distribution images and netboot installers are available from the management console. A full and up-to-date list of supported operating systems can always be found at the distributions page of our wiki.

    This time, we will not be pushing updates to our legacy servers. If your VPS is on one of those, and you wish to upgrade using one of our new images, please write support@prgmr.com and ask us to move your VPS to our new cluster management system. If you are unsure of whether your VPS is on a legacy server, VPSes on legacy servers do not have a “system details” menu option on the management console.

  • Distributions updated

    Wed, 19 Sep 2018 14:30:00 -0700 - Chris Brannon

    We have updated our distribution images and netboot installers with two new releases.

    • Alpine Linux 3.8.1
    • NetBSD 7.2

    These distribution images and netboot installers are available from the management console. A full and up-to-date list of supported operating systems can always be found at the distributions page of our wiki.

  • How to Ask for Technical Support

    Fri, 07 Sep 2018 09:00:00 -0700 - Paul Scott

    Have you ever made a support request and had it closed as “unable to reproduce” or found that when you went to collect more details, the problem was already gone? This is a frustrating experience for everyone involved - not just you, but also the person who’s trying to help you. Fortunately there are a few steps you can take to minimize the chance of this happening.

    If the problem is with software, include:

    • Exactly what sequence of actions led to the problem. Different ways of performing the same task can produce different behaviors. For example it’s more useful to say “I selected ‘“‘Print…’”’ from the file menu,” rather than “I tried to print.”
    • Your operating system and all involved software versions.
    • The exact error message, if any. If you are running a command from a Linux/Unix command line, a program like “script” can capture this for you.
    • A screenshot, but only if the problem involves something visible, such as a distorted display or garbled information.

    For web issues, provide everything that you would for software issues, plus:

    • The time stamp (including the time zone, such as UTC+8) at which the problem occurred.
    • The problem URL.
    • Whether you were logged in or not and what user you were logged in as.
    • If you came to that page through a link from another, then include the linking URL.
    • If the problem involved an online form, give the exact form input if you have it.

    For network issues or if a website was completely unreachable provide:

    • The exact date, time and time zone when the issue occurred.
    • The program and protocol where the issue was first observed.

    Ideally also try to include:

    • The output of ping and/or ping6 to the host or IP. IPv6 is usually used if it’s available, so pinging both will tell you whether IPv4 or IPv6 was used.
    • If the output for both ping/ping6 is something like “Network is unreachable” or “Destination Host Unreachable”, include the output of “route” or “/sbin/ip route”. Syntax varies between operating systems.
    • If you have a command named “mtr” available, include the output of “mtr -c 100 –report -n " from the first host, and "mtr -c 100 --report -n " from the second host if you have access to it. Packet loss can be asymmetric so both directions are important. If you don't have the command "mtr", try "traceroute" or "tracepath".

    In addition to the above, for all issues describe anything else that you’ve already done to debug or correct the issue.

    Finally, it might seem as though a screen shot is the best way to explain your problem. However a written description is almost always more useful, especially if it includes an exact error message. Text helps in several ways:

    • The visually impaired can understand and diagnose your needs.
    • It avoids attachment size limits that may prevent a screen capture from coming through.
    • It is faster to search online for similar problems.
    • It can also be automatically searched for in local databases in case other users have had similar problems.

    A screen shot can’t hurt in most cases, but please make it a supplement to a complete written description.

    Technical issues are not dictated by the alignment of the stars, but they are sometimes dictated by the alignment of a connector, so every little bit of information can help get your problem solved.