Skip to content

[Feature]: Make self-hosted installs and updates easier #176

Description

@Priveetee

What I want to improve

There are a few small self-hosting improvements I want to group here so I do
not forget them:

  • bundle the default nginx.conf inside the Frontend image;
  • stop requiring a host-side garage.toml for the default setup;
  • improve the installation/update script;
  • show the current TypeType version directly in the UI.

nginx.conf

The default nginx configuration is now part of how TypeType works. It handles
the API, WebSockets, SABR, downloads and the component version routes.

Keeping it as an external file makes it possible to update the Docker images
while accidentally keeping an old configuration. This already caused the
remote login WebSocket problem reported in
discussion #122.

I want to include the default configuration directly in the Frontend image and
remove the mount from the official Compose setup.

Custom nginx configurations should still be supported through an explicit
override for people who need one.

garage.toml

Since GARAGE_RPC_SECRET was moved to an environment variable,
garage.toml is now basically generic. This was discussed in
discussion #130.

The default configuration could be created automatically by an init container
and stored in a Docker volume instead of requiring another file next to the
Compose stack.

Existing custom Garage configurations must not be overwritten.

Updates

The current installer can also update an existing stack, but this should be
clearer and safer.

The update flow should:

  • keep .env, secrets, ports and data volumes;
  • update the Compose files and scripts, not only the Docker images;
  • back up existing configuration before changing anything;
  • warn when custom nginx or Garage configuration is detected;
  • validate Compose before restarting;
  • pull the new images and check that the services are healthy;
  • keep a usable rollback path.

This is especially important because docker compose pull alone cannot update
an old Compose file, as seen in
discussion #133.

The manual, script-free installation requested in
issue #111 will remain
supported.

Version in the UI

The current version can already be checked through /api/instance and the
/api/version/* endpoints, but this is not very discoverable.

I want to show the TypeType version and revision directly in the interface,
with the individual Frontend, Server, Token and Downloader versions available
for troubleshooting.

This was also requested after
issue #161.

Done when

  • a normal installation no longer needs external nginx.conf or
    garage.toml files;
  • custom configurations can still be used intentionally;
  • existing instances can update without losing configuration or data;
  • the update process checks the resulting Compose stack and service health;
  • the current version is visible directly from the UI;
  • the self-hosting and maintenance documentation matches the new flow.

And a big thx to @arcoast for taking the time to look into all of this and share these ideas! It genuinely helps me understand what needs to be improved and make TypeType easier for every self-hoster :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions