Urgent.News

What's breaking now, across thousands of outlets.

Tech

Moving Off Per-Seat SaaS Without Breaking Anything: A Weekend Migration Walkthrough

Most "ditch SaaS and self-host everything" posts stop at the exciting part. Here's a list of open-source tools, here's how much you'll save, good luck. Then you're left staring at a blank VPS on a Saturday morning wondering how to actually move your team over without losing data or locking anyone out. This post is the boring, useful middle bit. We'll take three tools a lot of small teams pay for…

Many companies abandon paid SaaS subscriptions and self-host all their software. However, articles detailing open-source tools and potential cost savings often omit the crucial step-by-step process for moving a team's workflow to self-hosted equivalents without data loss or service disruption. This article aims to fill that gap by describing a weekend migration process for three commonly used SaaS tools.

The migration involves shifting error tracking to Sentry, password management to Bitwarden, and analytics to Umami. These choices were made due to their low-risk nature and ease of implementation. None of these solutions require code changes or user training on new interfaces.

Before initiating the migration, consider whether self-hosting makes financial sense for your organization. While it eliminates recurring subscription fees, it does introduce additional responsibilities such as system updates, backups, and troubleshooting hardware issues. Self-hosting is typically most beneficial for teams that can afford dedicated technical support and can tolerate occasional downtime.

To begin the migration, start by acquiring a VPS with sufficient resources. A server with 4 GB of RAM and 2 vCPUs is adequate for the three applications discussed. After provisioning the server, configure domain names for each service using the A records provided. Ensure that DNS settings are correctly set up to allow secure access to the self-hosted applications.

The core of the migration relies on utilizing a single Postgres database and Redis cache for all three applications. Sharing these critical resources simplifies management and reduces overall system complexity. A docker-compose.yml file is provided to streamline the deployment process, ensuring each application has its dedicated container while sharing the common database and Redis services.

During the migration, pay special attention to Vaultwarden, which manages user accounts for both password storage and sign-ups. Set the SIGNUPS_ALLOWED flag to false to prevent unauthorized account creation. Additionally, configure the GlitchTip worker process, as it coordinates with the database migrations and processing pipeline. Without this component, the migration may appear successful, but event processing will fail, leading to errors in the API.

Once the migration is complete, it's essential to lock down image versions to prevent future updates that could introduce compatibility issues. The provided init-dbs.sql script automatically creates databases and user accounts for each application, ensuring a clean and isolated environment despite the shared server infrastructure.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Run Maya 2 Native locally: streaming TTS in 12 languages

We’re releasing Maya 2 Native , a text-to-speech model from Maya Research for 11 Indic languages and English . The weights and inference code are available under Apache-2.0 , with 20 built-in voices…

  • Maya 2 Native supports 11 Indic languages and English
  • Open-source weights and inference code available under Apache-2.0 license
  • Streaming TTS in 24 kHz mono audio with voice cloning capability

How to Integrate TickDB: From API Key to a Validated Python Quote

How to Integrate TickDB: From API Key to a Validated Python Quote Adding market data to an application starts with a small, verifiable request.

  • Obtain TickDB API key in console, keep secure in backend
  • Install 'requests' library in Python environment
  • Verify basic request works with cURL and Python function

More from Thursday 29 October →