Upgrading Peertube and Running the Livechat Plugin

A quick video guide for upgrading Peertube running in Docker Engine on Reclaim Cloud

Peertube 4.0 was recently released, and I was excited to see what’s new and improved in what is becoming one of my favorite pieces of open source software. Feeling emboldened by some recent experimenting in Reclaim Cloud, I decided to upgrade bava.tv running on Peertube version 3.0. I have Peertube running via a Docker container spun up within Docker Engine, or a container within a container—turtles all the way down. I was a bit nervous to upgrade versions given I have over 500 videos hosted there at this point.* Fortunately, I was pleasantly surprised just how easy upgrading a Docker image of Peertube proved to be, which reinforces that Docker can be a much easier and more efficient process for managing your infrastructure once you wrap your head around it. So, below are the steps I followed using this guide for upgrading Peertube Docker images.

You change into your Peertube directory in the Docker Engine container (mine is /home/peertube/ but yours may be different):

cd /your/peertube/directory

Then pull the version you want, I wanted the latest release which is called bullseye:

docker pull chocobozzz/peertube:v4.0.0-bullseye

After that you want to delete the containers and internal volumes:

docker-compose down -v

Re-run the container, but before you do make sure the new version you want to pull is specified in the docker-compose.yml file (located in /your/peertube/directory which for me is /home/peertube). In the docker-compose file look for the section titled peertube and the following lines:

# If you don't want to use the official image and build one from sources
# build:
# context: .
# dockerfile: ./support/docker/production/Dockerfile.buster
image: chocobozzz/peertube:v4.0.0-bullseye
- .env

Note the line specifying the image the bullseye 4.0.0 release needs to be for the image you want to install, which for me is chocobozzz/peertube:v4.0.0-bullseye

Save the docker-compose.yml file and the run the following command:

docker-compose up -d

And that worked swimmingly, I could load the latest version of Peertube and lost none of my existing videos, data, metadata, etc.

While reading about new features/updates within the software I noticed that they’re funding the development of a Livechat plugin I tried unsuccessfully to get working several months ago. As a result that plugin has now been regularly updated, so I decided to test it out. After reading around I realized it still needs the chat server  Prosody installed, which can be tricky on Docker Engine given it is a pared down version of Linux that often makes installing dependencies hard, if not impossible.

Turns out the ease of upgrading and swapping infrastructure became readily apparent when I realized I could simply redefine a new Docker image in the docker-compose file  and spin down the old one and spin up the new one with Prosody pre-installed. I got the heads up from the Livechat plugin documentation that has a copy of the Peertube 3.4 version with prosody installed, so after running the docker-compose down -v command I swapped out the image in the docker-compose file to be johnxlivingston/peertubelivechat:production-buster:

# If you don't want to use the official image and build one from sources
# build:
# context: .
# dockerfile: ./support/docker/production/Dockerfile.buster
image: johnxlivingston/peertubelivechat:production-buster
- .env

Then saved the file and ran docker-compose up -d which had Peertube 3.4 with Prosody pre-installed, with that working I could then install the Livechat plugin from the Peertube Administration –> Plugins/Themes:

Image of Peertube Plugins Screen

Peertube Plugins Screen

Once you have installed the Livechat plugin you might need to add the API URL to get the Livechat plugin to work, for me that URL was http://localhost:9000. The fix of adding localhost:9000 was a result of the plugin author responding to my issue right away with a fix, so that was pretty awesome of John Livingston!

Peertube API Settings to be added

Peertube API Settings to be added

After that I was able to incorporate Livechat into my Peertube live streaming videos which was pretty awesome!

Image of bava.tv with live stream chat working in Peertube

bava.tv with live stream chat working in Peertube

I wonder if doing this with the straight-up Docker image versus Docker Engine would make for a different experience? I am not sure, but worth experimenting on that front with another instance, but for now bava.tv is running cleanly with the livechat plugin working, and I am very, very happy.

*Although I had managed to convert from traefik to nginx for the reverse proxy a little while ago (with help from Chris Blankenship), so I was not entirely clueless about what I was getting into.

Posted in docker, Reclaim Cloud | Tagged , , | Leave a comment

bavaweekly 1-18-2022

Another week, another bavaweekly, that’s three so far for those keeping track at home. They ‘re admittedly self-indulgent and silly, but they are a welcome diversion that keeps me experimenting with the streaming stuff, which I enjoy tremendously. But let’s get to it….

Reclaim Hosting

Setting Environmental Variables for a Ghost Docker Container in Reclaim Cloud

Configuring Email for a Ghost Docker Container on Reclaim Cloud

  • Taylor, Meredith, Goutam and I also had a great impromptu professional development session migrating a Mattermost instance in Reclaim Cloud that led to a somewhat righteous rant post about edtech.

Professional Development in the Cloud

  • In the Instructional technology meeting this week we floated the idea of a Reclaim Roadshow tour for a couple of weeks in US and Canada. Hopefully this virus calms down at some point so we can do that because I think it would be an amazing, fun team building experience, not to mention community outreach and visiting awesome people. One can dream!
  • Pilot, Taylor and I trained Alyssa at Wesleyan on managing the Living a Good Life Mini Course in Reclaim Cloud. The take away for us after that meeting was that there is a space for us helping folks at edtech groups and beyond to manage and support their needs in the Cloud, something AWS, Digital Ocean, etc. are not really setup for in the same way. It’s always the interstices of support that we will thrive and grow, and I appreciate that.
  • Reclaim Round-up newsletter is coming along, and the inaugural edition is still on schedule for the end of January. We had a fun meeting Friday setting down some timelines and making sure everything is in order, and I am kinda happy our first newsletter will be about creating a newsletter to some degree 🙂
  • The one thing I missed in the weekly reflection video above was Taylor Jadin’s amazing community chat showing folks how to setup their own, DIY community site to feature work at their Domain of One’s Own and 50 people showed up and it went 20 minutes over given the interest and engagement. I can’t imagine Taylor is anything short of thrilled with the results, I know I was over the moon! If you missed it, he captured it all for posterity, very much looking forward to another one of these next week.


  • Things were very quiet on the repair front, though Tim did an amazing video on how to substitute the OG hardware in Reclaim Arcade’s Q*Bert with an FPGA board, switching power supply, and a Jamma adapter. I’m interested in this approach because you can preserve the older hardware—which is hard and expensive to continually repair. The updated hardware should provide more consistent play and hopefully last longer without the fear of regular, costly repairs. He hasn’t posted the video yet on Reclaim Arcade’s Youtube channel, but when he does I will copy it below.
  • On the home arcade front, I just played a lot. I am getting better at Donkey Kong Jr and worse at Millipede. Basically remaining the same at Scramble, with some minor advancements in Phoenix.


    • Dug into some Criterion this week starting with Jean-Pierre Melville’s Magnet of Doom (1963)
    • Watched documentary Brother’s Keeper (1992) -part of a broader retrospective at Criterion focusing on the films at Sundance in 1992, most of which are kinda bad, as much as I want to like them. We tried watching In the Soup, but it was not good, we opted for Life is Sweet by Mike Leigh. Brother’s Keeper is the stand-out for me.
    • Finished The Shrink Next Door miniseries, and I appreciated Will Ferrell and Paul Rudd in this, but it took a few episodes to get into and it ended within a reasonable time, so for that I was a fan. Also was playing on all my Long Island wardrobe memories from the 1980s, Ralph Lipschitz indeed!
    • Got out on Saturday night as a result of my daughter wanting the parents out so she could have people over, that meant a good pizza and a movie. The King’s Man was sold out (the movies were packed) so we chose Matrix Resurrected against Anto’s better judgement, and it was terrible. As much as I love Keanu, it was bad, bad, bad, a re-heated original Matrix with overtones of JJ Abrams further ruining the Star Wars franchise, but this was self-inflicted by Lana Wachowski. Also, I think my assessment is accurate not withstanding my terrible Italian comprehension, and if nothing else the lackluster effects were a testament to how impressive the original was.
    • Watched a lot of Last of Us (the original) given Tommaso is now played through that one, inspired by his brother. I have to replay that one soon.
    • I watched the first 8 episodes of Twilight Zone season 1. AWESOME! Just what a I needed, and got to see my all-time favorite episode “Walking Distance.” Pure magic!

I spent an inordinate amount of time watching Downes’ “Stephen Follows Directions” videos, they are compelling and really instructive for me about documentation and watching folks do their edtech work. I love these videos!

  • Listening to a lot of Silver Jews thanks to the good DJs of ds106radio, and that inspired a karaoke section of the above bavaweekly video, you’ve been warned.


