Tag Archives: Project Reclaim

Converting WordPress Multisite to a single site

creative commons licensed ( BY-NC-SA ) flickr photo shared by Packfill
A few years ago, in a fit of ambition and desire to host all the things, I set up my school blog as a wordpress multisite with four separate blogs, three of which had separate subdomains: one for my face to face classes, one each for my online classes, and one for Pedagogy First! (oh yeah, and there’s this personal blog too).

Now, it’s too much. I don’t want to update five blogs. Hell, I’m not even really keeping up with one. Additionally, for some inscrutable algorithmic reason, Google responds to searches by my students for my blog with links to my online class blogs, which have lain dormant for years, rather than to my main school blog.

Enough. One school blog and one personal blog are enough. So how do you go back? (First obviously, you back up, and then you go back. You’ve been warned.)

This wpmudev blog post walked me through it, but I’ll post instructions here as well forĀ  future reference.

I used file manager in cPanel to edit my wp-config.php file (first I copied it to wp-config.old in case I screwed up). I then deleted the following lines:

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/wordpress/';
define( 'DOMAIN_CURRENT_SITE', 'localhost' );
define( 'PATH_CURRENT_SITE', '/wordpress/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

The wpmudev post called for editing my .htacess file to match the following, but mine was substantially the same, so I left it alone:

RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L]
RewriteRule . index.php [L]

Next, I edited my wp-config file and dropped the following tables from my database. I’m pretty sure there’s room for disaster in all of the above steps. Backup.


At this point, the other blogs were gone, and I had a single blog. (And by gone, I mean GONE–this doesn’t merge all the subdomains–it just deletes everything but the main blog.)

One thing left to fix: redirecting the subdomains. I had to create a wildcard subdomain, so when someone goes to [subdomain].learningbusiness.net, it still showed the subdomain in the address bar. In cPanel, I went to the subdomain panel and added an explicit subdomain for each of my former subdomains and then I went to the redirect page in cPanel and added a redirect to my main URL so that if someone types the old subdomain, it redirects to the main domain and keeps the URL consistent. PedagogyFirst posts, on the other hand, I redirected to the EdTech category here on my personal blog where I imported all of my old posts. I’m sure I’ve broken a few links on other people’s posts (sorry!), but my posts are still there to be found with a little digging.

Life without Google: 6-month follow-up

cc licensed ( BY NC SD ) flickr photo shared by Eliel

A little over six months ago, I nuked my Google account over their changed privacy policy and terms of service. For me, it was a pretty big change, as I relied pretty heavily on Google’s web services (especially the calendar and email) and I also use an Android phone.

First, the good news: you don’t need Google to have a web presence or an Android device.

The bad news: many, many things are much less convenient without a Google account.

My Google-free existence involves mostly using my self-hosted domain. It was pretty easy to shift to my own email, using Thunderbird on my laptop, K9mail on my phone, and my ISP’s webmail interface everywhere else (Bluehost offers several interfaces, but I find that I like Roundcube the best). For phone apps, I use the Amazon app store instead of Google’s, as well as a few offerings from f-Droid. I know Amazon tracks what I install, but it at least compartmentalizes my data more: Amazon knows a lot less about what I do online than Google does. I use dotcal.com and aCal to manage my calendar. Between the advanced category excluder plug-in and the WordPress Android app, the Snapshots category of my blog does a great job of letting my post snapshots from my phone to twitter without clogging up my front page with every picture I send out. I use Sparse RSS to keep up with feeds on my phone. I’ve found a way to do most of what I used my phone and Google’s web tools for without having a Google account.

Here’s the thing, though, much of what I do is much less convenient now. I exported my contacts from Gmail and imported them to Thunderbird, but I don’t have them on my phone. (I’m sure there’s a way to import them to K9mail, but they still wouldn’t be synchronized.) My RSS reader on the phone doesn’t sync read items with the web-based reader I use. Even though Amazon has a number of apps, they don’t have as many as Google (and without a Google account, I can’t buy the Mighty Eagle for my kid to use in Angry Birds). Whenever Flash releases a new version, my phone is rendered obsolete until I can find a copy of the apk file posted somewhere online. Ephemeral video? Say what you will about HTML5, I still can’t get videos to stream from my hosting account, never mind the fact that my phone records video in h264 but won’t play it in a browser. Google Hangouts offer a very convenient form of video conferencing, but without a Google account, they’re off-limits to me. (I’ve asked for a Big Blue Button installation at work, and even though I’ve been told, “We should be able to do that,” I can’t seem to get anyone to actually make it happen.)

