Automatic Updates: Balancing Convenience and Control

Automatic updates have become a staple in modern software distribution, offering users the convenience of receiving the latest features and security patches without manual intervention. However, this convenience can sometimes introduce unforeseen issues, leading to a debate about whether automatic updates should be enabled by default or left to the user's discretion.

The Benefits of Automatic Updates

  • Security Enhancements: Automatic updates ensure that critical security patches are applied promptly to Haveno software, reducing the window of vulnerability to potential exploits.
  • Access to New Features: Users receive the latest Haveno features and improvements as soon as they are released.
  • Reduced Maintenance: Less technical users benefit from not having to manually check for and install updates to their Haveno installations.

The Potential Risks

  • Unintended Bugs: New updates may introduce bugs or incompatibilities in Haveno that can disrupt the user's workflow.
  • Loss of Control: Automatic updates can change Haveno's software behavior without the user's knowledge, potentially impacting custom configurations.
  • Bandwidth Consumption: Updates may consume significant bandwidth, which can be problematic for users with limited internet connections.

Haveno's Approach to Automatic Updates

We believe in empowering users to make informed decisions about their software. Therefore, we only provide automatic updates with our Haveno installation on Linux via Snap, where automatic updates are built-in by design. Users must choose if they want automatic updates, understanding both the benefits and risks involved.

Snap Package Updates

Snap packages are designed to update automatically in the background. While this ensures that all Haveno users are on the latest version, it also means that updates occur without explicit consent at the time of update. Users can manage Snap updates by adjusting the refresh schedule or opting out of automatic updates:

# To change the refresh schedule to once a day at 2 AM:
sudo snap set system refresh.timer=2:00-3:00

# To disable automatic updates (not recommended for security reasons):
sudo snap set system refresh.hold=$(date --date="next year" +%Y-%m-%dT%H:%M:%S)

User Choice and Control

We encourage Haveno users to make their own decisions regarding updates, especially when running critical services like the Haveno daemon or seed nodes. Users can opt for manual updates or implement automatic updates in a controlled manner.

Automatic Updates with Docker

For users running Haveno services via Docker, automatic updates can be configured using tools like Watchtower, which monitors your running containers and updates them automatically when new images are available.

Example: Docker Compose File with Watchtower for Haveno

Below is an example of a Docker Compose file that sets up the Haveno daemon with automatic updates enabled through Watchtower:

# Docker Compose File for Haveno Daemon with Automatic Updates
version: '3.8'

services:
  haveno-daemon:
    image: havenodex/haveno-daemon:latest
    volumes:
      - ./haveno-daemon:/app
    environment:
      TOR_CONTROL_HOST: 172.23.0.3
      TOR_CONTROL_PORT: 9051
      TOR_CONTROL_PASSWORD: onion
      NETWORK_NAME: Wooto
      NODE_PORT: 9999
      API_PASSWORD: "Rotteneggs123"
      MAX_MEMORY: 2400
      SEED_NODES: "dl57jitswby4yhzpqpu7pwq6iyqg2x6vkio73araparbftlqoqxhvqad.onion:2002,3cqlkowdu766sto5wrdqpntpsi7kezwkkakc532i6jeiyu7hha726ead.onion:3003"
      XMR_NODE: http://node.monerodevs.org:38089
    networks:
      lockdown_net:
        ipv4_address: 172.23.0.4
    depends_on:
      tor:
        condition: service_healthy

  tor:
    image: havenodex/tor
    environment:
      - TZ=UTC
      - EXITNODE=0
    volumes:
      - ./tor-data:/etc/tor/
      - ./torrc:/torrc
    restart: unless-stopped
    networks:
      lockdown_net:
        ipv4_address: 172.23.0.3
    cap_add:
      - NET_ADMIN
      - NET_RAW

  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      WATCHTOWER_CLEANUP: "true"
      WATCHTOWER_POLL_INTERVAL: 900 # Every 15 minutes
    networks:
      lockdown_net:
        ipv4_address: 172.23.0.6

networks:
  lockdown_net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.23.0.0/16

How It Works

  • haveno-daemon: Runs the Haveno daemon service.
  • tor: Provides Tor network capabilities for privacy and anonymity.
  • watchtower: Monitors Docker containers and updates them automatically when new images are available.

By including Watchtower in your Docker setup, you enable automatic updates for your Haveno Docker containers. This ensures that your Haveno daemon is always up-to-date with the latest features and security patches.

Making an Informed Decision

While automatic updates can enhance security and provide the latest Haveno features, they also require trust in the update process and infrastructure. Users should consider the following:

  • Critical Services: For mission-critical Haveno services, testing updates in a staging environment before deployment can prevent disruptions.
  • Backup Configurations: Regularly back up Haveno configurations and data to recover quickly in case an update causes issues.
  • Monitoring Updates: Stay informed about Haveno updates and review changelogs to understand what changes are being applied.

Conclusion

Automatic updates offer a balance between convenience and security but may introduce unforeseen issues. We provide options for both automatic and manual updates for Haveno, empowering users to choose the approach that best fits their needs. Whether through Snap packages or Docker solutions like Watchtower, the control remains in the user's hands.

Remember: The choice to enable or disable automatic updates should align with your comfort level regarding stability, security, and control over your Haveno software environment.