How to setup grpc server on vps
Assume you use Cloudflare for proxying your domain.
For this guide, the domain is grpc.skpstack.uk
Enable gRPC support in Cloudflare
- Log in to Cloudflare.
- Go to Network.
- Toggle gRPC to On.
- Go to SSL/TLS. Ensure it is set to Full or Full (Strict).
Config Nginx
sudo -e /etc/nginx/sites-available/grpc.skpstack.uk
or
sudo -e /etc/nginx/sites-available/<your-domain>
Add the following configuration:
server {
server_name grpc.skpstack.uk;
# or
# server_name <your-domain>;
access_log /var/log/nginx/grpc_access.log;
error_log /var/log/nginx/grpc_error.log;
# The location matches the "package.Service" name from your .proto file
location /synapse.Generate/ {
grpc_pass grpc://localhost:50051;
# or
# grpc_pass grpc://<ip>:<port>;
# increase timeouts if needed
#grpc_read_timeout 600s;
#grpc_send_timeout 600s;
#grpc_connect_timeout 60s;
grpc_set_header Host $host;
grpc_set_header X-Real-IP $remote_addr;
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
return 404;
}
listen 80;
}
Enable the site and test Nginx configuration:
sudo ln -s /etc/nginx/sites-available/grpc.skpstack.uk /etc/nginx/sites-enabled/
Get the SSL Certificate:
sudo certbot --nginx -d grpc.skpstack.uk
sudo nginx -t
sudo systemctl daemon-reload
sudo systemctl restart nginx
Correct this line after certbot:
listen 443 ssl http2;
sudo nginx -t
sudo systemctl daemon-reload
sudo systemctl restart nginx
- Start your gRPC server on port 50051 or the port you specified in the Nginx config.
- You can now access your gRPC server via
grpc.skpstack.uk:443.