What next? My web and mobile usage are clunkier now than they were before, but I’ve gained a marginal increase in online/mobile privacy. How much? In terms of mobile, probably very little, given how much mobile providers track their customers. Is the slight increase in privacy worth the big decrease in convenience? I don’t know, but the Galaxy Nexus and Nexus 7 are starting to look awfully appealing.

Leaving Google: Google voice edition

cc licensed flickr photo shared by Ross LaRocco

I’ve used Google Voice as a voicemail service for awhile because they provide the option to email a transcript of each voicemail (they’re often bad, but usually you can get the gist of the message). I’ve been pulling back from Google, so I went back to regular voicemail from my phone carrier, which went smoothly, except that Google wouldn’t let go of the voicemail button on my phone–no matter what I did, the voicemail icon dialed my Google voice number and not my phone carrier. I could dial “1” or “123” to get voicemail, but the icon was stuck on Google voice. (I know, I know, first world problem.)

To fix it, I had to call tech support for my phone provider, and then had to escalate to level 2 support. There’s an over the air update that’s supposed to reset the voicemail number, but it didn’t work. Eventually, I had to take my SIM card out of my Android phone and put it in a dumbphone to recieve the update. Leaving Google: it”s not always easy.

Life without Google, youtube edition update

As I mentioned yesterday, I’m trying to host my own streaming video. while it still isn’t perfect, I was making it harder than it has to be. WordPress does handle videos using the HTML5 <video> tag. So with the WordPress Android app, I either shoot a video, open WordPress and insert the video into a post, or I just open the WordPress app and press ‘Quick Video.’

For that to work, I did have to create a php.ini file (Bluehost is kind enough to provide instructions and a button in cPanel) to increase memory size and upload limits with the following settings:

  • memory_limit = 128M
  • upload_max_filesize = 64M
  • post_max_size = 64M

For most users, that's a deal breaker, but if the administrator of a WordPress multi-site installation handles, it won't be a problem for individual bloggers.

With those settings in place, I can shoot a short video on my phone and upload to WordPress as easily as to youtube, and the video's on my own server. With the Advanced Category Excluder plugin, I can keep short videos off the front page and out of the RSS feed (H/T D'Arcy Norman), and with the WP to Twitter plugin, WordPress automatically tweets my daily update.

And it works, except for a few (minor?) problems. First, the the video window is too wide for my theme, and it looks ugly (fixable, I know). Second, the 720p video my phone shoots is too big to stream smoothly on all but the fastest of connections. The third and biggest problem, though, is that my phone records using h264, which Firefox doesn't support. Daily Updates play fine in Chrome (which does support h264), but that's a Pyrrhic victory if I'm trying to avoid Google.

h264 fails in Firefox

Life without Google: youtube edition

Among other things, I’m trying to find a streaming video substitute for youtube. Ideally, in the spirit of Project Reclaim, it would be self-hosted. Since I’ve got unlimited storage and bandwidth, why not?

Videopress looks interesting, and has nice features, but despite being open-source, it doesn’t look like there’s an easy way to install it on my hosting account and save video locally. Instead, it requires a $60 annual fee and a wordpress.com account to host the actual video files, with a 3 GB storage limit (expandable for a fee). Today’s daily update was 12 MB for 30 seconds; even if I only do daily updates, I’d burn up my 3 GB in less than a year. So much for videopress.

Next, I tried JW player for WordPress. It’s free, and it stores video locally. I ran into several problems with this one: first, my hosting account has a default upload limit of 10 MB, which is less than 30 seconds of video. I had several “500 Internal Server” errors trying to upload a post before I figured out it was a php error, and then had to figure out how to change the php configuration. Not for the faint of heart. After all that, the video wouldn’t stream. I’ve spent too much time futzing around already; so much for JW player.

Finally, I’ve installed All-in-one video pack from Kaltura. It’s open source, and it’s free, both plusses. On the other hand, my video isn’t hosted on my site (it’s not entirely clear where it goes–somewhere on one of Kaltura’s servers) and the video resolution isn’t great. But the biggest feature: it works without configuration or futzing around on my part. It doesn’t seem to work with the WordPress android app, though, so I don’t know that it will be a solution for posting ephemeral videos.

The search continues.