A collection of self-hosted services and software

September 2020 Monthly Update – One More Year

It's my birthday! I've decided to kick it off with a birthday stream over on Twitch.

Other than that, there isn't a whole lot to say about the past month. It's been relatively calm lately. I essentially took the whole month just relaxing and doing some things for myself before I get back into the swing of things.

Like I said, there's really not much to say here. I haven't been working on the services much past keeping them live and updated.

Further Updates

I really want to get back into game development. I haven't realistically developed any games since before I was employed, and that means I'm extremely rusty. I've lately found that I just need to push myself to start, and keep pushing myself. Hopefully by next month, I can give an update on my progress with that.

Additionally, I'm starting to stream more. Since I'm not employed, it's much more realistic to spend hours doing streams on a regular basis. For now, my streams have just been variety casual gaming. In the future, I hope to expand that to speedrunning and game development. The goal is to continue gaining experience in game development while also streaming more regularly.

Only the future knows how things go from here. I'm anxious, but excited.

August 2020 Monthly Update – A New Direction

This month, I resigned from my position as a Test Automation Engineer.

It wasn't an easy decision, especially given the circumstances of the pandemic, but it's one I stick by. I've felt for a while now that the job I was hired for was not furthering me in a career path I wanted to go down, and that it was difficult to attempt to shift myself in the direction I wanted to go in. Ultimately, I landed on leaving being my best option in order to take some time to attempt to accomplish that.

Personal updates aside, I leave this in the post to say that there will be a shift in the amount of work I will be able to do and time I'll be able to set aside for both maintaining and adding to Werefox in the future. Since I have no current employment obligations, I'm dedicated full time to improving the services, adding to them, and creating some new projects in order to further my own experience with development. Additionally, I'll be looking to contribute where I can to other projects, as I feel that may be a good way to myself some experience without formal employment.


I'm still in the process of sending out stickers, international recipients should be having theirs sent out within the next week. Shipping is simply complicated, and it has taken me time to figure out what the best way to get things shipped out it, and what cost I'm able to incur this first time.

I've also taken down the Jitsi instance for the time being. It would seem it actually wasn't working properly, and I have some good theories as to why that might be.

Summary of the month

Most of the month was admittedly taken up attempting to get things together for my job before I left. I've deployed a Kanboard instance for myself in order to help manage the different tasks/projects that I have on my mind for the future. I'm hoping that will help me stay organized.

Xenia Stickers Arriving!

If you are a US recipient, you should have received (or hopefully will soon be receiving) your stickers! I'm going to include a few posts below of some users that have already received theirs and given me a shoutout.

@Sapphiricgiraffic says: “*notices package* OwO what's this?! @shadow8t4

werefox business card

xenia the linux fox stickers!

src: https://snouts.online/@Sapphicgiraffic/104570204558583049

@BestGirlGrace says: “Ayy, @shadow8t4's extremely good stickers came in. Thank you! <3”

My thinkpad, decorated with stickers, including one of noted linux fox Xenia hunched over a laptop. Next to a Queer Hacker AOL logo sticker and a defund and abolish the police sticker.

src: https://social.illegalpornography.com/@BestGirlGrace/104570369009818788

@david says: “...Thank you for the pretty sweet stickers @shadow8t4!”

linux fox stickers and Werefox business card

src: https://tech.lgbt/@david/104600216330729102

@lazyTechsupport says: Big thanks to @shadow8t4 and @iliana for some of the new additions to my laptop... I have gotten over 36 years of sticker anxiety and now I need more!”

src: https://cybre.space/@LazyTechsupport/104628030430789648

Further Updates

The main things I've taken out of my backlog to focus on this month (hopefully, seeing as I seldom actually complete the things in this section the month I put them out there) are to finish migrating things to containers in preparation for wiping the last server that I still haven't wiped, write this update (mission accomplished), and look into starting something for GatsbyJS. With any luck, that last one will put me on the path to setting up a storefront for the Xenia stickers (and more). The last thing I want to do is make them so limited that people who want them in the future have no idea how to obtain them.

I'm still working on getting an email server set up, but it's a work in progress. I've backlogged it for now, as it's proving to be quite the daunting task.

July 2020 Monthly Update – We're Halfway There

I'm thoroughly convinced that blog posts like this are going to act as a bit of a time capsule for America and the world during this pandemic. My state attempted to open back up, but it looks like things are going to be most likely closing a bit in the near future, as we've become one of the peak states for case growth as of late. Regardless, a lot happened in the two months since my last update.