The Duke of Gocciadoro

  • Getting my regular walks in with Duke, and that has been awesome. I have been all work the last two weeks, so the exercise in the middle of the day is welcome. pus, it has been cold but clear and crisp, my weather for sure!

Parco Gocciadoro in Trento on a Cold, Crisp January Afternoon

  • Sleeping in a bit these days, which is very welcome. I am usually up at 6:30 or 7, but finding I am sleeping until 8 or 8:30, and it feel luxurious!
  • Appreciating the work rhythm right now, but that means I am basically a hermit that works, walks, and watches movies, will be happy to stretch a bit here soon.

Well that’s it, and special thanks to the folks who showed up during the live stream to chat and offer support, thrilled I got the livechat plugin working with Peertube live streaming option, but more on that in my next post.

Posted in bavaweekly | Tagged | Leave a comment

Professional Development in the Cloud

I am just coming off  a couple of hours of watching Stephen Downes work his way through some of my Ghost tutorials.

It’s not only quite useful for me to watch someone make heads or tails of my tutorials, but I also find it oddly compelling viewing. I wanna know if he figures things out after all the obstacles I placed in his way, a strange cliffhanger that provides me clues along the way for how I can be clearer and better. Maybe I have found my Youtube genre after all!

But beyond these videos and tutorials, which will have a very limited appeal, the broader push right now for professional development in Reclaim Cloud has been quite rewarding. Just this past Friday Meredith, Taylor, Goutam, and myself jumped on a Slack huddle and tried to figure out how to migrate an outdated Mattermost instance to an updated version in a new environment.* It took us an hour and a half, and we were new to PostgreSQL which was a learning curve, but against my wildest expectations the migration was successful in large part thanks to Taylor and Meredith’s experimenting and riffing off one another, which was so awesome to see.

It reminded me of why I like this forgotten corner of edtech so much. I deeply enjoy continuing to try and wrap my head around the tech, which has never been easy for me, much like the writing I struggle with to explain it. Having folks traveling that road, like Downes in his “Stephen Follows Instructions” series, reminds me how valuable it is for folks to share the work they do to help you grow. That was always the core of blogging for me, professional development with a sense of generosity and hopefully a reciprocating audience. As opposed to all the whining and complaining that has dominated the platform posturing that’s taken over most other spaces like Twitter, Facebook, and Instagram, all of which  leaves me wanting—most especially when I engage in it.

Configuring Email for a Ghost Docker Container on Reclaim Cloud

I think the joy of exploring Ghost as Reclaim’s newsletter over the past two weeks has been the meetings with Taylor, Pilot, and Lauren to chat about what’s possible, while interrogating the tech, and sharing what we we know and what we’ve learned. That’s always been the sweet spot for instructional technology for me, and the idea of doing it afresh for the Cloud with a crew at Reclaim and beyond makes me quite happy. My recent flood of blog posts sharing what I figured out is a testament to that, and I know I’m in the zone when the blog is flowing forth with disposable pearls like this one.

Im age of bavaGhost

BavaGhost over the years

In fact, looking at the Ghost site I’ve been experimenting with since 2014 in many ways tells the tale of this work. Not only in the details, but in the amount of time and energy it takes to try and dig in and understand something beyond empty terminology and speculative conference presentations. Instructional Technologists need to be more than gatekeepers (or even worse apologists) for the campus learning management system; they need to dig in and understand what drives the tech and how it more broadly shapes the work we do—it’s why the wholesale dismissal of Web3 by so many with pithy tweets about it’s emptiness strikes me as hypocritical, especially when coming from recovering Web 2.0 evangelists. I have my deep doubts for sure, but if Web 2.0 has morphed into the concentration of the web into corporate silos like Twitter, Facebook, YouTube, and Google then I’m absolutely ready for alternatives. Nothing replaces doing the work.


*The reason for doing this migration is pretty instructive in how we might want to approach containers in Reclaim Cloud more generally. The Mattermost instance was a one-click installer through Jelastic (our Cloud software provider) that had not been updated for several versions, and when they did update it the existing instances could not be updated that that later version. Hence, we had to do a manual migration. This points to a discussion around trying to limit the marketplace apps to official Docker images rather than custom stack installations via Jelastic given they don’t seem to age well, and the straight-up Docker installs through Docker Hub require fewer Cloudlets, which means they are usually cheaper. In other words, the jumping in and playing has led to some more focused attention to what is going to work in this space for us and our clients.

