
This article provides a guide to deploy ScyllaDB on Ubuntu VPS.
What is ScyllaDB?
ScyllaDB is a high-performance, low-latency NoSQL database designed as a drop-in replacement for Apache Cassandra. It is written in C++ (instead of Java), enabling extremely fast throughput on modern hardware—making it ideal for real-time analytics, IoT, event streams, time-series workloads, and high-volume OLTP systems.
This guide walks you through installing and configuring ScyllaDB on an Ubuntu VPS, optimizing system parameters, and verifying your new cluster node is online.
✅ Prerequisites
Before you begin:
- Ubuntu 22.04 LTS or Ubuntu 20.04 LTS
- sudo or root access
- At least:
- 2 CPU cores (4+ recommended)
- 4GB RAM minimum (8–16GB recommended)
- SSD/NVMe storage strongly recommended
- A static public IP address
- Open firewall ports:
- 22 (SSH)
- 7000 (intra-node)
- 7001 (intra-node TLS)
- 7199 (JMX)
- 9042 (CQL)
- 9160 (Thrift—optional)
- 9180 (REST API)
- 9100 (Prometheus)
Deploy ScyllaDB on Ubuntu VPS
To deploy ScyllaDB on Ubuntu VPS, follow the steps below:
-
Update System Packages
sudo apt update && sudo apt upgrade -y sudo apt install curl wget ufw gnupg2 -y
-
Add the ScyllaDB APT Repository
ScyllaDB provides official repositories for Ubuntu.
Import GPG key:
sudo mkdir -p /etc/apt/keyrings sudo gpg --homedir /tmp --no-default-keyring --keyring /etc/apt/keyrings/scylladb.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys a43e06657bac99e3 sudo wget -O /etc/apt/sources.list.d/scylla.list http://downloads.scylladb.com/deb/debian/scylla-2025.3.list
Set Java 11:
sudo apt update sudo apt install -y openjdk-11-jre-headless sudo update-java-alternatives --jre-headless -s java-1.11.0-openjdk-amd64
-
Install ScyllaDB
sudo apt update sudo apt install -y scylla
-
Run the Scylla Setup Wizard
Scylla includes a post-install configuration tool that prepares your system for optimal performance.
Run:
sudo scylla_setup
Follow the interactive menu to:
✔ Configure RAID (if applicable)
✔ Optimize XFS filesystem
✔ Disable swap
✔ Tune kernel parameters
✔ Enable hugepages
✔ Configure networking
✔ Setup NTP time sync
✔ Enable Scylla servicesChoose “Yes” for all optimizations unless you have custom requirements.
-
Configure Scylla YAML
Main config file:
/etc/scylla/scylla.yaml
Open it:
sudo nano /etc/scylla/scylla.yaml
Modify the following sections:
Node listen address:
listen_address:
RPC client address:
rpc_address: 0.0.0.0
Cluster name:
cluster_name: 'MyScyllaCluster'
Seed nodes (for single node):
seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: - seeds: ""
Save and exit.
-
Configure Systemd Services
Enable and start Scylla:
sudo systemctl enable --now scylla-server sudo systemctl enable --now scylla-jmx
Check status:
sudo systemctl status scylla-server
You should see active (running).
-
Open Firewall Ports (UFW)
If you use UFW:
sudo ufw allow 9042/tcp sudo ufw allow 7000/tcp sudo ufw allow 7001/tcp sudo ufw allow 7199/tcp sudo ufw allow 9180/tcp sudo ufw allow 9100/tcp
Optional:
sudo ufw allow 9160/tcp
Reload:
sudo ufw reload
-
Verify the Node Is Operational
Check ring status:
sudo nodetool status
You should see something like:
UN 203.0.113.10 256 86.7 KB rack1
UN = Up / Normal
-
Test CQL Connectivity
Install cqlsh:
sudo apt install scylla-tools-core -y
Then connect:
cqlsh 9042
Example test:
CREATE KEYSPACE demo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; CREATE TABLE demo.users ( id UUID PRIMARY KEY, name text, email text ); INSERT INTO demo.users(id,name,email) VALUES (uuid(), 'Larry', 'admin@example.com'); SELECT * FROM demo.users; -
Enable Prometheus Metrics (Optional but Recommended)
Scylla exposes metrics on port 9100.
View endpoints:
curl http://localhost:9180/metrics
You can integrate with:
- Prometheus
- Grafana (Scylla dashboard available)
- Scylla Monitoring Stack
-
Hardening & Optimization (Recommended)
-
Disable swap:
sudo swapoff -a sudo sed -i '/ swap / s/^/#/' /etc/fstab
-
Add nofile limits:
Add to
/etc/security/limits.conf:* soft nofile 100000 * hard nofile 100000
-
Ensure consistent clock sync:
sudo timedatectl set-ntp on
-
Check Scylla tuning:
sudo scylla_sysconfig_setup --no-force
-
-
(Optional) Expanding to Multi-Node Cluster
If scaling to multi-node:
Use the first node as the seed:
seeds: "node1-ip"
On new nodes:
listen_address: rpc_address: 0.0.0.0
Then join:
sudo systemctl start scylla-server
Check ring:
nodetool status
🎉 Your ScyllaDB Deployment Is Ready
You now have a fully tuned, production-ready ScyllaDB instance running on Ubuntu VPS. You can begin developing applications using:
- CQL (Cassandra Query Language)
- REST API
- Java, Python, Go, Rust drivers
- Time-series applications
- Event streaming
Conclusion
You now know how to deploy ScyllaDB on Ubuntu VPS.









