bolt Valebyte VPS from $4/mo — NVMe, 60s deploy.

Get a VPS arrow_forward
eco Beginner Tutorial/How-to

Deploying Baserow on

calendar_month Jul 29, 2026 schedule 20 min read visibility 9 views
Развёртывание Baserow на VPS: self-hosted no-code база данных
info

Need a server for this guide? We offer dedicated servers and VPS in 50+ countries with instant setup.

Need a server for this guide?

Deploy a VPS or dedicated server in minutes.

Deploying Baserow on a VPS: self-hosted no-code database

TL;DR

In this detailed guide, we will step-by-step set up and deploy Baserow — a powerful open-source no-code database — on your own Virtual Private Server (VPS). You will learn how to install Docker, configure Baserow using Docker Compose, ensure secure access via HTTPS with Caddy, and set up automatic backups, gaining full control over your data and applications.

  • Setting up a modern VPS with Ubuntu Server 24.04 LTS for maximum stability and security.
  • Installing and configuring Docker and Docker Compose for efficient management of containerized applications.
  • Deploying Baserow version 1.25.x using official Docker images.
  • Configuring secure access to Baserow via HTTPS with automatic Let's Encrypt certificate acquisition using Caddy.
  • Implementing a backup strategy for Baserow's database and user files.
  • Gaining full control over your no-code platform, ensuring privacy and flexibility.

What we configure and why

Diagram: What we configure and why
Diagram: What we configure and why

In this guide, we will focus on deploying Baserow — a powerful and flexible open-source platform for creating no-code databases. Baserow allows users to create and manage relational databases without writing a single line of code, offering an intuitive interface reminiscent of spreadsheets but with the functionality of a full-fledged database. This is an ideal solution for teams that need to quickly structure data, automate workflows, and build simple applications.

Ultimately, you will get a fully functional Baserow instance, accessible via your own domain name with a secure HTTPS connection. You will be able to create databases, tables, configure fields, views, formulas, and API interfaces, providing access to your team or clients. All data will be stored on your own server, ensuring maximum control and confidentiality.

Alternatives: Cloud-managed vs. Self-hosted

There are many no-code databases on the market, such as Airtable, NocoDB, SeaTable, and Google Sheets with extensions. They fall into two main categories:

  • Cloud-managed solutions: These are SaaS platforms where the provider manages the entire infrastructure. They are convenient, do not require technical knowledge for deployment, but you depend on the provider for security, scalability, pricing, and data ownership. Examples include Airtable, Smartsheet.
  • Self-hosted solutions: Such as Baserow, allow you to install the software on your own server (VPS or dedicated). This gives you full control over data, security, performance, and customization. You are not tied to the pricing policy of a single provider and can adapt the system to your needs.

We choose self-hosted Baserow on a VPS for several reasons:

  • Full data control: Your data remains on your server, which is critical for confidential projects, GDPR compliance, and other regulations.
  • Cost-effectiveness: With moderate use and proper configuration, maintaining a VPS is often cheaper than subscriptions to cloud-managed services, especially as your team or data volume grows.
  • Flexibility and customization: The ability to fine-tune the server and Baserow itself to specific requirements, integration with other self-hosted services.
  • Independence: You are not dependent on changes in the policy, prices, or functionality of a third-party provider.

What VPS configuration is needed for this task

Diagram: What VPS configuration is needed for this task
Diagram: What VPS configuration is needed for this task

VPS requirements for Baserow can vary significantly depending on the number of users, data volume, database complexity, and API usage intensity. However, for initial deployment and small teams (up to 5-10 active users), you can aim for the following minimum and recommended specifications.

