Apple Memoji

Ramblings from Josh Sullivan

Home About Archive Tags Tools Wiki

Wed, Feb 20, 2019

Creating an Online TiddlyWiki on DigitalOcean

TiddlyWiki is a Wiki software that you can run a few different ways including locally only, online, or syncing a local wiki to an online wiki. You can see examples of online TiddlyWiki’s here:

The following tutorial will be an explanation on how to create a TiddlyWiki on a DigitalOcean droplet.

Initial Setup

  1. Sign into DigitalOcean or create an account then create a Ubuntu 18.04 Droplet, the $5 tier is more than enough to start.

  2. Follow these instructions for initial server setup: Initial Server Setup with Ubuntu 18.04
  3. On your domain provider, create the following Host Records:

Type Host Value
A Record @ IP Address of Droplet
A Record www IP Address of Droplet

Install NodeJS and NPM

All of the following are commands you can copy and paste once connected via SSH:

  1. sudo apt update - Update the package index

  2. sudo apt install nodejs npm - Install NodeJS and NPM

  3. nodejs --version - Check NodeJS version

  4. npm --version - Check NPM version

Install TiddlyWiki, Forever, and Nginx

  1. sudo npm install -g tiddlywiki - Install TiddlyWiki

  2. sudo npm install -g forever - Install Forever which allows you to continuously run TiddlyWiki without being connected via terminal

  3. sudo apt install nginx - Install Nginx

  4. sudo ufw app list - Get Firewall Available Applications

  5. sudo ufw allow 'Nginx HTTP' - Allow Nginx HTTP traffic through the firewall

  6. sudo ufw allow 'Nginx HTTPS' - Allow Nginx HTTPS traffic through the firewall

  7. systemctl status nginx - Confirm Nginx is running the output should look like this:

    ? nginx.service - A high performance web server and a reverse proxy server
       Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2019-02-20 18:53:51 UTC; 1min 2s ago
     Docs: man:nginx(8)
      Process: 8300 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
      Process: 8291 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
     Main PID: 8304 (nginx)
    Tasks: 2 (limit: 1152)
       CGroup: /system.slice/nginx.service
           +-8304 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           +-8306 nginx: worker process

Initialize TiddlyWiki

  1. mkdir -p ~/apps/wiki - Make a folder in your home folder called apps with a sub folder wiki (you can name this whatever you would like)

  2. cd apps/wiki - Open the new folder

  3. tiddlywiki mywiki --init server - Create a new wiki in mywiki folder, you can change that name to what you would like.

Initialize Nginx and Add SSL via Certbot from Let’s Encrypt

  1. cd /etc/nginx/sites-available/ - CD into Nginx directory

  2. sudo nano /etc/nginx/sites-available/ This will create your domain config file

  3. Paste the following into the file and change and to your domain:

server {

   location / {
   proxy_set_header        Host             $host;
   proxy_set_header        X-Real-IP        $remote_addr;
   proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;

Press Ctrl+O then Enter then Ctrl+X to save the file then exit the file

  1. sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/ - Symbolic links site to enabled

  2. sudo apt install certbot - Install Certbot

  3. sudo apt-get install python-certbot-nginx Install Nginx Certbot plugin

  4. sudo certbot --nginx - Create HTTPS cert with Let’s Encrypt
    • Select whichever domains you want your cert to cover
    • Press 2 to redirect HTTP traffic to HTTPS, this is recommended
    • The conf files for your selected domains will be updated with the cert information automatically

Running TiddlyWiki

  1. cd ~/PATH/TO/WIKIFOLDER Do not go into the directory of the wiki just to the folder that contains your wiki folder, for example if you created the directory as listed in step 14: cd ~/apps/wiki/

  2. tiddlywiki mywiki --listen replacing mywiki to what your wiki folder is called
    • Now navigate to your domain in a web browser and it should be served correctly.
  3. To run the process without being connected to the server: forever start --spinSleepTime 10000 /usr/local/bin/tiddlywiki /home/username/apps/wiki/mywiki --listen "readers=(anon)" writers=USERNAME username=USERNAME password=PASSWORD

  4. Alternatively you can create a CSV file add it to the root of mywiki and run the following command which will allow anyone to read your wiki but only authenticated via the CSV to write: forever start --spinSleepTime 10000 /usr/local/bin/tiddlywiki /home/username/apps/wiki/mywiki --listen credentials=users.csv "readers=(anon)" "writers=(authenticated)"

  5. For Restricted reading and writing: forever start --spinSleepTime 10000 /usr/local/bin/tiddlywiki /home/username/apps/wiki/mywiki --listen credentials=users.csv "readers=(authenticated)" "writers=(authenticated)"


I’ve been using TiddlyWiki since Friday, February 15, 2019, and have fallen in love with it. It gives me the flexibility I need for keeping track of all kinds of data and doesn’t make you stick to a rigid structure. Tiddlers (entries) are not required to connect to another, and therefore you can have Orphan Tiddlers that are only called upon by linking to one.

I highly recommend at least downloading TiddlyWiki to your local computer and trying it out if you are looking for a wiki software or something similar. Also, check out the Wikis I’ve listed above to see if there are new use cases you might not have thought of yet.

Finally, if TiddlyWiki isn’t for you, there is always DokuWiki as an alternative. An excellent example of DokuWiki is Andrew Canion’s Wiki, have a look there to see if that fits better with your style.

Please feel free to reach out to me with any questions or comments via or via email: contact {AT}


Mon, Feb 18, 2019

I love the look of Carbonize shared code snippets and want to start using them. I also don’t want to force people to have to rewrite the code, so I’m thinking of creating Github gists of the shared snippets so there is an easy way to copy. Thoughts?


Mon, Feb 18, 2019

❄️ I didn’t check the weather forecast for today and woke up to ~3 inches of snow with drifts close to 3 feet due to the wind. Thankfully I have nowhere to go (President’s Day - US Holiday), so I can take my time getting out to clear the car and shovel.


Sun, Feb 17, 2019

For anyone who has a single file journal for the day and time stamps entries:

Do you time stamp in chronological or reverse order? I’m trying to set up a daily journal, unfortunately I lean towards reverse due to websites, but I think it would be better chronologically. Thoughts?


Sat, Feb 16, 2019

I wish TiddlyWiki was using something other than Google Groups for their user forum. I’d prefer a Discourse instance or almost anything else. GG still has a weird issue when opening a search result it displays blank so you need to get the post ID and paste into a working URL.


Sat, Feb 16, 2019

TiddlyWiki now up at It has most of the same content, the Changelog is different and the journal is new with it being easier to manage posts in TW than in DokuWiki. So far I’m leaning towards TW, it was a little harder to setup but once done it’s easier to manage.


Fri, Feb 15, 2019

My New Wiki

On Wednesday I took the plunge and started a wiki: It’s mostly going to be a small information system and sharing site. Instead of using a blog post to put up a TextExpander snippet or an AppleScript I use with DEVONthink, I’m going to put it in the wiki.

I’m currently using DokuWiki, but I am also looking at TiddlyWiki.

I’m having a couple of issues getting TiddlyWiki up and running on a DigitalOcean droplet, so I am going to try and spend some time this weekend working on that setup, then I’m going to compare which I like better and merge the content.


Sat, Feb 9, 2019

Keychron K1 Review

Recently a few different people who bought the Keychron K1 have not been impressed with the keyboard. For example, Shawn Blanc had an issue with the light changing key placement due to:

The first few days I had this keyboard I accidentally toggled the light mode about every 100 words. Which is not great.

I also triggered the change and had to toggle through the different light modes until I returned, but I liked it because I found another mode better suited to my needs. I’ve since hit it on accident two more times, but muscle memory has set in for this keyboard, and I know where to go to avoid clicking the mode changing button.

Shawn goes on to state:

I’m sad to say that after using the keyboard for a couple weeks my current feeling is that it is less than the sum of its parts. It’s a beautiful and well-made keyboard, and the more I use it the more it’s been growing on me. But for whatever the reason, it’s not delightful to use. And if you’re going to have a big, noisy keyboard, it ought to be nothing if not delightful.

I, on the other hand, love this keyboard. Coming from a Das Keyboard Model S Professional for Mac it is much less travel and feels a little better on my wrists. I’m not sure what isn’t so delightful about this keyboard but so far it’s been a great keyboard for me.


Some features to point out are:

  • Dedicated Siri Button
    • I haven’t really used this feature because I haven’t used the keyboard with my iPad much and I never use Siri on my Mac
  • Screenshot Button
    • I’ve started to use this a little more, it’s nice to only have to press one button to get screen grab going
  • Dictation Button
    • I’ve used this a couple times and so far it’s worked well
  • Both cabled and bluetooth enabled
  • Feature changes for macOS/iOS or Windows/Android

Bother Points

Two issues I have with the keyboard include, like Shawn, the placement of the backlit light mode button, I think another spot would be better, such as in the top row. The final issue is the second value of the keys are next to the normal value, which gets a little confusing if you are looking for a specific symbol and don’t remember exactly where it is, instead of looking at the top of the keys you need to check across the keys.

Both of these are small issues that only took a few days to acclimate without hindering productivity.


I think this is a great keyboard that majority of people who are coming from far travel Cherry blue switches will not like, but for those of us coming from anything else looking for a smaller key travel keyboard with some mechanical features will be pleased.


Thu, Feb 7, 2019

Twitter Goes Full Marie Kondo

When it comes to cleaning house, Twitter at least seems to have figured out what to toss and what to keep.


Wed, Feb 6, 2019

🍿 Watched: Rebellion

Rebellion is a five part serial drama about the birth of modern Ireland. The story is told from the perspectives of a group of fictional characters who live through the political events of the 1916 Easter Rising.

Part 2 is coming to Netflix on February 22, 2019.

Watching Status

Tue, Feb 5, 2019

The amount of people who are in Boston for the Patriots parade who are already drunk is ridiculous. It is 8:30 A.M. and I’ve seen about 20 people clearly drunk. Have some decency. 😒


Mon, Feb 4, 2019

FCC Accused Of Colluding With Big Carriers On 5G Policy

This week, the heads of the House Energy and Commerce Committee, and the Subcommittee on Communications and Technology (Frank Pallone and Mike Doyle) fired off a letter to the FCC effectively accusing the agency of colluding with carriers to help ensure the industry’s favored policies had a better shot surviving a court challenge. The letter strongly implies that the Representatives already have whistleblower evidence of said collusion:

2019 is going to be the year Ajit Pai is brought to reckoning.


An IndieWeb Webring 🕸💍

Ramblings from Josh Sullivan