Before you deploy
- Prepare a dedicated VPS with Hostinger’s Docker environment. Use Hostinger’s Docker VPS guide if Docker Manager is not available. Do not reinstall an existing server that contains data to get this environment. The Slideless image is built for x86-64 (amd64) servers, which is what Hostinger VPS plans run; it does not start on an ARM machine.
- Choose a hostname, for example
slides.example.com. Use a dedicated subdomain in lowercase, not your bare domain (example.com): Slideless sends a strict-transport header that also covers every subdomain of the hostname it serves, so an install at the bare domain would force HTTPS on everything under it for 180 days. - At your DNS provider, add an A record for that hostname pointing to the VPS’s public IPv4 address. Add an AAAA record only if IPv6 also reaches this VPS. Remove conflicting records for the same hostname. If your DNS provider offers an HTTP proxy, use DNS-only mode for this setup.
- Wait until public DNS lookups return the VPS address. Do this before deploying. The certificate authority must be able to reach your hostname.
- Allow inbound TCP ports 80 and 443 in the VPS firewall. Both ports must be free. Keep your existing SSH access rule. Do not open database port 5432 or application port 3000.
Deploy
For a new VPS, use the button — Hostinger may take you through checkout before opening Docker Manager. Finish the DNS steps above before starting the containers.- In hPanel, open VPS → Manage → Docker Manager.
- Choose Compose → Compose from URL.
-
Paste the template URL:
-
Give the project a name, such as
slideless. Keep this name for future redeployments so Docker reuses its data volumes. -
Set the project environment variable
SLIDELESS_DOMAINto your hostname. Enter onlyslides.example.com, withouthttps://, a port, or a path. If hPanel reports a missing variable during import, add it in the project’s environment variables section and validate again before deploying. - Review the configuration and click Deploy.
init container creates a database password and then exits successfully.
An exited init container with exit code 0 is expected. PostgreSQL starts
next, Slideless applies its migrations, and Caddy starts after the app is ready.
Caddy obtains and renews your HTTPS certificate automatically.
Slideless’s authentication secret and database password are generated for
this installation and retained in Docker volumes. You do not need to invent
or paste either secret into Hostinger.
Create your owner account
- In Docker Manager, open the
slidelessproject and the app container’s logs. Container names may include the project name and a number. - Find the message containing Use this token to claim the instance. Copy the token immediately after that text. If the app has restarted, look for the setup wizard requires the token generated at first boot.
- Open
https://slides.example.com, using your own hostname. Wait for a valid HTTPS connection before entering credentials. - Complete the setup wizard: enter the instance name and your owner account details, and when the wizard asks for the setup token, paste the one from the log. Sign in if prompted.
Optional: publish your first presentation
The dashboard manages presentations; uploads come through the CLI or an agent. To try the CLI from your own computer:-
Install the CLI with
npm install -g @antasphere/slidelesson a computer with Node.js 22 or later. -
In the Slideless dashboard, create an API key with presentation read and
write permissions. Connect the CLI to your instance:
-
Put a small presentation’s HTML and assets in a folder with
index.htmlat its root, then run:ReplacePRESENTATION_IDwith the ID returned by the push command. Open the returned share link in a private browser window to check it.
Optional: connect an agent
Your instance’s MCP URL ishttps://slides.example.com/mcp. Follow
Connect an agent for OAuth or
API-key setup. This is independent of completing the installation.
Email is also optional. Invitations provide copyable links without SMTP.
Configure an email driver later if you want invitation emails or email-based
sign-in and password recovery. See the
environment reference.
Troubleshooting
Data and maintenance
Restarting or recreating containers preserves data when the project name and volumes remain unchanged. The volumes have distinct roles:
Do not select an option that deletes project volumes during a redeploy.
Persistent volumes are not backups. The VPS owner is responsible for backups
and maintenance. Preserve the database, uploaded files, and both secret-bearing
volumes together when planning recovery.
The Slideless image is pinned to a tested build by its immutable image digest. Application upgrades are
manual; there is no automatic updater. This Hostinger project does not use
the checkout-based
setup.sh or update.sh installation layout. Keep its
Compose configuration and generated credentials when planning an upgrade.
This release covers installation, not managed hosting or ongoing maintenance.