Coevolving Innovations

… in Business Organizations and Information Technologies

A federated wiki site on cPanel

Since my cPanel shared hosting provider supports node.js hosting, installing a federated wiki site beside the usual Softaculous packages is an option. The app requires node.js, and there is a variety of ways to deploy that.

In 2014, I had installed a federated wiki site on Openshift, but then didn’t maintain it as other priorities surfaced.  The site is now available at http://wiki.coevolving.com, and the prior content has been restored.

The installation isn’t a one-button procedure.  However, an administator comfortable with opening an SSH terminal onto your shared hosting account should be able to follow the steps below.  (If you have problems, the federated wiki community hangs out in a room on matrix.org).

A. Creating a Subdomain

(1) Through your browser, from cPanel … Domains … , create a Subdomain.

  • As an example, I can create a Subdomain wiki in the Domain coevolving.com, that will actually be stored in my Home (Document Root) as a wiki.coevolving.com directory.

Subdomain_CreateASubdomain

B. Installing Federated Wiki

(2) From cPanel … Software … Setup Node.js App.

  • In the Web Applications list, Create Application.  As an example, set:
      • Node.js version: 10.11.0
      • Application mode: Production
      • Application root: wiki.coevolving.com
      • Application URL: wiki.coevolving.com
      • Application startup: app.js
  • (If you leave the Application startup field blank, app.js automatically fills in as the default)

NodeJs_CreateApplication

  • At this point, the node.js environment is not yet activated, as the package.json has not yet been downloaded, and the Run NPM Install button is greyed out.

WebApplications_EnterToTheVirtualEnvironment
(3) Open a terminal to your account.  Through a browser you could navigate to cPanel … Advanced … Terminal ; the more technically proficient will already know how to log in via SSH.

cPanel_Advanced_Terminal

(4) Download the current version of the federated wiki code, unzip it, and place it into a directory so that it can be installed with npm.

  • Change into the directory.  Transfer the current version of the fedwiki repository from the Github site to your host (curl option-L will redo the request if the location has changed; -o specifies the output file name).
cd wiki.coevolving.com 
curl -L https://github.com/fedwiki/wiki/archive/master.zip -o wiki-master.zip
  • List the file to ensure it’s downloaded (ls -lh gives a long, human-readable list).  Unzip it into a directory (unzip options -uo extracts newer versions of files already in the current directory and creates any files not already there; -d . specifies the target directory as the current directory) .
ls -lh wiki-master.zip 
unzip -uo wiki-master.zip -d .
  • List the directory to ensure that the wiki-master directory was created properly (and the package.json is in place).  Copy the contents from that now-unpacked directory up one level into the current direction (cp  -r recurses directories, -f forces overwrites; -p preserves datestamps; -v gives verbose information;).
