Getting Started with Speedify Self-Hosted Server
This guide will walk you through setting up your own Speedify Self-Hosted Server. The process is straightforward, and you'll be up and running in no time.
What You'll Need
Before getting started, make sure you have:
- A server with a static, publicly-accessible IP address – This is essential for clients to connect reliably
- At least 2 CPU cores
- 4GB of RAM
- 20GB of storage
- Ubuntu (preferred) – Though Windows, macOS, and other Linux distributions should work fine since we're using Docker
Step 1: Install Docker
Since Speedify Self-Hosted Server runs in Docker containers, you'll need to install Docker first.
For Linux (Ubuntu recommended)
Follow the official Docker installation instructions for your distribution: https://docs.docker.com/engine/install/
For Ubuntu specifically, you'll want to follow the "Install using the apt repository" method for the smoothest experience.
For Windows or macOS
Download and install Docker Desktop: https://www.docker.com/get-started/
After installation, make sure Docker is running by opening a terminal and typing:
docker version
You should see the Docker version information printed out.
Verify Your Setup
Before proceeding, confirm that:
- Docker is installed and running
- Your server's static IP address is configured and accessible
- You have sufficient system resources available
Step 2: Create Your Docker Compose Configuration
Now that Docker is installed, you'll need to create a configuration file that tells Docker how to run your Speedify server.
Create the docker-compose.yml File
In your preferred directory (we recommend creating a dedicated folder like ~/speedify-server ), create a file called docker-compose.yml with the following contents:
services:
speed-server:
platform: linux/amd64
image: speedify/ss-manager:latest
volumes:
- ${DOCKER_SOCK_PATH:-/var/run/docker.sock}:/run/docker.sock
- ./.local/ssm/analytics:/var/log/speedify/analytics
- ./.local/ssm/var/log/speedify/servers:/var/log/speedify/servers
- ./.local/ssm/var/run/speedify/servers:/var/run/speedify/servers
- /proc:/host-proc:ro
- ./.local/ssm/var/lib/ssm:/var/lib/ssm
ports:
- 8443:443
environment:
ALLOCATION_TYPE: ondemand
ENABLE_SESSION_TOKENS: "true"
DIRECTORY_URI: "https://directory.speedifynetworks.com"
SELF_HOSTED_MODE: "true"
PUBLIC_API_PORT: "8443"
API_HTTP_PORT: "80"
API_HTTPS_PORT: "443"
DOCKER_REPO_PREFIX: "speedify"
restart: always
Quick Tips
- Linux/macOS: You can create this file using your favorite text editor (
nano,vim, orvi):
nano docker-compose.yml Paste the contents, then save and exit.
- Windows: Use Notepad, VS Code, or any text editor. Make sure to save it as
docker-compose.yml(not.txt).
What This Configuration Does
This file sets up your Speedify server with:
- Port 8080 exposed for client connections (mapped to the container's internal HTTPS port)
- Automatic restarts if the container stops
- Persistent storage for logs and server data in the .local/ssm directory
The server will automatically create the necessary subdirectories when it starts for the first time.
Step 3: Launch Your Speedify Self-Hosted Server
You're all set! Now let's bring your server online.
Start the Server
From the directory containing your docker-compose.yml file, run these commands:
docker compose pull
This downloads the latest Speedify server container image. It may take a minute or two depending on your connection speed.
docker compose up -d
This starts your server in detached mode (running in the background). The -d flag means it won't tie up your terminal.
docker compose logs -f
This shows you the live logs from your server. You'll see startup messages and connection activity as clients connect.
What You'll See
The logs will display real-time information about: - Server initialization - Client connections - Any errors or warnings that need attention
To exit the logs view, press Ctrl+C . This only stops viewing the logs; your server keeps running in the background!
Verify Everything is Running
After starting the server, you can check its status anytime with:
docker compose ps
You should see the speed-server service listed as "Up" or "running".
Managing Your Server
- View logs again:
docker compose logs -f - Stop the server:
docker compose down - Restart the server:
docker compose restart - Update to latest version:
docker compose pull && docker compose up -d
Step 4: Activate Your Self-Hosted Server
Now that your server is running, you need to activate it with a license.
Find Your Activation QR Code
In the logs you're viewing, look for a section that displays an Activation QR Code and URL. It will look something like this:
=== QR Code for Activation URL === ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █ ▄▄▄▄▄ █▄▄██████ ▀ ▄▄▄█ ██ ▄▄▄▄▄ █ █ █ █ █ ▀█ ▄ ▀█▀▄█▀▄▄█ █ █ █ [... QR code continues ...] Activation URL: https://my.speedify.com/activate?activationCode=556628&role=server Activation Code: 556628 =====================================
Activate Your Server
You have two options to activate:
Option 1: Scan the QR Code (Mobile)
Simply scan the QR code displayed in the logs using your mobile device's camera or a QR code scanner app.
Option 2: Use the Activation URL (Desktop/Mobile)
Copy the Activation URL from the logs and open it in your web browser.
Complete Activation
Once you follow the QR code or URL:
- Sign in to your existing Speedify account, or create a new account if you don't have one yet
- Complete the activation process
Purchase Your License
During or after activation, you'll need to purchase a Self-Hosted Server license:
https://order.speedify.com/checkout/?plan=speedify-selfhosted-server-monthly
Wait for Activation to Complete
After purchasing and linking your license, you have two options:
Option 1: Wait for Automatic Refresh (Easy)
Wait up to 15 minutes for the automatic login refresh cycle. The server will detect your new license and complete activation automatically.
Option 2: Restart Immediately (Faster)
Press Ctrl+C to exit the log view, then restart your server:
docker compose down && docker compose up -d && docker compose logs -f
Confirmation
Once activation is successful, you'll see a message in the logs indicating that your server should now appear in the server list in the Speedify app.
Success! Your Self-Hosted Server is now fully activated and ready to use. Open your Speedify app to see your new server in the available servers list.
Troubleshooting
Common Issues
Server won't start
- Check that Docker is running: docker ps
- Verify port 8080 is not already in use
- Review logs for specific error messages: docker compose logs
Activation not working
- Ensure you've completed the purchase process
- Check your internet connection
- Try the restart method to force a refresh
Can't see server in Speedify app
- Confirm activation completed successfully in the logs
- Make sure you're signed into the same account used for activation
- Restart the Speedify app
Need Help?
If you run into any issues:
- Check the logs first: docker compose logs
- Ensure your firewall allows traffic on port 8080
- Verify your server's public IP is accessible
- Contact support@speedify.com