Posted in Ghost, Instructional Technology | Tagged , , | 3 Comments

Configuring Email for a Ghost Docker Container on Reclaim Cloud

Image of Ghost

Simaron’s Phentland Ghost 1979 on Flickr

When I first installed Ghost many a year ago the most difficult element of setting it up was getting mail working. I used Mailgun for the first time during that process, and since then API-driven mail services have become pretty standard. The way mail works in Ghost now, as I understand it, is it has direct mail services baked into the app using NodeMailer for transactional emails like new subscriptions, password changes, etc. That was not the case back in 2016, and that definitely makes things easier.

The other piece regarding email for Ghost is the setup for sending a newsletter, which purposefully does not use the NodeMailer setup. To send out a newsletter—which is increasingly the functionality Ghost aligns itself with—you integrate with Mailgun to send the one-to-many emails to avoid getting the server IP address blacklisted for spam. This is an element of the software I very much appreciate as the proprietor of a hosting company 🙂

Anyway, setting up email in Ghost was actually far easier for me this time around. Once I got my instances url variable set correctly (see this post for setting the url variable for a Ghost container on Reclaim Cloud) setting up email was simple. To be clear, however, if you do not have a Mailgun account you will need to set one up given that’s the only service Ghost integrates with out of the box. Also, Mailgun no longer has a free tier so this will definitely have an associated cost depending on the number of emails you send.*

Below is a quick how-to for getting up and running with Mailgun to send email from a specific domain taken from this post:

Mailgun Config

  1. Create a Mailgun account and log in.
  2. Under the Domains section click Add New Domain. (Hint: copy the password, you will need it later)
  3. Enter the domain from where you want to send the emails.
  4. Update your DNS records to verify that you are an authorized for the domain.
  5. Verify your domain in Mailgun (when DNS changes propagate).

Also, the post Creating a Newsletter Using Ghost goes through all the details of setting up Mailgun for Ghost in great detail, so I would check that out. The long and the short of it is once Mailgun is setup the integration with Ghost is jut a API key away.

You can also set the email addresses where Newsletter recipients can reply or seek support in the Settings–>Newsletter section of Ghost, just above where you set the API:

The last piece is setting up the SMTP variables in your Docker container to use Mailgun. I believe by adding the Mailgun variables to the container you will also be pushing transactional email through Mailgun rather than using NodeMailer, but I may be wrong on this. Below are the environmental variables I added the container on Reclaim Cloud using the Additional Options–>Variables area:

Below are the names and value (which will be unique for you) that you would need to add to your container on Reclaim Cloud.

name: mail__transport                 value: SMTP
name: mail__from                         value: <Foo foo@bar.com>
name: mail__options__service  value: SMTP
name: mail__options__host      value: smtp.eu.mailgun.org
name: mail__options__port      value: 587
name: mail__options__auth__user  value: postmaster@<YOUR_MAILGUN_DOMAIN>
name: mail__options__auth__pass  value: <YOUR_MAILGUN_PASS>

Having added these variables to BavaGhost has not done any damage to the instance yet, and I can confirm that transactional emails are now being sent via Mailgun. So, if I am right, these variables are now using Mailgun for transactional emails as well, and it probably makes sense to change them and then restart your container so the changes take effect. Also, remember to be patient given you might get a nginx error for a bit until the Ghost instance fully restarts.

Also, if I am wrong about Mailgun handling transactional emails I am all ears, and have no problem editing my post to herald the real truth behind Mailgun and Ghost! 🙂


*I appreciate the Ghost crews’ obvious impatience with folks who are railing against the machine for having to pay for email, and their response to that criticism is spot on:

Some people seem to experience a bizarre amount of anger about email configuration for reasons which are very difficult to decypher.

Fortunately, Ghost is open source — so if our many years of tireless work to make a great product don’t meet your exacting standards for free software — you can always fork the codebase and modify it to work however you would prefer.

Yeah, it can be a slog sometimes, but I appreciate the simplicity of the software and the fact that, unlike WordPress, it does not feel the need to be everything to everyone.