Minimum requirements (for testing or very small teams)

  • CPU: 1-2 cores (Intel Xeon E3/E5 or AMD EPYC). Baserow is a Python application that can be quite CPU-intensive for complex queries.
  • RAM: 2 GB. Baserow, PostgreSQL, and Redis together can consume a significant amount of RAM. 2 GB is an absolute minimum, where the system might run slowly or encounter out-of-memory issues during peak loads.
  • Disk: 40 GB SSD. SSD is critical for database performance. 40 GB will be sufficient for the operating system, Docker images, and a small amount of data.
  • Network: 100 Mbps. This is sufficient for most tasks.

Recommended VPS plan for small to medium teams (up to 20-30 active users)

For comfortable operation and growth potential, the following characteristics are recommended:

  • CPU: 2-4 cores (modern Intel Xeon or AMD EPYC).
  • RAM: 4-8 GB. This will ensure stable operation of Baserow, PostgreSQL, Redis, and the operating system even with active use.
  • Disk: 80-160 GB SSD. This will provide enough space for the OS, all Baserow components, a significant amount of data, and backups.
  • Network: 1 Gbps. High bandwidth will ensure fast data loading and interface responsiveness.

You can find a VPS with the specified characteristics to rent a server that meets these requirements.

When a Dedicated Server is needed, not a VPS

A dedicated server becomes necessary when:

  • Very high load: Thousands of active users, huge data volumes (terabytes), or very intensive database operations.
  • Strict performance requirements: Maximum and predictable performance is needed without "sharing" with other clients on the same physical server.
  • Specific hardware requirements: Special RAID configurations, specialized GPUs, or other hardware components not available on a VPS are needed.
  • Compliance with regulatory requirements: Some industries require complete physical separation and control over hardware.

For most Baserow tasks at initial and medium stages, a VPS will be more than sufficient and more cost-effective.

Location: what it affects

Choosing a VPS location is important for several reasons:

  • Latency: The closer the server is to your target audience or to you, the lower the latency and faster the response. If your team is in Europe, choose a European data center.
  • Data legislation: Different countries have different data privacy laws (e.g., GDPR in the EU). The choice of location can affect the legal aspects of storing and processing information.
  • Network availability: Some regions may have better connectivity to certain parts of the world.

Always choose a location that is geographically closer to the primary users of your Baserow instance.

Server Preparation

Diagram: Server Preparation
Diagram: Server Preparation

After gaining access to your new VPS with Ubuntu Server 24.04 LTS, the first step is to perform a series of basic configurations to enhance security and ease of management. All commands are executed as the root user or using sudo.

1. Connecting to the server via SSH

Use your SSH client to connect:


ssh root@YOUR_VPS_IP_ADDRESS

Enter the password provided by your provider.

2. System Update

Ensure that all packages on the server are updated to the latest versions:


sudo apt update         # Update package list
sudo apt upgrade -y     # Upgrade installed packages without confirmation
sudo apt autoremove -y  # Remove unnecessary dependencies

3. Creating a new user with sudo privileges

Working as root is insecure. Let's create a new user and grant them sudo privileges:


sudo adduser baserow_admin      # Create a new user
sudo usermod -aG sudo baserow_admin # Add user to the sudo group

Follow the instructions to set the password and user information. After that, exit the root session and log in as baserow_admin:


exit
ssh baserow_admin@YOUR_VPS_IP_ADDRESS

4. Setting up SSH keys (recommended)

To enhance security and convenience, set up SSH key authentication. If you don't have an SSH key, generate one on your local machine:


ssh-keygen -t rsa -b 4096 # On your local machine

Then copy the public key to the server:


ssh-copy-id baserow_admin@YOUR_VPS_IP_ADDRESS # On your local machine

Once you have confirmed that you can log in with the key, disable password authentication for root and the new user in the /etc/ssh/sshd_config file:


sudo nano /etc/ssh/sshd_config

Find and change/add the following lines:


# Disable password login for root (if enabled)
PermitRootLogin prohibit-password

# Disable password login for all users (after SSH key setup)
PasswordAuthentication no

Restart the SSH service:


sudo systemctl restart sshd

5. Firewall Configuration (UFW)

