TiddlyWiki
Overview
TiddlyWiki is an open-source, self-contained personal wiki and non-linear notebook. Instead of rigid pages, everything you write is captured as a small, individually addressable note called a tiddler. Tiddlers link, tag and transclude each other freely, so a knowledge base grows the way you think.
This SecureAnyCloud image runs TiddlyWiki's own built-in Node.js server (the tiddlywiki npm package, pinned to a stable release) as a dedicated tiddlywiki system user. Each tiddler is stored as a file under the server wiki folder at /var/lib/tiddlywiki/mywiki, and nginx fronts the server on port 80. TiddlyWiki's own HTTP Basic Authentication protects access, and a unique admin password is generated on the first boot of every VM. There is no default login.
What you get:
- TiddlyWiki 5.4.x running on its built-in Node.js server as the
tiddlywikisystem user - Node.js 22 LTS preinstalled from the NodeSource apt repository
- The TiddlyWiki notebook UI on
:80, fronted by nginx - TiddlyWiki's built-in HTTP Basic Authentication requiring a per-VM credential for every read and write
- A unique admin password generated on first boot and recorded in a root-only file
tiddlywiki.serviceandnginx.serviceas enabled, active systemd units- An unauthenticated
/healthzendpoint for Azure Load Balancer health probes - 24/7 SecureAnyCloud support
Prerequisites
You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.
Standard_B2s (2 vCPU / 4 GiB RAM) is a comfortable starting size, because TiddlyWiki is a lightweight single-user notebook server.
Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp. TiddlyWiki serves plain HTTP on port 80. For production, terminate TLS in front of it with your own domain and consider adding 443/tcp (see Maintenance).
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for TiddlyWiki by SecureAnyCloud, and select Create.
On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80).
Then select Review + create and Create.
Step 2 - Deploy from the Azure CLI
Accept the Marketplace terms once per subscription, then create the VM and open port 80.
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:tiddlywiki-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name tiddlywiki \
--image sac1647283583153:tiddlywiki-ubuntu-24-04:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--ssh-key-values ~/.ssh/id_ed25519.pub \
--vnet-name <your-vnet> --subnet <your-subnet> \
--public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name tiddlywiki --port 80 --priority 1010Step 3 - Connect to your VM
Connect over SSH as azureuser.
ssh azureuser@<vm-public-ip>Step 4 - Confirm the services are running
Check the service states and the installed versions:
systemctl is-active tiddlywiki.service nginx.service tiddlywiki --version node --versionBoth systemd units report active. tiddlywiki.service runs TiddlyWiki's Node.js server, bound to the loopback connector 127.0.0.1:8080. nginx.service fronts it on port 80.
Step 5 - Retrieve your login credentials
The appliance's access gate is TiddlyWiki's built-in HTTP Basic Auth, with the user admin. The password is generated on the first boot of your VM and written to a root-only file. Read it with sudo:
sudo cat /root/tiddlywiki-credentials.txtThe file contains TIDDLYWIKI_URL, TIDDLYWIKI_USERNAME and TIDDLYWIKI_PASSWORD. Store the password somewhere safe. It is the key to your wiki.
Step 6 - Confirm the health endpoint
nginx serves an unauthenticated health endpoint for load balancers and probes:
curl -s http://localhost/healthzIt returns ok. This endpoint never requires authentication, so it is safe for an Azure Load Balancer health probe.
Step 7 - Confirm the login password is enforced
Because a password is set on first boot, an unauthenticated request to the wiki is rejected with HTTP 401. Nobody reaches your notes without the password:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1/It prints 401. A wrong password is also rejected with 401. Only the per-VM password from Step 5 returns 200:
curl -s -o /dev/null -w '%{http_code}\n' -u 'admin:<TIDDLYWIKI_PASSWORD>' http://127.0.0.1/This prints 200. TiddlyWiki requires this credential for every read and every write, so the wiki is never world-readable or world-writable.
Step 8 - Sign in to your wiki
Browse to http://<vm-public-ip>/. Your browser prompts for HTTP Basic Auth credentials. Enter admin and the password from Step 5.
TiddlyWiki then loads its notebook view. The story river on the left shows your open tiddlers, starting with a GettingStarted note. The sidebar on the right gives you the new-tiddler, control panel and save controls, a search box, and the Open, Recent, Tools and More tabs.
Step 9 - Create and edit a note
Click the + (new tiddler) button at the top of the sidebar. TiddlyWiki opens an edit view. Give the note a title, add tags, and type its body with the formatting toolbar (bold, italic, headings, lists, links, images and more).
Click the check mark to save. The change is written straight back to the server wiki folder on your VM.
Step 10 - Search across your wiki
Type into the search box at the top of the sidebar to find tiddlers instantly. TiddlyWiki matches on titles and full text as you type and shows the results in a live dropdown. This is how you navigate a growing knowledge base without any folder hierarchy.
Step 11 - Adjust settings in the Control Panel
Open the Control Panel (the gear icon in the sidebar) to configure your wiki. You can set the title and subtitle, choose which tiddlers open at startup, and manage appearance and themes, plugins, saving and keyboard shortcuts. The Info tab confirms the running TiddlyWiki version and the admin sign-in username.
Step 12 - Confirm where your wiki is stored
Every tiddler is saved as a file under the server wiki folder on your VM, so your notes persist across reboots and are captured with the disk. List the folder:
sudo ls -la /var/lib/tiddlywiki/mywikiYou see the tiddlywiki.info server configuration and a tiddlers directory that holds one file per note. Back up /var/lib/tiddlywiki to preserve your whole wiki.
Maintenance
- Login password: the Basic Auth password is generated on first boot and stored in
/root/tiddlywiki-credentials.txt. To change it, runsudo sh -c 'printf "%s" "NEW_PASSWORD" > /var/lib/tiddlywiki/.tw-password' && sudo chown tiddlywiki:tiddlywiki /var/lib/tiddlywiki/.tw-password && sudo systemctl restart tiddlywiki. - Your wiki data: all notes live under
/var/lib/tiddlywiki/mywiki/tiddlers, one file per tiddler. Back up/var/lib/tiddlywikito preserve your content and password. - Upgrades: TiddlyWiki is installed globally via npm. To upgrade a running VM, run
sudo npm install -g tiddlywiki@latest, thensudo systemctl restart tiddlywiki. - TLS: TiddlyWiki serves plain HTTP on port 80. Front it with TLS (for example certbot with your own domain) before running it in production.
- Security patches: unattended-upgrades remains enabled, so the OS keeps receiving security updates automatically.
- License: TiddlyWiki is BSD 3-Clause licensed. This image ships the open-source TiddlyWiki. The SecureAnyCloud charge covers packaging, security patching, image maintenance and support.
Support
SecureAnyCloud provides 24/7 expert support for this image. Contact sales@secureanycloud.com.
Deploy on Azure
Launch TiddlyWiki on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Overview
This image runs TiddlyWiki 5.4.1, the open-source, self-contained personal wiki and non-linear notebook, on Ubuntu 24.04 LTS. Instead of rigid pages, everything you write is captured as a small, individually addressable note called a tiddler. Tiddlers link, tag and transclude each other freely, so a knowledge base grows the way you think.
The image runs TiddlyWiki's own built-in Node.js server (the tiddlywiki npm package) on the Node.js 22 LTS runtime. An unprivileged tiddlywiki system account runs it under a systemd service that starts it on boot and restarts it on failure. Each tiddler is stored as a file under a server wiki folder, so every change you make in the browser is written straight back to the instance.
What you get:
- TiddlyWiki 5.4.1 running on its built-in Node.js server as the
tiddlywikisystem user - Node.js 22 LTS preinstalled from the NodeSource apt repository
- The TiddlyWiki notebook UI on port 80, fronted by nginx
- TiddlyWiki's built-in HTTP Basic Authentication requiring a per-instance credential for every read and write
- A unique admin password generated on first boot and recorded in a root-only file
- A dedicated EBS data volume for the wiki store, mounted by filesystem UUID
tiddlywiki.serviceandnginx.serviceas enabled, active systemd units- An unauthenticated
/healthzendpoint for load balancer health checks - 24/7 SecureAnyCloud support
The server listens on the loopback address 127.0.0.1:8080 by design and is never exposed directly. nginx is installed as a reverse proxy on port 80 that forwards requests to the server, with a raised upload limit for large tiddlers and attachments. Visitors reach the notebook on the standard HTTP port.
TiddlyWiki's own built-in HTTP Basic Authentication is the load-bearing gate. The server runs with readers=(authenticated) writers=(authenticated), so every read and every write must present the admin credential, and an unauthenticated request is rejected with 401.
On the first boot of every deployed instance, a one-shot service generates a fresh per-instance admin password. It writes the password to a file the server reads at start and to /root/tiddlywiki-credentials.txt (mode 0600, readable only by root). Two instances launched from the same AMI never share a password, and no default password ships in the image.
The wiki content, meaning each tiddler file plus the per-instance password file, lives under /var/lib/tiddlywiki on a dedicated, independently resizable EBS data volume kept separate from the operating system disk.
The default security group for this listing opens port 22 (SSH) and port 80 (HTTP) only.
Prerequisites
- An AWS account subscribed to this product in AWS Marketplace
- An EC2 key pair in your target region for SSH access
- A security group that allows inbound TCP 22 (SSH) from your IP and TCP 80 (HTTP) from your users
- Recommended instance type:
m5.largeor larger
Connecting to your instance
SSH in as the default login user for your operating system variant. Use the key pair you launched with.
OS variant Login user Example
Ubuntu 24.04 ubuntu ssh -i your-key.pem ubuntu@<instance-public-ip>
Step 1 - Launch from the AWS Marketplace console
In the AWS Marketplace, open this product. Choose Continue to Subscribe, then Continue to Configuration, then Continue to Launch.
Pick your region, the m5.large instance type (or larger), your VPC and subnet, and your key pair. Choose a security group that allows inbound TCP 22 from your IP and TCP 80 from your users. Then launch the instance.
Step 2 - Launch from the AWS CLI (alternative)
You can also launch from the CLI. Replace the AMI ID with the one shown on the product's launch page for your region. Supply your own key pair, subnet and security group.
aws ec2 run-instances \
--image-id ami-0example1234567890 \
--instance-type m5.large \
--key-name your-key \
--security-group-ids sg-0example \
--subnet-id subnet-0example \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=tiddlywiki}]'Step 3 - Retrieve the per-instance admin password
SSH to the instance and read the credentials file written on first boot. The file is mode 0600 and owned by root, so read it with sudo:
sudo cat /root/tiddlywiki-credentials.txtThe file shows the URL and the unique admin password generated for this instance:
# TiddlyWiki - generated on first boot by tiddlywiki-firstboot.service
# These credentials are unique to this instance. Store them somewhere safe. TIDDLYWIKI_URL=http://203.0.113.10/ TIDDLYWIKI_USERNAME=admin TIDDLYWIKI_PASSWORD=<set-at-first-boot>Step 4 - Confirm the services are healthy
Confirm that both services are active and check the installed versions:
systemctl is-active tiddlywiki.service nginx.service tiddlywiki --version node --versionactive active 5.4.1 v22.23.1Confirm the listeners. The TiddlyWiki server is loopback-only on 8080, and nginx is on 80.
sudo ss -tlnp | grep -E ':80 |:8080 'LISTEN 0 511 127.0.0.1:8080 0.0.0.0:* users:(("node",...)) LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",...))nginx itself serves the static /healthz endpoint. It is the one path that does not require authentication, so use it for load balancer health checks:
curl -s -o /dev/null -w 'healthz:%{http_code}\n' http://127.0.0.1/healthzhealthz:200Prove the authentication gate end to end without printing the password. An unauthenticated request is rejected, and the per-instance password from the credentials file is accepted. The password is read into a shell variable and never echoed:
curl -s -o /dev/null -w 'unauth:%{http_code}\n' http://127.0.0.1/
PW=$(sudo grep '^TIDDLYWIKI_PASSWORD=' /root/tiddlywiki-credentials.txt | cut -d= -f2-)
curl -s -o /dev/null -w 'authed:%{http_code}\n' -u "admin:$PW" http://127.0.0.1/unauth:401 authed:200Step 5 - Sign in and open your notebook
Browse to http://<instance-public-ip>/. Your browser prompts for a login. Enter the username admin and the password from Step 3.
TiddlyWiki opens with the story river on the left, which is the column of open tiddlers. The sidebar on the right holds the title, the search box, and the Open, Recent, Tools and More tabs.
Click any link to open that tiddler in the river. Click a tiddler's close icon to remove it from the river without deleting it.
Step 6 - Create and link tiddlers
Click the plus icon in the sidebar to create a new tiddler, or click the edit pencil on any tiddler to change it. In edit mode you get a formatting toolbar, a tags field, and the raw wiki-text body.
Link to another tiddler by wrapping its title in double square brackets. Tag a tiddler to group it with related notes. Transclude one tiddler inside another so a single fact lives in one place.
Click the tick to save. Every change is written back to the server wiki folder on the instance.
Step 7 - Find anything with search
Type into the search box at the top of the sidebar. TiddlyWiki matches on titles and full text as you type and shows a live results list. A growing knowledge base stays instantly navigable, however many tiddlers it holds.
Step 8 - Administer with the control panel
Click the gear icon in the sidebar to open the control panel. Its tabs let you set the wiki title and subtitle, choose which tiddlers open at startup, manage appearance and themes, review plugins, and set keyboard shortcuts. The Info tab confirms the running TiddlyWiki version.
Step 9 - Change the admin password
The server reads the admin password from /var/lib/tiddlywiki/.tw-password at start. To set your own password, write the new value to that file (owned by the tiddlywiki user) and restart the service:
sudo sh -c 'printf "%s" "<new-password>" > /var/lib/tiddlywiki/.tw-password'
sudo chown tiddlywiki:tiddlywiki /var/lib/tiddlywiki/.tw-password
sudo chmod 600 /var/lib/tiddlywiki/.tw-password
sudo systemctl restart tiddlywiki.serviceAfterwards, update the record in /root/tiddlywiki-credentials.txt so it matches, or keep your new password in your own password manager.
Step 10 - Where your data lives, and backup
The wiki store is on a dedicated EBS data volume mounted at /var/lib/tiddlywiki. The volume is mounted by filesystem UUID, so it survives reboots and re-launch. Each tiddler is a file under /var/lib/tiddlywiki/mywiki/tiddlers.
Because it is a separate volume, you can grow it independently of the OS disk and snapshot it with Amazon EBS. To take a file-level backup of the wiki folder, run:
sudo tar czf <backup-dir>/tiddlywiki-$(date +%F).tgz -C /var/lib/tiddlywiki mywikiCopy the archive off the instance, or take an EBS snapshot of the data volume, on whatever schedule suits you.
Step 11 - Enable HTTPS (recommended)
TiddlyWiki serves plain HTTP on port 80. For production, put it behind TLS. The simplest options are to terminate TLS at an AWS Application Load Balancer or CloudFront in front of the instance, or to run Let's Encrypt directly on the instance with your own domain.
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d <your-domain>First point your domain's DNS at the instance (or the load balancer) and open port 443 in the security group.
Step 12 - Service management
Both units are enabled and start on boot. Confirm this:
systemctl is-enabled tiddlywiki.service nginx.serviceenabled enabledManage them with the usual systemctl verbs:
sudo systemctl restart tiddlywiki.service
sudo systemctl restart nginx.service
sudo journalctl -u tiddlywiki.service -n 50 --no-pagerSupport
SecureAnyCloud provides 24/7 technical support for this image by email and live chat. Our engineers help with deployment, the built-in authentication model and password rotation, backing up and restoring the server wiki folder, TLS termination and scaling.
- Email: sales@secureanycloud.com
- Live chat: available 24/7
All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
Deploy on AWS
Launch TiddlyWiki on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com