In support of BLM, I decided not to post an update last month. However, there were a few things that happened since then that are likely worth mentioning. Because of this, I'll be adding a second “Summary of the month” section titled “Summary of the month: May-June”, and I'll append this first one to “Summary of the month: June-July”.

Summary of the month: May-June

Xenia, the Linux Fox

One of the biggest things I worked on from this month was commissioning out some art for Xenia, a potential Linux mascot that lost a competition back in 1996.

A screenshot of the original announcement I made for the art.

Once again, big shoutout to all three artists that helped me out. Here are each of the pieces individually with some links to the original artists:




Here's also a link to the original announcement post: https://masto.werefox.dev/@shadow8t4/104235712891251159

Overall, this was a bit of an empty month in the first place. I focused quite a bit more on playing games in my spare time.

Summary of the month: June-July

Xenia, the Linux Fox – Stickers!

With the help of @WildePrints, I've managed to order some sticker prints of the designs mentioned above!

Here are the phyiscal stickers of each of the designs!

I also put out a form for anyone who wants one to fill out, and I'll be sending them out over the next month as I gather input and start putting together all the letters. It might take some time (especially since many of the form responses are from people outside of the country), but it will happen!

I'm hesitant to post a link to the form here, but please feel free to reach out to me if you're interested in them! If this first batch goes really well, I may consider ordering a second set, or setting up a more professional storefront with proceeds going to the original artists if I gain their permission in the future (these stickers will be free of charge for the time being, though).

Small Contributions to Pinafore

In the past few months, if you've been following me, it's no secret that I've been dabbling more and more into understanding and utilizing Docker's container tehcnology. It has been interesting to take almost any project I have access to and see what it would take to conver it to a container microservice or just a container image in general. I feel like over my time I've gotten to understand the process and some of the best practices, and have now been able to translate that knowledge into a couple contributions here and there to the Pinafore project. It's not much, just updating an existing Dockerfile for the NodeJS project and contributing a docker-compose.yml for easier management, but I felt like it's worth noting here.


Brutaldon is a brutalist, Web 1.0 web interface for Mastodon and Pleroma. It has options to disable all Javascript for the front-end, and is designed to be able to work in terminal web browsers, such as Lynx and w3m.

Although the project itself seems to have been largely abandoned, the interface still works just fine, and I've been hosting it inside a container for a while now. I'm pleased to say that I've experienced no issues thus far, and so I've updated the services page to reflect this new addition.

If you would like to see the source code for the containerized version I'm using, you can view it at https://gitea.werefox.dev/shadow8t4/brutaldon-docker

Matrix & Riot Updates – Jitsi Video Conferencing

Riot users that utilize the Riot client I've hosted on https://riot.werefox.dev will now be able to initiate video conferences through a Jitsi server I've begun hosting. Additionally, I've created a post on the blog that's now pinned which outlines with some screenshots how a new user can register for an account on https://matrix.werefox.dev or other custom instances. These small updates will hopefully make it more user-friendly to new potential users to start using these chat services over others.

Shameless plug reminder – Werefox Software does have a public open Matrix chat that anyone can join at #chat:matrix.werefox.dev

Server Maintenance

Last week I finally took the time to test out the backups system I have had set up for the servers, and completely wiped the NUC with a fresh install of Ubuntu Server 20.04. While there were some hiccups here and there, things seems to be back up and running just as they were before. One big difference being that nearly every service being hosted currently is now being hosted in a container or set of containers managed by docker-compose. This has the advantage of essentially being able to run a clean install of Ubuntu 20.04 with only docker, docker-compose, and nginx installed, meaning I can focus development efforts, or other local network services, on other devices that don't have public ports exposed. As an added bonus on top of that, this will enhace security as the only ports exposed are those that are inside containerized subnets.

I'm sure someone may be quick to correct me on that last statement, but regardless, this is something that needed to happen at some point to ensure that I can continue to provide a reliable self-hosted experience.

Further Updates

Even with how long this post was, there are still future updates to list out. I've still put off setting up a full CI/CD for now, as the server currently running my Gitea instance needs to also have a fresh install performed on it, as I explained above. Once that has been completed, I can focus my efforts on getting that pipeline set up.

Additionally, I've been actively working behind the scenes to set up a mail server for this domain. I've been using an account that was graciously provided to me by a kind fellow at vcity.network, however, as you may have noticed, that domain is currently down. Emails are still working for now, but I'm a bit anxious about the possibility that they will stop working at some point. Therefore, I feel like this initiative is quite necessary. Hopefully I can post some progress about it soon.

