welcome: please sign in

The following 666 words could not be found in the dictionary of 7 words (including 7 LocalSpellingWords) and are highlighted below:
2f   able   above   access   Access   accessed   account   Account   accounts   acl   acount   action   actions   active   actually   add   Adding   additional   address   administer   affect   afs   after   alias   all   All   allow   allowed   Allowing   allowing   allows   almost   already   also   alter   always   an   analyze   and   Andrew   anonymous   answer   Anti   any   anyone   anything   app   append   appropriate   are   argument   arguments   as   As   ask   at   At   automatically   avoid   back   Backup   backup   Backups   backups   bad   Bar   base   bash   be   because   becomes   been   before   Before   below   best   better   bin   blob   bogus   brings   broken   browser   but   by   cache   call   can   cannot   Category   cause   caution   cd   certainly   cgi   change   Change   changes   characters   check   checks   choose   choosing   claim   cleancache   code   command   Command   commands   common   config   Config   configuration   Configuration   configure   configuring   considered   consult   contain   containing   contains   Contents   continue   continuing   control   Control   Coop   Copy   copy   could   cp   created   creates   Creation   creation   css   curious   current   customized   cut   damage   data   date   decide   dedicated   Default   default   defaults   delete   deleted   Depending   detailed   details   detective   dir   directory   dirname   disabled   Do   do   doc   Docs   document   documentation   does   Dom   domain   domains   Domtool   domtool   don   done   down   download   Earlier   easier   easiest   easy   echo   edit   editing   editlog   editor   Editor   editors   either   else   email   enable   enabled   Enabling   enabling   encounter   end   entering   error   Error   especially   even   eventually   exactly   example   examples   exec   existence   expectation   expects   expensive   explain   explains   extract   f1   fake   farm   Farm   few   field   figure   figured   File   file   files   final   find   finding   first   First   folder   following   Foo   For   for   forget   form   format   found   fr   from   full   future   gather   generate   generated   get   git   go   good   Good   grant   grind   group   gz   had   halt   handily   has   have   hb   hcoop   help   Help   here   Here   hiearchy   home   host   hosted   how   however   Ht   Htdocs   htdocs   http   hundreds   idea   if   If   images   in   Inactive   inactive   incorrect   increases   individual   information   init   initiate   install   installation   installed   Installing   instance   instances   instead   instructions   internal   into   intrusive   inundate   irreversible   irrevocable   is   isn   it   It   its   Just   just   keep   kept   know   Known   large   larger   last   later   latest   least   leave   like   likely   line   linearly   lines   link   list   List   lists   Lists   ll   loading   local   located   location   lock   locked   lockfile   lockfiles   login   look   looking   lot   Ls   luck   machine   made   maint   make   Make   making   Making   Managing   managing   Manual   manually   market   may   Member   members   merge   mig11   might   migrate   Migrating   migration   Migration   minimal   mire   misc   modifying   Modifying   module   moin19   moinmoin   Moniker   month   more   most   moved   multiconfig   must   mv   mymoin   mywiki   name   Name   need   needed   needs   net   new   New   newaccount   news   next   Next   no   not   note   Note   notice   now   number   occurs   Of   of   offer   old   On   on   once   one   Only   only   onto   open   options   or   other   others   Otherwise   ought   our   out   output   Over   override   overriding   own   page   Page   pages   parameter   parent   particular   password   path   per   permissions   pipe   place   plain   plugin   plugins   point   policy   prefix   Prefix   prevent   previous   previously   probably   problem   problems   proceed   process   program   provide   provides   prune   public   pwd   py   python   question   Questions   quickly   quite   re   read   really   reasonable   recipe   recommended   recover   recoverpass   redirect   refer   refuse   register   registration   release   rely   relying   Remember   remove   Removing   removing   replace   represented   Request   request   requested   require   requires   resides   rest   result   revert   review   rights   risk   risky   rm   run   running   say   screw   script   Script   scripts   section   sections   See   see   serve   served   Server   server   serving   set   Setting   setting   settings   Settings   share   shared   shotgun   should   show   silently   similar   since   site   sitename   skip   slightly   slowing   so   some   something   Spam   spam   spammers   stale   Starting   static   step   steps   still   store   stores   subdirectory   substitute   suexec   suggested   superuser   support   Switch   system   System   Table   take   tell   tested   Text   text   than   that   The   the   their   them   theme   themes   Themes   themselves   then   Then   there   they   thing   Things   things   this   This   through   time   Tips   tld   to   To   too   Tool   Tricks   tricky   Trivial   Trusted   trusted   try   two   type   uid   uids   Unfortunately   Unlock   unset   up   update   updates   upgrade   upgrades   Upgrading   url   use   used   useful   user   User   username   Users   users   using   usr   ve   version   versioned   versions   very   vhost   viewed   virtual   want   warning   way   We   we   web   Welcome   were   what   When   when   where   whether   which   wide   Wiki   wiki   wikiconfig   wikidata   wikis   will   with   within   without   work   working   would   write   writeable   You   you   Your   your   yourself  

Clear message

MemberManual / WebApplications / MoinMoin

This page explains how to quickly set up a MoinMoin wiki on one of your domains, and also how to migrate old MoinMoin wiki instances to work with the current MoinMoin release.

New wiki

We already have MoinMoin installed on our system. All you need to do is run a script, add some DomTool configuration, and edit your wikiconfig.py file.

Making a new MoinMoin instance

All you have to do is figure out which directory you want to use to store the wiki (we refer to it as $INSTANCE below), and then run:

moinmoin-install $INSTANCE

For the curious, the moinmoin-install script may be viewed here (FIXME: broken link).

Adding to your Domtool configuration

The easiest thing is to set up a dedicated web site for serving a MoinMoin wiki, like so:

moinMoin "mymoin" where
  Script = home "$INSTANCE/moin.cgi"

When this is done within $YOURDOMAIN, you get a new web virtual host mymoin.$YOURDOMAIN which expects your moin.cgi script to be in the base of your home directory. Change the Script parameter to alter this expectation. The static moin files are served out of http://mymoin.$YOURDOMAIN/moin$VERSION/..., and the wiki pages themselves are accessed at URLs like http://mymoin.$YOURDOMAIN/PageName.

You can also add a MoinMoin wiki within a larger virtual host. For example:

web "other" where
  alias "/something" "/something_else";

  addMoinMoin where
    Htdocs = "/wikidata";
    Script = home "$INSTANCE/moin.cgi";
    Prefix = "/mywiki"

Here, we add a wiki to a vhost other.$YOURDOMAIN that also has some other config. We ask to serve the static files with the URL prefix wikidata instead of moin$VERSION, we say that moin.cgi file is found in the other subdirectory of our home directory, and we ask to serve wiki pages at http://other.$YOURDOMAIN/mywiki/PageName. If you want to use the default HtDocs (recommended), set it to moin_default_htdocs which will use the appropriate versioned static files path for the current MoinMoin release.

Modifying wikiconfig.py

As the final step, you will want to edit wikiconfig.py, which resides in your $INSTANCE folder. You must at least set sitename, and will want to configure the superuser and acl_rights_before settings to be able to administer your wiki.

Your new wiki's local HelpOnConfiguration page or HelpOnConfiguration should explain the rest.

If you customized the HtDocs location, you must edit the url_prefix_static. This is almost always a bad idea, however, since the default will result in the best cache policy and avoid problems with loading incorrect static files when we upgrade the shared files.

At this point, check out the rest of that file to set, for example, your site name. When done, tell domtool to update your configuration, and point a browser at your new wiki installation.

Setting the Default Access Control List

See HelpOnAccessControlLists for detailed instructions on setting access control lists.

As of MoinMoin 1.9.10, the default ACL only allows Trusted users to edit pages (acl_rights_default = u"Trusted:read,write,delete,revert Known:read All:read"). Earlier versions allowed users with accounts (Known) and without accounts (All) to edit by default, but would show a TextCHA (if enabled) to Known/All members.

If you'd like all users with accounts to edit, and anyone without an account to be able to read pages you can override the default acl: acl_rights_default = u"Trusted:read,write,delete,revert Known:read,write,revert All:read". If you decide to allow users without accounts to edit pages, it is recommended to only grant All:read,write and not grant anonymous users delete or revert permissions (delete in particular can do irreversible damage). Only allowing trusted users to delete pages is recommended, especially if you allow open account registration.