Posted in Ghost, Reclaim Cloud | Tagged , , , , , , | 4 Comments

Setting Environmental Variables for a Ghost Docker Container in Reclaim Cloud

If the title hasn’t scared you away, then welcome!

Image of a rainy, dark tree

Rainy Dark Tree from PxHere

Over the weekend I was struggling to get a mapped URL for a Ghost container on Reclaim Cloud resolving consistently to the main URL. While the home page worked, several subpages were defaulting to localhost:2386, which is hardcoded in the config.production.json file.* This is where that URL is normally defined, but Docker environmental variables are not actually read through this file, which is a bit of abstraction you have to wrap your head around when working with Docker. That file will work consistently if it’s hosted on a stack, but in a Docker container you need an environmental variable file (or .env file). Another detail discovered on my journey towards understanding Docker. Thankfully I have Taylor Jadin to think this stuff through with now given he’s a bit further ahead in his grasp of containers and has played with Reclaim Cloud a fair bit.

So, the proper way to deal with this issue in Reclaim Cloud is to add the url variable to the container environment. In the Ghost application container go to Additional Settings –> Variables:

Accessing Variables menu on a Reclaim Cloud container

Accessing Variables menu on a Reclaim Cloud container

From there click on the green Add button:

Image of Add button and Ghost variables

Add button and pre-existing Ghost container variables

After that you need to add the url variable as illustrated below (keep in mind url needs to be lowercase):

Adding Ghost url variable

Adding Ghost url variable in application container

This will ensure your environment loads cleanly over a mapped domain, and all references to the domain url are updated throughout the container. Be sure to restart the application container (not the load balancer) and give it a minute or so and the site will come back up.

This solution helped me stop using the hack of cloning the site with an edited url field in the config.production.json file to fix the issue, while also solving my adjacent issue with setting the Newsletter/Support emails. I’ll write more on that in my next post about Setting Up Email for a Ghost Newsletter.

Ghost mail__from variable

Adding Ghost’s mail__from variable in Reclaim Cloud

Another variable I added to my Ghost container was mail__from -you can see an example of this above for the address ghost_at_bavatuesdays.com.

*This file is found in the var/lib/ghost/ directory of the official Ghost Docker image.

Posted in Ghost, Reclaim Cloud | Tagged , , | 5 Comments

bavaweekly 1-11-2022 -the Show Notes

My first bavaweekly stream of 2022 is in the can, and you can watch it here. It’s a bit of a comedy of errors with my dog, Duke, trying to get his bone out from under the green screen. So it goes with my b-blog projects. I kept this recording simple with just my chroma-key camera super-imposed on my browser as I take you through some pre-populated browser tabs. If I tried producing it the way I would have liked it would have consumed more time than I have right now. I’ll always opt for getting stuff out quickly over perfectly, which is why I get shit out at all. I find pushing on despite all the warts means the growth and brilliance is always just around the corner 🙂

Reclaim Hosting

A spent much of the last week blogging about various work related projects at the mighty Reclaim Hosting. In fact, I published 6 posts over the last week (including the bavaweekly), which is pretty impressive. The blog posts focused on a few things: experimenting with getting Ghost running on Reclaim Cloud (with more coming on that topic); watching Downes watching me was a trip; the rise of instructional technology at Reclaim Hosting; notes for a case study of scaling WordPress in Reclaim Cloud for Wesleyan University; and a shout-out to announce Taylor Jadin’s community chat happening today.

Spinning Up a Ghost Docker Container in Reclaim Cloud

Updating a Ghost Docker Container on Reclaim Cloud

Watching You Watching Me

Living a Good Life in Reclaim Cloud

Building a Community Showcase for Domains and Beyond

It felt like a productive week on the blog front for sure. On top of that, early last week a snowstorm raged through central Virginia knocking out power for a few of the Reclaim Hosting folks working support, so I was answering quite a few tickets as well. It was a busy week for sure. Crazy how the I-95 became like the Sierra Nevadas in the 19th century with a strangely Donner Party vibe….what the hell is happening in America?

The first group meeting of the Instructional Technology division at Reclaim Hosting was a blast, looking forward to more of that. Also super excited for the Reclaim Roundup monthly newsletter we are working on, which is a big reason behind all the experimenting with Ghost. Things are good at Reclaim, I’m really feeling a work rhythm right now, and that is always nice. Need to ride that wave for a bit and get more folks blogging at Reclaim, it takes an edtech village 🙂