I'm gonna be honest, I kinda didn't realize it had already been a month. With the current state of things in quarantine, time kinda passes without you really thinking about it. However, a few things were definitely accomplished this past month, so let me get into that.


Since it's kind the end of April and I never gave an April update, this will pretty much serve as a summary for that as well. I'm still working from home at this point, and things are going relatively smoothly for the most part. Overall, I've been really thankful to have my friends on the fediverse and close friends that keep up with me to help me feel less alone (along with my family, of course).

Summary of the month

Development Server Get!

I was able to purchase the parts for a set up a build server for myself, finally. I've been using a really old Dell Optiplex as a NAS/Gitea server and an Intel NUC as more of a “production” server for my various bots/projects/other services. Now I have an ASUS MINIPC to add to that server setup.

Here's a picture of the box it came in

I don't intend to have it do anything other than be a sandbox for development of projects, but it has already become a welcome addition so far!

Here's a picture of the device opened up, with all the additional internals already added

This will likely be used for when I set up a CI/CD with the Gitea instance. That way the “production” server doesn't have to handle building the projects when updates are pushed.

COVID-19 Discord Bot

While I've been quarantined, a friend of mine has been trying to track the numbers of new cases, deaths, etc. for a while and sending us updates in our friend group's Discord server. I thought I'd take the opportunity to make something useful, and wrote a simple bot that sends reports on a timed basis, and on command, with selections available to a specified channel or in response to that command. If you want to see more about that or take a look at the code, it's being hosted on my gitea instance, here.

Twitter Media Tool

Additionally, I got pretty tired of manually updating my various social media platforms and archiving the media uploads from my Nintendo Switch since Animal Crossing New Horizons came out. In order to remedy that, I decided to write a tool that would use Tweepy's streaming API to listen for new Tweets on my account, download any new media posts, and echo them to various services.

Currently, I have the implementation set up to echo posts to Mastodon and a Nextcloud instance I host for myself. However, I intend on having it echo to Discord and maybe other platforms in the future as well.

EB Games Guy

I started an account over on gamestop.store, a new instance that started up this past month full of users that are making pretty awesome parody accounts. I have an upcoming project that I've been working really hard on and hope to release soon. Once I get that out, I also plan on writing an article on the blog talking about the process and some of my ideas and thought process behind it.

Migration to Linode VPS

This last week I also migrated VPS providers from Vultr VPS to Linode VPS. Vultr had been experiencing some weird issues, and I have been meaning to move to a closer VPS solution (the current one was hosted in New Jersey), so I asked for suggestions and settled on Linode. Now, the round time trip for network connections to these services should be much shorter.

Previously, connections would roughly have to travel like this:

[Origin] -> New Jersey -> Texas -> New Jersey -> [Origin]

With the current VPS location, it's closer to this:

[Origin] -> Texas -> [Origin]

Sysadmin Updates to Mastodon

Finally, after quite a while of fumbling about, I was able to give my own account Admin access to the Mastodon instance, and prompty set up a list of instances that we will no longer federate with. Additionally, using the power of the Wayback Machine, I was able to recover the /about/more blurbs from my previous setup of the instance! Hooray!

Further Updates

In addition to setting up the CI/CD pipeline for my Gitea instance, I'm planning on expanding the Twitter Media Tool's functionality a bit more. Past that, plans are a bit up in the air. I'm really glad with how productive I've been able to be the past month, all things considered.

If anyone follows my blog or my updates on social media, they may be interested in knowing how things are where I'm at. I'll give a summary of that and some slightly vague descriptions of what I do and where I am, since I am not very keen to the thought of publicly posting my location or place of work.

Southern “Withdrawl”

Currently, I'm somewhere in Central/Southern Texas. A lot of places have either shut down or shortened their hours and only allowed to-go/drive-thru orders at this point in time to try and combat spreading of the virus. I'm in an area of Texas where there's a bit of an abundance of medical centers, so I don't think we're in a huge danger of not being able to provide for care for the outbreak, that is if people can afford it...

Self-quarantining isn't exactly a popular method it seems. I personally, and my family, have been doing what we can to limit any outside exposure during this time, but I can say with confidence this isn't the social norm down here. A lot of the population seem generally unafraid or uncaring about the disease spreading, and a decent population are still going out regularly. The streets are still somewhat crowded with cars, and the only thing stopping people are the various businesses shutting down, which mainly have been happening because of limitations imposed federally and by our governor.

