Prepare a Server on DigitalOcean
This guide gets a Droplet ready for Bring Your Own Server, with its firewall and backup storage. Skysize installs everything else on the server.
Each step has two tabs: click through the Console, or paste from Command line. Your choice applies to the whole page.
Commands use DigitalOcean's doctl command-line tool on your own computer. To set it up, run doctl auth init and paste an API token. You also need an SSH key at ~/.ssh/id_ed25519.pub.
1. Choose your values
Pick the region closest to your users, and the size for your use.
| Use | SIZE | vCPU | RAM | Disk |
|---|---|---|---|---|
| One production and one staging | s-4vcpu-8gb | 4 | 8 GB | 160 GB |
| Production with staging and development branches | s-8vcpu-16gb | 8 | 16 GB | 320 GB |
These are Basic plans, with shared CPUs. Dedicated General Purpose plans give steadier performance, but check the disk first with doctl compute size list --format Slug,VCPUs,Memory,Disk: some are below the 50 GB Skysize needs.
- Console
- Command line
Open the DigitalOcean control panel. Use the same region in every step.
REGION=nyc3
NAME=skysize-odoo
SIZE=s-4vcpu-8gb
MY_IP=$(curl -4 -s https://ifconfig.me)/32
2. Create the Droplet
Use Ubuntu 24.04 for x86. The public IPv4 stays the same for as long as the Droplet exists. Note it: your DNS records will point to it.
- Console
- Command line
Click Create → Droplets, and set:
| Setting | Value |
|---|---|
| Region | Yours |
| Image | Ubuntu 24.04 (LTS) x64 |
| Size | The plan from step 1 |
| Authentication | SSH key: add yours |
| Hostname | skysize-odoo |
Then click Create Droplet.
KEY=$(doctl compute ssh-key import "$NAME" --public-key-file ~/.ssh/id_ed25519.pub \
--format FingerPrint --no-header)
DROPLET_ID=$(doctl compute droplet create "$NAME" --region "$REGION" --size "$SIZE" \
--image ubuntu-24-04-x64 --ssh-keys "$KEY" --wait --format ID --no-header)
doctl compute droplet get "$DROPLET_ID" --format PublicIPv4 --no-header
3. Create the firewall
| Direction | Type | Port | Sources or destinations | Why |
|---|---|---|---|---|
| Inbound | SSH | 22 | Your IP address | Your access to the server |
| Inbound | HTTP | 80 | All IPv4, All IPv6 | Certificates and redirects |
| Inbound | HTTPS | 443 | All IPv4, All IPv6 | Your Odoo sites |
| Outbound | All TCP, UDP, ICMP | All | All IPv4, All IPv6 | The firewall blocks whatever no rule allows, and the server needs outbound traffic |
Skysize itself needs no inbound port. Leave PostgreSQL (5432) closed unless you use read-only database access. If your own IP changes, update the port 22 rule in the control panel.
- Console
- Command line
- Open Networking → Firewalls → Create Firewall, and name it
skysize-odoo. - Add the three inbound rules above, with your own IP address as the source for SSH.
- Keep the default outbound rules.
- Under Apply to Droplets, select your Droplet, and click Create Firewall.
doctl compute firewall create --name "$NAME" --droplet-ids "$DROPLET_ID" \
--inbound-rules "protocol:tcp,ports:22,address:$MY_IP protocol:tcp,ports:80,address:0.0.0.0/0,address:::/0 protocol:tcp,ports:443,address:0.0.0.0/0,address:::/0" \
--outbound-rules "protocol:tcp,ports:all,address:0.0.0.0/0,address:::/0 protocol:udp,ports:all,address:0.0.0.0/0,address:::/0 protocol:icmp,address:0.0.0.0/0,address:::/0"
4. Connect to the server
ssh root@YOUR_DROPLET_IP
This is where you paste the Skysize install command.
5. Create the backup storage
Skysize makes no backups until a project has a backup target. In the control panel, open Spaces Object Storage:
- Create a bucket with file listing restricted, ideally in another region than your Droplet.
- Create an access key for it. Copy the secret straight away: it is only shown once.
6. Set the backup target
Once your project exists, open its Settings → Backup Target, click Add Target, and fill in:
| Field | Value |
|---|---|
| Type | S3-compatible (Wasabi, R2, MinIO...) |
| Bucket | Your bucket's name |
| Endpoint | https://nyc3.digitaloceanspaces.com, with your bucket's region |
| Region | us-east-1, as DigitalOcean's documentation says to use for S3 tools |
| Prefix | The project name |
| Access key ID and Secret access key | The key from step 5 |
Click Test to check it from your server.
Sending email from Odoo
DigitalOcean blocks outgoing ports 25, 465 and 587, so ordinary SMTP does not work from a Droplet. Use an email provider that offers another port, such as 2525. See Configure Outgoing Email.
Connect the server to Skysize
Your server is ready. Follow Set Up Your Own Server, starting at the step that registers the server. In short: register it in the dashboard, connect to it over SSH, and paste the install command. The status changes to Online within a minute of the installer finishing.
Once your first project runs, add your domain.
If something goes wrong
The dashboard says ports 80 and 443 are not reachable. Check the firewall rules above, and that the public IP in the server's settings is the one you noted. Then click Check again.
The server stays Offline. The server connects out to Skysize, so no inbound rule fixes this. Run these on the server:
sudo systemctl status skysize-agent
sudo journalctl -u skysize-agent -n 50
nc -zv cp.skysize.io 50051
If the installer did not finish, or the join token was already used, use Regenerate join token on the server's page and run the install command again.
Still stuck? Open Support in the dashboard and include the output of those commands.