Frankly I was a bit surprised I got anything done on this front given how deep I was into exploring Ghost, Reclaim Cloud, and doing general support, but a technician that repaired the power supply for Asterock reached out Friday after I noted the power was still not working on that game. Turns out there is a second power supply unit on the sound card that was sending 13 volts to the game board, which is about 8 volts too many. Game boards usually prefer 5 volts, so I’m not sure if the game board is fried or not, but we’ll see. The upside is we are chasing down the issues on this game, so I have to believe it will be working here soon. It is really the last of the eleven games located in Italy that fills me with dread. The Sidam Explorer game is also down for the moment, but that is a vertical hold issue on the monitor chassis, and it can be fixed. I’m excited for the day all eleven games here are in working order, but I’ll take 9 out of 11, and I do think a perfect 11 for 11 is just around the corner.

Image of Sidam's Asterock

Sidam’s Asterock, an Italian bootleg of Asteroids.

Also, the marquee for Astro Invader is finally working. It was a 220 volt unit, and that confuses me as an American, but the technician helped me on that one and it was quite simple, so that was a small win. All the games in the foyer now have the marquee light working, it looks awesome.

Astro Invader marquee all lit up

Astro Invader marquee all lit up

Image of Donkey Kong Jr. Screenshot without the shakes

Donkey Kong Jr. Screenshot without the shakes

The final thing was taking a look at Donkey Kong Jr‘s switching power supply. It was sending out fairly low voltage, 4.8 volts, and I had read on the KLOV forums that it could be one reason why the monitor is slightly shaky. We tried swapping the power supply out with a couple of extras I had lying round, but that did not work. The units smoked, so the technician took the original switching power supply home and fixed that one, and we tried it the day after (Saturday afternoon) and it worked and we could adjust the voltage out to the board up to 5.1 or 5.2 volts but that did not fix the shakiness, which most likely means the issue is with the Sanyo monitor chassis. This is good news in terms of figuring out the issue, the bad news is my extra chassis for this game is in New York 🙂 We’ll get there….


In terms of actually playing in the bavacade, I played a fair bit of Donkey Kong and Centipede, setting personal high scores in both, 55,000 and 44,000 respectively. I checked with Tim and I still have a ways to go on both to match the Reclaim Arcade high scores for those games, but I am a patient man.

I also watched some Sterling Hayden films thanks to the Criterion showcase, including The Killing (1956), Crime Wave (1954), and Pharos of Chaos (1983), the last of which is quite a trip to hear Hayden’s contempt for Hollywood as well as his self-loathing regarding his cooperation with the House of Un-American Activities Committee in the 1950s. It’s also fun to watch him talk about working with Stanley Kubrick, and just his way of talking is wild. I really enjoyed this one, you can see a bit below:

I guess watching my son play The Last of Us Part II qualifies as watching, right? That game is simply amazing. I loved the first one, and watching him play Part 2 on the most difficult level is fascinating, it is purely a game of stealth. I love it. I want to carve out some time to play it, cause watching him work his way through it on a ridiculous difficulty level has been inspiring.

GIF of The Last of Us Part II

The Last of Us Part II

I was also able to get a book in this week, Emmanuel Carrère‘s The Advesary, a true crime account of a man who lived a lie for decades that finally imploded in murder. It is a quick, compelling read, and Carrère can write, even in translation it was hard to put down. I do love the true crime genre—which is a disturbing realization—and this story really delves into the almost unimaginable reality wherein someone can live an absolute lie in solitude for more than 20 years. To the point that when it starts to unravel his whole world falls apart overnight, it’s crazy. I also like the fact the author doesn’t moralize, but simply tries to understand, something that he is not really able to do in my opinion, which makes the whole thing that much more authentic. If I taught a True Crime class again, this would make the syllabus, especially given the murderer’s attempt to find religion in prison is reminiscent of the early American execution narratives, this vision of redemption and God’s love just falls flat in the world of this story which is fascinating when read as another chapter in the genre of true crime.


I took my regular walk with Duke, but I have been all work the last week. I probably need to start balancing that out a bit here, but I can be streaky when it comes to inspiration and work, so I tend to ride it out. Just got to be careful of the mania, cause that is always lurking behind any bout of productivity 🙂