ls
cp -rfpv wiki-master/* .

(5) If you had previously backed up a federated wiki, the content could now be restored.  Upload the file, and unpack the archive.

tar -xvpf archive_wiki.tar.gz
  • … with  tar options -x (extract); -v (verbose); -p, (preserve-permissions) ; -f  (file-archive).

(6) Personalizing the federated wiki requires (i) specifying where the data will be stored; (ii) setting up security; and (iii) setting up the site owner name.  For a single (or small number) of users, the friends plugin can invoked with the editing of config.json.

  • If a directory where the content will be stored hasn’t already been defined, create one, e.g. wiki.
mkdir wiki
  • Configure to use friends security, by editing a sample config.json …
cp config.json config-old.json
nano config.json
  • … with an initial config.json template that looks like …
{
"data": "....",
"security_type": "friends",
"cookieSecret": "some long random string (not this!!!!)",
"session_duration": "14"
}
  • … and can be modified to become …
{
"data": "/home/coXXXXXX/wiki.coevolving.com/wiki",
"security_type": "friends",
"cookieSecret": "my_cookieSecret_of_choice",
"session_duration": "14"
}
  • As a precaution, make a backup the new config.json:
cp config.json "$(date '+%Y-%m-%d')_config.json"
  • Configure the site with your own user name, by editing a sample owner.json
cp wiki/status/owner.json /wiki/status/owner-old.json
nano wiki/status/owner.json
  • … with an initial owner.json template that looks like …
{
"name": "Koheni",
"friend": {
"secret": "some long string that you use to reclaim write access"
}
}

… and can be modified to become …

{
"name": "daviding",
"friend": {
"secret": "my_write_access_secret"
}
}
  • As another precaution, backup the new owner.json
cp wiki/status/owner.json "$(date '+%Y-%m-%d')_owner.json"

(7) For the cPanel Web Application, the Application startup file is presumed to be app.js.  The downloaded package from Github assumed index.js, so let’s give the environment the filename it expects.

ls *.js
mv app.js app_old.js
cp index.js app.js

(8) With the federated wiki files now in the right position, the cPanel instruction to “Enter into the virtual environment” can be carried out.

source /home/coXXXXXX/nodevenv/wiki.coevolving.com/10/bin/activate
  • The source command is added to the command specified on the cPanel page, otherwise you’ll get the message “‘activate’ script should be sourced, not run directly”.

(9) Returning to cPanel in the browser, reloading the page should now detected the package.json configuration file, and Run NPM Install button should be available.

Run NPM Install button is available

  • Select the Run NPM Install button.  (Running npm install from the terminal doesn’t seem to give the same results, as loading the Welcome Visitors page in a browser will not be properly formatted).

C. Claiming the Wiki Site

(10) In your browser, navigate to your wiki page (e.g. wiki.coevolving.com).  At the bottom of the page, if you hover over the padlock, you should see a popup to “Reclaim this Wiki”

Reclaim this Wiki

  • Selecting the padlock should surface a panel, saying:

Welcome back <<yourname>>. Please enter your reclaim code to reconnect with your wiki.

  • With the “secret” you had entered in owner.json, the padlock icon should show as open.

(11) Your federated wiki should now be available for collecting pages across the federation, and co-editing.

D. Maintaining the Wiki Site

(12) Periodically, it might be prudent to prepare an offline archive of your federated wiki site.  On a terminal, pack a directory into a single file (tar with options -c (create); -v (verbose); -p (preserve-permissions); -z (compress to gzip); -f (filename)).

ls wiki
tar -cvpzf "$(date '+%Y-%m-%d'_wiki).tar.gz" wiki
  • Download a copy of that tar.gz file to your computer for safekeeping.  That backed up wiki directory will include the owner.json.
  • Download a copy of config.json.

My federated wiki site is at http://wiki.coevolving.com.

3 Comments

  • Interesting! Coincidentally, I’m currently setting up a personal wiki on my server that also is taking quite a bit of configuration to setup. Obviously the intent is very different since it’s completely private, but I’ll probably write a post about that soon.

  • Most of the directions for installing the software are applicable to updating to newer releases. To generalize the commands, I’ve changed …

    mv -v wiki-master/* .

    … to …

    cp -rfpv wiki-master/* .

    … so that some directories over properly overwritten.


Leave a Reply

Your email address will not be published. Required fields are marked *

  • RSS qoto.org/@daviding (Mastodon)

    • daviding: A young man stares o April 5, 2020
      A young man stares out a window and the caption reads “Bus windows: the ultimate philosophy school.” writes #MarkKingwell All the canonical philosophers of boredom have believed that boredom was eventually edifying – a painful experience that, like mortality itself, educates and enhances the mind. Because we’re all addicts of our own desires for stimulation, […]
    • daviding: Provocative statemen February 1, 2020
      Provocative statement by Canadian automobile reviewer. > There isn’t now and likely never will be enough electricity available worldwide to replace all the petroleum for the vehicles we currently drive.> And given that at least in Canada, only 11 per cent of fossil fuel emissions come from passenger vehicles (that’s not from some climate-change-denying website […]
    • daviding: Lecture on "Are Syst January 23, 2020
      Lecture on "Are Systems Changes Different from System + Change?" at #OCADU_SFI #SystemicDesign master&apos;s, web video and digital audio now at http://coevolving.com/blogs/index.php/archive/are-systems-changes-different-from-system-change/ . Lecture of 1h18m covered 37 of 55 slides, all online for #SystemsChange #SystemsThinking #theoryofchange
    • daviding: The 2019-2020 fires January 5, 2020
      The 2019-2020 fires in Australia are associated with a slow history of human activity. > Three hours north, in Sydney, the air quality was worse than in Jakarta. [....] > There is no doubt that the fires are growing more ferocious. Even without the changing climate, it would be inevitable; 250 years of land mismanagement […]
    • daviding: > ... a fascinating December 18, 2019
      > ... a fascinating study by Javier Miranda, principal economist at the U.S. Census Bureau; Benjamin Jones, professor at the Kellogg School of Management at Northwestern University; and Pierre Azoulay, professor at MIT’s Sloan School of Management and research associate at the National Bureau of Economic Research. They took a detailed look at the demographics […]
  • RSS on IngBrief

    • Plans as resources for action (Suchman, 1988)
      Two ways of thinking about practice put (i) “plans as determinants of action”, and (ii) “plans as resources for action”. The latter has become a convention, particularly through research into Human Computer Interaction (HCI) and Computer Supported Collaborative Work (CSCW). While the more durable explanation appears the Suchman (1987) book (specifically section “8.2 Plans as […]
    • The best time to plant a tree was twenty years ago
      Does “the best time to plant a tree was twenty years ago and the second best time is now” date back further than 1988? It is time to look long and hard at the value of the urban forest and create the broad-based efforts — in research, funding and citizen participation — needed to improve […]
    • 2019/11/05 13:15 “Barriers to Data Science Adoption: Why Existing Frameworks Aren’t Working”, Workshop at CASCON-Evoke, Markham, Ontario
      Workshop led by @RohanAlexander and @prof_lyons at #CASCONxEvoke on "Barriers to Data Science Adoption: Why Existing Frameworks Aren't Working". For discussion purposes the challenges are grouped within three themes: regulatory; investment; and workforce.
    • Own opinion, but not facts
      “You are entitled to your own opinions, but not to your own facts” by #DanielPatrickMoynihan is predated on @Freakonomics by #BernardMBaruch 1950 “Every man has a right to his own opinion, but no man has a right to be wrong in his facts”. Source: “There Are Opinions, And Then There Are Facts” | Fred Shapiro […]
    • R programming is from S, influenced by APL
      History of data science tools has evolved to #rstats of the 1990s, from the S-Language at Bell Labs in the 1970s, and the
    • Bullshit, Politics, and the Democratic Power of Satire | Paul Babbitt | 2013
      Satire can be an antidote, says Prof. #PaulBabbitt @muleriders , to #bullshit (c.f. rhetoric; hypocrisy; crocodile tears; propaganda; intellectual dishonesty; politeness, etiquette and civility; commonsense and conventional wisdom; symbolic votes; platitudes and valence issues).
  • Recent Posts

  • Archives

  • RSS on daviding.com

    • 2020/03 Moments March 2020
      The month started with a hectic coincidence of events as both a teacher and student at two universities, abruptly shifting to low gear with government directives for social distancing.
    • 2020/02 Moments February 2020
      Winter has discouraged enjoying the outside, so more occasions for friend and family inside.
    • 2020/01 Moments January 2020
      Back to school, teaching and learning at 2 universities.
    • 2019/12 Moments December 2019
      First half of December in finishing up course assignments and preparing for exams; second half on 11-day family vacation in Mexico City.
    • 2019/11 Moments November 2019
      Wrapped up paperwork on closing out family buildings in Gravenhurst, returned to classes and technical conferences in usual pattern of learning.
    • 2019/10 Moments October 2019
      Tightly scheduled weekdays at Ryerson Chang School, weekends in Gravenhurst clearing out family building as we're leaving the town permanently.
  • RSS on Media Queue

  • Meta

  • Creative Commons License
    This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
    Theme modified from DevDmBootstrap4 by Danny Machal