feat: add Soft Serve template (#889)

* feat: add Soft Serve template

* fix: quote Soft Serve listen addresses

---------

Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
This commit is contained in:
Abdelatif Djeddou
2026-07-07 23:44:27 +02:00
committed by GitHub
parent d1cc00391e
commit 3d74ad7c08
4 changed files with 117 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
version: "3.8"
services:
soft-serve:
image: charmcli/soft-serve:v0.11.6
restart: unless-stopped
expose:
- "23231"
- "23232"
- "23233"
- "9418"
environment:
SOFT_SERVE_NAME: ${SOFT_SERVE_NAME}
SOFT_SERVE_DATA_PATH: /soft-serve
SOFT_SERVE_INITIAL_ADMIN_KEYS: ${SOFT_SERVE_INITIAL_ADMIN_KEYS}
SOFT_SERVE_SSH_LISTEN_ADDR: ":23231"
SOFT_SERVE_SSH_PUBLIC_URL: ${SOFT_SERVE_SSH_PUBLIC_URL}
SOFT_SERVE_HTTP_LISTEN_ADDR: ":23232"
SOFT_SERVE_HTTP_PUBLIC_URL: ${SOFT_SERVE_HTTP_PUBLIC_URL}
SOFT_SERVE_GIT_LISTEN_ADDR: ":9418"
SOFT_SERVE_STATS_LISTEN_ADDR: ":23233"
SOFT_SERVE_LOG_LEVEL: ${SOFT_SERVE_LOG_LEVEL}
volumes:
- soft-serve-data:/soft-serve
volumes:
soft-serve-data:

View File

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Soft Serve">
<rect width="128" height="128" rx="24" fill="#ff6fb1"/>
<path fill="#331a2a" d="M36 47h56l-11 68H47L36 47Z"/>
<path fill="#ffd166" d="M42 47h44L77 108H51L42 47Z"/>
<path fill="#fff7f0" d="M34 48c0-12 10-22 22-22h16c12 0 22 10 22 22v2H34v-2Z"/>
<path fill="#74d3ae" d="M45 51h38l-4 12H49l-4-12Z"/>
<circle cx="50" cy="39" r="4" fill="#ff6fb1"/>
<circle cx="64" cy="34" r="4" fill="#4cc9f0"/>
<circle cx="78" cy="39" r="4" fill="#ffd166"/>
</svg>

After

Width:  |  Height:  |  Size: 559 B

View File

@@ -0,0 +1,62 @@
[variables]
main_domain = "${domain}"
server_name = "Soft Serve"
initial_admin_keys = ""
http_public_url = "http://${main_domain}"
ssh_public_url = "ssh://${main_domain}:23231"
log_level = "info"
[[config.domains]]
serviceName = "soft-serve"
port = 23232
host = "${main_domain}"
path = "/"
[[config.mounts]]
filePath = "README.md"
content = """# Soft Serve
This template deploys Soft Serve, a self-hosted Git server with an SSH TUI, HTTP Git access, Git LFS support, and a lightweight web endpoint.
## First Start
Set `initial_admin_keys` to one or more SSH public keys before the first deployment. Soft Serve uses this value to create the initial `admin` user. The keys are consumed during initialization, so changing this variable later does not rewrite an already initialized data volume.
Example value:
```text
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... your-name
```
## HTTP Access
The Dokploy domain routes to Soft Serve's HTTP listener:
- HTTP public URL: `http://${main_domain}`
- HTTP Git clone example: `git clone http://${main_domain}/repo.git`
Set `http_public_url` to `https://${main_domain}` before deploying if your Dokploy domain enforces TLS.
Private HTTP access uses tokens created through the SSH admin interface.
## SSH and Git Protocol Ports
Soft Serve also listens inside the deployment on:
- SSH/TUI: `23231`
- Stats: `23233`
- Git protocol: `9418`
This template does not publish host TCP ports directly. Expose the SSH or Git protocol ports separately in Dokploy if you need direct terminal/TUI access, then use the configured `ssh_public_url` for clone commands.
## Storage
Repositories, configuration, keys, and the default SQLite database are stored in the persistent `soft-serve-data` volume mounted at `/soft-serve`.
"""
[config.env]
SOFT_SERVE_NAME = "${server_name}"
SOFT_SERVE_INITIAL_ADMIN_KEYS = "${initial_admin_keys}"
SOFT_SERVE_HTTP_PUBLIC_URL = "${http_public_url}"
SOFT_SERVE_SSH_PUBLIC_URL = "${ssh_public_url}"
SOFT_SERVE_LOG_LEVEL = "${log_level}"

View File

@@ -6410,6 +6410,24 @@
"self-hosted"
]
},
{
"id": "soft-serve",
"name": "Soft Serve",
"version": "v0.11.6",
"description": "Soft Serve is a self-hosted Git server with an SSH TUI, HTTP Git access, Git LFS support, and simple repository management.",
"logo": "soft-serve.svg",
"links": {
"github": "https://github.com/charmbracelet/soft-serve",
"website": "https://charm.sh/",
"docs": "https://github.com/charmbracelet/soft-serve/blob/main/README.md"
},
"tags": [
"git",
"ssh",
"developer-tools",
"self-hosted"
]
},
{
"id": "soketi",
"name": "Soketi",