Enable the basic UFW firewall to protect the server. Allow only the necessary ports:


sudo ufw allow OpenSSH       # Allow SSH (port 22)
sudo ufw allow http          # Allow HTTP (port 80)
sudo ufw allow https         # Allow HTTPS (port 443)
sudo ufw enable              # Enable UFW
sudo ufw status verbose      # Check firewall status

Confirm firewall activation by pressing y.

6. Installing Fail2Ban

Fail2Ban protects against brute-force attacks by blocking IP addresses from which numerous failed login attempts originate:


sudo apt install fail2ban -y    # Install Fail2Ban
sudo systemctl enable fail2ban  # Enable autostart
sudo systemctl start fail2ban   # Start the service

For basic configuration, you can create the file /etc/fail2ban/jail.local:


sudo nano /etc/fail2ban/jail.local

And add the following content:


[DEFAULT]
bantime = 10m
findtime = 10m
maxretry = 5
banaction = ufw

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Restart Fail2Ban to apply changes:


sudo systemctl restart fail2ban

Your server now has basic protection and is ready for Baserow installation.

Software Installation — Step-by-step

Diagram: Software Installation — Step-by-step
Diagram: Software Installation — Step-by-step

Baserow will be deployed using Docker and Docker Compose, which is the recommended approach for most self-hosted applications. This ensures isolation, easy dependency management, and simple scaling.

1. Docker Engine Installation

First, let's install Docker. These commands are valid for Ubuntu 24.04 LTS and ensure the installation of the latest stable version of Docker CE (assuming Docker Engine 25.x or newer by 2026).


# Remove old Docker versions (if any)
for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg -y; done

# Install necessary packages for repository management
sudo apt update
sudo apt install ca-certificates curl gnupg -y

# Add Docker's official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Add the Docker repository to Apt
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Update the package list with the new repository
sudo apt update

# Install Docker Engine, Docker CLI, and Containerd
sudo apt install docker-ce docker-ce-cli containerd.io -y

After installation, add your user to the docker group to run Docker commands without sudo (requires a reboot or re-login):


sudo usermod -aG docker baserow_admin # Add user to the docker group
newgrp docker                          # Apply changes without rebooting

Verify that Docker is installed correctly:


docker run hello-world # Run a test container

2. Docker Compose Installation

Docker Compose is usually installed as a plugin to Docker (version 2.x). By 2026, it will be integrated into the Docker CLI.


sudo apt install docker-compose-plugin -y # Install Docker Compose as a plugin

Check the Docker Compose version:


docker compose version # Check Docker Compose version

3. Downloading Baserow Docker Compose Configuration

Baserow provides official configuration files for Docker Compose. Let's create a directory for Baserow and download them there.


mkdir baserow && cd baserow # Create directory and navigate into it
wget https://gitlab.com/baserow/baserow/-/raw/develop/deploy/docker-compose.yml # Download docker-compose.yml (valid for Baserow 1.25.x)
wget https://gitlab.com/baserow/baserow/-/raw/develop/deploy/.env # Download .env file

Ensure you download the latest files from the official Baserow repository. The develop version often reflects the latest stable changes, but for production, you can use links to specific releases.

4. Configuring the .env file

The .env file contains environment variables for Baserow configuration, including secrets and domain settings. Open it for editing:


nano .env # Edit the environment variables file

