personal_infra/02_vps_core_services_setup.md
2025-07-04 15:53:44 +02:00

3.6 KiB

02 VPS Core Services Setup

Now that Vipy is ready, we need to deploy some basic services which are foundational for the apps we're actually interested in.

This assumes you've completed the markdown 01.

General tools

This repo contains some rather general tools that you may or may not need depending on what services you want to deploy and what device you're working on. This tools can be installed with the 900 group of playbooks sitting at ansible/infra.

By default, these playbooks are configured for hosts: all. Be mindful if you want to limit, you can use the --limit groupname flag when running the playbook.

Below you have notes on adding each specific tool to a device.

rsync

Simply run the playbook:

ansible-playbook -i inventory.ini infra/900_install_rsync.yml

docker and compose

Simply run the playbook:

ansible-playbook -i inventory.ini infra/910_docker_playbook.yml

Deploy Caddy

  • Use Ansible to run the caddy playbook:

    cd ansible
    ansible-playbook -i inventory.ini services/caddy_playbook.yml
    
  • Starting config will be empty. Modifying the caddy config file to add endpoints as we add services is covered by the instructions of each service.

Uptime Kuma

Uptime Kuma gets used to monitor the availability of services, keep track of their uptime and notify issues.

Deploy

  • Decide what subdomain you want to serve Uptime Kuma on and add it to services/uptime_kuma/uptime_kuma_vars.yml on the uptime_kuma_subdomain.
    • Note that you will have to add a DNS entry to point to the VPS public IP.
  • Make sure docker is available on the host.
  • Run the deployment playbook: ansible-playbook -i inventory.ini services/uptime_kuma/deploy_uptime_kuma_playbook.yml.

Set up backups to Lapy

  • Make sure rsync is available on the host and on Lapy.
  • Run the backup playbook: ansible-playbook -i inventory.ini services/uptime_kuma/setup_backup_uptime_kuma_to_lapy.yml.
  • A first backup process gets executed and then a cronjob is set up to refresh backups periodically.

Configure

  • Uptime Kuma will be available for you to create a user on first start. Do that and store the creds safe.
  • From that point on, you can configure through the Web UI.

Restoring to a previous state

  • Stop Uptime Kuma.
  • Overwrite the data folder with one of the backups.
  • Start it up again.

Vaultwarden

Vaultwarden is a credentials manager.

Deploy

  • Decide what subdomain you want to serve Vaultwarden on and add it to services/vaultwarden/vaultwarden_vars.yml on the vaultwarden_subdomain.
    • Note that you will have to add a DNS entry to point to the VPS public IP.
  • Make sure docker is available on the host.
  • Run the deployment playbook: ansible-playbook -i inventory.ini services/vaultwarden/deploy_vaultwarden_playbook.yml.

Configure

  • Vaultwarden will be available for you to create a user on first start. Do that and store the creds safely.
  • From that point on, you can configure through the Web UI.

Disable registration

  • You probably don't want anyone to just be able to register without permission.
  • To prevent that, you can run the playbook disable_vaultwarden_sign_ups_playbook.yml after creating the first user.

Set up backups to Lapy

  • Make sure rsync is available on the host and on Lapy.
  • Run the backup playbook: ansible-playbook -i inventory.ini services/vaultwarden/setup_backup_vaultwarden_to_lapy.yml.
  • A first backup process gets executed and then a cronjob is set up to refresh backups periodically.

Restoring to a previous state

  • Stop Vaultwarden.
  • Overwrite the data folder with one of the backups.
  • Start it up again.