Installing and configuring standalone server

See also: HelpOnConfiguration/IntegratingWithApache

The standalone server is especially made for local wikis because it does not need a web server installed. Only Python and Moin are necessary!

To install and run the standalone server:

  1. If MoinMoin is not installed yet, perform ../BasicInstallation

  2. Create a wiki instance as described in ../WikiInstanceCreation

  3. Copy moin.py to your wiki directory, where your wikiconfig.py is

  4. If you installed with --prefix option, you must edit moin.py and set docs to the correct path.

  5. Run moin.py

  6. Access your wiki at http://localhost:8000/

On most cases, the default settings will be just fine. You may want to edit moin.py and change some of the options, as described in the next section.

Configuring moin.py

System path configuration

If you did a standard install, and you are not a developer, you probably want to skip this section. If not, you might want to add the path to moin and config file, like that:

import sys
sys.path.insert(0, '/path/to/moin')
sys.path.insert(0, '/path/to/wikiconfig')

Config class options

Option

Default

Comment

name

'moin'

Server name, used by default for log and pid files. Info (!) New in 1.5

docs

'/usr/share/moin/wiki/htdocs'

Path to moin shared files. If you used --prefix install, the default path will not work, and you must set the path to 'PREFIX/share/moin/wiki/htdocs'.

user

'www-data'

If you run as root, the server will run with as this user

group

'www-data'

If you run as root, the server will run with as this group

port

8000

Port to serve. To serve privileged port under 1024 you will have to run as root

interface

'localhost'

The interface the server will listen to. The default will listen only to localhost. Set to '' to listen to all.

logPath

name + '.log'

Log file. Default is commented.

serverClass

'ThreadPoolServer', 'ThreadingServer', 'ForkingServer', 'SimpleServer', 'SecureThreadPoolServer'

The server type to use, see the comments in the moin.py. The default is 'ThreadPoolServer', which create a pool of threads and reuse them for new connections. Info (!) New in 1.3.5

threadLimit

10

How many threads to create.

requestQueueSize

50

The count of socket connection requests that are buffered by the operating system. Info (!) New in 1.3.5

properties

 {} 

allow overriding any request property by setting the value in this dict e.g properties = {'script_name': '/mywiki'}. Info (!) New in 1.5

ssl_privkey

 None 

If using the SecureThreadPoolServer, this must point to the server's private key Info (!) New in 1.6

ssl_certificate

 None 

If using the SecureThreadPoolServer, this must point to the server's certificate Info (!) New in 1.6

  • Info (!) There may be more options useful to moin developers, see the comments in moin.py

Using the secure standalone server

Info (!) New in 1.6

The standalone server supports SSL when using the SecureThreadPoolServer server class. The SSL support is provided by the TLSLite library. All wiki traffic is forced to SSL when using the SecureThreadPoolServer.

Two additional configuration options are required when using the SecureThreadPoolServer. First, ssl_privkey must point to the server's private key. Second, ssl_certificate must point to the server's certificate.

Warning /!\ TLSLite does not support a password protected private key unless additional libraries are used. Consult the TLSLite webpage for more information.

Typically a certificate would be purchased from an certificate authority, such as Thawte (http://www.thawte.com). However, since the suggested usage of the standalone server is for personal use, a self signed certificate may be appropriate. For more information on how to generate a server private key, and a self signed certificate, see the openssl HOWTO pages.

For example, to create the server's private key, run the following:

openssl genrsa -out privkey.pem 2048

To create a self signed certificate for the newly created private key, run the following:

openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

moin.py then needs to be told about the generated files privkey.pem and cacert.pem. For the example above, the following lines would need to be added to moin.py:

    ssl_privkey = "/secure/path/to/privkey.pem"
    ssl_certificate = "/secure/path/to/cacert.pem"

Warning /!\ Using a self signed certificate will cause your browser to generate a warning that it cannot verify the identify of the wiki server. This is because the certificate was not signed by a recognized certificate authority (CA). In order to get rid of this warning, you must purchase a certificate from a CA.

Configuring wikiconfig.py

The sample config file should be just fine.

The default value of url_prefix_static is hardcoded into the standalone server script, do not change it or it won't work!

Starting the server

Run moin.py from the command line:

$ ./moin.py
Serving on localhost:8000

Test your wiki at http://localhost:8000/

On Windows, you can double click moin.py to start the server. A new terminal window will be opened. Close the window or press Control + Pause to stop the server.

On Unix, interrupt the server with Control + C in order to shut it down.

Serving port 80 on Unix

On GNU/Linux, Mac OS X or other Posix like OS, you can serve the standard port 80 used for web serving, but you must run as root for this.

Set port to 80, and verify that user and group exists on your system. If not, set them to an existing user, meant for web serving. If needed, chown your wiki dir to this user and group.

Run moin.py as root:

$ sudo moin.py
Password:
Serving on localhost:8000
Running as uid/gid 70/70

Test your wiki at http://localhost/

Running as daemon

If run on Unix, you can run moin.py as a background process:

  1. Have a working moin.py as explained above

  2. Copy the file prefix/share/moin/server/moin to your wiki directory.

  3. Start moin server:

./moin start

To stop the server:

./moin stop

For more info run moin with no arguments.

If you want to start moin from a system startup script, you may need to add the path to moin.py in the top of the script:

# Add the path to moin.py directory 
import sys
sys.path.insert(0, '/path/to/moin')
  • Info (!) New in release 1.5