(DEPRECATED)Dolt Server Documentation

Dolt Database Server Setup Guide
This document outlines the complete process for setting up a Dolt database server that automatically synchronizes with DoltHub and provides MySQL-compatible access for applications like NocoDB.
System Overview
Database Platform: Dolt (git for data)
Remote Repository: DoltHub (fb-api-public)
Local Database Path: /dolt/dbs/fb-api-public
Connection Type: MySQL-compatible (port 3306)
Updates: Automatically pulled hourly from DoltHub
Initial Installation
Install Dolt
# Linux
sudo bash -c 'curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash'
# macOS
brew install dolt
Clone the Database
# Create directory if it doesn't exist
sudo mkdir -p /dolt/dbs
sudo chmod 777 /dolt/dbs
# Clone the repository
cd /dolt/dbs
dolt clone https://doltremoteapi.dolthub.com/fullbuff/fb-api-public
User Management
Connect to the Dolt SQL Shell
# Connect to the database using Dolt's SQL client
cd /dolt/dbs/fb-api-public
dolt -u root -p "" sql
Create a User for Applications
In the SQL shell:
-- Create a user with a password
CREATE USER 'nocodb'@'%' IDENTIFIED BY 'securepassword';
-- Grant read permissions
GRANT SELECT ON *.* TO 'nocodb'@'%';
-- Apply changes
FLUSH PRIVILEGES;
-- Verify user creation
SELECT User, Host FROM mysql.user WHERE User = 'nocodb';
Automated Service Setup
Create Update Script
Create a script to pull updates from DoltHub:
sudo nano /usr/local/bin/update-dolt.sh
Script content:
#!/bin/bash
# Log file for output
LOG_FILE="/var/log/dolt-update.log"
# Full path to dolt executable
DOLT_PATH=$(which dolt)
# Function to log messages
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# Check if dolt is available
if [ -z "$DOLT_PATH" ]; then
    log "ERROR: dolt executable not found in PATH"
    exit 1
fi
log "Using dolt at: $DOLT_PATH"
# Check if database directory exists
if [ ! -d "/dolt/dbs/fb-api-public" ]; then
    log "ERROR: Database directory /dolt/dbs/fb-api-public does not exist"
    exit 1
fi
# Change to the database directory
cd /dolt/dbs/fb-api-public || {
    log "ERROR: Failed to change to database directory"
    exit 1
}
# Pull updates from main branch
log "Starting pull from origin main"
$DOLT_PATH pull origin main >> "$LOG_FILE" 2>&1
RESULT=$?
if [ $RESULT -eq 0 ]; then
    log "Successfully pulled updates"
else
    log "Failed to pull updates, exit code: $RESULT"
fi
exit $RESULT
Make the script executable:
sudo chmod +x /usr/local/bin/update-dolt.sh
Create Systemd Services
Create the Dolt Server service:
sudo nano /etc/systemd/system/dolt-server.service
Content:
[Unit]
Description=Dolt SQL Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/dolt/dbs/fb-api-public
ExecStart=/usr/local/bin/dolt sql-server --host 0.0.0.0 --port 3306
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Create the update service:
sudo nano /etc/systemd/system/dolt-update.service
Content:
[Unit]
Description=Dolt Database Update
After=network.target
Before=dolt-server.service
[Service]
Type=oneshot
User=root
ExecStart=/usr/local/bin/update-dolt.sh
TimeoutStartSec=300
[Install]
WantedBy=multi-user.target
Configure Cron Job for Regular Updates
Set up a cron job to run the update script hourly:
sudo crontab -e
Add:
0 * * * * /usr/local/bin/update-dolt.sh
Enable and Start Services
sudo systemctl daemon-reload
sudo systemctl enable dolt-update.service
sudo systemctl enable dolt-server.service
sudo systemctl start dolt-update.service
sudo systemctl start dolt-server.service
Connecting to the Database
From the Command Line
# Connect as the root user
dolt -u root -p "" sql
# Connect as the application user
dolt -u nocodb -p "securepassword" sql
From Application (e.g., NocoDB)
Connection details:
Host: Server IP address
Port: 3306
Username: nocodb
Password: securepassword
Database: fb_api_public
Troubleshooting
Check Service Status
sudo systemctl status dolt-server.service
sudo systemctl status dolt-update.service
View Update Logs
cat /var/log/dolt-update.log
Manual Database Operations
cd /dolt/dbs/fb-api-public
# Check status
dolt status
# View remote configuration
dolt remote -v
# Manually pull updates
dolt pull origin main
Restart Services
sudo systemctl restart dolt-update.service
sudo systemctl restart dolt-server.service
Notes
The server runs in read-write mode to allow updates from DoltHub
Local changes will be overwritten by the scheduled pull
All permanent changes should be made through DoltHub's PR process
The database is automatically updated hourly and on system boot
Both services are configured to start automatically on system boot
User authentication is handled with a password for security
This configuration provides a robust, automatically updating Dolt database server that maintains synchronization with DoltHub while providing MySQL-compatible access for applications.