State of work

Thankfully, the management at my place of employment has been adamant and welcoming of working remotely. I'm not personally in much danger of contracting the virus during work hours, and this seems to be a direction that the customer is working actively towards accomplishing across the board as well, at least over here. There are still a few issues here and there with getting used to this workflow from everyone, but overall things seem to have transitioned fairly smoothly.

Forced Separation – Public Pandemonium

Grocery stores have been constantly out of stock and have long lines. The local ones are even trying to hire more employees to deal with the huge demand. While the public generally seems to act like they don't care much about the virus spreading, they certainly don't reflect that in this case. Additionally, we're already seeing the closure of business bring a lot of people to start applying for unemployment. A bill attempting to help pay for sick leave as well can't come soon enough for us.

On an adjacent note, I'd like to bring up that a lot of the population here lives paycheck to paycheck and has family to support. They cannot handle a month of no business, smaller paychecks, or outright being laid off. It's something that I wish I could help more with, and that I really want to bring attention to in this article.

Stay at home. Stay decentralized.

To conclude this piece, I want to talk about what I think this isolation is going to affect that seems to not be covered much yet in the general media – the unintentional DDOS of centralized services. In an attempt to not use this as a way to say “look how great decentralized services are! Stop using X service!” I want to clarify that this section is more about spreading awareness of a possible future issue and less about trying to advertise a solution.

As we continue to see more and more cities, countries, and nations close their borders and encourage citizens to self-quarantine and isolate themselves, it is inevitable that those citizens will turn to the internet to satiate their social and entertainment needs. Be aware, reader, that the infrastructures created to maintain most internet services are not equipped to handle most or all possible internet traffic at all hours all the time. I would encourage everyone to use decentralized options when possible. Watch a movie on Plex instead of Netflix, post on Mastodon instead of Twitter, Chat on Riot/Matrix instead of Telegram, make a phone call instead of a Discord VC.

This period of time is going to not only be a test of society's ability to distance themselves from others and isolate, but a test of the general Internet's infrastructure capabilities as a whole. And of course, most importantly: – Wash your hands – Stay inside

Hope you all stay safe, see you on the fediverse.

I'm officially back living with my parents temporarily. This was of my own volition, since I am actively looking for a job in the Austin area. Because of that, it would save me quite a bit of money and time to have everything already packed and not be making monthly rent payments. Let's get into the updates.

Summary of the month

More Projects?

Hopefully I'll be able to soon reveal a little web app project I'm working on. I hope people will enjoy it. Otherwise, I don't have a whole lot to say on the progress of personal projects I've been working. Having to pack everything up and move while applying to jobs has really stolen a lot of time from me.

Server Status

I've been slowly migrating most of the services that are being hosted on this domain to Docker containers. This was evident by the recent nuking of the Mastodon instance in order to fix an elusive database error that had been persisting throughout a few upgrades and was slowly making the instance unusable.

Currently, the following services has been containerized and running smoothly for the past few weeks:

Further Updates

