]> git.immae.eu Git - github/shaarli/Shaarli.git/blob - doc/Create-and-serve-multiple-Shaarlis-(farm).md
Bump Shaarli version to v0.8.7
[github/shaarli/Shaarli.git] / doc / Create-and-serve-multiple-Shaarlis-(farm).md
1 #Create and serve multiple Shaarlis (farm)
2 Example bash script (creates multiple shaarli instances and generates an HTML index of them)
3
4 ```bash
5 #!/bin/bash
6 set -o errexit
7 set -o nounset
8
9 #config
10 shaarli_base_dir='/var/www/shaarli'
11 accounts='bob john whatever username'
12 shaarli_repo_url='https://github.com/shaarli/Shaarli'
13 ref="master"
14
15 #clone multiple shaarli instances
16 if [ ! -d "$shaarli_base_dir" ]; then mkdir "$shaarli_base_dir"; fi[](.html)
17
18 for account in $accounts; do
19 if [ -d "$shaarli_base_dir/$account" ];[](.html)
20 then echo "[info] account $account already exists, skipping";[](.html)
21 else echo "[info] creating new account $account ..."; git clone --quiet "$shaarli_repo_url" -b "$ref" "$shaarli_base_dir/$account"; fi[](.html)
22 done
23
24 #generate html index of shaarlis
25 htmlhead='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
26 <!-- Minimal html template thanks to http://www.sitepoint.com/a-minimal-html-document/ -->
27 <html lang="en">
28 <head>
29 <meta http-equiv="content-type" content="text/html; charset=utf-8">
30 <title>My Shaarli farm</title>
31 <style>body {font-family: "Open Sans"}</style>
32 </head>
33 <body>
34 <div>
35 <h1>My Shaarli farm</h1>
36 <ul style="list-style-type: none;">'
37
38 accountlinks=''
39
40 htmlfooter='
41 </ul>
42 </div>
43 </body>
44 </html>'
45
46
47
48 for account in $accounts; do accountlinks="$accountlinks\n<li><a href=\"$account\">$account</a></li>"; done
49 if [ -d "$shaarli_base_dir/index.html" ]; then echo "[removing old index.html]"; rm "$shaarli_base_dir/index.html" ]; fi[](.html)
50 echo "[info] generating new index of shaarlis"[](.html)
51 echo -e "$htmlhead $accountlinks $htmlfooter" > "$shaarli_base_dir/index.html"
52 echo '[info] done.'[](.html)
53 echo "[info] list of accounts: $accounts"[](.html)
54 echo "[info] contents of $shaarli_base_dir:"[](.html)
55 tree -a -L 1 "$shaarli_base_dir"
56 ```
57
58 This script just serves as an example. More precise or complex (applying custom configuration, etc) automation is possible using configuration management software like [Ansible](https://www.ansible.com/)[](.html)