Antonio Conquers Süd Tirol

That said, for the New Year Antonio Vantaggiato and his wonderful family were visiting Alto Adige, so we joined them for a hike in Val di Funes, which is always magic.

Pano of Odle in the Snow

After that they joined us in Trento for New Year’s Eve and New Year’s Day, and we ate, drank, talked, and laughed a lot, a wonderful way to usher in 2022. I’m forever thankful for the awesome people I have met on my journey on this blog and beyond.

Posted in bavaweekly | Tagged , , | 2 Comments

bavaweekly 1-11-2022

Well, I did get my first weekly video update for 2022 done, and I’m sharing it now with the understanding that the full “show notes” with a more fully fleshed-out post will follow tomorrow morning.

In this week’s bavaweekly I discuss a couple of blog posts I wrote in an attempt to narrate the process of setting up the open source publishing platform Ghost on Reclaim Cloud. There was also a post about getting Wesleyan University’s Minicourse MOOC in Reclaim Cloud as well as a promo post for Taylor Jadin’s Community Chat tomorrow. I also got to dream a bit with a post about the vision of Reclaim Edtech, which was fun.

My time was running short, but I did share some game updates from bavacade, as well as a clip of Sterling Hayden chatting about Kubrick. And I did read a book this week, namely Emmanuel Carrère‘s The Adversary, which was some top-notch true crime.  All the while I had to wrestle Duke away from the green screen, only to realize too late it was sitting on top of his bone. Fun, fun, fun.

Posted in bavaweekly | Tagged | 1 Comment

Building a Community Showcase for Domains and Beyond

On Wednesday, January 12th from 12-1pm EST, Reclaim’s latest edition of awesome, Taylor Jadin, will be sharing a site template he created in WordPress—something of a SPLOT—that will help folks quickly and easily build a website for showcasing work. It comes complete with a simple submission form for non-logged-in users that all SPLOT admirers have come to know and love. It’s aimed at folks trying to open up the blackbox that is cPanel for their Domains projects, but it’s an idea/technology that can be used for a wide range of use-cases well beyond that.

Below is the form to sign-up, and it is free and open for anyone to attend: https://forms.gle/dkHo8ZzwvQJNHXnC6

Posted in Instructional Technology, reclaim | Tagged , , | 2 Comments

Living a Good Life in Reclaim Cloud

These are in many ways the notes for a case study for when and why to use Reclaim Cloud, and given that space is going to be a big focus this year I do love having good examples. So, Alyssa Marinaccio and Jeffrey Goetz from Welseyan University reached out earlier this week to let us know the course they were running on their Domain of One’s Own instance, WesCreates was hitting resources limits. They also let us know the site is home to a mini-course for alums and the broader Wesleyan community and more than 3000 folks signed-up! That is pretty awesome for them, and it makes those earlier MOOCs look small 🙂

Image of Wesleyan University's Living a Good Life Mini COurse

Wesleyan University’s Living a Good Life Mini Course

At the same time a single WordPress site in a cPanel environment is going to struggle under that kind of activity, even if on its own VPS. When you have a few hundred people, even 100, hitting a WordPress database for a sign-up, etc, the server will feel it. So this was a perfect use-case for migrating that single site to Reclaim Cloud to run in its own container that has instantly scalable computing resources that can go from 1 GB to a 12 GB+ server instantly. That is a beautiful thing for a site like this, and luckily moving over a WordPress site is not too time intensive, not to mention I wanted to demonstrate the power of scaling resources in the Cloud for sites just like this.* I dig that the good folks at Wesleyan are doing this in their own environment apart from the corporate MOOC ecosystems, and this is where scaling an open source tool like WordPress for thousands of people seamlessly helps us return some of that open architecture back to campus experimentation.

What’s cool is that Reclaim Cloud in many ways is geared towards this kind of scaling with one-click containerized WordPress that can scale instantly. There are even clustered and multi-region instances, but I do think that it would be overkill here. That said, multi-region in Reclaim Cloud is super exciting for me. The container is using a LiteSpeed setup, as opposed to Apache or Nginx, which is referred to as LLSMP (Linux, LiteSpeed, MySQL, PHP). We’ve found this stack be ridiculously performant when it comes to WordPress. It’s running PHP 8 and there is a built in content delivery network, or CDN, to speed up the delivery of media objects, add to that scalable CPU resources, and you have an infrastructure that can allow you to spin-up your own, home grown MOOCs on top of WordPress without worrying about scaling to thousands of participants.

