summaryrefslogtreecommitdiffstats
path: root/create-a-wiki-preview.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'create-a-wiki-preview.mdwn')
-rw-r--r--create-a-wiki-preview.mdwn205
1 files changed, 205 insertions, 0 deletions
diff --git a/create-a-wiki-preview.mdwn b/create-a-wiki-preview.mdwn
new file mode 100644
index 0000000..05f8153
--- /dev/null
+++ b/create-a-wiki-preview.mdwn
@@ -0,0 +1,205 @@
+---
+title: Create a Fripost wiki preview
+...
+
+This article describes how to set up preview of Friposts wiki.
+
+**Table of contents**
+
+[[!toc]]
+
+The setup will produce the following layout:
+
+```
+ Bare remote Git repository
+ (git.fripost.org:fripost-wiki.git)
+ |
+ | Library and config
+ Repository for Local Edits (~/.ikiwiki/)
+ (~/git/fripost/wiki) |
+ | +---------+
+ | | Ikiwiki |
+ The Preview Ikiwiki Web Part -----| Pandoc |
+ (~/public_html/fripost-wiki) | Plugins |
+ | +---------+
+ +------------+ +---------+
+ | Web server | ---- | Browser |
+ +------------+ +---------+
+```
+
+Where *~/git/fripost/wiki* is a local git repository with remote
+tracking of Fripost's origin remote wiki repository
+*git.fripost.org:fripost-wiki.git*. The local preview version will
+reside in *~/public_html/fripost-wiki*. Eventually it will be accessed
+by pointing the browser to *http://fripost.localhost* and
+*http://wiki.fripost.localhost* respectively. The wiki configuration
+*~/.ikiwiki/fripost-wiki.setup* will be only minor modifications of
+Friposts wiki configuration.
+
+The guide assumes Debian stable. This is the overview of software
+needed:
+
+ * Git -- from Debian
+ * Ikiwiki -- from Debian
+ * Pandoc -- from Debian
+ * Some Ikiwiki plugins (e.g. for Pandoc) which will be provided from
+ Fripost's configuraiton
+ * Nginx -- webserver from Debian
+
+Install and configure Git
+=========================
+
+Refer to [Git och Fripost](git_och_fripost) for installation
+instructions.
+
+You will need the following repositories:
+
+ * <https://git.fripost.org/fripost-ansible>
+ * <https://git.fripost.org/fripost-wiki>
+
+Clone with SSH if you want to edit, which will require you to provide
+a public key to Fripost administrators. Below snippets assume:
+
+ git clone https://git.fripost.org/fripost-ansible ~/git/fripost/ansible
+ git clone https://git.fripost.org/fripost-wiki ~/git/fripost/wiki
+
+Install and configure Ikiwiki, Pandoc and plugins
+=================================================
+
+Refer to [ikiwiki setup](https://ikiwiki.info/setup/) at
+[ikiwiki's official website](https://ikiwiki.info) for initial
+install and configuration and
+[an article on Git](https://ikiwiki.info/rcs/git/) for more details on
+setting up Ikiwiki together with Git.
+
+Install packages referred to in the Ansible configuration:
+
+ sudo apt install \
+ ikiwiki \
+ libauthen-passphrase-perl \
+ highlight-common libhighlight-perl libimage-magick-perl \
+ libmail-sendmail-perl libnet-dns-sec-perl \
+ fcgiwrap spawn-fcgi \
+ pandoc \
+ clamdscan
+
+Copy Ikiwiki configuration from Fripost Ansible repository:
+
+ mkdir -p ~/public_html/fripost-wiki ~/.ikiwiki
+ cp -r ~/git/fripost/ansible/roles/wiki/files/var/lib/ikiwiki/* ~/.ikiwiki
+
+Modify the configuration *~/.ikiwkik/fripost-wiki.setup* according to
+the below (inspect */tmp/fripost-wiki.sed*):
+
+```
+cat <<EOF | tee /tmp/fripost-wiki.sed
+/adminemail:/ s/admin@/$USER@/
+/^adminuser:/,/^[a-z]*:/ {
+ /^ *-/ d
+ /^adminuser:/ a \\
+ - $USER
+}
+/^srcdir:/ s|:.*$|: $HOME/git/fripost/wiki|
+/^destdir:/ s|:.*$|: $HOME/public_html/fripost-wiki|
+/^cgi_wrapper:/ s|:.*$|: $HOME/public_html/fripost-wiki/ikiwiki.cgi|
+/url:/ s|:.*$|: http://wiki.fripost.localhost/ \# http://fripost.localhost/|
+/cgiurl:/ s|:.*$|: http://wiki.fripost.localhost/ikiwiki.cgi|
+/^libdir:\|^ *file:/ s|/var/lib/ikiwiki|$HOME/.ikiwiki|
+/^sslcookie:/ s/1/0/g
+/^git_wrapper:/ s/^/\#/g
+/^wrappergroup:/ s/^/\#/g
+/^historyurl:/ s/^/\#/g
+/^diffurl:/ s/^/\#/g
+/^gitorigin_branch:/ s|:.*$|: ''|
+EOF
+sed -f /tmp/fripost-wiki.sed \
+ < ~/git/fripost/ansible/roles/wiki/files/var/lib/ikiwiki/fripost-wiki.setup \
+ > ~/.ikiwiki/fripost-wiki.setup
+```
+
+*TODO investegate what to do with post update thing.*
+
+Run setup:
+
+ $ ikiwiki --setup ~/.ikiwiki/fripost-wiki.setup
+
+Install and conifgure Nginx and host files
+==========================================
+
+Fripost uses [Nginx](http://nginx.org/en/docs/). For installation and
+configuration
+follow [Ikiwiki on Dot CGI](https://ikiwiki.info/tips/dot_cgi/). Note
+the alexjj comment that on Debian the package *fcgiwrap* automatically
+spwans the FastCGI program.
+
+ sudo apt install nginx
+
+The follwing will configure *http://wiki.fripost.localhost* and
+*http://fripost.localhost*:
+
+```
+cat <<EOF | sudo tee /etc/nginx/sites-available/localhost.fripost.conf
+server {
+ listen [::]:80;
+ listen *:80;
+ server_name fripost.localhost;
+ access_log /var/log/nginx/access.log.localhost.fripost.log;
+ error_log /var/log/nginx/error.log.localhost.fripost.log;
+ location / {
+ root $HOME/public_html/fripost-wiki/website;
+ location /static {
+ root $HOME/public_html/fripost-wiki;
+ }
+ }
+}
+
+server {
+ listen [::]:80;
+ listen *:80;
+ server_name wiki.fripost.localhost;
+ access_log /var/log/nginx/access.log.localhost.fripost.wiki.log;
+ error_log /var/log/nginx/error.log.localhost.fripost.wiki.log;
+ location / {
+ root $HOME/public_html/fripost-wiki;
+ }
+}
+EOF
+```
+
+Make available, test and install:
+
+```
+sudo ln -s -r -t /etc/nginx/sites-enabled/ /etc/nginx/sites-available/localhost.fripost.conf
+sudo nginx -t && sudo systemctl restart nginx.service
+```
+
+Modify host files:
+
+```
+cat <<EOF > /tmp/hosts
+
+# Fripost wiki preview setup
+127.0.1.1 wiki.fripost.localhost fripost.localhost
+::1 wiki.fripost.localhost fripost.localhost
+EOF
+grep -q wiki.fripost.localhost /etc/hosts \
+ || { sudo cp /etc/hosts /etc/hosts.bac_$(date +%Y%m%d) \
+ && sudo sed -i '$ r /tmp/hosts' /etc/hosts ; }
+```
+
+Alternatives to Nginx include Apache. Fripost wiki used include
+configuration for Apache, but these are not maintained any
+longer. Brows this repository history for sample configurations.
+
+Refresh wiki
+============
+
+Now all is in place! Visit <http://wiki.fripost.localhost>. Use the
+following commands to refresh or fully rebuild the wiki:
+
+```
+ikiwiki --setup ~/.ikiwiki/fripost-wiki.setup --refresh
+ikiwiki --setup ~/.ikiwiki/fripost-wiki.setup --rebuild
+```
+
+Happy hacking!