Allowing Account Creation

Starting with MoinMoin 1.9.10, the newaccount action is disabled by default, and users will need to manually request accounts to be created by a wiki superuser. It is recommended to leave newaccount disabled, and document how to request an account on your WelcomePage. Users will need to provide you with their requested WikiName and email address. A superuser then creates the account by using Settings -> Switch User, and entering the new username and email address. The user that requested the account can then claim the account by using the recoverpass action and setting a password.

If your wiki is for internal use only, or if you will be enabling a TextCHA for newaccount on a public wiki, you can enable public account creation by overriding actions_superuser in your configuration. For a wiki using multiconfig (default at HCoop):

    actions_superuser = multiconfig.DefaultConfig.actions_superuser[:]

If you have set up a wiki farm, the configuration suggested by MoinMoin will work:

   actions_superuser = FarmConfig.actions_superuser[:]

If you allow the newaccount action, you must set a TextCHA on the action, or spammers will inundate your wiki with fake accounts.


If you override the defaults and allow new account creation on your wiki, you must enable TextCHAs on your login form or your wiki will eventually grind to a halt

Unfortunately, spammers have figured out how to register MoinMoin accounts, and, even if you only allow editing by a trusted group, will register hundreds of accounts per month on your wiki after they've found it. Over time, you will notice the wiki slowing down since moin stores account information in individual files (finding a file in a UNIX directory becomes linearly more expensive as the number of files increases).

See HelpOnSpam for details on configuring TextCHA. Enabling TextCHAs will automatically place one onto the user registration form; if you choose a reasonable question/answer this will prevent shotgun spammers from silently slowing down your wiki.

Migrating old MoinMoin wikis

Depending on the last version of MoinMoin you used, this could be tricky. The good news is that once you migrate your wiki instance to the version of MoinMoin that we have installed, migration should be a lot easier in the future.

If you know what version of MoinMoin you used previously, then skip to the appropriate section. Otherwise read on, and we will try to help you figure it out.

We will call your MoinMoin data directory $DATA.

Before MoinMoin 1.2

Good luck. You'll have to download MoinMoin 1.2.4 yourself, upgrade to it first, and then remove MoinMoin 1.2.4 and proceed with the next sections. If you have hosted a MoinMoin on an old HCoop server, you almost certainly had a later version of MoinMoin than this.

MoinMoin 1.2 through 1.3.4

If you want to know whether you have at least MoinMoin 1.3.4, check for the existence of the $DATA/plugin/__init__.py file. If you have it, skip this section. Otherwise, continue on.

First, back up your data by making a copy of it.

Then, change to the directory where the migration scripts are located:

$ cd /usr/share/python-support/python-moinmoin/MoinMoin/script/old/migration/

Then, consult /usr/share/doc/moinmoin-common/README.Migration.gz, and figure out which scripts you need to run. Unfortunately, you'll have to either know exactly which version of MoinMoin you were last using, or do some detective work by looking at the migration scripts themselves.

To run an individual script (in this example, the 12_to_13_mig11.py script), do:

$ ./12_to_13_mig11.py $DATA

This brings you up to MoinMoin 1.3.5.

MoinMoin 1.3.5

If you have previously used an old HCoop server, this is most likely the version you last used.

First, change to the directory where the migration scripts are located:

$ cd /usr/share/python-support/python-moinmoin/MoinMoin/script/old/migration/

Then, run just this one migration script:

$ ./152_to_1050300.py $DATA

This brings you up to MoinMoin 1.5.3.

MoinMoin 1.5.3

You have it easy. Just run the following, from any directory.

$CONFIGDIR is the full path to the directory that has your wikidata.py file, without any "~" characters. We will call your Wiki URL (example: wiki.DOMAIN.TLD/) $WIKIURL.

$ moin --wiki-url=$WIKIURL migration data

Moin 1.7.x

Remember to make a backup. The 1.7 to 1.9 update is slightly more intrusive than previous updates, and you cannot go back if you screw up!

If you installed moin using moinmoin-install on mire, this is the version you are using. The next version we offer is 1.9.5. To make things easier in the future, we moved the moin install from the local machine to afs. Upgrading your data is similar to previous version, where $CONFIGDIR is the directory containing your wikiconfig.py.