You will need to change the following parameters (examples):

  • BASEROW_PUBLIC_URL: This should be your domain through which Baserow will be accessible (e.g., https://baserow.yourdomain.com).
  • DATABASE_PASSWORD: Generate a strong password for the PostgreSQL database.
  • SECRET_KEY: Generate a strong secret key.

Example changes in .env:


# ... other variables ...

BASEROW_PUBLIC_URL=https://baserow.yourdomain.com

# PostgreSQL database settings
# ...
DATABASE_PASSWORD=YOUR_STRONG_DATABASE_PASSWORD_HERE
# ...

# Baserow secret key
SECRET_KEY=YOUR_VERY_LONG_AND_COMPLEX_SECRET_KEY_HERE

# ...

You can generate strong passwords and secret keys, for example, using openssl rand -hex 32 or online generators.

5. Starting Baserow

After configuring the .env file, you can start Baserow. Docker Compose will automatically download the necessary images and start all services.


docker compose up -d # Start all Baserow services in the background

This command will download Docker images (PostgreSQL, Redis, Baserow Web, Baserow Backend, Caddy), create containers, and start them. The process may take several minutes depending on your internet connection speed.

6. Checking Container Status

Ensure that all containers are running correctly:


docker compose ps # Check the status of running containers

You should see an Up status for all services (baserow_backend, baserow_web, caddy, database, redis).

You can also view the logs of a specific service, for example, the backend:


docker compose logs baserow_backend # View Baserow backend logs

At this stage, Baserow is running but is only accessible via the server's IP address and possibly without HTTPS. The next step is to configure secure access via a domain.

Configuration

Diagram: Configuration
Diagram: Configuration

After successfully launching Baserow with Docker Compose, final configuration is required to ensure secure and convenient access. This includes setting up a domain name, HTTPS, and additional parameters.

1. DNS Configuration

To access Baserow via a domain name (e.g., baserow.yourdomain.com), you need to create an A-record with your domain name registrar. Specify your domain (or subdomain) and the IP address of your VPS.


# Example record with your domain registrar
Type: A
Host: baserow
Value: YOUR_VPS_IP_ADDRESS

Wait for DNS records to update (this may take from a few minutes to several hours).

2. Caddy Configuration for HTTPS

Baserow Docker Compose by default includes the Caddy service, which acts as a reverse proxy and automatically manages Let's Encrypt certificates for HTTPS. Configuration is done via the Caddyfile.

By default, the Caddyfile is already configured in the baserow/caddy directory. Ensure that in your docker-compose.yml, the Caddyfile is mounted into the Caddy container:


# Contents of docker-compose.yml (Caddy fragment)
# ...
  caddy:
    image: caddy:2.7.6-alpine # Current Caddy version for 2026
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
      - baserow_caddy_data:/data
      - baserow_caddy_config:/config
    depends_on:
      - baserow_web
# ...

Create the caddy directory and a Caddyfile inside it, if they don't exist:


mkdir caddy
nano caddy/Caddyfile

Add or ensure that the caddy/Caddyfile contains the following (replace baserow.yourdomain.com with your domain):


{
  # Replace with your email for Let's Encrypt notifications
  email [email protected]
}

baserow.yourdomain.com {
  reverse_proxy baserow_web:80
}

After editing the Caddyfile, if you made changes, you only need to restart the Caddy service:


docker compose restart caddy # Restart the Caddy container

Caddy will automatically detect the new domain, request a Let's Encrypt certificate, and configure HTTPS. If you encounter issues, check Caddy's logs:


docker compose logs caddy # View Caddy logs

3. Verifying Functionality

After configuring DNS and Caddy, check Baserow's availability:

  • Website Availability: Open your domain (https://baserow.yourdomain.com) in a browser. You should see the Baserow registration/login page.
  • HTTPS Check: Ensure that the connection is secure (green padlock in the address bar).
  • Domain Ping: Verify that the domain resolves to the correct IP address.
  • 
    ping baserow.yourdomain.com
    
  • Container Healthcheck: Ensure that all Docker containers are running without errors.
  • 
    docker compose ps
    docker compose logs
    

If Baserow loads, you can register the first user (administrator) and start working with the platform.

4. Additional Settings in .env (if needed)

The .env file contains many other settings that may be useful later:

  • BASEROW_EMAIL_SMTP_HOST, BASEROW_EMAIL_SMTP_PORT, etc.: SMTP server settings for sending emails (notifications, password reset).
  • BASEROW_PUBLIC_BACKEND_URL: If you are using a separate backend different from the main domain.
  • MEDIA_ROOT: Path for storing user files. By default, this is a Docker volume.

Always refer to the official Baserow documentation for a complete list and description of all environment variables.

Important: Never store sensitive data (passwords, API keys) directly in code or publicly accessible files. The .env file must be protected and should not be committed to version control systems.

Backups and Maintenance

Diagram: Backups and Maintenance
Diagram: Backups and Maintenance

Regular backups and timely maintenance are critically important for any production system. This ensures the safety of your data and the stability of Baserow's operation.

1. What to Back Up

For Baserow, the following components need to be backed up:

  • PostgreSQL Database: Contains all structured data created in Baserow. This is the most important component.
  • User Files (Media): All files uploaded by users to Baserow (images, documents, etc.). They are stored in the Docker volume associated with the service baserow_backend.
  • Configuration Files: docker-compose.yml and .env. They contain deployment settings and secret keys necessary for system recovery.

2. Simple Auto-Backup Script

Let's create a simple script for automatic backup. This script will dump the database, archive media files, and save configuration files. It is assumed that you are in the ~/baserow directory.


mkdir -p ~/baserow_backups # Create directory for backups
nano ~/baserow_backups/backup_baserow.sh

Add the following content to the file backup_baserow.sh. Replace YOUR_DB_USER and YOUR_DB_PASSWORD with values from your .env file:


#!/bin/bash

# Settings
BACKUP_DIR="/home/baserow_admin/baserow_backups" # Directory for storing backups
BASEROW_DIR="/home/baserow_admin/baserow"       # Directory where docker-compose.yml is located
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

# Variables from .env (needed for pg_dump)
# Can be read from .env or set manually
# Example of reading from .env (requires jq, which can be installed: sudo apt install jq -y)
# source "$BASEROW_DIR/.env" # If .env is simple, without special characters

# Or set manually if .env has complex characters or you don't want to parse it
DB_NAME="baserow"
DB_USER="baserow"
DB_PASSWORD="YOUR_STRONG_DATABASE_PASSWORD_HERE" # Replace with the actual password from .env

# 1. PostgreSQL Database Backup
echo "Dumping PostgreSQL database..."
docker compose -f "$BASEROW_DIR/docker-compose.yml" exec -T database pg_dump -U "$DB_USER" -d "$DB_NAME" > "$BACKUP_DIR/baserow_db_${TIMESTAMP}.sql"
if [ $? -eq 0 ]; then
    echo "Database dump successful: $BACKUP_DIR/baserow_db_${TIMESTAMP}.sql"
else
    echo "Database dump FAILED!"
    exit 1
fi

# 2. Media Files Backup (Docker volume)
echo "Archiving Baserow media files..."
# Get the name of the volume for media files
MEDIA_VOLUME=$(docker volume ls -q | grep baserow_data) # Assumes the volume name contains 'baserow_data'
if [ -z "$MEDIA_VOLUME" ]; then
    echo "Could not find Baserow media volume. Skipping media backup."
else
    # Create a temporary container to copy data
    docker run --rm -v "$MEDIA_VOLUME":/data -v "$BACKUP_DIR":/backup_dest alpine tar -czvf "/backup_dest/baserow_media_${TIMESTAMP}.tar.gz" -C /data .
    if [ $? -eq 0 ]; then
        echo "Media files archive successful: $BACKUP_DIR/baserow_media_${TIMESTAMP}.tar.gz"
    else
        echo "Media files archive FAILED!"
    fi
fi

# 3. Copying Configuration Files
echo "Copying configuration files..."
cp "$BASEROW_DIR/docker-compose.yml" "$BACKUP_DIR/docker-compose_${TIMESTAMP}.yml"
cp "$BASEROW_DIR/.env" "$BACKUP_DIR/.env_${TIMESTAMP}"
echo "Configuration files copied."

# Deleting old backups (e.g., older than 7 days)
echo "Removing old backups..."
find "$BACKUP_DIR" -type f -name "baserow_db_*.sql" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name "baserow_media_*.tar.gz" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name "docker-compose_*.yml" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name ".env_*" -mtime +7 -delete
echo "Old backups removed."

echo "Baserow backup completed at $TIMESTAMP"

Make the script executable:


chmod +x ~/baserow_backups/backup_baserow.sh # Make the script executable

3. Scheduling Backups with Cron

Add the script to Cron for daily execution (e.g., at 3:00 AM):


crontab -e # Open crontab for editing

Add the following line to the end of the file (choose nano editor if prompted):


0 3 * * * /home/baserow_admin/baserow_backups/backup_baserow.sh >> /var/log/baserow_backup.log 2>&1

This line means: at 3:00 AM every day, run the script and redirect all output to the log file /var/log/baserow_backup.log.

4. Where to Store Backups

Storing backups on the same server as production data is extremely risky. If the server fails, you will lose both your data and your backups. It is recommended to use:

  • External S3-compatible storage: Services such as AWS S3, Backblaze B2, DigitalOcean Spaces. Utilities like rclone or s3cmd can be used for automatic synchronization of local backups with S3.
  • Separate VPS: An inexpensive VPS in another location, where backups can be copied via SSH using rsync.
  • Network Attached Storage (NAS): If you have your own infrastructure.

Extend the backup script by adding a step to copy files to remote storage.

5. Updates: Rolling vs. Maintenance Window

Regular updates of Baserow and underlying software are important for security and new features.

  • Updating Baserow:

    To update Baserow to a new version (e.g., from 1.24.x to 1.25.x), follow these steps:

    1. Perform a full backup! This is the most important step before any update.
    2. Stop Baserow:
      
      cd ~/baserow
      docker compose down
                          
    3. Download new versions of docker-compose.yml and .env files (or compare and update current ones):
      
      wget -O docker-compose.yml https://gitlab.com/baserow/baserow/-/raw/develop/deploy/docker-compose.yml
      # Check .env for new variables, if they appeared in the new Baserow version
                          
    4. Start Baserow with updated images:
      
      docker compose pull # Download new images
      docker compose up -d # Start with new images and DB migration, if needed
                          
    5. Check logs and functionality.

    This will require a short maintenance window (service downtime), as the database may require migration. Always read the official Baserow update documentation for the specific version.

  • OS and Docker Updates:

    Regularly update the operating system and Docker Engine:

    
    sudo apt update && sudo apt upgrade -y
    sudo systemctl reboot # Reboot to apply kernel updates
                

    Docker updates may also require restarting containers or even the entire server. Plan these operations during periods of low activity.

Troubleshooting + FAQ

Even with the most careful approach, problems can arise. Here we will cover typical scenarios and questions.

Baserow container is not starting or keeps restarting. What to do?

What to check: First, look at the logs of the problematic container. For example, for the backend: docker compose logs baserow_backend. Pay attention to error messages. Common causes include: insufficient memory, incorrect environment variables in .env (especially DATABASE_URL, SECRET_KEY, BASEROW_PUBLIC_URL), port conflicts, corrupted Docker images or volumes.

How to fix: Ensure your VPS has enough RAM. Check the syntax and values in .env. If there's suspicion of corrupted volumes, try stopping Baserow (docker compose down) and, as a last resort, removing volumes (docker volume rm baserow_data baserow_caddy_data baserow_caddy_config), then restarting (losing data if not backed up!). Sometimes a complete recreation of images helps: docker compose build --no-cache && docker compose up -d.

Cannot access Baserow by domain name, or HTTPS is not working.

What to check: Ensure that the DNS record for your domain (e.g., baserow.yourdomain.com) points to the correct IP address of your VPS. Use ping your.domain or dig your.domain. Check that ports 80 and 443 are open on your VPS (sudo ufw status). Look at Caddy logs: docker compose logs caddy for errors when obtaining a Let's Encrypt certificate. Make sure that BASEROW_PUBLIC_URL in .env and the domain in caddy/Caddyfile match.

How to fix: Correct the DNS record. Open ports 80 and 443 in UFW. If Caddy cannot obtain a certificate, there might be a DNS resolution issue, or the domain does not point to your server. Ensure that the email in Caddyfile is correct.

Baserow is running very slowly.

What to check: Use htop or top on the VPS to check CPU load and RAM usage. Slowness is often related to insufficient resources. Also, check Baserow logs for recurring errors that might slow down performance.

How to fix: If RAM is insufficient, consider increasing the VPS memory. If the CPU is constantly loaded, more cores might be needed. Optimize queries in Baserow, avoid very large tables with many relationships and complex formulas if performance is critical. Ensure that the disk subsystem uses SSD.

What is the minimum VPS configuration suitable for Baserow?

Answer: For testing or a very small team (1-2 users), the minimum configuration is 2 CPU cores, 2 GB RAM, and 40 GB SSD. However, for stable and comfortable operation with a small team (up to 10-15 people), at least 2-4 CPU cores, 4 GB RAM, and 80 GB SSD are recommended. An SSD is mandatory for good database performance.

What to choose – VPS or dedicated for this task?

Answer: For most Baserow use cases (personal projects, small to medium teams), a VPS is the optimal choice. It offers sufficient performance, flexibility, and cost-effectiveness. A dedicated server is only needed for very high loads (hundreds of active users, terabytes of data), specific hardware requirements, or strict regulatory norms requiring full control over physical equipment. Start with a VPS and scale to a dedicated server if a real need arises.

How to reset the Baserow admin password if I forgot it?

What to check: If you have configured SMTP, you can use the "Forgot password" function on the login page. If SMTP is not configured, you will need to reset the password via the Docker console.

How to fix: Connect to the server via SSH, navigate to the Baserow directory (~/baserow). Then execute the command to reset the password for the user with the specified email:


docker compose exec baserow_backend python3 manage.py reset_user_password --email [email protected]

This command will generate a temporary password that you can use to log in, and then change it within the Baserow interface.

VPS disk space is full.

What to check: Use df -h to check overall disk usage and du -sh /var/lib/docker/volumes/* to check Docker volume sizes. Often, old Docker images, cache, or logs occupy space.

How to fix: Clean up old Docker objects: docker system prune -a (caution: this removes all stopped containers, unused networks, images, and volumes). Regularly delete old backups, especially local ones. Consider increasing VPS disk space or moving backups to external storage.

Conclusion and Next Steps

Diagram: Conclusion and Next Steps
Diagram: Conclusion and Next Steps

Congratulations! You have successfully deployed Baserow on your VPS, configured secure access via HTTPS, and implemented a basic backup strategy. Now you have a powerful, flexible, and fully controlled no-code database, ready for use by your team or for your personal projects. You have gained full control over your infrastructure and data, which is a key advantage of self-hosted solutions.

Here are a few steps you can take next:

  • Monitoring: Set up a monitoring system (e.g., Prometheus + Grafana) to track the status of your VPS and Baserow's performance. This will help identify issues proactively.
  • Scaling: As the number of users or data volume grows, consider increasing your VPS resources (CPU, RAM, disk). For very large loads, Baserow supports horizontal scaling, allowing you to run multiple backend and frontend instances.
  • Integrations: Utilize Baserow's powerful API to integrate with your other applications, scripts, or external services, automating workflows and extending functionality.
  • Additional Security: Consider setting up a VPN for admin panel access, more complex firewall rules, or using an intrusion detection system.

Was this guide helpful?

Your feedback helps us improve our guides.

Share this post:

Send this guide to someone who may find it useful.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Baserow deployment on VPS: self-hosted no-code database
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.