01Before you paste
Two things have to exist first, and both are done outside this page.
-
A domain, pointed at the server
The file asks Let's Encrypt for a certificate the moment the machine boots, and Let's Encrypt looks your domain up to do it. So the A record has to point at the server's IP address by then. Providers that hand out the address before the machine exists (DigitalOcean's reserved IP, Hetzner's primary IP, UpCloud's floating IP) make this a two-minute job; otherwise create the server, read its IP, set the record, and paste the same file into a rebuild. If the record arrives late, Caddy keeps retrying and the certificate comes when the name resolves.
No domain yet? Leave the field empty. The blog comes up on plain
http://at the server's IP address, and you claim it athttp://<ip>/setupwith the same code. Add the domain later from Settings. -
An account at a provider
Any of them. The smallest Ubuntu 24.04 machine they sell is enough: this blog is one process over two SQLite files, and it idles at about 50 MB of memory. The provider's own form has a box for a file like this one; its name differs and section 03 says where it is for each.
02Make the file
Nothing here leaves your browser. The page fetches the project's own cloud-init file from GitHub, fills in your domain, and draws a setup code from your browser's random number generator.
Write it down, or keep the file: the code is in it. You will type it once, in the browser, and it stops working the moment the blog has an owner. Case and dashes do not matter when you type it.
quireink/quireink image, and starts it behind Caddy, which asks Let's Encrypt for the certificate and renews it by itself. Your posts and pictures live in /var/lib/quire on the server's disk. Every line of it is readable: the file on GitHub is what this page fetches, and the only two lines it changes are DOMAIN and SETUP_CODE.03Boot, then claim
-
Paste, and create the server
Pick Ubuntu 24.04 and the smallest size. The field to paste into is listed under the file above once it is written; on every provider it is a plain text box on the create form, and the file goes in whole, first line to last.
-
Wait about three minutes
The machine boots, installs Docker, pulls the image and asks for the certificate. Opening the address too early shows a connection error or a browser warning; that is the certificate not being there yet. Give it a minute and reload.
-
Open the address and type the code
Go to
https://your-domain/setup. The page says the blog has no owner yet and asks for the setup code. Type it, then choose a username, an email and a password. The next screen shows a QR code for the authenticator app on your phone and ten recovery codes, once; put those where you will still have them in two years.Ten wrong codes from one address shut the door for a quarter of an hour, and the code stops working for good the moment the account exists. There is nothing to clean up afterwards.
-
Write
Everything else is in the admin: the site's name, its language and timezone, the newsletter, comments, the look. The guide takes it from here, and section 03 of it is the same install done by hand, for the day you want to know what the file did.