/afs/hcoop.net/common/bin/moin --config-dir=`pwd` --wiki-url=$WIKIURL maint cleancache
/afs/hcoop.net/common/bin/moin --config-dir=`pwd` --wiki-url=$WIKIURL migration data

MoinMoin made a number of changes to their module hiearchy in 1.9, so you'll also need to replace your copy of moin.cgi with the latest version:

cp /afs/hcoop.net/common/app/moin/installed/moin19/share/moin/server/moin.cgi $LOCATION-OF-YOUR-MOIN.CGI

For this release, it is recommended that you copy a new version of the system-wide wikiconfig.py from /afs/hcoop.net/common/app/moin/installed/moin19/share/moin/config/wikiconfig.py and merge the minimal settings needed from your current config. Things to look out for:

Tips and Tricks

The moin command line program is installed at /afs/hcoop.net/common/bin (which is in the default path for bash users). It is quite useful for managing your wiki; see HelpOnMoinCommand for its documentation. You will need to provide at least --config-dir and --wiki-url as arguments (represented by ... in our examples).

Managing Inactive Users

You may find yourself with a large number of inactive users; a likely cause is registration spam if you have a wiki relying on a trusted editors group instead of TextCHA. Moin handily provides a command to list and remove inactive users.

The process of removing inactive users occurs in two steps. First you gather the list of active and inactive users in a file (substitute $KEEP with a name of your choosing)

moin ... acount inactive --py-append=$KEEP

$FILE will contain the set of users that are to be kept. If you see any bogus accounts in the file, remove the line containing them. Next, using the file of users to keep, review which members would be deleted were you to proceed:

Make a backup of your wiki before continuing (or at least the data/user directory). If you forget the --show argument you will initiate an irrevocable change.

If you do screw your wiki up, MemberManual/Backups might help you recover, but don't rely on it!

moin ... account inactive --py-exec=$KEEP --show

This will result in output like:

1239843008.83.54402     u'FooBar'    u'email@domain.tld'        0

You probably want to redirect this to a file to analyze in a text editor since there will likely be at least a few users you do not want to prune. When you encounter a user you do not want to delete, note the uid (the first field in a line, e.g. 1239843008.83.54402 in the example above). You will need to add a new line to $KEEP in the format:


If you copy all of the lines from the list you want to keep into a new file, you can pipe it through cut -f1 to extract the UID.

FIXME: Trivial script to take list of lines from $KEEP and generate editlog commands to keep additional users

FIXME: document actually removing inactive users

Removing stale editor backups

This recipe has not been tested with Moin after 1.7.x, proceed at your own risk. If you know a better way or that it does still work, update the page!

If you want to remove the "MoinEditorBackup" files from your wiki instance, then do the following.

for i in $(find $DATA/pages -type d \
  -name '*(2f)MoinEditorBackup'); do
    rm -fr $i

Unlock locked files

This recipe has not been tested with Moin after 1.7.x, proceed at your own risk. If you know a better way or that it does still work, update the page!

If your wiki instance still isn't working, then you might have a stale lock file or two. Do the following to remove stale lockfiles.

for i in $(find $DATA/pages -type f -name current-locked); do
    echo "Removing stale lockfile in $(dirname $i) ..."
    mv $i $(dirname $i)/current

500 Server Error

If you get a 500 server error when running your wiki, one likely cause is permissions on your $INSTANCE directory. The directory which contains moin.cgi needs to have permissions 755, because suexec will refuse to run the cgi if its parent directory is writeable by others. Note that the directory permissions do not actually affect anything (since we're using AndrewFileSystem), but modifying the suexec code to skip the checks is considered too risky.

Installing Themes

You can install most plugins with no problem, but themes at least require that you place files into the shared htdocs. You have two options:

  1. Request that we install the static files site-wide (no problem for things in the theme market)
  2. Copy the static files into your own directory, and change HtDocs (this requires that you keep up to date with upgrades)

We are serving the css and images for at least the following themes:


MemberManual/WebApplications/MoinMoin (last edited 2018-10-04 03:09:37 by ClintonEbadi)