I'm still planning on setting up a Gitea CI at some point, but that progress has been a little slowed due to all of the other things I'm trying to tackle at the same time. It's been difficult to keep up with everything, but I'm trying my best. I really am hopeful that I can find something soon in Austin and get back on track to focusing on work, social life, and hopefully some video games (I haven't really played anything other than Pokemon for months).

Effectively, it seems I took a hiatus from posting on the blog. I had to take some time to get thinks straight on my own end. Hopefully, I will be back to doing some awesome projects to write about on here soon.

Summary of the month(s)

A Love Letter from Werefox Software


New Mastodon Who Dis?

As you may have noticed, the Mastodon instance was “nuked” last week in order to fix some issues with the database that couldn't be pinpointed. All previous features should be up and running just fine, but registration is currently closed until I can fill out the about section and ToS once again.

Raspberry Pi LCD

I did another article about the process of setting up a programmable display that could be controlled remotely through a VNC connection in an SSH tunnel. You can read more about it here.

New Year

It has come to my attention that I haven't made a monthly update post since the previous decade. Happy New Year!

It would seem all of the servers were readily “2020 compatible”.

(Alexis laughs, believing herself to be funny by making an old 1990's reference no one her age should even get in the first place)

Future Updates

In the process of the effort of re-establishing Mastodon, the instance was converted to a Docker container instance of glitch-soc. I plan on migrating the rest of the services provided (or as much as possible) to containerized versions as well within the upcoming months, along with establishing a CI pipeline for the Gitea instance using either BuildBot or Kubernetes.

After quite a long pause in content, I have another article! This time I'll be documenting my process for setting up a programmable LCD display of sorts.

The original idea for this was that I wanted some kind of display small enough to be at my desk that could be used to show whatever kind of content I wanted to display for the time being. I received a new Raspberry Pi 4 for Christmas, so I quickly got to work planning how it would be used.

Parts Used

As with the previous article, this project doesn't necessarily have to be completed using a Raspberry Pi 4. The particular display I used works fine with the 2/3/3b(+) models as well.Raspberry Pi 4USB Type C CableUSB Power Brick AdapterMicro SD Card for the OS* – Longrunner Raspberry Pi Touch Screen with Case Holder – An extra computer with access to a microSD card adapter

* As with the last article, it doesn't matter how big the SD card is. Just find a good deal on a good brand and use those. I've recommended the same ones.

Software Used

  • Raspbian (OS image)
  • OpenSSH
  • RealVNC
  • Fail2Ban
  • Remmina (Optional, client for VNC)

OS Installation

If you're following along, I recommend installing the OS and getting the Raspberry Pi up and running before you start assembly of the case and LCD. You can use the cables provided to power the display and connect it via HDMI to the Raspberry Pi when testing.

Using dd on Linux, I flashed the OS image onto the microSD cards each individually. After flashing, I made sure to test the installation by inserting the microSDs into each of the Pis and powering them on. The command was something like: dd -if=/path/to/raspbian.img -of=/dev/sdx && sync

In order to be able to reliably access the device, I once again recommend you go to your router's settings if possible and ensure the device has been given a static IP address. If you are unsure how to do this, try looking up your router's instruction manual.

In order to test the OS, I plugged in the device to an alternate display to ensure that it was working properly. This is because the LCD may require some system settings tuning before it will display properly.

If I remember correctly, Raspbian should already have an SSH server running once it boots. I connected the device to a wired ethernet connection to ensure I could access both it and the internet.

Since this is the first boot of the image, it was set to the default username and password. I followed these directions to change the defaults to my liking.

Once the defaults were changed, I configured my other device that I wanted to use to manage the Pi so that it would be able to connect via SSH using an SSH key. I then configured the SSH server to only allow users to log in using SSH keys, and changed the listening port for good measure.

After my SSH server was configured, I got to work setting up a simple firewall and Fail2Ban. This was configured so that I would only allow connections through ports 80, 443, and my custom SSH port.

I also set Fail2Ban to be fairly strict with the number of attempts when connecting via SSH. This was mainly to prevent snooping from coworkers, staff, or others that may be connected to the same network as the device wherever I took it.

Finally, since this was meant to be a display, I set up a RealVNC server on the Pi to enable remote desktop control.

Screenshot of the active VNC connection to the display.

If you recall, I didn't configure my firewall to allow incoming connections on the default VNC port. This is because I planned on using the Remmina client to connect to the Pi, using an SSH tunnel. That way, I ensure the connection is encrypted and I don't have to open anymore unnecessary ports.


An image of the LCD sitting on my desk at work.

An image showing the back of the LCD with the Raspberry Pi mounted.

This turned out to be a pretty fun little project! I had some difficulty trying to find a way to remotely connect to the display, but eventually found what I think was a pretty elegant solution. I've included some pictures of the device in use, and I think overall it went really well.

Nothing is permanent, it seems. I've been a little busy this month trying to get myself out of the house, dealing with personal issues, and spending time with family for Thanksgiving. I don't really have much to report because of that.

Keeping Things Stable

The most I've been doing is just trying to ensure things on my end are stable as far as the services go. Everything is still up, but upgrading to Mastodon 3.0.0 has proven to be a real challenge for some reason. I'm sure when I bring myself to sit down for a few days and try again I'll figure it out, but otherwise, it's staying on 2.9.3+glitch until further notice.

What I've Been Up To

Mainly, I've just been focusing on my own life. Trying to figure out where to go with my job, where I'm going to go in 2020. It's a little rough right now to be honest, but it's exciting. I'm anxious to see where life takes me in the upcoming year.

Future Updates

I'm still attempting to make some time to do personal projects in my spare time, but I'll admit the latest Pokemon release has taken up a lot of my time! I'll make another update at the end of the year, or whenever something develops. Until then, that's all for this update.

Enter your email to subscribe to updates.