Skip to main content

Before you deploy

  1. 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.
  2. 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.
  3. 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.
  4. Wait until public DNS lookups return the VPS address. Do this before deploying. The certificate authority must be able to reach your hostname.
  5. 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.
This template assumes one Slideless installation on a dedicated VPS. It does not configure another application’s proxy or change your DNS.

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. Deploy on Hostinger For an existing VPS:
  1. In hPanel, open VPS → Manage → Docker Manager.
  2. Choose Compose → Compose from URL.
  3. Paste the template URL:
  4. Give the project a name, such as slideless. Keep this name for future redeployments so Docker reuses its data volumes.
  5. Set the project environment variable SLIDELESS_DOMAIN to your hostname. Enter only slides.example.com, without https://, 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.
  6. Review the configuration and click Deploy.
The 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

  1. In Docker Manager, open the slideless project and the app container’s logs. Container names may include the project name and a number.
  2. 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.
  3. Open https://slides.example.com, using your own hostname. Wait for a valid HTTPS connection before entering credentials.
  4. 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.
The token proves you control the deployment. Without it, someone who discovers the hostname first could claim the installation before you. It is used only for first setup, not for later sign-ins. Do not share it or include it in a support screenshot. After setup, the generated token file is removed and the setup endpoint closes. An old log entry does not reopen setup. Installation is complete when you can sign in and open the dashboard.

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:
  1. Install the CLI with npm install -g @antasphere/slideless on a computer with Node.js 22 or later.
  2. In the Slideless dashboard, create an API key with presentation read and write permissions. Connect the CLI to your instance:
  3. Put a small presentation’s HTML and assets in a folder with index.html at its root, then run:
    Replace PRESENTATION_ID with 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 is https://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.