Image of LAGL ONline Cloud Account

LLSMP -Linux, LiteSpeed, MySQL, PHP

That’s awesome, and I would argue it will prove to be pennies on the dollar if you were to run this on a VPS of 16GB or 32 GBs, not to mention having to build-out your own the environment. The economic difference is folks will hit the site hard a couple of times a week, and when they do you resources can scale, but for the rest of the time you’ll be using a fraction of the resources and paying only for that. Elastic computing can be scary for some given there is no set bill, but in many ways we have come to accept this with utilities like gas or electric because we understand it is based on usage and we can control that, it is the same thing for computing CPU and it will save most folks significantly.

On the left you pay only for resources you use (Reclaim Cloud) on the right you pay monthly for a server at XGB no matter the resources used

One of the things we have been doing for Domain of One’s Own schools is providing a $500 credit in Reclaim Cloud to simply explore what’s possible. I offered this to Wesleyan as a good-faith gesture to demonstrate that running this site for 3000+ participants using a scalable, performant WordPress setup will not break the bank. So, the next wave of traffic comes in early next week, and they are now comfortable hosted in Reclaim Cloud, and I want to believe the vision that the Cloud is yet another offering alongside WordPress Multisite and Domain of One’s Own becomes that much clearer with this example.

Anyway, I shouldn’t get too far ahead of myself just yet given the proof is in the pudding, and it still has to perform as promised before any Reclaim Cloud victory laps can be run 🙂


*There were many facets to the MOOC revolution, and one of the most important for me was the way in which Coursera and others where scaling those infrastructures seamlessly for tens of thousands of people instantaneously on AWS. The birth of the MOOC at scale was in many ways the first example of the power of cloud computing in edtech, warts and all. I wrote about this pretty early on at the request of Jared Stein for the Instructure blog in 2012 (the blog is long gone, but I always keep a copy on the bava!) and I think it still resonates.

Posted in Reclaim Cloud, WordPress | Tagged , , , , | 1 Comment

Watching You Watching Me

Stephen Downes linked me to a video that documents his following my documentation for spinning up Ghost in Reclaim Cloud. I have to say I was a bit worried it would end in frustration, but luckily it had a happy ending. That said, watching him try and follow my instructions was really instructive for me. Seeing how someone as tech savvy as Downes have to interpolate through several of my assumptions helped me understand I need to slow down and explain things better. These videos are relatively new territory for me, and seeing where and when they work and don’t work is a great exercise. So thanks for doing this Stephen, I appreciate you spending the time going through it cause it will help me do better.

I few things I learned:

  • I’m not that precise all the time, words like “here” when referring to a location on the screen for folks is not very useful. Specify where you are and where you are going. But more generally, when giving instructions I need to be more precise.
  • Know your audience. I was doing this video for folks using Reclaim Cloud yet I jumped out of our infrastructure all together when pointing DNS—that is very confusing, and as he noted I could lose someone pretty easily at that point. Downes stuck with it, and watching him navigate DNS in cPanel was also instructive as to how unintuitive that system can be, so cohesion and consistency is important.
  • The above point about about DNS raises a bigger point. The how-to video about installing Ghost using a Docker container should have just been that, I should have saved the domain pointing and SSL certificate for a follow-up, separate video.
  • I need a better system for zooming in on things I’m doing to illustrate where I’m working on the screen more clearly. I think I lost Stephen with the public IP address because the Cloud interface can be confusing when you have multiple containers in an environment, like the load balancer and the application, etc. That is both a UI issue and an explanation issue.

In these videos I’ve been trying to develop a technique for creating compelling, relatively quick tutorials via video—although being a text person, I also include a step-by-step textual guide with screenshots. The push to be succinct in video, which is important, is hard for me given I like to ramble. A lesson that hits home here is separating out processes into shorter videos that can be more readily consumed, hence saving the bit about domain mapping and A record pointing for its own video, wherein I can talk in more details about Reclaim’s DNS management versus a tool like Cloudflare, which is quite valuable when mapping domains to the Cloud.

Posted in docker, Ghost, Instructional Technology | Tagged , , , | 1 Comment