e071084ebe
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
134 lines
3.0 KiB
Markdown
134 lines
3.0 KiB
Markdown
---
|
|
layout: blog
|
|
title: Introducing micro deploy
|
|
permalink: /blog/1
|
|
description: Deploy your Go Micro services to any Linux server with a single command
|
|
---
|
|
|
|
# Introducing micro deploy
|
|
|
|
<img src="/images/generated/blog-deploy.jpg" alt="Introducing micro deploy" style="width: 100%; border-radius: 8px; margin: 1rem 0 1.5rem;" />
|
|
|
|
*January 27, 2026 • By the Go Micro Team*
|
|
|
|
We're excited to announce **micro deploy** in Go Micro v5.13.0 — a simple way to deploy your services to any Linux server.
|
|
|
|
## The Problem
|
|
|
|
Go Micro has always been great for building microservices:
|
|
|
|
```bash
|
|
micro new myservice
|
|
cd myservice
|
|
micro run
|
|
```
|
|
|
|
But getting those services to production? That was on you. You'd need to figure out Docker, Kubernetes, or write your own deployment scripts.
|
|
|
|
We tried to solve this with Micro v3 — a full platform-as-a-service. But it was too much. Too complex. Nobody wanted another platform to manage.
|
|
|
|
## The Solution
|
|
|
|
The new approach is simple: **systemd + SSH**.
|
|
|
|
Every Linux server has systemd. It's battle-tested, it manages processes, it restarts them when they crash, it handles logging. Why reinvent it?
|
|
|
|
### One-Time Server Setup
|
|
|
|
```bash
|
|
ssh user@server
|
|
curl -fsSL https://go-micro.dev/install.sh | sh
|
|
sudo micro init --server
|
|
```
|
|
|
|
This creates:
|
|
- `/opt/micro/bin/` — where your binaries live
|
|
- `/opt/micro/config/` — environment files
|
|
- A systemd template for managing services
|
|
|
|
### Deploy
|
|
|
|
```bash
|
|
micro deploy user@server
|
|
```
|
|
|
|
That's it. The command:
|
|
1. Builds your services for Linux
|
|
2. Copies binaries via SSH
|
|
3. Configures systemd services
|
|
4. Verifies everything is running
|
|
|
|
### Manage
|
|
|
|
```bash
|
|
micro status --remote user@server
|
|
micro logs --remote user@server
|
|
micro logs myservice --remote user@server -f
|
|
```
|
|
|
|
## Named Deploy Targets
|
|
|
|
Add deploy targets to your `micro.mu`:
|
|
|
|
```
|
|
service users
|
|
path ./users
|
|
port 8081
|
|
|
|
service web
|
|
path ./web
|
|
port 8080
|
|
|
|
deploy prod
|
|
ssh deploy@prod.example.com
|
|
|
|
deploy staging
|
|
ssh deploy@staging.example.com
|
|
```
|
|
|
|
Then:
|
|
|
|
```bash
|
|
micro deploy prod
|
|
micro deploy staging
|
|
```
|
|
|
|
## Philosophy
|
|
|
|
- **systemd is the standard** — don't fight it, use it
|
|
- **SSH is the transport** — no custom agents or protocols
|
|
- **Errors guide you** — every failure tells you how to fix it
|
|
- **No platform** — just your server, your services
|
|
|
|
## What's Next?
|
|
|
|
This is just the beginning. We're thinking about:
|
|
|
|
- **Secrets management** — integrating with vault/sops
|
|
- **Multi-server deploys** — deploy to a fleet
|
|
- **Metrics** — Prometheus endpoints out of the box
|
|
- **Rolling updates** — zero-downtime deployments
|
|
|
|
## Try It
|
|
|
|
```bash
|
|
go install go-micro.dev/v5/cmd/micro@v5.13.0
|
|
micro new myapp
|
|
cd myapp
|
|
micro run
|
|
|
|
# When you're ready to deploy:
|
|
micro deploy user@your-server
|
|
```
|
|
|
|
See the [deployment guide](/docs/deployment.html) for full documentation.
|
|
|
|
---
|
|
|
|
*Go Micro is an open source framework for distributed systems development in Go. [Star us on GitHub](https://github.com/micro/go-micro).*
|
|
|
|
<div class="post-nav">
|
|
<div><a href="/blog/">← All Posts</a></div>
|
|
<div></div>
|
|
</div>
|