How to Self‑Host Screego for Low‑Latency Screen Sharing with Nginx
This guide walks you through downloading the open‑source Screego server, configuring TLS, creating user credentials, setting up an Nginx reverse proxy, and launching the service so you can share your screen securely with minimal latency.
Overview
Screego is an open‑source screen‑projection server written in Go. It provides high‑quality, low‑latency screen sharing, built‑in authentication, TURN support for NAT traversal, and enforces TLS for all connections. Deploying it yourself gives you a private screen‑sharing service.
Prerequisites
GitHub repository: https://github.com/screego/server
Docker image or compiled binary for your platform
Familiarity with Linux command line and Nginx
Download and Extract
Download the appropriate release archive and extract it to obtain the screego binary and an example configuration file.
wget https://github.com/screego/server/releases/download/v1.0.7/screego_1.0.7_linux_amd64.tar.gz
tar -xzf screego_1.0.7_linux_amd64.tar.gzConfigure
Copy screego.config.example to screego.config and edit the required variables. Example:
# Server public IP
SCREEGO_EXTERNAL_IP=X.X.X.X
# Secret key (any random string)
SCREEGO_SECRET=8w6EJ183hqFieprl
# Disable internal TLS when using an external reverse proxy
SCREEGO_SERVER_TLS=false
# Local address for the proxy to reach the server
SCREEGO_SERVER_ADDRESS=127.0.0.1:5050
# TURN server listen address
SCREEGO_TURN_ADDRESS=0.0.0.0:3478
# Trust proxy headers (required for reverse proxy)
SCREEGO_TRUST_PROXY_HEADERS=true
# Authentication mode (all requests require auth)
SCREEGO_AUTH_MODE=all
# Allowed CORS origins (use your HTTPS domain)
SCREEGO_CORS_ALLOWED_ORIGINS=https://screego.example.com
# Log level
SCREEGO_LOG_LEVEL=info
# File that stores user credentials
SCREEGO_USERS_FILE=userCreate User
Generate a password hash and store it in the file defined by SCREEGO_USERS_FILE (e.g., user).
./screego hash --name "linuxprobe" --pass "password"The command outputs a line such as:
linuxprobe:$2a$12$YgqeiL2MC2skKCj/ulpruOAlga5GdgXBECfubZCuapJGhGmQTulyAppend this line to the user file.
Set Up Nginx Reverse Proxy
Configure Nginx to forward HTTP traffic to the locally running Screego instance. Replace screego.example.com with your actual domain.
server {
listen 80;
server_name screego.example.com;
location / {
proxy_pass http://127.0.0.1:5050;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect http:// $scheme://;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header Host $http_host;
}
}If using a control panel that omits some headers, add the following lines to the proxy configuration:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect http:// $scheme://;Start Screego
Run the server:
./screego serveTLS Requirement
Screego forces TLS, so configure SSL certificates in Nginx (standard HTTPS setup). After the service starts, access https://your-domain in a browser and share the generated URL to invite participants.
Illustration
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Liangxu Linux
Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
