Fased on DigitalOcean
Goal
Run a persistent Fased Gateway on a small DigitalOcean Ubuntu droplet.
If you prefer a provider-specific ARM path, see the Oracle Cloud guide.
Provider fit
DigitalOcean is a straightforward Ubuntu VPS path. Other VPS providers work too
when they give you a clean Ubuntu host, SSH access, outbound internet, and enough
memory for Node plus the Gateway. Check current provider pricing and limits
before creating the server.
Prerequisites
- DigitalOcean account
- SSH key pair
- Tailscale account for private remote access
- ~20 minutes
1) Create a Droplet
Use a clean base image (Ubuntu 24.04 LTS). Avoid prebuilt app images unless you
have reviewed their startup scripts and firewall defaults.
- Log into DigitalOcean
- Click Create → Droplets
- Choose:
- Region: Closest to you (or your users)
- Image: Ubuntu 24.04 LTS
- Size: Basic Ubuntu droplet with at least 1GB RAM
- Authentication: SSH key
- Click Create Droplet
- Note the IP address
2) Connect via SSH
3) Join Tailscale
apt update && apt upgrade -y
apt install -y curl ca-certificates
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --ssh --hostname=fased-do
4) Install Fased with the hosting profile
For hosted deployments, run the hosting installer on the VPS itself.
apt install -y git
git clone https://github.com/fased-ai/fased.git fased
cd fased
./install.sh --hosting
The hosting installer runs onboarding and walks you through:
- Host profile, workspace, Gateway bind/auth, and hosting security
- Gateway token generation
- Optional wallet/mining setup if you choose those paths
- Daemon installation (systemd)
After the Gateway is online, finish product setup in the Control UI from the
selected Agent: Agent > Models, Agent > Channels, Agent > Services,
Agent > Skills, Agent > Memory, and Agent > Tasks.
5) Verify the Gateway
# Check status
fased status
# Check service
systemctl --user status fased-gateway.service
# View logs
journalctl --user -u fased-gateway.service -f
6) Access the Control UI
The hosting path keeps the raw Gateway port private. To access the Control UI:
Option A: Tailscale dashboard link
Run this on the droplet and open the printed private URL from a device on your
tailnet:
Option B: SSH Tunnel
# From your local machine
ssh -L 18789:localhost:18789 root@YOUR_DROPLET_IP
# Then open: http://localhost:18789
Option C: Tailscale Serve (HTTPS, loopback-only)
# Configure Gateway to use Tailscale Serve
fased config set gateway.tailscale.mode serve
fased gateway restart
Open: https://<magicdns>/
Notes:
- Serve keeps the Gateway loopback-only and authenticates Control UI/WebSocket traffic via Tailscale identity headers (tokenless auth assumes trusted gateway host; HTTP APIs still require token/password).
- To require token/password instead, set
gateway.auth.allowTailscale: false or use gateway.auth.mode: "password".
Option D: Tailnet bind (no Serve)
fased config set gateway.bind tailnet
fased gateway restart
Open: http://<tailscale-ip>:18789 (token required).
Once open, use Dashboard for overview, Chat to test the Agent,
Agents for models, channels, skills, tools, memory, services, and tasks, and
Advanced for Config, Debug, and Nodes.
7) Connect channels
Use Agent > Channels for normal channel setup and routing. See
Channels for provider-specific setup, then manage the selected
Agent’s account routes in the Control UI.
Optimizations for small droplets
If the droplet has 1GB RAM, add swap and use API-based models instead of local
models.
Add swap (recommended)
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Use a lighter model
If you’re hitting OOMs, consider:
- Using API-based models instead of local models
- Setting
agents.defaults.model.primary to a smaller model
Monitor memory
Persistence
All state lives in:
~/.fased/ — config, credentials, session data
~/.fased/workspace/ — workspace memory, notes, and generated files
These survive reboots. Back them up periodically:
tar -czvf fased-backup.tar.gz ~/.fased ~/.fased/workspace
Oracle Cloud alternative
Oracle Cloud has a provider-specific ARM path. It can be useful if capacity is
available and you are comfortable with OCI setup. For the full setup guide, see
Oracle Cloud.
Troubleshooting
Gateway won’t start
fased gateway status
fased doctor --non-interactive
journalctl --user -u fased-gateway.service --no-pager -n 50
Port already in use
lsof -i :18789
kill <PID>
Out of memory
# Check memory
free -h
# Add more swap
# Or move to a larger droplet
See Also