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 (x86_64 or amd64 architecture only)
- 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.
Alternatively, you can use scripts to install Docker on Proxmox, either in a VM or under LXC: https://community-scripts.org/
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
- Verify that inbound ports 8443/TCP, 32768-65535/TCP and 32768-65535/UDP are open
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:
- 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.
Additional Configuration Options
There are a few additional configuration options that are optional that might apply to your environment. If needed, these should be added to the environment: block in the docker-compose.yml file:
PUBLIC_IP- this can be set to control the IP address that VPN clients try to connect to this self-hosted server on. Normally the self-hosted server's public IP address is detected automatically, but in some scenarios, like when the self-hosted server and clients are all on a VPC, you may want to override this.PUBLISHED_PORT_RANGE- the range of ports on the server that should be used for VPN session transport connections. Normally the full range of ephemeral ports is used, but if a smaller range of ports is desired, this can be set to something like"9500-9600"BLOCK_TORRENTS- this controls if the client will try to detect and prevent peer-to-peer BitTorrent traffic while connected to this server. Typically torrents are not blocked on self-hosted servers, but if this behavior is desired this can be set to"true"MIN_SIMPLE_SS_VERSION- this controls the minimum client version that is allowed to connect to this server, for cases where versions that would normally be supported are not desired. This should be set to a valid semantic version, such as"16.5.0"SERVER_NAME- this controls the name of the server shown in the web dashboard, ex:"Office Server #1"
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=123456&role=server Activation Code: 123456 =====================================
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:
Enterprise Self-Hosted Server:
- https://order.speedify.com/checkout/?plan=speedify-selfhosted-server-monthly
- https://order.speedify.com/checkout/?plan=speedify-selfhosted-server-yearly
Personal Self-Hosted Server:
- https://order.speedify.com/checkout/?plan=speedify-personal-selfhosted-server-monthly
- https://order.speedify.com/checkout/?plan=speedify-personal-selfhosted-server-yearly
The Enterprise license allows for 1000 sessions to the server at the same time, while the Personal license allows up to 5 sessions.
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 that inbound ports 8443/TCP, 32768-65535/TCP and 32768-65535/UDP are open
- 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 the port used
- Verify your server's public IP is accessible
- Contact support@speedify.com
Did you know - If you're looking to purchase Speedify for multiple people, or need volume pricing, visit the Speedify for Teams page for more details.