Start Playing Federated Wiki: http://start.fed.wiki
docker run -p 3000:3000 -it --rm \
dobbs/farm
Visit http://localhost:3000 and http://anything.localhost:3000
docker run -p 3000:3000 -it --rm \
-v ~/.wiki:/home/node/.wiki \
dobbs/farm
Your wiki pages and configuration will be saved in the ~/.wiki folder.
This image's tag does not match the version of the included wiki software. Our version indicates the scale of changes in this tiny devops pipeline.
Testing new images locally:
TAG=1.0.14-prefer-title
IMAGE=dobbs/farm:$TAG
docker build --tag $IMAGE .You might also want to remember the most recent tag:
git tag --list | tail -1Update WIKI_VERSIONS.txt
docker run --rm $IMAGE wiki --version > WIKI_VERSIONS.txtEnd-to-end recipe to publish a new version. May require judgment in the steps before git push and docker push.
# Emit current version to standard error and next version to standard out.
# use that to assign the next TAG
TAG="$(git tag --list | tail -1 | perl -lne 'print STDERR $_;s/(\d+)$/$1+1/e;print $_;')"
IMAGE=dobbs/farm:$TAG
docker build --no-cache --tag $IMAGE .
docker tag $IMAGE dobbs/farm:latest
docker run --rm $IMAGE wiki --version > WIKI_VERSIONS.txt
git add .
git commit -m "upgrade to wiki 0.38.0"
git tag -am "" "$TAG"
git push --atomic origin main "$TAG"
docker push $IMAGE
docker push dobbs/farm:latestSometimes we publish a docker image with no changes to the wiki source
code. This allows us to pick up non-breaking changes to some of the
plugins. Using --no-cache ensures docker re-runs this line from the
Dockerfile in particular: npm install -g --prefix . $WIKI_PACKAGE.
This example shows a configuration using the friends security plugin and making all the wikis under the localhost domain owned by the same author. The browser will demand a login for each localhost subdomain, but will accept the same password for authentication.
{
"admin": "any memorable password",
"autoseed": true,
"farm": true,
"cookieSecret": "any random string",
"secure_cookie": false,
"security_type": "friends",
"wikiDomains": {
"localhost": {
"id": "/home/node/.wiki/localhost.owner.json"
}
}
}
.friend.secret must match the .admin field from config.json
{
"name": "The Owner",
"friend": {
"secret": "any memorable password"
}
}
docker run -p 3000:3000 -it --rm \
-v ~/tmp/wiki:/home/node/.wiki \
dobbs/farm
http://foo.localhost:3000 http://bar.localhost:3000
You should be able to log into both of those local sites using
'any memorable password'. And if you create a few pages in each
wiki you can examine how the files are laid out in the ~/tmp/wiki
folder where you have stored those config files.
With the local kubernetes example (see examples/k8s/README.md):
k3d image import $IMAGE --cluster wiki
kubectl patch deployment.apps/wiki-deployment \
--type='json' \
-p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"'$IMAGE'"}]'